1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/* 2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * contributor license agreements. See the NOTICE file distributed with 4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * this work for additional information regarding copyright ownership. 5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (the "License"); you may not use this file except in compliance with 7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * the License. You may obtain a copy of the License at 8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Unless required by applicable law or agreed to in writing, software 12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * See the License for the specific language governing permissions and 15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * limitations under the License. 16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes* @author Alexander Y. Kleymenov 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.javax.security.cert; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.ByteArrayInputStream; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.InputStream; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.cert.CertificateFactory; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Calendar; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Date; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.cert.CertificateEncodingException; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.cert.CertificateException; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.cert.CertificateExpiredException; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.cert.CertificateNotYetValidException; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.security.cert.X509Certificate; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.Test; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestSuite; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class X509CertificateTest extends TestCase { 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes // Testing data was generated by using of classes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // from org.apache.harmony.security.asn1 package encoded 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // by org.apache.harmony.misc.Base64 class. 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 52e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes private static String base64cert = 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "-----BEGIN CERTIFICATE-----\n" + 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MIIC+jCCAragAwIBAgICAiswDAYHKoZIzjgEAwEBADAdMRswGQYDVQQKExJDZXJ0a" + 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "WZpY2F0ZSBJc3N1ZXIwIhgPMTk3MDAxMTIxMzQ2NDBaGA8xOTcwMDEyNDAzMzMyMF" + 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "owHzEdMBsGA1UEChMUU3ViamVjdCBPcmdhbml6YXRpb24wGTAMBgcqhkjOOAQDAQE" + 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "AAwkAAQIDBAUGBwiBAgCqggIAVaOCAhQwggIQMA8GA1UdDwEB/wQFAwMBqoAwEgYD" + 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "VR0TAQH/BAgwBgEB/wIBBTAUBgNVHSABAf8ECjAIMAYGBFUdIAAwZwYDVR0RAQH/B" + 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "F0wW4EMcmZjQDgyMi5OYW1lggdkTlNOYW1lpBcxFTATBgNVBAoTDE9yZ2FuaXphdG" + 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "lvboYaaHR0cDovL3VuaWZvcm0uUmVzb3VyY2UuSWSHBP///wCIByoDolyDsgMwDAY" + 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "DVR0eAQH/BAIwADAMBgNVHSQBAf8EAjAAMIGZBgNVHSUBAf8EgY4wgYsGBFUdJQAG" + 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "CCsGAQUFBwMBBggrBgEFBQcDAQYIKwYBBQUHAwIGCCsGAQUFBwMDBggrBgEFBQcDB" + 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "AYIKwYBBQUHAwUGCCsGAQUFBwMGBggrBgEFBQcDBwYIKwYBBQUHAwgGCCsGAQUFBw" + 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "MJBggrBgEFBQgCAgYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GA1UdNgEB/wQDAgE" + 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "BMA4GBCpNhgkBAf8EAwEBATBkBgNVHRIEXTBbgQxyZmNAODIyLk5hbWWCB2ROU05h" + 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "bWWkFzEVMBMGA1UEChMMT3JnYW5pemF0aW9uhhpodHRwOi8vdW5pZm9ybS5SZXNvd" + 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "XJjZS5JZIcE////AIgHKgOiXIOyAzAJBgNVHR8EAjAAMAoGA1UdIwQDAQEBMAoGA1" + 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "UdDgQDAQEBMAoGA1UdIQQDAQEBMAwGByqGSM44BAMBAQADMAAwLQIUAL4QvoazNWP" + 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes "7jrj84/GZlhm09DsCFQCBKGKCGbrP64VtUt4JPmLjW1VxQA==\n" + 70e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes "-----END CERTIFICATE-----"; 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private java.security.cert.X509Certificate cert; 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private javax.security.cert.X509Certificate tbt_cert; 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected void setUp() throws Exception { 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream bais = 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ByteArrayInputStream(base64cert.getBytes()); 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes CertificateFactory cf = CertificateFactory.getInstance("X.509"); 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.cert = (java.security.cert.X509Certificate) 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cf.generateCertificate(bais); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.tbt_cert = X509Certificate.getInstance(cert.getEncoded()); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.security.cert.CertificateException e) { 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test pass.. 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.cert = null; 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (javax.security.cert.CertificateException e) { 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test pass.. 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes this.cert = null; 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getInstance(InputStream inStream) method testing. 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance1() { 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ByteArrayInputStream bais = 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new ByteArrayInputStream(cert.getEncoded()); 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509Certificate.getInstance(bais); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.security.cert.CertificateEncodingException e) { 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unexpected CertificateEncodingException was thrown."); 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateEncodingException e) { 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unexpected CertificateEncodingException was thrown."); 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateException e) { 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test pass.. 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-756 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509Certificate.getInstance((InputStream) null); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected CertificateException"); 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateException e) { 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //expected; 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getInstance(byte[] certData) method testing. 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetInstance2() { 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509Certificate.getInstance(cert.getEncoded()); 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (java.security.cert.CertificateEncodingException e) { 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes e.printStackTrace(); 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("Unexpected CertificateEncodingException was thrown."); 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateException e) { 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test pass.. 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Regression for HARMONY-756 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509Certificate.getInstance((byte[]) null); 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("No expected CertificateException"); 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateException e) { 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //expected; 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * checkValidity() method testing. 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testCheckValidity1() { 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date date = new Date(); 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date nb_date = tbt_cert.getNotBefore(); 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date na_date = tbt_cert.getNotAfter(); 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.checkValidity(); 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("CertificateExpiredException expected", 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date.compareTo(na_date) > 0); 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("CertificateNotYetValidException expected", 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date.compareTo(nb_date) < 0); 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateExpiredException e) { 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Unexpected CertificateExpiredException was thrown", 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date.compareTo(na_date) > 0); 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateNotYetValidException e) { 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Unexpected CertificateNotYetValidException was thrown", 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date.compareTo(nb_date) < 0); 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * checkValidity(Date date) method testing. 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testCheckValidity2() { 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date[] date = new Date[4]; 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Calendar calendar = Calendar.getInstance(); 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<date.length; i++) { 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes calendar.set(i*50, Calendar.JANUARY, 1); 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date[i] = calendar.getTime(); 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date nb_date = tbt_cert.getNotBefore(); 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes Date na_date = tbt_cert.getNotAfter(); 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i=0; i<date.length; i++) { 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.checkValidity(date[i]); 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("CertificateExpiredException expected", 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date[i].compareTo(na_date) > 0); 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertFalse("CertificateNotYetValidException expected", 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date[i].compareTo(nb_date) < 0); 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateExpiredException e) { 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Unexpected CertificateExpiredException was thrown", 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes date[i].compareTo(na_date) > 0); 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (CertificateNotYetValidException e) { 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Unexpected CertificateNotYetValidException " 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "was thrown", date[i].compareTo(nb_date) < 0); 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getVersion() method testing. 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetVersion() { 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The version is not correct.", 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getVersion(), 2); 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSerialNumber() method testing. 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSerialNumber() { 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The serial number is not correct.", 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getSerialNumber(), cert.getSerialNumber()); 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getIssuerDN() method testing. 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetIssuerDN() { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The issuer DN is not correct.", 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getIssuerDN(), cert.getIssuerDN()); 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSubjectDN() method testing. 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSubjectDN() { 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The subject DN is not correct.", 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getSubjectDN(), cert.getSubjectDN()); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getNotBefore() method testing. 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetNotBefore() { 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The NotBefore date is not correct.", 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getNotBefore(), cert.getNotBefore()); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getNotAfter() method testing. 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetNotAfter() { 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The NotAfter date is not correct.", 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getNotAfter(), cert.getNotAfter()); 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSigAlgName() method testing. 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSigAlgName() { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The name of signature algorithm is not correct.", 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getSigAlgName(), cert.getSigAlgName()); 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSigAlgOID() method testing. 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSigAlgOID() { 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("The name of OID of signature algorithm is not correct.", 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes tbt_cert.getSigAlgOID(), cert.getSigAlgOID()); 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getSigAlgParams() method testing. 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void testGetSigAlgParams() { 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (this.cert == null) { 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // The requested certificate type is not available. 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test can not be applied. 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return; 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("The byte array with encoded algorithm parameters " 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes + "is not correct.", Arrays.equals(tbt_cert.getSigAlgParams(), 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes cert.getSigAlgParams())); 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static Test suite() { 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new TestSuite(X509CertificateTest.class); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 341