@@ -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