@@ -30,24 +30,24 @@ public class KMJCardSimApplet extends KMKeymasterApplet {
30
30
private static final byte ILLEGAL_STATE = KM_BEGIN_STATE + 1 ;
31
31
private static final short POWER_RESET_MASK_FLAG = (short ) 0x4000 ;
32
32
33
- // Provider specific Commands
34
- private static final byte INS_KEYMINT_PROVIDER_APDU_START = 0x00 ;
35
- private static final byte INS_PROVISION_ATTEST_IDS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 1 ;
36
- private static final byte INS_PROVISION_PRESHARED_SECRET_CMD =
37
- INS_KEYMINT_PROVIDER_APDU_START + 2 ;
38
- private static final byte INS_OEM_LOCK_PROVISIONING_CMD = INS_KEYMINT_PROVIDER_APDU_START + 3 ;
39
- private static final byte INS_GET_PROVISION_STATUS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 4 ;
40
- private static final byte INS_SET_BOOT_PARAMS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 5 ;
41
- private static final byte INS_PROVISION_RKP_DEVICE_UNIQUE_KEYPAIR_CMD =
42
- INS_KEYMINT_PROVIDER_APDU_START + 6 ;
43
- private static final byte INS_PROVISION_RKP_ADDITIONAL_CERT_CHAIN_CMD =
44
- INS_KEYMINT_PROVIDER_APDU_START + 7 ;
45
- private static final byte INS_SET_BOOT_ENDED_CMD =
46
- INS_KEYMINT_PROVIDER_APDU_START + 8 ; //unused
47
- private static final byte INS_SE_FACTORY_PROVISIONING_LOCK_CMD = INS_KEYMINT_PROVIDER_APDU_START + 9 ;
48
- private static final byte INS_PROVISION_OEM_ROOT_PUBLIC_KEY_CMD = INS_KEYMINT_PROVIDER_APDU_START + 10 ;
49
- private static final byte INS_OEM_UNLOCK_PROVISIONING_CMD = INS_KEYMINT_PROVIDER_APDU_START + 11 ;
50
-
33
+ // Provider specific Commands
34
+ private static final byte INS_KEYMINT_PROVIDER_APDU_START = 0x00 ;
35
+ private static final byte INS_PROVISION_ATTEST_IDS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 3 ;
36
+ private static final byte INS_PROVISION_PRESHARED_SECRET_CMD =
37
+ INS_KEYMINT_PROVIDER_APDU_START + 4 ;
38
+ private static final byte INS_SET_BOOT_PARAMS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 5 ; // Unused
39
+ private static final byte INS_OEM_LOCK_PROVISIONING_CMD = INS_KEYMINT_PROVIDER_APDU_START + 6 ;
40
+ private static final byte INS_GET_PROVISION_STATUS_CMD = INS_KEYMINT_PROVIDER_APDU_START + 7 ;
41
+ //0x08 was reserved for INS_INIT_STRONGBOX_CMD
42
+ //0x09 was reserved for INS_SET_BOOT_ENDED_CMD earlier. it is unused now.
43
+ private static final byte INS_SE_FACTORY_PROVISIONING_LOCK_CMD = INS_KEYMINT_PROVIDER_APDU_START + 10 ;
44
+ private static final byte INS_PROVISION_OEM_ROOT_PUBLIC_KEY_CMD = INS_KEYMINT_PROVIDER_APDU_START + 11 ;
45
+ private static final byte INS_OEM_UNLOCK_PROVISIONING_CMD = INS_KEYMINT_PROVIDER_APDU_START + 12 ;
46
+ private static final byte INS_PROVISION_RKP_DEVICE_UNIQUE_KEYPAIR_CMD =
47
+ INS_KEYMINT_PROVIDER_APDU_START + 13 ;
48
+ private static final byte INS_PROVISION_RKP_ADDITIONAL_CERT_CHAIN_CMD =
49
+ INS_KEYMINT_PROVIDER_APDU_START + 14 ;
50
+
51
51
private static final byte INS_KEYMINT_PROVIDER_APDU_END = 0x1F ;
52
52
public static final byte BOOT_KEY_MAX_SIZE = 32 ;
53
53
public static final byte BOOT_HASH_MAX_SIZE = 32 ;
@@ -561,7 +561,7 @@ private void processSetBootParamsCmd(APDU apdu) {
561
561
private boolean isProvisioningComplete () {
562
562
short pStatus = kmDataStore .getProvisionStatus ();
563
563
short pCompleteStatus = PROVISION_STATUS_DEVICE_UNIQUE_KEYPAIR | PROVISION_STATUS_ADDITIONAL_CERT_CHAIN |
564
- PROVISION_STATUS_PRESHARED_SECRET | PROVISION_STATUS_ATTEST_IDS ;
564
+ PROVISION_STATUS_PRESHARED_SECRET | PROVISION_STATUS_ATTEST_IDS | PROVISION_STATUS_OEM_PUBLIC_KEY ;
565
565
if (kmDataStore .isProvisionLocked () || (pCompleteStatus == (pStatus & pCompleteStatus ))) {
566
566
return true ;
567
567
}
0 commit comments