From 0cb000a0bedd9af953e9a38c59e124f4ce6ee5d9 Mon Sep 17 00:00:00 2001 From: Vincent Breitmoser Date: Mon, 9 Oct 2017 14:24:42 +0200 Subject: [PATCH] Change some package structure --- .../securitytoken/usb/UsbTransport.java | 1 + .../securitytoken/usb/tpdu/Block.java | 10 ++-- ...mType.java => BlockChecksumAlgorithm.java} | 4 +- .../securitytoken/usb/tpdu/FrameType.java | 56 ------------------- .../securitytoken/usb/tpdu/IBlock.java | 4 +- .../securitytoken/usb/tpdu/RBlock.java | 4 +- .../securitytoken/usb/tpdu/SBlock.java | 2 +- .../usb/{ => tpdu}/T1ShortApduProtocol.java | 10 ++-- .../usb/tpdu/T1TpduBlockFactory.java | 4 +- .../usb/tpdu/T1TpduProtocol.java | 2 +- 10 files changed, 22 insertions(+), 75 deletions(-) rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/{BlockChecksumType.java => BlockChecksumAlgorithm.java} (95%) delete mode 100644 OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/FrameType.java rename OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/{ => tpdu}/T1ShortApduProtocol.java (77%) diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java index 23ee412f6..cd6412560 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/UsbTransport.java @@ -31,6 +31,7 @@ import org.sufficientlysecure.keychain.Constants; import org.sufficientlysecure.keychain.securitytoken.Transport; import javax.smartcardio.CommandAPDU; import javax.smartcardio.ResponseAPDU; +import org.sufficientlysecure.keychain.securitytoken.usb.tpdu.T1ShortApduProtocol; import org.sufficientlysecure.keychain.securitytoken.usb.tpdu.T1TpduProtocol; import org.sufficientlysecure.keychain.util.Log; diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/Block.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/Block.java index ef98050ab..97c35d1e9 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/Block.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/Block.java @@ -21,7 +21,7 @@ import org.bouncycastle.util.Arrays; import org.bouncycastle.util.encoders.Hex; import org.sufficientlysecure.keychain.securitytoken.usb.UsbTransportException; -public class Block { +class Block { private static final int MAX_PAYLOAD_LEN = 254; private static final int OFFSET_NAD = 0; static final int OFFSET_PCB = 1; @@ -29,9 +29,9 @@ public class Block { private static final int OFFSET_DATA = 3; private final byte[] blockData; - private final BlockChecksumType checksumType; + private final BlockChecksumAlgorithm checksumType; - Block(BlockChecksumType checksumType, byte[] data) throws UsbTransportException { + Block(BlockChecksumAlgorithm checksumType, byte[] data) throws UsbTransportException { this.checksumType = checksumType; this.blockData = data; @@ -64,7 +64,7 @@ public class Block { */ // /* - Block(BlockChecksumType checksumType, byte nad, byte pcb, byte[] apdu, int offset, int length) + Block(BlockChecksumAlgorithm checksumType, byte nad, byte pcb, byte[] apdu, int offset, int length) throws UsbTransportException { this.checksumType = checksumType; if (length > MAX_PAYLOAD_LEN) { @@ -100,7 +100,7 @@ public class Block { return Arrays.copyOfRange(blockData, blockData.length - checksumType.getLength(), blockData.length); } - public BlockChecksumType getChecksumType() { + public BlockChecksumAlgorithm getChecksumType() { return checksumType; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumType.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumAlgorithm.java similarity index 95% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumType.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumAlgorithm.java index 4af6364e3..70b8197fe 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumType.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/BlockChecksumAlgorithm.java @@ -19,12 +19,12 @@ package org.sufficientlysecure.keychain.securitytoken.usb.tpdu; import org.sufficientlysecure.keychain.securitytoken.usb.UsbTransportException; -public enum BlockChecksumType { +enum BlockChecksumAlgorithm { LRC(1), CRC(2); private int mLength; - BlockChecksumType(int length) { + BlockChecksumAlgorithm(int length) { mLength = length; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/FrameType.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/FrameType.java deleted file mode 100644 index 03a8b109a..000000000 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/FrameType.java +++ /dev/null @@ -1,56 +0,0 @@ -/* - * Copyright (C) 2016 Nikita Mikhailov - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -package org.sufficientlysecure.keychain.securitytoken.usb.tpdu; - -import org.sufficientlysecure.keychain.securitytoken.usb.UsbTransportException; - -public enum FrameType { - I_BLOCK(0b00000000, 0b10000000, 6, true), // Information - R_BLOCK(0b10000000, 0b11000000, 4, false), // Receipt ack - S_BLOCK(0b11000000, 0b11000000, -1, false); // System - - private byte mValue; - private byte mMask; - private int mSequenceBit; - private boolean mChainingSupported; - - FrameType(int value, int mask, int sequenceBit, boolean chaining) { - // Accept ints just to avoid cast in creation - this.mValue = (byte) value; - this.mMask = (byte) mask; - this.mSequenceBit = sequenceBit; - this.mChainingSupported = chaining; - } - - public static FrameType fromPCB(byte pcb) throws UsbTransportException { - for (final FrameType frameType : values()) { - if ((frameType.mMask & pcb) == frameType.mValue) { - return frameType; - } - } - throw new UsbTransportException("Invalid PCB byte"); - } - - public int getSequenceBit() { - return mSequenceBit; - } - - public boolean isChainingSupported() { - return mChainingSupported; - } -} diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/IBlock.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/IBlock.java index 681ed54d2..38af55067 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/IBlock.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/IBlock.java @@ -28,7 +28,7 @@ class IBlock extends Block { private static final byte BIT_SEQUENCE = 6; private static final byte BIT_CHAINING = 5; - IBlock(BlockChecksumType checksumType, byte[] data) throws UsbTransportException { + IBlock(BlockChecksumAlgorithm checksumType, byte[] data) throws UsbTransportException { super(checksumType, data); if ((getPcb() & MASK_IBLOCK) != MASK_VALUE_IBLOCK) { @@ -36,7 +36,7 @@ class IBlock extends Block { } } - IBlock(BlockChecksumType checksumType, byte nad, byte sequence, boolean chaining, byte[] apdu, int offset, + IBlock(BlockChecksumAlgorithm checksumType, byte nad, byte sequence, boolean chaining, byte[] apdu, int offset, int length) throws UsbTransportException { super(checksumType, nad, diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/RBlock.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/RBlock.java index 9095c2b8c..97340168a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/RBlock.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/RBlock.java @@ -27,7 +27,7 @@ class RBlock extends Block { private static final byte BIT_SEQUENCE = 4; - RBlock(BlockChecksumType checksumType, byte[] data) throws UsbTransportException { + RBlock(BlockChecksumAlgorithm checksumType, byte[] data) throws UsbTransportException { super(checksumType, data); if ((getPcb() & MASK_RBLOCK) != MASK_VALUE_RBLOCK) { @@ -39,7 +39,7 @@ class RBlock extends Block { } } - RBlock(BlockChecksumType checksumType, byte nad, byte sequence) + RBlock(BlockChecksumAlgorithm checksumType, byte nad, byte sequence) throws UsbTransportException { super(checksumType, nad, (byte) (MASK_VALUE_RBLOCK | ((sequence & 1) << BIT_SEQUENCE)), new byte[0], 0, 0); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/SBlock.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/SBlock.java index 36eb8bd6a..6ffb56e17 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/SBlock.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/SBlock.java @@ -25,7 +25,7 @@ class SBlock extends Block { static final byte MASK_SBLOCK = (byte) 0b11000000; static final byte MASK_VALUE_SBLOCK = (byte) 0b11000000; - SBlock(BlockChecksumType checksumType, byte[] data) throws UsbTransportException { + SBlock(BlockChecksumAlgorithm checksumType, byte[] data) throws UsbTransportException { super(checksumType, data); if ((getPcb() & MASK_SBLOCK) != MASK_VALUE_SBLOCK) { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/T1ShortApduProtocol.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1ShortApduProtocol.java similarity index 77% rename from OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/T1ShortApduProtocol.java rename to OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1ShortApduProtocol.java index caee33c43..b86715d19 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/T1ShortApduProtocol.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1ShortApduProtocol.java @@ -15,15 +15,17 @@ * along with this program. If not, see . */ -package org.sufficientlysecure.keychain.securitytoken.usb; +package org.sufficientlysecure.keychain.securitytoken.usb.tpdu; + import android.support.annotation.NonNull; -import org.sufficientlysecure.keychain.Constants; +import org.sufficientlysecure.keychain.securitytoken.usb.CcidTransceiver; import org.sufficientlysecure.keychain.securitytoken.usb.CcidTransceiver.CcidDataBlock; -import org.sufficientlysecure.keychain.util.Log; +import org.sufficientlysecure.keychain.securitytoken.usb.CcidTransportProtocol; +import org.sufficientlysecure.keychain.securitytoken.usb.UsbTransportException; -class T1ShortApduProtocol implements CcidTransportProtocol { +public class T1ShortApduProtocol implements CcidTransportProtocol { private CcidTransceiver ccidTransceiver; public void connect(@NonNull CcidTransceiver transceiver) throws UsbTransportException { diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduBlockFactory.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduBlockFactory.java index 12ff33b87..89a6bb721 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduBlockFactory.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduBlockFactory.java @@ -5,9 +5,9 @@ import org.sufficientlysecure.keychain.securitytoken.usb.UsbTransportException; class T1TpduBlockFactory { - private BlockChecksumType checksumType; + private BlockChecksumAlgorithm checksumType; - T1TpduBlockFactory(BlockChecksumType checksumType) { + T1TpduBlockFactory(BlockChecksumAlgorithm checksumType) { this.checksumType = checksumType; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduProtocol.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduProtocol.java index d5f2b736f..a2de18245 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduProtocol.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/securitytoken/usb/tpdu/T1TpduProtocol.java @@ -47,7 +47,7 @@ public class T1TpduProtocol implements CcidTransportProtocol { this.ccidTransceiver.iccPowerOn(); // TODO: set checksum from atr - blockFactory = new T1TpduBlockFactory(BlockChecksumType.LRC); + blockFactory = new T1TpduBlockFactory(BlockChecksumAlgorithm.LRC); performPpsExchange(); }