/* * Copyright 2014 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package tests.security.cert; import org.apache.harmony.testframework.serialization.SerializationTest; import org.apache.harmony.testframework.serialization.SerializationTest.SerializableAssert; import java.io.IOException; import java.io.OutputStream; import java.io.Serializable; import java.security.cert.CRLReason; import java.security.cert.CertificateRevokedException; import java.security.cert.Extension; import java.util.Date; import java.util.HashMap; import java.util.Map; import javax.security.auth.x500.X500Principal; import junit.framework.TestCase; /** * */ public class CertificateRevocationExceptionTest extends TestCase implements SerializableAssert { private CertificateRevokedException getTestException() { HashMap<String, Extension> extensions = new HashMap<String, Extension>(); // REASON_CODE extensions.put("2.5.29.21", getReasonExtension()); extensions.put("2.5.29.24", getInvalidityExtension()); return new CertificateRevokedException( new Date(1199226851000L), CRLReason.CESSATION_OF_OPERATION, new X500Principal("CN=test1"), extensions); } private Extension getReasonExtension() { return new Extension() { @Override public String getId() { return "2.5.29.21"; } @Override public boolean isCritical() { return false; } @Override public byte[] getValue() { return new byte[] {4, 3, 10, 1, 5}; } @Override public void encode(OutputStream out) throws IOException { throw new UnsupportedOperationException(); } }; } private Extension getInvalidityExtension() { return new Extension() { @Override public String getId() { return "2.5.29.24"; } @Override public boolean isCritical() { return false; } @Override public byte[] getValue() { return new byte[] { 0x18, 0x0F, 0x32, 0x30, 0x31, 0x34, 0x30, 0x31, 0x31, 0x37, 0x30, 0x38, 0x33, 0x30, 0x30, 0x39, 0x5a }; } @Override public void encode(OutputStream out) throws IOException { throw new UnsupportedOperationException(); } }; } public void testGetExtensions() throws Exception { CertificateRevokedException original = getTestException(); Map<String, Extension> extensions = original.getExtensions(); assertNotSame(extensions, original.getExtensions()); try { extensions.put("2.2.2.2", getReasonExtension()); fail(); } catch (UnsupportedOperationException expected) { } } public void testGetRevocationDate() throws Exception { CertificateRevokedException exception = getTestException(); Date firstDate = exception.getRevocationDate(); assertNotSame(firstDate, exception.getRevocationDate()); firstDate.setYear(firstDate.getYear() + 1); assertTrue(firstDate.compareTo(exception.getRevocationDate()) > 0); } public void testGetInvalidityDate() throws Exception { CertificateRevokedException exception = getTestException(); Date firstDate = exception.getInvalidityDate(); assertNotSame(firstDate, exception.getInvalidityDate()); firstDate.setYear(firstDate.getYear() + 1); assertTrue(firstDate.compareTo(exception.getInvalidityDate()) > 0); } /** * serialization/deserialization compatibility. */ public void testSerializationCertificateRevokedExceptionSelf() throws Exception { SerializationTest.verifySelf(getTestException(), this); } /** * serialization/deserialization compatibility with RI. */ public void testSerializationCertificateRevokedExceptionCompatability() throws Exception { // create test file (once) // SerializationTest.createGoldenFile("/tmp", this, getTestException()); SerializationTest.verifyGolden(this, getTestException()); } @Override public void assertDeserialized(Serializable initial, Serializable deserialized) { assertTrue(initial instanceof CertificateRevokedException); assertTrue(deserialized instanceof CertificateRevokedException); CertificateRevokedException expected = (CertificateRevokedException) initial; CertificateRevokedException actual = (CertificateRevokedException) deserialized; assertEquals(expected.getInvalidityDate(), actual.getInvalidityDate()); assertNotSame(expected.getInvalidityDate(), actual.getInvalidityDate()); assertEquals(expected.getRevocationDate(), actual.getRevocationDate()); assertNotSame(expected.getRevocationDate(), actual.getRevocationDate()); assertEquals(expected.getRevocationReason(), expected.getRevocationReason()); assertEquals(expected.getExtensions().size(), actual.getExtensions().size()); assertEquals(expected.getExtensions().keySet(), actual.getExtensions().keySet()); } }