Skip to content

Commit 3ef13bc

Browse files
committed
raise minimum supported app version to 22
This allows dropping support for protocol version 1.
1 parent 940b5fb commit 3ef13bc

1 file changed

Lines changed: 4 additions & 49 deletions

File tree

src/main/java/app/attestation/server/AttestationProtocol.java

Lines changed: 4 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ class AttestationProtocol {
132132
// downgrade protection for the OS version/patch (bootloader/TEE enforced) and app version (OS
133133
// enforced) by keeping them updated.
134134
static final byte PROTOCOL_VERSION = 2;
135-
private static final byte PROTOCOL_VERSION_MINIMUM = 1;
135+
private static final byte PROTOCOL_VERSION_MINIMUM = 2;
136136
// can become longer in the future, but this is the minimum length
137137
private static final byte CHALLENGE_MESSAGE_LENGTH = 1 + CHALLENGE_LENGTH * 2;
138138
private static final int MAX_ENCODED_CHAIN_LENGTH = 5000;
@@ -162,7 +162,7 @@ class AttestationProtocol {
162162
OS_ENFORCED_FLAGS_SYSTEM_USER;
163163

164164
private static final String ATTESTATION_APP_PACKAGE_NAME = "app.attestation.auditor";
165-
private static final int ATTESTATION_APP_MINIMUM_VERSION = 5;
165+
private static final int ATTESTATION_APP_MINIMUM_VERSION = 22;
166166
private static final String ATTESTATION_APP_SIGNATURE_DIGEST_DEBUG =
167167
"17727D8B61D55A864936B1A7B4A2554A15151F32EBCF44CDAA6E6C3258231890";
168168
private static final String ATTESTATION_APP_SIGNATURE_DIGEST_RELEASE =
@@ -542,45 +542,6 @@ static class DeviceInfo {
542542
"ex0SdDrx+tWUDqG8At2JHA==\n" +
543543
"-----END CERTIFICATE-----";
544544

545-
private static final byte[] DEFLATE_DICTIONARY_1 = BaseEncoding.base64().decode(
546-
"MIICOzCCAeKgAwIBAgIBATAKBggqhkjOPQQDAjAbMRkwFwYDVQQFExBkNzc1MjM0ODY2ZjM3ZjUz" +
547-
"MCAXDTcwMDEwMTAwMDAwMFoYDzIxMDYwMjA3MDYyODE1WjAfMR0wGwYDVQQDDBRBbmRyb2lkIEtl" +
548-
"eXN0b3JlIEtleTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABL//uGYRGvZkKMBn+OD141iz+Roo" +
549-
"KosorGyVa0lqW/BK40odihF55g1elhnVqjclcGE/H4b4jIKuC5vq+r+vF16jggEPMIIBCzAOBgNV" +
550-
"HQ8BAf8EBAMCB4AwgfgGCisGAQQB1nkCAREEgekwgeYCAQIKAQECAQMKAQEEBnNhbXBsZQQAMFi/" +
551-
"hT0IAgYBZwC3xBC/hUVIBEYwRDEeMBwEF2FwcC5hdHRlc3RhdGlvbi5hdWRpdG9yAgEEMSIEIJkO" +
552-
"BPCGSxnxT4Tg5DL3o5Pyl6sQWiLB4bELRCpKYsQsMHShCDEGAgECAgEDogMCAQOjBAICAQClBTED" +
553-
"AgEEqgMCAQG/g3cCBQC/hT4DAgEAv4U/AgUAv4VAKjAoBCAXFhbq7yYAn8RtxtifPSQhfpJsgaZ8" +
554-
"5l0uOp3CcEDHqwEB/woBAL+FQQUCAwFfkL+FQgUCAwMUUzAKBggqhkjOPQQDAgNHADBEAiBXQsil" +
555-
"fWfag1ubiMjD4AQrawdvNmQj5Qi62uAIfv+ZzgIgfZTibp2AVtBWSAezlalyOaZIMo+z7wS8ZFq3" +
556-
"eHicabgwggIpMIIBr6ADAgECAgloORJGdChHOWEwCgYIKoZIzj0EAwIwGzEZMBcGA1UEBRMQODdm" +
557-
"NDUxNDQ3NWJhMGEyYjAeFw0xNjA1MjYxNzA3MzNaFw0yNjA1MjQxNzA3MzNaMBsxGTAXBgNVBAUT" +
558-
"EGQ3NzUyMzQ4NjZmMzdmNTMwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAASqtc7KxE2tv4aOkx2u" +
559-
"axeuqr6PItpqGRyAKjqsBE7JhY4poRG9oWjC0azGRJ8xJuqimPeqn/8kE5bmJGsdFyngo4HbMIHY" +
560-
"MB0GA1UdDgQWBBQvvxzSWU7SsNOWC3CeF0TcGhBQSzAfBgNVHSMEGDAWgBQwRCPlovYG4VCrd18W" +
561-
"FruRzGPGWTAMBgNVHRMBAf8EAjAAMA4GA1UdDwEB/wQEAwIHgDAkBgNVHR4EHTAboBkwF4IVaW52" +
562-
"YWxpZDtlbWFpbDppbnZhbGlkMFIGA1UdHwRLMEkwR6BFoEOGQWh0dHBzOi8vYW5kcm9pZC5nb29n" +
563-
"bGVhcGlzLmNvbS9hdHRlc3RhdGlvbi9jcmwvNjgzOTEyNDY3NDI4NDczOTYxMAoGCCqGSM49BAMC" +
564-
"A2gAMGUCMD2sDgFbg20egPedfKwfOIqUugCEK6nxXh02Za7qG0i3jcjcA2ZWbsLN602qASM08AIx" +
565-
"AIG4MorAs4cED1r90dv3LwCkZn4BTpK13Ef+sc9hEWrzj/lY6ZRXu894W5Ggw97TzTCCA8MwggGr" +
566-
"oAMCAQICCgOIJmdgZYmWhXUwDQYJKoZIhvcNAQELBQAwGzEZMBcGA1UEBRMQZjkyMDA5ZTg1M2I2" +
567-
"YjA0NTAeFw0xNjA1MjYxNzAxNTFaFw0yNjA1MjQxNzAxNTFaMBsxGTAXBgNVBAUTEDg3ZjQ1MTQ0" +
568-
"NzViYTBhMmIwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAARkO1ZoHSf6xILPbCBN687wKVw1DAGqjDJ/" +
569-
"PtX0Sa70KWZCXzk9hHY7Xa1WsQ0EWcYsak+TJVaokpPD0U6i8d/vDjy6InKjIjnhsrR9rFULq7xc" +
570-
"p1XiqkhiitY8dv9n3HKjgbYwgbMwHQYDVR0OBBYEFDBEI+Wi9gbhUKt3XxYWu5HMY8ZZMB8GA1Ud" +
571-
"IwQYMBaAFDZh4QB8iAUJUYtEbEf/GkzJ6k8SMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQD" +
572-
"AgGGMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHBzOi8vYW5kcm9pZC5nb29nbGVhcGlzLmNvbS9hdHRl" +
573-
"c3RhdGlvbi9jcmwvRThGQTE5NjMxNEQyRkExODANBgkqhkiG9w0BAQsFAAOCAgEAQDmKiza8k5mz" +
574-
"pZ645yLw6F8c2izoAl7tvZeyqWxR2nFS8YGLhkYiBEKs2QalGErfT4Mfj9ir6B7c/fbBGa9sU3tA" +
575-
"8Ogkx0wJsVl1BXa5bxDJthskn7yUXzDQrl9aCEvzOT30RGNmGR8i6v7J9bCa9xY2yjHVDAaOQHGp" +
576-
"nA9x/MJfTv+qn4V/ue4l86CusjMyURvzJZJufP7BZNKY2slAXIZlCS9BUOiISmIMvEShNlA8lyjh" +
577-
"O/mTEjFFJAHc8p9jxb+070LQ5NIHtppFaza3z0oJTMwTb60gxzwZk5LV88LHlWoCEU+ViPdTq1Dm" +
578-
"DxYKLLbHx+NobOcCbQBRj8A4P9ZjWvFMh/ZNWzK0at0q3s9VxtCbu0hjf7jV+XZHML3wJmnbZjOz" +
579-
"6fpdlR0WEUetNIwHDNvu25fHoKnzPwO78gy2ajyMQ8JC149njffZyWSVWhnwfXR8hTqgagTOkncl" +
580-
"ejEiK9wB6KOrvgViF/fqvJ9aoOSOiVnhHviufEm0Q1aDUILCj/f4j67lzFOa5tssD8SAlRsrJdRo" +
581-
"AD/hSd1+qD9LVxVkJWKFnUpaElRzWUKo9nr/+vbDJxrE3icNVeyNIEfnmTRH8Xvr2Q+Cj/PCsboj" +
582-
"wnveK6fgKrOf2MLgqOq0PhxouTmTQbEF2CLnwpUgY3vjqY0G+xyYIoSXc6NvyAc=");
583-
584545
private static final byte[] DEFLATE_DICTIONARY_2 = BaseEncoding.base64().decode(
585546
"MIIFHDCCAwSgAwIBAgIJANUP8luj8tazMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNVBAUTEGY5MjAw" +
586547
"OWU4NTNiNmIwNDUwHhcNMTkxMTIyMjAzNzU4WhcNMzQxMTE4MjAzNzU4WjAbMRkwFwYDVQQFExBm" +
@@ -1288,7 +1249,7 @@ static void verifySerialized(final byte[] attestationResult,
12881249
final byte[] chain = new byte[MAX_ENCODED_CHAIN_LENGTH];
12891250
final Inflater inflater = new Inflater(true);
12901251
inflater.setInput(compressedChain);
1291-
inflater.setDictionary(version >= 2 ? DEFLATE_DICTIONARY_2 : DEFLATE_DICTIONARY_1);
1252+
inflater.setDictionary(DEFLATE_DICTIONARY_2);
12921253
final int chainLength = inflater.inflate(chain);
12931254
if (!inflater.finished()) {
12941255
throw new GeneralSecurityException("certificate chain is too large");
@@ -1304,8 +1265,7 @@ static void verifySerialized(final byte[] attestationResult,
13041265
chainDeserializer.get(encoded);
13051266
certs.add(generateCertificate(new ByteArrayInputStream(encoded)));
13061267
}
1307-
final int certificateCount = version >= 2 ? certs.size() : certs.size() + 1;
1308-
final Certificate[] certificates = certs.toArray(new Certificate[certificateCount]);
1268+
final Certificate[] certificates = certs.toArray(new Certificate[certs.size()]);
13091269

13101270
final byte[] fingerprint = new byte[FINGERPRINT_LENGTH];
13111271
deserializer.get(fingerprint);
@@ -1333,11 +1293,6 @@ static void verifySerialized(final byte[] attestationResult,
13331293
final byte[] signature = new byte[signatureLength];
13341294
deserializer.get(signature);
13351295

1336-
if (version < 2) {
1337-
certificates[certificates.length - 1] =
1338-
generateCertificate(new ByteArrayInputStream(GOOGLE_ROOT_CERTIFICATE.getBytes()));
1339-
}
1340-
13411296
deserializer.rewind();
13421297
deserializer.limit(deserializer.capacity() - signature.length);
13431298

0 commit comments

Comments
 (0)