From 8f24d7d7c7e3dead8b9ac0922c34146ce603f683 Mon Sep 17 00:00:00 2001 From: Bo Zhu Date: Fri, 15 Feb 2019 18:12:41 -0800 Subject: [PATCH] Skip the parsing of the refresh interval in CertXml It's not used in Android P or Q. Test: atest FrameworksServicesTests:com.android.server.locksettings.recoverablekeystore Change-Id: Id07d0cc26811f25e2962f642d86f0bfd877f62ff --- .../certificate/CertXml.java | 28 +---------- ...nvalid-cert-file-two-refresh-intervals.xml | 46 ------------------- ...> valid-cert-file-no-refresh-interval.xml} | 0 .../certificate/CertXmlTest.java | 33 +++---------- 4 files changed, 9 insertions(+), 98 deletions(-) delete mode 100644 services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-two-refresh-intervals.xml rename services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/{invalid-cert-file-no-refresh-interval.xml => valid-cert-file-no-refresh-interval.xml} (100%) diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/certificate/CertXml.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/certificate/CertXml.java index c62a31e24fb29..ff22a8dc934f1 100644 --- a/services/core/java/com/android/server/locksettings/recoverablekeystore/certificate/CertXml.java +++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/certificate/CertXml.java @@ -20,6 +20,8 @@ import android.annotation.Nullable; import com.android.internal.annotations.VisibleForTesting; +import org.w3c.dom.Element; + import java.security.SecureRandom; import java.security.cert.CertPath; import java.security.cert.X509Certificate; @@ -28,8 +30,6 @@ import java.util.Collections; import java.util.Date; import java.util.List; -import org.w3c.dom.Element; - /** * Parses and holds the XML file containing the list of THM public-key certificates and related * metadata. @@ -38,24 +38,20 @@ public final class CertXml { private static final String METADATA_NODE_TAG = "metadata"; private static final String METADATA_SERIAL_NODE_TAG = "serial"; - private static final String METADATA_REFRESH_INTERVAL_NODE_TAG = "refresh-interval"; private static final String ENDPOINT_CERT_LIST_TAG = "endpoints"; private static final String ENDPOINT_CERT_ITEM_TAG = "cert"; private static final String INTERMEDIATE_CERT_LIST_TAG = "intermediates"; private static final String INTERMEDIATE_CERT_ITEM_TAG = "cert"; private final long serial; - private final long refreshInterval; private final List intermediateCerts; private final List endpointCerts; private CertXml( long serial, - long refreshInterval, List intermediateCerts, List endpointCerts) { this.serial = serial; - this.refreshInterval = refreshInterval; this.intermediateCerts = intermediateCerts; this.endpointCerts = endpointCerts; } @@ -65,15 +61,6 @@ public final class CertXml { return serial; } - /** - * Gets the refresh interval in the XML file containing public-key certificates. The refresh - * interval denotes the number of seconds that the client should follow to contact the server to - * refresh the XML file. - */ - public long getRefreshInterval() { - return refreshInterval; - } - @VisibleForTesting List getAllIntermediateCerts() { return intermediateCerts; @@ -121,7 +108,6 @@ public final class CertXml { Element rootNode = CertUtils.getXmlRootNode(bytes); return new CertXml( parseSerial(rootNode), - parseRefreshInterval(rootNode), parseIntermediateCerts(rootNode), parseEndpointCerts(rootNode)); } @@ -136,16 +122,6 @@ public final class CertXml { return Long.parseLong(contents.get(0)); } - private static long parseRefreshInterval(Element rootNode) throws CertParsingException { - List contents = - CertUtils.getXmlNodeContents( - CertUtils.MUST_EXIST_EXACTLY_ONE, - rootNode, - METADATA_NODE_TAG, - METADATA_REFRESH_INTERVAL_NODE_TAG); - return Long.parseLong(contents.get(0)); - } - private static List parseIntermediateCerts(Element rootNode) throws CertParsingException { List contents = diff --git a/services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-two-refresh-intervals.xml b/services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-two-refresh-intervals.xml deleted file mode 100644 index 0f4e8a3ca0c6c..0000000000000 --- a/services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-two-refresh-intervals.xml +++ /dev/null @@ -1,46 +0,0 @@ - - - - - 1000 - - - 1515697631 - - - 2592000 - - - 2592000 - - - - 0 - - - 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= - - - - - - MIIDCDCB8aADAgECAgYBYOlweDswDQYJKoZIhvcNAQELBQAwLTErMCkGA1UEAwwi - R29vZ2xlIENyeXB0QXV0aFZhdWx0IEludGVybWVkaWF0ZTAeFw0xODAxMTEwODE1 - NTBaFw0yMDAxMTIwODE1NTBaMCkxJzAlBgNVBAMTHkdvb2dsZSBDcnlwdEF1dGhW - YXVsdCBJbnN0YW5jZTBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABLgAERiYHfBu - tJT+htocB40BtDr2jdxh0EZJlQ8QhpMkZuA/0t/zeSAdkVWw5b16izJ9JVOi/KVl - 4b0hRH54UvowDQYJKoZIhvcNAQELBQADggIBABZALhC9j3hpZ0AgN0tsqAP2Ix21 - tNOcvo/aFJuSFanOM4DZbycZEYAo5rorvuFu7eXETBKDGnI5xreNAoQsaj/dyCHu - HKIn5P7yCmKvG2sV2TQ5go+0xV2x8BhTrtUWLeHvUbM3fXipa3NrordbA8MgzXwr - GR1Y1FuMOn5n4kiuHJ2sQTbDdzSQSK5VpH+6rjARlfOCyLUX0u8UKRRH81qhIQWb - UFMp9q1CVfiLP2O3CdDdpZXCysdflIb62TWnma+I8jqMryyxrMVs9kpfa8zkX9qe - 33Vxp+QaQTqQ07/7KYVw869MeFn+bXeHnjUhqGY6S8M71vrTMG3M5p8Sq9LmV8Y5 - 7YB5uqKap2Inf0FOuJS7h7nVVzU/kOFkepaQVHyScwTPuuXNgpQg8XZnN/AWfRwJ - hf5zE6vXXTHMzQA1mY2eEhxGfpryv7LH8pvfcyTakdBlw8aMJjKdre8xLLGZeVCa - 79plkfYD0rMrxtRHCGyTKGzUcx/B9kYJK5qBgJiDJLKF3XwGbAs/F8CyEPihjvj4 - M2EoeyhmHWKLYsps6+uTksJ+PxZU14M7672K2y8BdulyfkZIhili118XnRykKkMf - JLQJKMqZx5O0B9bF8yQdcGKEGEwMQt5ENdH8HeiwLm4QS3VzFXYetgUPCM5lPDIp - BuwwuQxvQDF4pmQd - - - diff --git a/services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-no-refresh-interval.xml b/services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/valid-cert-file-no-refresh-interval.xml similarity index 100% rename from services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/invalid-cert-file-no-refresh-interval.xml rename to services/tests/servicestests/assets/KeyStoreRecoveryControllerTest/xml/valid-cert-file-no-refresh-interval.xml diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java index bbcc41113f5a0..9836c64ea5b50 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/certificate/CertXmlTest.java @@ -47,7 +47,6 @@ public final class CertXmlTest { public void parse_succeeds() throws Exception { CertXml certXml = CertXml.parse(certXmlBytes); assertThat(certXml.getSerial()).isEqualTo(1000L); - assertThat(certXml.getRefreshInterval()).isEqualTo(2592000L); } @Test @@ -74,6 +73,13 @@ public final class CertXmlTest { assertThat(endpointCerts).containsAllOf(TestData.LEAF_CERT_1, TestData.LEAF_CERT_2); } + @Test + public void parse_doesNotThrowIfNoRefreshInterval() throws Exception { + CertXml.parse( + TestData.readTestFile( + "xml/valid-cert-file-no-refresh-interval.xml")); + } + @Test public void parse_throwsIfNoEndpointCert() throws Exception { CertParsingException expected = @@ -86,18 +92,6 @@ public final class CertXmlTest { assertThat(expected.getMessage()).contains("at least one"); } - @Test - public void parse_throwsIfNoRefreshInterval() throws Exception { - CertParsingException expected = - expectThrows( - CertParsingException.class, - () -> - CertXml.parse( - TestData.readTestFile( - "xml/invalid-cert-file-no-refresh-interval.xml"))); - assertThat(expected.getMessage()).contains("exactly one"); - } - @Test public void parse_throwsIfNoSerial() throws Exception { CertParsingException expected = @@ -110,19 +104,6 @@ public final class CertXmlTest { assertThat(expected.getMessage()).contains("exactly one"); } - @Test - public void parse_throwsIfTwoRefreshIntervals() throws Exception { - CertParsingException expected = - expectThrows( - CertParsingException.class, - () -> - CertXml.parse( - TestData.readTestFile( - "xml/invalid-cert-file-two-refresh-intervals" - + ".xml"))); - assertThat(expected.getMessage()).contains("exactly one"); - } - @Test public void parse_throwsIfTwoSerials() throws Exception { CertParsingException expected =