Skip to content

Commit 5602fc2

Browse files
brandonweekspfmaggi
authored andcommitted
No public description
PiperOrigin-RevId: 597178877
1 parent defc2fe commit 5602fc2

File tree

1 file changed

+92
-31
lines changed

1 file changed

+92
-31
lines changed

src/main/java/com/afwsamples/testdpc/policy/utils/AuthorizationList.java

Lines changed: 92 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@
4040
import org.bouncycastle.asn1.ASN1Sequence;
4141
import org.bouncycastle.asn1.ASN1SequenceParser;
4242
import org.bouncycastle.asn1.ASN1TaggedObject;
43+
import org.bouncycastle.asn1.ASN1Util;
44+
import org.bouncycastle.asn1.BERTags;
4345

4446
public class AuthorizationList {
4547
// Algorithm values.
@@ -212,110 +214,169 @@ public AuthorizationList(ASN1Encodable sequence) throws CertificateParsingExcept
212214
ASN1TaggedObject entry = parseAsn1TaggedObject(parser);
213215
for (; entry != null; entry = parseAsn1TaggedObject(parser)) {
214216
int tag = entry.getTagNo();
215-
ASN1Primitive value = entry.getObject();
216-
Log.i("Attestation", "Parsing tag: [" + tag + "], value: [" + value + "]");
217+
Log.i(
218+
"Attestation",
219+
"Parsing tag: [" + tag + "], value: [" + entry.getBaseUniversal(true, tag) + "]");
217220
switch (tag) {
218221
default:
219222
throw new CertificateParsingException("Unknown tag " + tag + " found");
220223

221224
case KM_TAG_PURPOSE & KEYMASTER_TAG_TYPE_MASK:
222-
purposes = Asn1Utils.getIntegersFromAsn1Set(value);
225+
purposes =
226+
Asn1Utils.getIntegersFromAsn1Set(
227+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.SET));
223228
break;
224229
case KM_TAG_ALGORITHM & KEYMASTER_TAG_TYPE_MASK:
225-
algorithm = Asn1Utils.getIntegerFromAsn1(value);
230+
algorithm =
231+
Asn1Utils.getIntegerFromAsn1(
232+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
226233
break;
227234
case KM_TAG_KEY_SIZE & KEYMASTER_TAG_TYPE_MASK:
228-
keySize = Asn1Utils.getIntegerFromAsn1(value);
235+
keySize =
236+
Asn1Utils.getIntegerFromAsn1(
237+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
229238
Log.i("Attestation", "Found KEY SIZE, value: " + keySize);
230239
break;
231240
case KM_TAG_DIGEST & KEYMASTER_TAG_TYPE_MASK:
232-
digests = Asn1Utils.getIntegersFromAsn1Set(value);
241+
digests =
242+
Asn1Utils.getIntegersFromAsn1Set(
243+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.SET));
233244
break;
234245
case KM_TAG_PADDING & KEYMASTER_TAG_TYPE_MASK:
235-
paddingModes = Asn1Utils.getIntegersFromAsn1Set(value);
246+
paddingModes =
247+
Asn1Utils.getIntegersFromAsn1Set(
248+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.SET));
236249
break;
237250
case KM_TAG_RSA_PUBLIC_EXPONENT & KEYMASTER_TAG_TYPE_MASK:
238-
rsaPublicExponent = Asn1Utils.getLongFromAsn1(value);
251+
rsaPublicExponent =
252+
Asn1Utils.getLongFromAsn1(
253+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
239254
break;
240255
case KM_TAG_NO_AUTH_REQUIRED & KEYMASTER_TAG_TYPE_MASK:
241256
noAuthRequired = true;
242257
break;
243258
case KM_TAG_CREATION_DATETIME & KEYMASTER_TAG_TYPE_MASK:
244-
creationDateTime = Asn1Utils.getDateFromAsn1(value);
259+
creationDateTime =
260+
Asn1Utils.getDateFromAsn1(
261+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
245262
break;
246263
case KM_TAG_ORIGIN & KEYMASTER_TAG_TYPE_MASK:
247-
origin = Asn1Utils.getIntegerFromAsn1(value);
264+
origin =
265+
Asn1Utils.getIntegerFromAsn1(
266+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
248267
break;
249268
case KM_TAG_OS_VERSION & KEYMASTER_TAG_TYPE_MASK:
250-
osVersion = Asn1Utils.getIntegerFromAsn1(value);
269+
osVersion =
270+
Asn1Utils.getIntegerFromAsn1(
271+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
251272
break;
252273
case KM_TAG_OS_PATCHLEVEL & KEYMASTER_TAG_TYPE_MASK:
253-
osPatchLevel = Asn1Utils.getIntegerFromAsn1(value);
274+
osPatchLevel =
275+
Asn1Utils.getIntegerFromAsn1(
276+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
254277
break;
255278
case KM_TAG_VENDOR_PATCHLEVEL & KEYMASTER_TAG_TYPE_MASK:
256-
vendorPatchLevel = Asn1Utils.getIntegerFromAsn1(value);
279+
vendorPatchLevel =
280+
Asn1Utils.getIntegerFromAsn1(
281+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
257282
break;
258283
case KM_TAG_BOOT_PATCHLEVEL & KEYMASTER_TAG_TYPE_MASK:
259-
bootPatchLevel = Asn1Utils.getIntegerFromAsn1(value);
284+
bootPatchLevel =
285+
Asn1Utils.getIntegerFromAsn1(
286+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
260287
break;
261288
case KM_TAG_ACTIVE_DATETIME & KEYMASTER_TAG_TYPE_MASK:
262-
activeDateTime = Asn1Utils.getDateFromAsn1(value);
289+
activeDateTime =
290+
Asn1Utils.getDateFromAsn1(
291+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
263292
break;
264293
case KM_TAG_ORIGINATION_EXPIRE_DATETIME & KEYMASTER_TAG_TYPE_MASK:
265-
originationExpireDateTime = Asn1Utils.getDateFromAsn1(value);
294+
originationExpireDateTime =
295+
Asn1Utils.getDateFromAsn1(
296+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
266297
break;
267298
case KM_TAG_USAGE_EXPIRE_DATETIME & KEYMASTER_TAG_TYPE_MASK:
268-
usageExpireDateTime = Asn1Utils.getDateFromAsn1(value);
299+
usageExpireDateTime =
300+
Asn1Utils.getDateFromAsn1(
301+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
269302
break;
270303
case KM_TAG_APPLICATION_ID & KEYMASTER_TAG_TYPE_MASK:
271-
applicationId = Asn1Utils.getByteArrayFromAsn1(value);
304+
applicationId =
305+
Asn1Utils.getByteArrayFromAsn1(
306+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
272307
break;
273308
case KM_TAG_ROLLBACK_RESISTANT & KEYMASTER_TAG_TYPE_MASK:
274309
rollbackResistant = true;
275310
break;
276311
case KM_TAG_AUTH_TIMEOUT & KEYMASTER_TAG_TYPE_MASK:
277-
authTimeout = Asn1Utils.getIntegerFromAsn1(value);
312+
authTimeout =
313+
Asn1Utils.getIntegerFromAsn1(
314+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
278315
break;
279316
case KM_TAG_ALLOW_WHILE_ON_BODY & KEYMASTER_TAG_TYPE_MASK:
280317
allowWhileOnBody = true;
281318
break;
282319
case KM_TAG_EC_CURVE & KEYMASTER_TAG_TYPE_MASK:
283-
ecCurve = Asn1Utils.getIntegerFromAsn1(value);
320+
ecCurve =
321+
Asn1Utils.getIntegerFromAsn1(
322+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
284323
break;
285324
case KM_TAG_USER_AUTH_TYPE & KEYMASTER_TAG_TYPE_MASK:
286-
userAuthType = Asn1Utils.getIntegerFromAsn1(value);
325+
userAuthType =
326+
Asn1Utils.getIntegerFromAsn1(
327+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.INTEGER));
287328
break;
288329
case KM_TAG_ROOT_OF_TRUST & KEYMASTER_TAG_TYPE_MASK:
289-
rootOfTrust = new RootOfTrust(value);
330+
rootOfTrust =
331+
new RootOfTrust(ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.SEQUENCE));
290332
break;
291333
case KM_TAG_ATTESTATION_APPLICATION_ID & KEYMASTER_TAG_TYPE_MASK:
292334
attestationApplicationId =
293335
new AttestationApplicationId(
294-
Asn1Utils.getAsn1EncodableFromBytes(Asn1Utils.getByteArrayFromAsn1(value)));
336+
Asn1Utils.getAsn1EncodableFromBytes(
337+
Asn1Utils.getByteArrayFromAsn1(
338+
ASN1Util.getContextBaseUniversal(
339+
entry, tag, true, BERTags.OCTET_STRING))));
295340
break;
296341
case KM_TAG_ATTESTATION_ID_BRAND & KEYMASTER_TAG_TYPE_MASK:
297-
brand = getStringFromAsn1Value(value);
342+
brand =
343+
getStringFromAsn1Value(
344+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
298345
break;
299346
case KM_TAG_ATTESTATION_ID_DEVICE & KEYMASTER_TAG_TYPE_MASK:
300-
device = getStringFromAsn1Value(value);
347+
device =
348+
getStringFromAsn1Value(
349+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
301350
break;
302351
case KM_TAG_ATTESTATION_ID_PRODUCT & KEYMASTER_TAG_TYPE_MASK:
303-
product = getStringFromAsn1Value(value);
352+
product =
353+
getStringFromAsn1Value(
354+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
304355
break;
305356
case KM_TAG_ATTESTATION_ID_SERIAL & KEYMASTER_TAG_TYPE_MASK:
306-
serialNumber = getStringFromAsn1Value(value);
357+
serialNumber =
358+
getStringFromAsn1Value(
359+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
307360
break;
308361
case KM_TAG_ATTESTATION_ID_IMEI & KEYMASTER_TAG_TYPE_MASK:
309-
imei = getStringFromAsn1Value(value);
362+
imei =
363+
getStringFromAsn1Value(
364+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
310365
break;
311366
case KM_TAG_ATTESTATION_ID_MEID & KEYMASTER_TAG_TYPE_MASK:
312-
meid = getStringFromAsn1Value(value);
367+
meid =
368+
getStringFromAsn1Value(
369+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
313370
break;
314371
case KM_TAG_ATTESTATION_ID_MANUFACTURER & KEYMASTER_TAG_TYPE_MASK:
315-
manufacturer = getStringFromAsn1Value(value);
372+
manufacturer =
373+
getStringFromAsn1Value(
374+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
316375
break;
317376
case KM_TAG_ATTESTATION_ID_MODEL & KEYMASTER_TAG_TYPE_MASK:
318-
model = getStringFromAsn1Value(value);
377+
model =
378+
getStringFromAsn1Value(
379+
ASN1Util.getContextBaseUniversal(entry, tag, true, BERTags.OCTET_STRING));
319380
break;
320381
case KM_TAG_ALL_APPLICATIONS & KEYMASTER_TAG_TYPE_MASK:
321382
allApplications = true;

0 commit comments

Comments
 (0)