1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @author Alexander Y. Kleymenov
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @version $Revision$
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
23c46a2ea848e7a62cd5ee24216e446ad7b9ba7629Piotr Jastrzebskipackage org.apache.harmony.tests.javax.security.cert;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.Test;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestSuite;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidKeyException;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchProviderException;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SignatureException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.Certificate;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateEncodingException;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport javax.security.cert.CertificateException;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class CertificateTest extends TestCase {
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * The stub class used for testing of non abstract methods.
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class TBTCert extends Certificate {
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() throws CertificateEncodingException {
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key) throws CertificateException,
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                NoSuchAlgorithmException, InvalidKeyException,
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                NoSuchProviderException, SignatureException {
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key, String sigProvider)
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws CertificateException, NoSuchAlgorithmException,
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                InvalidKeyException, NoSuchProviderException,
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                SignatureException {
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String toString() {
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return "TBTCert";
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public PublicKey getPublicKey() {
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Test for <code>Certificate()</code> constructor<br>
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public final void testCertificate() {
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert = new TBTCert();
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("Public key should be null", tbt_cert.getPublicKey());
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong string representation for Certificate", "TBTCert", tbt_cert.toString());
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * equals(Object obj) method testing. Tests the correctness of equal
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * operation: it should be reflexive, symmetric, transitive, consistent and
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * should be false on null object.
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testEquals() {
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert = new TBTCert() {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 1, 2, 3 };
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert_1 = new TBTCert() {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 1, 2, 3 };
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert_2 = new TBTCert() {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 1, 2, 3 };
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert_3 = new TBTCert() {
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 3, 2, 1 };
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for reflexive law:
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be reflexive.", tbt_cert
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(tbt_cert));
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "The Certificates with equal encoded form should be equal",
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                tbt_cert, tbt_cert_1);
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for symmetric law:
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be symmetric.", tbt_cert_1
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(tbt_cert));
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "The Certificates with equal encoded form should be equal",
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                tbt_cert_1, tbt_cert_2);
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // checking for transitive law:
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("The equivalence relation should be transitive.", tbt_cert
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(tbt_cert_2));
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Should not be equal to null object.", tbt_cert
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(null));
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("The Certificates with differing encoded form "
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "should not be equal", tbt_cert.equals(tbt_cert_3));
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("The Certificates should not be equals to the object "
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + "which is not an instance of Certificate", tbt_cert
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .equals(new Object()));
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * hashCode() method testing.
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testHashCode() {
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert = new TBTCert() {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 1, 2, 3 };
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        TBTCert tbt_cert_1 = new TBTCert() {
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            public byte[] getEncoded() {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                return new byte[] { 1, 2, 3 };
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        };
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("Equal objects should have the same hash codes.", tbt_cert
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .hashCode() == tbt_cert_1.hashCode());
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
155f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public static Test suite() {
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        return new TestSuite(CertificateTest.class);
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
160