ID attestation: Pass second IMEIs to Keystore

To support attestation of a second IMEI, when ID attestation (with IMEI)
is requested, pass in the 2nd IMEI as a SECOND_IMEI KeyMint tag.

Bug: 244732345
Test: atest android.keystore.cts.DeviceOwnerKeyManagementTest
Change-Id: I19a3733746fa6a35c6225f0c60fd9f4b51a62ab1
This commit is contained in:
Eran Messeri
2022-10-31 12:21:06 +00:00
parent 995e16c9ec
commit 4594638a48
2 changed files with 10 additions and 0 deletions

View File

@@ -126,6 +126,8 @@ public final class KeymasterDefs {
Tag.BOOT_PATCHLEVEL; // KM_UINT | 719;
public static final int KM_TAG_DEVICE_UNIQUE_ATTESTATION =
Tag.DEVICE_UNIQUE_ATTESTATION; // KM_BOOL | 720;
public static final int KM_TAG_ATTESTATION_ID_SECOND_IMEI =
Tag.ATTESTATION_ID_SECOND_IMEI; // KM_BYTES | 723;
public static final int KM_TAG_NONCE = Tag.NONCE; // KM_BYTES | 1001;
public static final int KM_TAG_MAC_LENGTH = Tag.MAC_LENGTH; // KM_UINT | 1003;

View File

@@ -52,6 +52,7 @@ import android.system.keystore2.KeyEntryResponse;
import android.system.keystore2.KeyMetadata;
import android.system.keystore2.ResponseCode;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.util.ArraySet;
import android.util.Log;
@@ -856,6 +857,13 @@ public abstract class AndroidKeyStoreKeyPairGeneratorSpi extends KeyPairGenerato
KeymasterDefs.KM_TAG_ATTESTATION_ID_IMEI,
imei.getBytes(StandardCharsets.UTF_8)
));
final String secondImei = telephonyService.getImei(1);
if (!TextUtils.isEmpty(secondImei)) {
params.add(KeyStore2ParameterUtils.makeBytes(
KeymasterDefs.KM_TAG_ATTESTATION_ID_SECOND_IMEI,
secondImei.getBytes(StandardCharsets.UTF_8)
));
}
break;
}
case AttestationUtils.ID_TYPE_MEID: {