Skip to content

Commit c69a1da

Browse files
authored
Merge pull request #236 from subrahmanyaman/remove_get_set
Remove getter setter - Merge from KeyMint300
2 parents cd02a15 + 49c4623 commit c69a1da

File tree

9 files changed

+41
-119
lines changed

9 files changed

+41
-119
lines changed

Applet/AndroidSEProvider/src/com/android/javacard/keymaster/KMAttestationCertImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -954,8 +954,8 @@ public KMAttestationCert makeUniqueId(byte[] scratchPad, short scratchPadOff,
954954

955955
//Get the key data from the master key
956956
KMAESKey aesKey = (KMAESKey) masterKey;
957-
short mKeyData = KMByteBlob.instance((short) (aesKey.getKeySizeBits() / 8));
958-
aesKey.getKey(
957+
short mKeyData = KMByteBlob.instance((short) (aesKey.aesKey.getSize() / 8));
958+
aesKey.aesKey.getKey(
959959
KMByteBlob.cast(mKeyData).getBuffer(), /* Key */
960960
KMByteBlob.cast(mKeyData).getStartOff()); /* Key start*/
961961
timeOffset = KMByteBlob.instance((short) 32);

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMAESKey.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,12 @@
2121

2222
public class KMAESKey implements KMMasterKey {
2323

24-
private AESKey aesKey;
24+
public AESKey aesKey;
2525

2626
public KMAESKey(AESKey key) {
2727
aesKey = key;
2828
}
2929

30-
public void setKey(byte[] keyData, short kOff) {
31-
aesKey.setKey(keyData, kOff);
32-
}
33-
34-
public byte getKey(byte[] keyData, short kOff) {
35-
return aesKey.getKey(keyData, kOff);
36-
}
37-
38-
public short getKeySizeBits() {
39-
return aesKey.getSize();
40-
}
41-
4230
public static void onSave(Element element, KMAESKey kmKey) {
4331
element.write(kmKey.aesKey);
4432
}

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMAndroidSEProvider.java

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ public HMACKey cmacKdf(KMPreSharedKey preSharedKey, byte[] label, short labelSta
427427
short keyOutLen = n * 16;
428428
//Convert Hmackey to AES Key as the algorithm is ALG_AES_CMAC_128.
429429
KMHmacKey hmacKey = ((KMHmacKey) preSharedKey);
430-
hmacKey.getKey(tmpArray, (short) 0);
430+
hmacKey.hmacKey.getKey(tmpArray, (short) 0);
431431
aesKeys[KEYSIZE_256_OFFSET].setKey(tmpArray, (short) 0);
432432
//Initialize the key derivation function.
433433
kdf.init(aesKeys[KEYSIZE_256_OFFSET], Signature.MODE_SIGN);
@@ -473,20 +473,20 @@ public short hmacSign(byte[] keyBuf, short keyStart, short keyLength,
473473
@Override
474474
public short hmacSign(Object key,
475475
byte[] data, short dataStart, short dataLength, byte[] mac, short macStart) {
476-
if(!(key instanceof KMHmacKey)) {
477-
KMException.throwIt(KMError.INVALID_ARGUMENT);
478-
}
479-
KMHmacKey hmacKey = (KMHmacKey) key;
480-
return hmacSign(hmacKey.getKey(), data, dataStart, dataLength, mac, macStart);
476+
if(!(key instanceof KMHmacKey)) {
477+
KMException.throwIt(KMError.INVALID_ARGUMENT);
478+
}
479+
KMHmacKey hmacKey = (KMHmacKey) key;
480+
return hmacSign(hmacKey.hmacKey, data, dataStart, dataLength, mac, macStart);
481481
}
482482

483483
@Override
484484
public short hmacKDF(KMMasterKey masterkey, byte[] data, short dataStart,
485485
short dataLength, byte[] signature, short signatureStart) {
486486
try {
487487
KMAESKey aesKey = (KMAESKey) masterkey;
488-
short keyLen = (short) (aesKey.getKeySizeBits() / 8);
489-
aesKey.getKey(tmpArray, (short) 0);
488+
short keyLen = (short) (aesKey.aesKey.getSize() / 8);
489+
aesKey.aesKey.getKey(tmpArray, (short) 0);
490490
return hmacSign(tmpArray, (short) 0, keyLen, data, dataStart, dataLength,
491491
signature, signatureStart);
492492
} finally {
@@ -498,7 +498,7 @@ public short hmacKDF(KMMasterKey masterkey, byte[] data, short dataStart,
498498
public boolean hmacVerify(KMComputedHmacKey key, byte[] data, short dataStart,
499499
short dataLength, byte[] mac, short macStart, short macLength) {
500500
KMHmacKey hmacKey = (KMHmacKey) key;
501-
hmacSignature.init(hmacKey.getKey(), Signature.MODE_VERIFY);
501+
hmacSignature.init(hmacKey.hmacKey, Signature.MODE_VERIFY);
502502
return hmacSignature.verify(data, dataStart, dataLength, mac, macStart,
503503
macLength);
504504
}
@@ -602,7 +602,7 @@ public KMOperation createSymmetricCipher(short alg, short purpose, short macLeng
602602
}
603603
// Get the KeyObject from the operation and update the key with the secret key material.
604604
KMKeyObject keyObj = operation.getKeyObject();
605-
Key key = (Key)keyObj.getKeyObjectInstance();
605+
Key key = (Key)keyObj.keyObjectInst;
606606
switch (secretLength) {
607607
case 32:
608608
case 16:
@@ -634,7 +634,7 @@ public KMOperation createHmacSignerVerifier(short purpose, short digest,
634634
}
635635
// Get the KeyObject from the operation and update the key with the secret key material.
636636
KMKeyObject keyObj = operation.getKeyObject();
637-
HMACKey key = (HMACKey)keyObj.getKeyObjectInstance();
637+
HMACKey key = (HMACKey)keyObj.keyObjectInst;
638638
key.setKey(secret, secretStart, secretLength);
639639
((KMOperationImpl) operation).init(key, digest, null, (short) 0, (short) 0);
640640
return operation;
@@ -649,7 +649,7 @@ private KMOperation createHmacSignerVerifier(short purpose, short digest, HMACKe
649649
KMType.HMAC, KMType.INVALID_VALUE, KMType.INVALID_VALUE, KMType.INVALID_VALUE, (short)0, isTrustedConf);
650650
// Get the KeyObject from the operation and update the key with the secret key material.
651651
KMKeyObject keyObj = operation.getKeyObject();
652-
HMACKey key = (HMACKey)keyObj.getKeyObjectInstance();
652+
HMACKey key = (HMACKey)keyObj.keyObjectInst;
653653
short len = hmacKey.getKey(tmpArray, (short) 0);
654654
key.setKey(tmpArray, (short) 0, len);
655655
((KMOperationImpl) operation).init(key, digest, null, (short) 0, (short) 0);
@@ -716,8 +716,8 @@ public KMOperation initSymmetricOperation(byte purpose, byte alg, byte digest, b
716716
switch (interfaceType) {
717717
case KMDataStoreConstants.INTERFACE_TYPE_MASTER_KEY:
718718
KMAESKey aesKey = (KMAESKey) key;
719-
keyLen = (short) (aesKey.getKeySizeBits() / 8);
720-
aesKey.getKey(tmpArray, (short) 0);
719+
keyLen = (short) (aesKey.aesKey.getSize() / 8);
720+
aesKey.aesKey.getKey(tmpArray, (short) 0);
721721
break;
722722

723723
default:
@@ -743,7 +743,7 @@ public KMOperation initSymmetricOperation(byte purpose, byte alg, byte digest, b
743743
@Override
744744
public KMOperation initTrustedConfirmationSymmetricOperation(KMComputedHmacKey computedHmacKey) {
745745
KMHmacKey key = (KMHmacKey) computedHmacKey;
746-
return createHmacSignerVerifier(KMType.VERIFY, KMType.SHA2_256, key.getKey(), true);
746+
return createHmacSignerVerifier(KMType.VERIFY, KMType.SHA2_256, key.hmacKey, true);
747747
}
748748

749749
public KMOperation createRsaSigner(short digest, short padding, byte[] secret,
@@ -754,7 +754,7 @@ public KMOperation createRsaSigner(short digest, short padding, byte[] secret,
754754
KMType.INVALID_VALUE, KMType.INVALID_VALUE, secretLength, false);
755755
// Get the KeyObject from the operation and update the key with the secret key material.
756756
KMKeyObject keyObj = operation.getKeyObject();
757-
RSAPrivateKey key = (RSAPrivateKey)((KeyPair)(keyObj.getKeyObjectInstance())).getPrivate();
757+
RSAPrivateKey key = (RSAPrivateKey)((KeyPair)(keyObj.keyObjectInst)).getPrivate();
758758
key.setExponent(secret, secretStart, secretLength);
759759
key.setModulus(modBuffer, modOff, modLength);
760760
((KMOperationImpl) operation).init(key, digest, null, (short) 0, (short) 0);
@@ -769,7 +769,7 @@ public KMOperation createRsaDecipher(short padding, short mgfDigest, byte[] secr
769769
KMType.INVALID_VALUE, KMType.INVALID_VALUE, secretLength, false);
770770
// Get the KeyObject from the operation and update the key with the secret key material.
771771
KMKeyObject keyObj = operation.getKeyObject();
772-
RSAPrivateKey key = (RSAPrivateKey) ((KeyPair)(keyObj.getKeyObjectInstance())).getPrivate();
772+
RSAPrivateKey key = (RSAPrivateKey) ((KeyPair)(keyObj.keyObjectInst)).getPrivate();
773773
key.setExponent(secret, secretStart, secretLength);
774774
key.setModulus(modBuffer, modOff, modLength);
775775
((KMOperationImpl) operation).init(key, KMType.INVALID_VALUE, null, (short) 0, (short) 0);
@@ -783,7 +783,7 @@ public KMOperation createEcSigner(short digest, byte[] secret,
783783
.getOperationImpl(KMType.SIGN, alg, KMType.EC, KMType.INVALID_VALUE,
784784
KMType.INVALID_VALUE, KMType.INVALID_VALUE, secretLength, false);
785785
KMKeyObject keyObj = operation.getKeyObject();
786-
ECPrivateKey key = (ECPrivateKey) ((KeyPair)(keyObj.getKeyObjectInstance())).getPrivate();
786+
ECPrivateKey key = (ECPrivateKey) ((KeyPair)(keyObj.keyObjectInst)).getPrivate();
787787
key.setS(secret, secretStart, secretLength);
788788
((KMOperationImpl) operation).init(key, digest, null, (short) 0, (short) 0);
789789
return operation;
@@ -795,7 +795,7 @@ public KMOperation createKeyAgreement(byte[] secret, short secretStart,
795795
.getOperationImpl(KMType.AGREE_KEY, KeyAgreement.ALG_EC_SVDP_DH_PLAIN,
796796
KMType.EC, KMType.INVALID_VALUE, KMType.INVALID_VALUE, KMType.INVALID_VALUE, (short)0, false);
797797
KMKeyObject keyObj = operation.getKeyObject();
798-
ECPrivateKey key = (ECPrivateKey) ((KeyPair)(keyObj.getKeyObjectInstance())).getPrivate();
798+
ECPrivateKey key = (ECPrivateKey) ((KeyPair)(keyObj.keyObjectInst)).getPrivate();
799799
key.setS(secret, secretStart, secretLength);
800800
((KMOperationImpl) operation).init(key, KMType.INVALID_VALUE, null, (short) 0, (short) 0);
801801
return operation;
@@ -864,7 +864,7 @@ public KMMasterKey createMasterKey(KMMasterKey masterKey, short keySizeBits) {
864864
masterKey = new KMAESKey(key);
865865
short keyLen = (short) (keySizeBits / 8);
866866
getTrueRandomNumber(tmpArray, (short) 0, keyLen);
867-
((KMAESKey)masterKey).setKey(tmpArray, (short) 0);
867+
((KMAESKey)masterKey).aesKey.setKey(tmpArray, (short) 0);
868868
}
869869
return (KMMasterKey) masterKey;
870870
} finally {
@@ -883,7 +883,7 @@ public KMPreSharedKey createPreSharedKey(KMPreSharedKey preSharedKey, byte[] key
883883
false);
884884
preSharedKey = new KMHmacKey(key);
885885
}
886-
((KMHmacKey)preSharedKey).setKey(keyData, offset, length);
886+
((KMHmacKey)preSharedKey).hmacKey.setKey(keyData, offset, length);
887887
return (KMPreSharedKey) preSharedKey;
888888
}
889889

@@ -897,7 +897,7 @@ public KMComputedHmacKey createComputedHmacKey(KMComputedHmacKey computedHmacKey
897897
false);
898898
computedHmacKey = new KMHmacKey(key);
899899
}
900-
((KMHmacKey)computedHmacKey).setKey(keyData, offset, length);
900+
((KMHmacKey)computedHmacKey).hmacKey.setKey(keyData, offset, length);
901901
return (KMComputedHmacKey) computedHmacKey;
902902
}
903903

@@ -933,7 +933,7 @@ public short ecSign256(KMAttestationKey ecPrivKey, byte[] inputDataBuf, short in
933933

934934
signer = Signature.OneShot.open(MessageDigest.ALG_SHA_256,
935935
Signature.SIG_CIPHER_ECDSA, Cipher.PAD_NULL);
936-
signer.init(((KMECPrivateKey) ecPrivKey).getPrivateKey(), Signature.MODE_SIGN);
936+
signer.init(((KMECPrivateKey) ecPrivKey).ecKeyPair.getPrivate(), Signature.MODE_SIGN);
937937
return signer.sign(inputDataBuf, inputDataStart, inputDataLength,
938938
outputDataBuf, outputDataStart);
939939
} finally {
@@ -1071,7 +1071,7 @@ public short ecSign256(KMDeviceUniqueKeyPair ecPrivKey, byte[] inputDataBuf,
10711071
try {
10721072
signer = Signature.OneShot.open(MessageDigest.ALG_SHA_256,
10731073
Signature.SIG_CIPHER_ECDSA, Cipher.PAD_NULL);
1074-
signer.init(((KMECDeviceUniqueKey) ecPrivKey).getPrivateKey(), Signature.MODE_SIGN);
1074+
signer.init(((KMECDeviceUniqueKey) ecPrivKey).ecKeyPair.getPrivate(), Signature.MODE_SIGN);
10751075
return signer.sign(inputDataBuf, inputDataStart, inputDataLength,
10761076
outputDataBuf, outputDataStart);
10771077
} finally {
@@ -1090,8 +1090,10 @@ public KMDeviceUniqueKeyPair createRkpDeviceUniqueKeyPair(KMDeviceUniqueKeyPair
10901090
poolMgr.initECKey(ecKeyPair);
10911091
key = new KMECDeviceUniqueKey(ecKeyPair);
10921092
}
1093-
((KMECDeviceUniqueKey) key).setS(privKey, privKeyOff, privKeyLen);
1094-
((KMECDeviceUniqueKey) key).setW(pubKey, pubKeyOff, pubKeyLen);
1093+
ECPrivateKey ecKeyPair = (ECPrivateKey) ((KMECDeviceUniqueKey) key).ecKeyPair.getPrivate();
1094+
ECPublicKey ecPublicKey = (ECPublicKey) ((KMECDeviceUniqueKey) key).ecKeyPair.getPublic();
1095+
ecKeyPair.setS(privKey, privKeyOff, privKeyLen);
1096+
ecPublicKey.setW(pubKey, pubKeyOff, pubKeyLen);
10951097
return (KMDeviceUniqueKeyPair) key;
10961098
}
10971099

@@ -1103,7 +1105,7 @@ public KMRkpMacKey createRkpMacKey(KMRkpMacKey rkpMacKey, byte[] keyData,
11031105
false);
11041106
rkpMacKey = new KMHmacKey(key);
11051107
}
1106-
((KMHmacKey) rkpMacKey).setKey(keyData, offset, length);
1108+
((KMHmacKey) rkpMacKey).hmacKey.setKey(keyData, offset, length);
11071109
return rkpMacKey;
11081110
}
11091111

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMECDeviceUniqueKey.java

Lines changed: 2 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,36 +22,18 @@
2222

2323
public class KMECDeviceUniqueKey implements KMDeviceUniqueKeyPair {
2424

25-
private KeyPair ecKeyPair;
25+
public KeyPair ecKeyPair;
2626

2727
@Override
2828
public short getPublicKey(byte[] buf, short offset) {
29-
ECPublicKey publicKey = getPublicKey();
29+
ECPublicKey publicKey = (ECPublicKey) ecKeyPair.getPublic();
3030
return publicKey.getW(buf, offset);
3131
}
3232

3333
public KMECDeviceUniqueKey(KeyPair ecPair) {
3434
ecKeyPair = ecPair;
3535
}
3636

37-
public void setS(byte[] buffer, short offset, short length) {
38-
ECPrivateKey ecPriv = (ECPrivateKey) ecKeyPair.getPrivate();
39-
ecPriv.setS(buffer, offset, length);
40-
}
41-
42-
public void setW(byte[] buffer, short offset, short length) {
43-
ECPublicKey ecPublicKey = (ECPublicKey) ecKeyPair.getPublic();
44-
ecPublicKey.setW(buffer, offset, length);
45-
}
46-
47-
public ECPrivateKey getPrivateKey() {
48-
return (ECPrivateKey) ecKeyPair.getPrivate();
49-
}
50-
51-
public ECPublicKey getPublicKey() {
52-
return (ECPublicKey) ecKeyPair.getPublic();
53-
}
54-
5537
public static void onSave(Element element, KMECDeviceUniqueKey kmKey) {
5638
element.write(kmKey.ecKeyPair);
5739
}

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMECPrivateKey.java

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,26 +23,12 @@
2323

2424
public class KMECPrivateKey implements KMAttestationKey {
2525

26-
private KeyPair ecKeyPair;
26+
public KeyPair ecKeyPair;
2727

2828
public KMECPrivateKey(KeyPair ecPair) {
2929
ecKeyPair = ecPair;
3030
}
3131

32-
public void setS(byte[] buffer, short offset, short length) {
33-
ECPrivateKey ecPriv = (ECPrivateKey) ecKeyPair.getPrivate();
34-
ecPriv.setS(buffer, offset, length);
35-
}
36-
37-
public short getS(byte[] buffer, short offset) {
38-
ECPrivateKey ecPriv = (ECPrivateKey) ecKeyPair.getPrivate();
39-
return ecPriv.getS(buffer, offset);
40-
}
41-
42-
public ECPrivateKey getPrivateKey() {
43-
return (ECPrivateKey) ecKeyPair.getPrivate();
44-
}
45-
4632
public static void onSave(Element element, KMECPrivateKey kmKey) {
4733
element.write(kmKey.ecKeyPair);
4834
}

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMException.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,6 @@ public static void throwIt(short e) {
4242
reason[0] = e;
4343
throw exception;
4444
}
45-
/*
46-
public static KMException instance() {
47-
if (exception == null) {
48-
exception = new KMException();
49-
}
50-
return exception;
51-
}
52-
*/
5345
}
5446

5547

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMHmacKey.java

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,12 @@
2121

2222
public class KMHmacKey implements KMPreSharedKey, KMComputedHmacKey, KMRkpMacKey {
2323

24-
private HMACKey hmacKey;
24+
public HMACKey hmacKey;
2525

2626
public KMHmacKey(HMACKey key) {
2727
hmacKey = key;
2828
}
2929

30-
public void setKey(byte[] keyData, short kOff, short length) {
31-
hmacKey.setKey(keyData, kOff, length);
32-
}
33-
34-
public byte getKey(byte[] keyData, short kOff) {
35-
return hmacKey.getKey(keyData, kOff);
36-
}
37-
38-
public HMACKey getKey() {
39-
return hmacKey;
40-
}
41-
42-
public short getKeySizeBits() {
43-
return hmacKey.getSize();
44-
}
45-
4630
public static void onSave(Element element, KMHmacKey kmKey) {
4731
element.write(kmKey.hmacKey);
4832
}
Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,6 @@
11
package com.android.javacard.seprovider;
22

33
public class KMKeyObject {
4-
private byte algorithm;
5-
private Object keyObjectInst;
6-
7-
public void setKeyObjectData(byte alg, Object keyObject) {
8-
algorithm = alg;
9-
keyObjectInst = keyObject;
10-
}
11-
12-
public byte getAlgorithm() {
13-
return this.algorithm;
14-
}
15-
16-
public Object getKeyObjectInstance() {
17-
return keyObjectInst;
18-
}
4+
public byte algorithm;
5+
public Object keyObjectInst;
196
}

Applet/AndroidSEProviderLib/src/com/android/javacard/seprovider/KMPoolManager.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,8 @@ private KMKeyObject createKeyObjectInstance(byte alg) {
339339
KMException.throwIt(KMError.UNSUPPORTED_ALGORITHM);
340340
}
341341
KMKeyObject ptr = new KMKeyObject();
342-
ptr.setKeyObjectData(alg, keyObject);
342+
ptr.algorithm = alg;
343+
ptr.keyObjectInst = keyObject;
343344
return ptr;
344345
}
345346

@@ -529,7 +530,7 @@ public KMKeyObject getKeyObjectFromPool(short alg, short secretLength, short max
529530
break;
530531
}
531532
keyObject = (KMKeyObject) keysPool[index];
532-
if (algo == keyObject.getAlgorithm()) {
533+
if (algo == keyObject.algorithm) {
533534
// Check if the Object instance is not busy and free to use.
534535
if (!isResourceBusy(keyObject, RESOURCE_TYPE_KEY)) {
535536
break;

0 commit comments

Comments
 (0)