OpenPGP card v3.3 : fix KDF-DO min/max length
This commit is contained in:
parent
a2db09cfd0
commit
179856f183
@ -32,8 +32,6 @@ public final class Constants {
|
|||||||
|
|
||||||
protected static final short APDU_MAX_LENGTH = (short)256;
|
protected static final short APDU_MAX_LENGTH = (short)256;
|
||||||
|
|
||||||
protected static final short KEY_DERIVATION_FUNCTION_MIN_LENGTH = 2;
|
|
||||||
protected static final short KEY_DERIVATION_FUNCTION_MAX_LENGTH = 160;
|
|
||||||
protected static final byte[] KEY_DERIVATION_FUNCTION_DEFAULT = {
|
protected static final byte[] KEY_DERIVATION_FUNCTION_DEFAULT = {
|
||||||
(byte)0xF9, (byte)0x03, (byte)0x81, (byte)0x01, (byte)0x00
|
(byte)0xF9, (byte)0x03, (byte)0x81, (byte)0x01, (byte)0x00
|
||||||
};
|
};
|
||||||
@ -168,7 +166,7 @@ public final class Constants {
|
|||||||
(byte)0x01, /* SM 0x01 = 128 bits, 0x02 = 256 bits */
|
(byte)0x01, /* SM 0x01 = 128 bits, 0x02 = 256 bits */
|
||||||
(byte)0x00, (byte)0x20, /* max length get challenge */
|
(byte)0x00, (byte)0x20, /* max length get challenge */
|
||||||
(byte)0x04, (byte)0x80, /* max length of carholder certificate */
|
(byte)0x04, (byte)0x80, /* max length of carholder certificate */
|
||||||
(byte)0x00, (byte)0xff, /* max length of special DOs (private, login, url) */
|
(byte)0x00, (byte)0xff, /* max length of special DOs (private, login, url, KDF-DO) */
|
||||||
(byte)0x00, /* PIN format 2 not supported */
|
(byte)0x00, /* PIN format 2 not supported */
|
||||||
(byte)0x00 /* RFU */
|
(byte)0x00 /* RFU */
|
||||||
};
|
};
|
||||||
|
@ -131,7 +131,7 @@ public final class Persistent {
|
|||||||
pgp_keys[i] = new PGPKey(false);
|
pgp_keys[i] = new PGPKey(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
key_derivation_function = new byte[Constants.KEY_DERIVATION_FUNCTION_MAX_LENGTH];
|
key_derivation_function = new byte[Constants.specialDoMaxLength()];
|
||||||
key_derivation_function_length = 0;
|
key_derivation_function_length = 0;
|
||||||
|
|
||||||
user_pin = new OwnerPIN(Constants.USER_PIN_RETRY_COUNT, Constants.USER_PIN_MAX_SIZE);
|
user_pin = new OwnerPIN(Constants.USER_PIN_RETRY_COUNT, Constants.USER_PIN_MAX_SIZE);
|
||||||
|
@ -1039,8 +1039,8 @@ public final class SmartPGPApplet extends Applet {
|
|||||||
|
|
||||||
case Constants.TAG_KEY_DERIVATION_FUNCTION:
|
case Constants.TAG_KEY_DERIVATION_FUNCTION:
|
||||||
assertAdmin();
|
assertAdmin();
|
||||||
if((lc < Constants.KEY_DERIVATION_FUNCTION_MIN_LENGTH) ||
|
if((lc < 0) ||
|
||||||
(lc > Constants.KEY_DERIVATION_FUNCTION_MAX_LENGTH)) {
|
(lc > Constants.specialDoMaxLength())) {
|
||||||
ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
|
ISOException.throwIt(ISO7816.SW_WRONG_LENGTH);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user