diff --git a/src/fr/anssi/smartpgp/Constants.java b/src/fr/anssi/smartpgp/Constants.java index b3c0f80..2ee1107 100644 --- a/src/fr/anssi/smartpgp/Constants.java +++ b/src/fr/anssi/smartpgp/Constants.java @@ -30,7 +30,7 @@ public final class Constants { protected static final short INTERNAL_BUFFER_MAX_LENGTH = (short)0x500; - protected static final short APDU_MAX_LENGTH = (short)256; + protected static final short APDU_MAX_LENGTH = (short)0x400; protected static final byte[] KEY_DERIVATION_FUNCTION_DEFAULT = { (byte)0x81, (byte)0x01, (byte)0x00 @@ -147,7 +147,7 @@ public final class Constants { (byte)0x73, /* card capabilities */ (byte)0xC0, /* 1st byte: "methods supported" see ISO 7816-4 */ (byte)0x01, /* 2nd byte: "data coding byte" idem */ - (byte)0x80, /* 3rd byte: command chaining (not extended length by default as all readers do not support them...) */ + (byte)0xC0, /* 3rd byte: command chaining + extended length */ (byte)0x05, /* status indicator byte : operational state */ (byte)0x90, /* SW1 */ diff --git a/src/fr/anssi/smartpgp/SmartPGPApplet.java b/src/fr/anssi/smartpgp/SmartPGPApplet.java index c47870f..78d446d 100644 --- a/src/fr/anssi/smartpgp/SmartPGPApplet.java +++ b/src/fr/anssi/smartpgp/SmartPGPApplet.java @@ -25,7 +25,7 @@ import javacard.security.*; import javacardx.apdu.*; import javacardx.crypto.*; -public final class SmartPGPApplet extends Applet { +public final class SmartPGPApplet extends Applet implements ExtendedLength { private final Persistent data; @@ -104,7 +104,7 @@ public final class SmartPGPApplet extends Applet { short blen = apdu.setIncomingAndReceive(); final short lc = apdu.getIncomingLength(); - final short offcdata = ISO7816.OFFSET_CDATA; + final short offcdata = apdu.getOffsetCdata(); short off = transients.chainingInputLength();