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 Vladimir N. Molotkov 20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes*/ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.crypto.tests.javax.crypto; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.AlgorithmParameters; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.InvalidAlgorithmParameterException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.InvalidKeyException; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Key; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyPair; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.KeyPairGenerator; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Provider; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Security; 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.InvalidKeySpecException; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.InvalidParameterSpecException; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.PKCS8EncodedKeySpec; 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.BadPaddingException; 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.Cipher; 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.EncryptedPrivateKeyInfo; 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.IllegalBlockSizeException; 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.KeyGenerator; 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.NoSuchPaddingException; 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.SecretKeyFactory; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.spec.PBEKeySpec; 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport javax.crypto.spec.PBEParameterSpec; 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.crypto.tests.support.EncryptedPrivateKeyInfoData; 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for EncryptedPrivateKeyInfo class. 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * All binary data for this test were generated using BEA JRockit j2sdk1.4.2_04 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * (http://www.bea.com) with security providers list extended by Bouncy Castle's 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * one (http://www.bouncycastle.org) 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class EncryptedPrivateKeyInfoTest extends TestCase { 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final Provider[] provider = Security.getProviders(); 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Algorithm names/transformations used in roundtrip tests of 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * getKeySpec(...) methods 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final String[][] algName = { 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // AES 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "AES", null }, 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"AES", "AES/ECB/PKCS5Padding"}, 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"AES", "AES/CBC/PKCS5Padding"}, 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"AES", "AES/OFB/PKCS5Padding"}, 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"AES", "AES/CFB/PKCS5Padding"}, 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.1", null}, 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.2", null}, 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.3", null}, 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.4", null}, 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.5", null}, 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.21", null}, 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.22", null}, 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.23", null}, 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.24", null}, 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.25", null}, 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.41", null}, 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.42", null}, 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.43", null}, 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.44", null}, 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"2.16.840.1.101.3.4.1.45", null}, 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Blowfish 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // NO OIDs for Blowfish defined (?) 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "Blowfish", null }, 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"Blowfish","Blowfish/CBC/PKCS5Padding"}, 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"Blowfish","Blowfish/CFB/PKCS5Padding"}, 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"Blowfish","Blowfish/OFB/PKCS5Padding"}, 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"Blowfish","Blowfish/PCBC/PKCS5Padding"}, 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // DES: OIW OIDs only 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {iso(1) identified-organization(3) oiw(14) secsig(3) 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // algorithms(2) desECB(6)} 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1.3.14.3.2.6 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1.3.14.3.2.7 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1.3.14.3.2.8 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1.3.14.3.2.9 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "DES", null }, 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DES", "DES/CBC/PKCS5Padding"}, 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DES","DES/CFB/PKCS5Padding"}, 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DES","DES/OFB/PKCS5Padding"}, 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DES","DES/PCBC/PKCS5Padding"}, 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // DESede (=TripleDes) 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //{iso(1) identified-organization(3) oiw(14) secsig(3) 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // algorithms(2) desEDE(17)} 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1.3.14.3.2.17 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DESede",null}, 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DESede","DESede/CBC/PKCS5Padding"}, 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DESede","DESede/CFB/PKCS5Padding"}, 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DESede","DESede/OFB/PKCS5Padding"}, 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DESede","DESede/PCBC/PKCS5Padding"}, 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "TripleDES", null }, 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"TripleDES","TripleDES/CBC/PKCS5Padding"}, 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"TripleDES","TripleDES/CFB/PKCS5Padding"}, 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"TripleDES","TripleDES/OFB/PKCS5Padding"}, 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"TripleDES","TripleDES/PCBC/PKCS5Padding"}, 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // PBEWith<digest>And<encryption> 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "PBEWithMD5AndTripleDES", null }, 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-5(5) 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pbeWithMD5AndDES-CBC(3)} 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "PBEWithMD5AndDES", "PBEWithMD5AndDES/CBC/PKCS5Padding" }, 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "PBEWithMD5AndDES", null }, { "PBEWithHmacSHA1AndDESede", null }, 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // more oids: 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {iso(1) member-body(2) us(840) nortelnetworks(113533) entrust(7) 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // algorithms(66) pbeWithMD5AndCAST5-CBC(12)} 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // also named pbeWithSHAAnd128BitRC4, pbeWithSHA1And128BitRC4: 138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-12(12) 139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pkcs-12-PbeIds(1) pkcs-12-OfflineTransportMode(1)} 140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-12(12) 142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pkcs-12-PbeIds(1)} + 143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pbeWithSHAAnd40BitRC4(2) pbeWithSHAAnd3-KeyTripleDES-CBC(3) 144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pbeWithSHAAnd2-KeyTripleDES-CBC(4) pbeWithSHAAnd128BitRC2-CBC(5) 145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pbeWithSHAAnd40BitRC2-CBC(6) 146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // DiffieHellman 148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "DiffieHellman", null }, // 1.2.840.10046.2.1 149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"DH",null}, // 1.2.840.10046.2.1 150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.3.1", null}, 151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "DSA", null }, // 1.2.840.10040.4.1 153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "RC2", null }, 155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "RC4", null }, 157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "RC5", null }, 159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.12.1.1",null}, 161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.12.1.2",null}, 162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "1.2.840.113549.1.12.1.3", null }, 163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes { "PBEWithSHA1AndDESede", null }, 164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.12.1.4",null}, 165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.12.1.5",null}, 166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.12.1.6",null}, 167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"ELGAMAL/PKCS1", "ELGAMAL/ECB/PKCS1PADDING"}, 168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"ELGAMAL/PKCS1","ELGAMAL/NONE/PKCS1PADDING"}, 169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"PBEWITHSHAAND3-KEYTRIPLEDES-CBC", null}, 170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"PBEWITHSHA1ANDDESEDE", null}, 171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"PBEWithSHAAnd3KeyTripleDES",null}, 172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"PBEWITHSHAAND3-KEYTRIPLEDES-CBC",null}, 173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RC5-32",null}, 175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/1", "RSA/1/PKCS1PADDING"}, 177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/2", "RSA/2/PKCS1PADDING"}, 178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/ISO9796-1", "RSA/ECB/ISO9796-1PADDING"}, 179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA", "RSA/ECB/NOPADDING"}, 180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/OAEP", "RSA/ECB/OAEPPADDING"}, 181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/PKCS1", "RSA/ECB/PKCS1PADDING"}, 182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/ISO9796-1", "RSA/NONE/ISO9796-1PADDING"}, 183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA", "RSA/NONE/NOPADDING"}, 184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/OAEP", "RSA/NONE/OAEPPADDING"}, 185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA/PKCS1", "RSA/NONE/PKCS1PADDING"}, 186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"RSA",null}, // 1.2.840.113549.1.1.1 187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // {"1.2.840.113549.1.1.1", null}, 188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }; 189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> 194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid parameters passed <br> 195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: must pass without any exceptions 196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws NoSuchAlgorithmException 199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray1() throws Exception { 201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(EncryptedPrivateKeyInfoData 202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DH")); 203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NullPointerException</code> if encoding is 209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>null</code><br> 210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: <code>null</code> passed as a parameter <br> 211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>NullPointerException</code> 212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray2() 216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(null); 219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NullPointerException has not been thrown"); 220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>IOException</code> if encoding is wrong <br> 228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: wrong encoding passed as a parameter <br> 229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>IOException</code> 230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray3() { 232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(new byte[0]); 234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": IOException has not been thrown"); 235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>IOException</code> if encoding is wrong <br> 243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: wrong encoding passed as a parameter <br> 244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>IOException</code> 245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray4() { 247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 10 }); 250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": IOException has not been thrown"); 251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #5 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>IOException</code> if encoding is wrong <br> 259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: wrong encoding passed as a parameter <br> 260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>IOException</code> 261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray5() throws Exception { 263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] enc = null; 264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1: get valid encoding 266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong alg OID length) 270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[9] = (byte) 6; 271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(enc); 273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(1): IOException has not been thrown"); 274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2: get valid encoding 279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong encrypted data tag) 282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[307] = (byte) 6; 283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(enc); 284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(2): IOException has not been thrown"); 285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 3: get valid encoding 290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong encrypted data length) 293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[310] = (byte) 1; 294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(enc); 295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(3): IOException has not been thrown"); 296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 4: get valid encoding 301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong tag for alg params sequence) 304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[17] = (byte) 0x29; 305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(enc); 306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (epki.getAlgParameters() == null) { 308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // This kind of encoding corruption can 309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // be only determined while AlgorithmParameters 310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // initialization BUT No AlgorithmParameters instance 311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // available for algName0[i][0]. 312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // So just skip this sub test 313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(4): IOException has not been thrown"); 315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 5: get valid encoding 322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong length for alg params sequence) 325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[20] = (byte) 0x1d; 326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(enc); 327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(5): IOException has not been thrown"); 328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 6: get valid encoding 333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc = EncryptedPrivateKeyInfoData 334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // ... and corrupt it (set wrong length for alg params sequence) 336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes enc[20] = (byte) 0x1f; 337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(enc); 338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "(6): IOException has not been thrown"); 339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException ok) { 340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #6 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor 345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: byte array is copied to prevent subsequent modification <br> 347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid array passed then modified <br> 348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: getEncoded(), invoked after above modification, must return 349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * array as it was before the modification 350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfobyteArray6() throws Exception { 354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encoded = EncryptedPrivateKeyInfoData 355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DSA"); 356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedCopy = encoded.clone(); 357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass valid array 358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(encodedCopy); 359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // modify array passed 360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encodedCopy[9] = (byte) 6; 361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that internal state has not been affected 362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(encoded, epki.getEncoded())); 363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> 369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid parameters passed <br> 370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: must pass without any exceptions 371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray1() { 373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo( 378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowed) { 382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NoSuchAlgorithmException</code>- if the specified 392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * algorithm is not supported <br> 393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: pass nonexistent algorithm name <br> 394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>NoSuchAlgorithmException</code> 395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray2() { 397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo("bla-bla", 399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NoSuchAlgorithmException has not been thrown"); 401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException ok) { 402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo("", 406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NoSuchAlgorithmException has not been thrown"); 408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException ok) { 409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NullPointerException</code>- if the specified 416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * algorithm or encrypted data is <code>null</code><br> 417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: pass <code>null</code> as algorithm name then as 418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * encrypted data <br> 419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>NullPointerException</code> in both cases 420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws NoSuchAlgorithmException 422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray3() 424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws NoSuchAlgorithmException { 425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass null as name 426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo((String) null, 428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NullPointerException has not been thrown"); 430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass null as encrypted data 434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo("DSA", null); 436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NullPointerException has not been thrown"); 437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>IllegalArgumentException</code>- if encrypted data is 445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * empty, i.e. 0-length <br> 446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: pass empty encrypted data <br> 447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>IllegalArgumentException</code> 448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray4() 450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo("DSA", new byte[] {}); 453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": IllegalArgumentException has not been thrown"); 454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ok) { 455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #5 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: byte array is copied to prevent subsequent modification <br> 462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid array passed then modified <br> 463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: getEncryptedData(), invoked after above modification, must 464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * return array as it was before the modification 465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray5() 469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encryptedDataCopy = EncryptedPrivateKeyInfoData.encryptedData 471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .clone(); 472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass valid array 473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo("DSA", 474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encryptedDataCopy); 475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // modify array passed 476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encryptedDataCopy[0] = (byte) 6; 477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that internal state has not been affected 478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(EncryptedPrivateKeyInfoData.encryptedData, 479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getEncryptedData())); 480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @tests javax/crypto/EncryptedPrivateKeyInfo(String, byte[]) 484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Checks exception order 485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoStringbyteArray6() { 487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //Regression for HARMONY-768 488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo("0", new byte[] {}); 490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail("NoSuchAlgorithmException expected"); 491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes //expected 493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for 498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) 499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * </code> 500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> 502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid parameters passed <br> 503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: must pass without any exceptions 504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray1() 508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws IOException { 509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters 514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); 515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( 517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(ap, 520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for 531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) 532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * </code> 533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>NullPointerException</code>- if the specified 535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * algorithm parameters or encrypted data is <code>null</code><br> 536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: pass <code>null</code> as algorithm parameters then 537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * as encrypted data <br> 538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>NullPointerException</code> in both cases 539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws NoSuchAlgorithmException 541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray2() 544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws NoSuchAlgorithmException, IOException { 545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 1: pass null as AlgorithmParameters 546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo((AlgorithmParameters) null, 548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NullPointerException has not been thrown"); 550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 2: pass null as encrypted data 554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); 556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); 558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(ap, null); 559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": NullPointerException has not been thrown"); 560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for 566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) 567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * </code> 568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: <code>IllegalArgumentException</code>- if encrypted data is 570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * empty, i.e. 0-length <br> 571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: pass empty encrypted data <br> 572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>IllegalArgumentException</code> 573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws NoSuchAlgorithmException 575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray3() 578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); 581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); 583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes new EncryptedPrivateKeyInfo(ap, new byte[] {}); 585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + ": IllegalArgumentException has not been thrown"); 586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalArgumentException ok) { 588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for 593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) 594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * </code> 595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: byte array is copied to prevent subsequent modification <br> 597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: valid array passed then modified <br> 598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: getEncryptedData(), invoked after above modification, must 599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * return array as it was before the modification 600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray4() 604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throws Exception { 605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); 606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); 608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encryptedDataCopy = EncryptedPrivateKeyInfoData.encryptedData.clone(); 610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // pass valid array 611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, 612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encryptedDataCopy); 613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // modify array passed 615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encryptedDataCopy[0] = (byte) 6; 616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that internal state has not been affected 618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(EncryptedPrivateKeyInfoData.encryptedData, 619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getEncryptedData())); 620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>getAlgParameters()</code> method <br> 624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the algorithm parameters <br> 625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes encoded 626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * form as the only parameter; encoded form passed contains algorithm 627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters encoding <br> 628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: corresponding algorithm parameters must be returned 629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetAlgParameters01() throws IOException { 633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData 638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters apar = epki.getAlgParameters(); 642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (apar == null) { 643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // parameters with the same encoded form 648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays 649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .equals( 650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData 651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getParametersEncoding(EncryptedPrivateKeyInfoData.algName0[i][0]), 652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes apar.getEncoded())); 653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetAlgParameters01_01() throws Exception { 661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] validEncodingWithUnknownAlgOID = EncryptedPrivateKeyInfoData 662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding("DH"); 663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // correct oid value 664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validEncodingWithUnknownAlgOID[18] = 0; 665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes validEncodingWithUnknownAlgOID); 667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(epki.getAlgParameters()); 669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>getAlgParameters()</code> method <br> 673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the algorithm parameters <br> 674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes encoded 675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * form as the only parameter; encoded form passed does not contain 676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * algorithm parameters encoding <br> 677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>null</code> must be returned 678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetAlgParameters02() throws IOException { 682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData 687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false)); 690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns null 692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(epki.getAlgParameters()); 693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>getAlgParameters()</code> method <br> 703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the algorithm parameters <br> 704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #6 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> 705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * constructor <br> 706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: ...This constructor will use null as the value of the 707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * algorithm parameters. <br> 708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: <code>null</code> must be returned 711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetAlgParameters03() throws IOException { 715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns null 723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // for object constructed in such a way 724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNull(epki.getAlgParameters()); 725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>getAlgParameters()</code> method <br> 735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the algorithm parameters <br> 736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes 737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * AlgorithmParameters and encrypted data as a parameters; <br> 738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: the same algorithm parameters as ones passed to the ctor must be 739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returned 740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetAlgParameters04() throws IOException { 744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters 748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); 749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap 751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .init(EncryptedPrivateKeyInfoData 752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getParametersEncoding( 753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, 756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // the same parameters instance 760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertSame(ap, epki.getAlgParameters()); 761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>getEncryptedData()</code> method <br> 771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the encrypted data <br> 772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes encoded 773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * form as the only parameter; encoded form passed contains encrypted data 774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * <br> 775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: the equivalent encrypted data must be returned 776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncryptedData01() throws IOException { 780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData 785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encrypted data 790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals( 791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData, epki 792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getEncryptedData())); 793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>getEncryptedData()</code> method <br> 803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the encrypted data <br> 804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: the equivalent encrypted data must be returned 807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncryptedData02() { 809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encrypted data 818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals( 819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData, epki 820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getEncryptedData())); 821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>getEncryptedData()</code> method <br> 831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the encrypted data <br> 832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * parameters and encrypted data as a parameters <br> 834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: the equivalent encrypted data must be returned 835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncryptedData03() throws IOException { 839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters 843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); 844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( 846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, 849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encrypted data 853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals( 854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData, epki 855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getEncryptedData())); 856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>getEncryptedData()</code> method <br> 866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns a new array each time this method is called <br> 867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: refs to encrypted data byte array passed to the ctor and 870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * returned by the method under test must be different 871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncryptedData04() { 873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // new array each time 882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ecd1 = epki.getEncryptedData(); 883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ecd2 = epki.getEncryptedData(); 884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(EncryptedPrivateKeyInfoData.encryptedData, ecd1); 885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(EncryptedPrivateKeyInfoData.encryptedData, ecd2); 886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(ecd1, ecd2); 887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #1 for <code>getEncoded()</code> method <br> 897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the ASN.1 encoding of this object <br> 898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes encoded 899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * form as the only parameter <br> 900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: equivalent encoded form must be returned 901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncoded01() throws IOException { 905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] enc = EncryptedPrivateKeyInfoData 909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0]); 911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(enc); 912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encoded form 915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(enc, epki.getEncoded())); 916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #2 for <code>getEncoded()</code> method <br> 926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the ASN.1 encoding of this object <br> 927561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 928561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 929561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: equivalent encoded form (without alg params) must be returned 930561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 931561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 932561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 933561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncoded02() throws IOException { 934561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 935561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 936561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 937561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 938561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 939561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 940561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 941561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 942561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encoded form 943561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] refEnc = EncryptedPrivateKeyInfoData 944561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 945561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 946561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes false); 947561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // System.out.println(Array.toString(refEnc, " ")); 948561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] actEnc = epki.getEncoded(); 949561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // System.out.println(Array.toString(actEnc, " ")); 950561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(refEnc, actEnc)); 951561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 952561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 953561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 954561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 955561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 956561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 957561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 958561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 959561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 960561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #3 for <code>getEncoded()</code> method <br> 961561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns the ASN.1 encoding of this object <br> 962561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 963561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 964561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: equivalent encoded form (without alg params) must be returned 965561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 966561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 967561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 968561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncoded03() throws IOException { 969561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 970561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 971561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 972561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AlgorithmParameters ap = AlgorithmParameters 973561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); 974561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // use pregenerated AlgorithmParameters encodings 975561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( 976561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0])); 977561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 978561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, 979561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 980561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 981561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 982561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid encoded form 983561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals( 984561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData 985561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getValidEncryptedPrivateKeyInfoEncoding( 986561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0]), 987561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getEncoded())); 988561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 989561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 990561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 991561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 992561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 993561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 994561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 995561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 996561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 997561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test #4 for <code>getEncoded()</code> method <br> 998561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns a new array each time this method is called <br> 999561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test preconditions: test object created using ctor which takes algorithm 1000561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * name and encrypted data as a parameters <br> 1001561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Expected: several refs to byte array returned by the method under test 1002561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * must be different 1003561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 1004561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @throws IOException 1005561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1006561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncoded04() throws IOException { 1007561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1008561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 1009561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1010561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 1011561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 1012561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 1013561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1014561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test returns 1015561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // new array each time 1016561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ec1 = epki.getEncoded(); 1017561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ec2 = epki.getEncoded(); 1018561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ec3 = epki.getEncoded(); 1019561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(ec1, ec2); 1020561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(ec2, ec3); 1021561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertNotSame(ec1, ec3); 1022561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1023561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1024561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1025561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1026561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1027561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1028561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1029561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1030561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetKeySpecCipher01() { 1031561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1032561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 1033561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1034561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 1035561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 1036561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 1037561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1038561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1039561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1040561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1041561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec((Cipher) null); 1042561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1043561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1044561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1045561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeySpecException e) { 1046561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "Unexpected exception: " + e); 1047561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1048561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1049561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1050561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1051561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1052561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1053561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1054561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1055561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1056561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1057561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains valid PKCS8 key info encoding 1058561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1059561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecCipher01() { 1060561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1061561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1062561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1063561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1064561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1065561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g = new TestDataGenerator(algName[i][0], 1066561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes algName[i][1], privateKeyInfo, null); 1067561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1068561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1069561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1070561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1071561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); 1072561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1073561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1074561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1075561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1076561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // call methods under test 1077561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1078561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1079561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKCS8EncodedKeySpec eks = epki.getKeySpec(g.c()); 1080561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1081561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { 1082561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + " != " + algName[i][1]); 1083561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1084561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeySpecException e) { 1085561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1] + e + "\n"); 1086561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1087561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1088561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1089561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1090561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowed) { 1091561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1092561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1093561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1094561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1095561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1096561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1097561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains invalid PKCS8 key info encoding 1098561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1099561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecCipher02() { 1100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g = new TestDataGenerator(algName[i][0], 1105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes algName[i][1], privateKeyInfoDamaged, null); 1106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); 1111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // call methods under test 1116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(g.c()); 1118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // must not get here because decrypted data does 1120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // not represent valid PKCS8 encoding 1121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1]); 1122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeySpecException ok) { 1123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetKeySpecKey01() { 1134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 1136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 1138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 1139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 1140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec((Key) null); 1145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "Unexpected exception: " + e); 1150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains valid PKCS8 key info encoding 1161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKey01() { 1163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g = new TestDataGenerator(algName[i][0], 1168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes algName[i][1], privateKeyInfo, null); 1169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); 1174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKCS8EncodedKeySpec eks = epki 1180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getKeySpec(g.pubK() == null ? g.k() : g.pubK()); 1181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { 1183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + " != " + algName[i][1]); 1184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1] + ": " + e); 1187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains invalid PKCS8 key info encoding 1199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKey02() { 1201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g = new TestDataGenerator(algName[i][0], 1206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes algName[i][1], privateKeyInfoDamaged, null); 1207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); 1212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1214561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1215561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1216561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1217561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK()); 1218561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1]); 1219561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1220561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1221561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1222561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1223561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1224561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1225561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1226561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1227561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1228561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1229561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1230561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetKeySpecKeyString01() throws Exception { 1231561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1232561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 1233561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1234561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 1235561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 1236561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 1237561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1238561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1239561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1240561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1241561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec((Key) null, "SomeProviderName"); 1242561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1243561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1244561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1245561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1246561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1247561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1248561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1249561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1250561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(new Key() { 1251561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getAlgorithm() { 1252561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "alg"; 1253561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1254561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1255561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getFormat() { 1256561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "fmt"; 1257561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1258561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1259561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public byte[] getEncoded() { 1260561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new byte[] {}; 1261561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1262561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }, (String) null); 1263561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1264561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1265561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1266561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1267561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1268561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1269561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1270561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1271561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1272561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1273561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1274561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1275561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1276561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1277561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains valid PKCS8 key info encoding 1278561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1279561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKeyString01() throws Exception { 1280561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1281561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1282561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int l = 0; l < provider.length; l++) { 1283561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (provider[l] == null) { 1284561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1285561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1286561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g; 1287561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1288561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1289561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g = new TestDataGenerator(algName[i][0], algName[i][1], 1290561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes privateKeyInfo, provider[l]); 1291561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1292561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1293561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1294561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1295561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1296561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1297561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1298561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1299561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g 1300561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .ct()); 1301561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1302561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1303561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1304561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1305561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1306561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKCS8EncodedKeySpec eks = epki.getKeySpec( 1307561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g.pubK() == null ? g.k() : g.pubK(), 1308561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes provider[l].getName()); 1309561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1310561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { 1311561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + " != " + algName[i][1]); 1312561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1313561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1314561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1] + ": " + e); 1315561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1316561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1317561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1318561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1319561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1320561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1321561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1322561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1323561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1324561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1325561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1326561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains invalid PKCS8 key info encoding 1327561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1328561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKeyString02() throws Exception { 1329561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1330561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1331561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int l = 0; l < provider.length; l++) { 1332561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (provider[l] == null) { 1333561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1334561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1335561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g; 1336561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1337561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1338561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g = new TestDataGenerator(algName[i][0], algName[i][1], 1339561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes privateKeyInfoDamaged, provider[l]); 1340561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1341561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1342561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1343561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1344561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1345561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1346561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1347561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1348561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g 1349561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .ct()); 1350561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1351561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1352561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1353561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1354561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1355561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1356561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK(), 1357561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes provider[l].getName()); 1358561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1359561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1]); 1360561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1361561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1362561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1363561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1364561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1365561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1366561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1367561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1368561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1369561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1370561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1371561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1372561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetKeySpecKeyProvider01() throws Exception { 1373561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1374561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1375561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { 1376561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1377561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( 1378561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.algName0[i][0], 1379561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfoData.encryptedData); 1380561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1381561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1382561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1383561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1384561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec((Key) null, (Provider) null); 1385561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1386561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1387561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1388561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1389561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1390561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1391561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // check that method under test throws NPE 1392561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(new Key() { 1393561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getAlgorithm() { 1394561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "alg"; 1395561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1396561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1397561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public String getFormat() { 1398561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return "fmt"; 1399561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1400561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1401561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public byte[] getEncoded() { 1402561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return new byte[] {}; 1403561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1404561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes }, (Provider) null); 1405561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1406561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(getName() + "NullPointerException has not been thrown"); 1407561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NullPointerException ok) { 1408561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1409561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1410561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1411561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1412561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1413561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1414561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1415561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1416561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1417561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1418561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains valid PKCS8 key info encoding 1419561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1420561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKeyProvider01() { 1421561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1422561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1423561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1424561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int l = 0; l < provider.length; l++) { 1425561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (provider[l] == null) { 1426561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1427561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1428561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g; 1429561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1430561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1431561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g = new TestDataGenerator(algName[i][0], algName[i][1], 1432561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes privateKeyInfo, provider[l]); 1433561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1434561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1435561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1436561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1437561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1438561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1439561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1440561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g 1441561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .ct()); 1442561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1443561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1444561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1445561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1446561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1447561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PKCS8EncodedKeySpec eks = epki.getKeySpec( 1448561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g.pubK() == null ? g.k() : g.pubK(), 1449561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes provider[l]); 1450561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1451561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { 1452561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + " != " + algName[i][1]); 1453561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1454561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1455561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1] + ": " + e); 1456561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1457561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1458561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1459561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1460561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1461561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1462561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1463561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1464561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1465561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1466561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 1467561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Encrypted data contains invalid PKCS8 key info encoding 1468561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 1469561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void test_ROUNDTRIP_GetKeySpecKeyProvider02() { 1470561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes boolean performed = false; 1471561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1472561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int i = 0; i < algName.length; i++) { 1473561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes for (int l = 0; l < provider.length; l++) { 1474561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (provider[l] == null) { 1475561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1476561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1477561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes TestDataGenerator g; 1478561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1479561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // generate test data 1480561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes g = new TestDataGenerator(algName[i][0], algName[i][1], 1481561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes privateKeyInfoDamaged, provider[l]); 1482561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (TestDataGenerator.AllowedFailure allowedFailure) { 1483561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes continue; 1484561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1485561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1486561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1487561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // create test object 1488561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncryptedPrivateKeyInfo epki; 1489561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (g.ap() == null) { 1490561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(algName[i][0], g 1491561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .ct()); 1492561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1493561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); 1494561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1495561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1496561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1497561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK(), 1498561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes provider[l]); 1499561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1500561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes fail(algName[i][0] + ", " + algName[i][1]); 1501561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1502561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1503561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1504561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes performed = true; 1505561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException allowedFailure) { 1506561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1507561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1508561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1509561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue("Test not performed", performed); 1510561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1511561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1512561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class TestDataGenerator { 1513561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1514561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public static class AllowedFailure extends Exception { 1515561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes AllowedFailure(String msg) { 1516561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(msg); 1517561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1518561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1519561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1520561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Cipher c = null; 1521561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1522561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Key k = null, pubK = null; 1523561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1524561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private AlgorithmParameters ap = null; 1525561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1526561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ct; 1527561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1528561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public TestDataGenerator(String algName, String transformation, 1529561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] privateKeyInfo, Provider provider) throws AllowedFailure { 1530561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1531561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c = (provider == null) ? Cipher 1532561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(transformation != null ? transformation 1533561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : algName) : Cipher.getInstance( 1534561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes transformation != null ? transformation : algName, 1535561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes provider); 1536561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 1537561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1538561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchPaddingException e) { 1539561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1540561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1541561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1542561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1543561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyGenerator kg = (provider == null) ? KeyGenerator 1544561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(algName) : KeyGenerator.getInstance( 1545561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes algName, provider); 1546561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k = kg.generateKey(); 1547561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 1548561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1549561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1550561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (k == null) { 1551561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1552561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyPairGenerator kpg = (provider == null) ? KeyPairGenerator 1553561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(algName) 1554561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : KeyPairGenerator.getInstance(algName, provider); 1555561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes KeyPair kp = kpg.genKeyPair(); 1556561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k = kp.getPrivate(); 1557561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pubK = kp.getPublic(); 1558561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 1559561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1560561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1561561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1562561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PBEParameterSpec pbeParamSpec = null; 1563561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (k == null) { 1564561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1565561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pbeParamSpec = new PBEParameterSpec(new byte[] { 1, 2, 3, 1566561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 4, 5, 6, 7, 8 }, 10); 1567561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SecretKeyFactory skf = (provider == null) ? SecretKeyFactory 1568561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(algName) 1569561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes : SecretKeyFactory.getInstance(algName, provider); 1570561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes PBEKeySpec ks = new PBEKeySpec("12345678".toCharArray()); 1571561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1572561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes k = skf.generateSecret(ks); 1573561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeySpecException e) { 1574561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1575561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1576561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1577561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 1578561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1579561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1580561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1581561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1582561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1583561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (pbeParamSpec == null) { 1584561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c.init(Cipher.ENCRYPT_MODE, k); 1585561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1586561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c.init(Cipher.ENCRYPT_MODE, k, pbeParamSpec); 1587561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1588561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1589561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1590561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 1591561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1592561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 1593561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1594561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1595561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1596561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap = c.getParameters(); 1597561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1598561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1599561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ct = c.doFinal(privateKeyInfo); 1600561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalStateException e) { 1601561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1602561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IllegalBlockSizeException e) { 1603561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1604561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (BadPaddingException e) { 1605561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1606561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (RuntimeException e) { 1607561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1608561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1609561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1610561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1611561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // try to convert pbeParamSpec->ap 1612561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (pbeParamSpec != null) { 1613561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 1614561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap = (provider == null) ? AlgorithmParameters 1615561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(algName) : AlgorithmParameters 1616561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes .getInstance(algName, provider); 1617561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ap.init(pbeParamSpec); 1618561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes pbeParamSpec = null; 1619561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (NoSuchAlgorithmException e) { 1620561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // couldn't convert 1621561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1622561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidParameterSpecException e) { 1623561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // couldn't convert 1624561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1625561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1626561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1627561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1628561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes if (ap == null) { 1629561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c.init(Cipher.DECRYPT_MODE, pubK == null ? k : pubK); 1630561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } else { 1631561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes c.init(Cipher.DECRYPT_MODE, pubK == null ? k : pubK, ap); 1632561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1633561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1634561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 1635561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1636561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SecurityException e) { 1637561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1638561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidAlgorithmParameterException e) { 1639561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes throw new AllowedFailure(e.getMessage()); 1640561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1641561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1642561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1643561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Key k() { 1644561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return k; 1645561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1646561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1647561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Key pubK() { 1648561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return pubK; 1649561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1650561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1651561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public Cipher c() { 1652561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return c; 1653561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1654561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1655561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public byte[] ct() { 1656561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return ct; 1657561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1658561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1659561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public AlgorithmParameters ap() { 1660561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes return ap; 1661561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1662561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 1663561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1664561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid PrivateKeyInfo encoding 1665561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final byte[] privateKeyInfo = { (byte) 0x30, (byte) 0x82, 1666561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x77, (byte) 0x02, (byte) 0x01, (byte) 0x00, 1667561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, 1668561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, 1669561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x00, 1670561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x04, (byte) 0x82, (byte) 0x02, (byte) 0x61, (byte) 0x30, 1671561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x02, (byte) 0x5d, (byte) 0x02, (byte) 0x01, 1672561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x02, (byte) 0x81, (byte) 0x81, (byte) 0x00, 1673561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x4a, (byte) 0x9b, (byte) 0x5b, (byte) 0xba, 1674561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, (byte) 0xc0, (byte) 0xcd, (byte) 0x65, (byte) 0x09, 1675561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x70, (byte) 0x0b, (byte) 0x5a, (byte) 0x1b, 1676561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x92, (byte) 0x08, (byte) 0xf8, (byte) 0x55, (byte) 0x5e, 1677561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7c, (byte) 0x1b, (byte) 0x50, (byte) 0x17, (byte) 0xec, 1678561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x44, (byte) 0x4c, (byte) 0x58, (byte) 0x42, (byte) 0x2b, 1679561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x41, (byte) 0x09, (byte) 0x59, (byte) 0xf2, (byte) 0xe1, 1680561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5d, (byte) 0x43, (byte) 0x71, (byte) 0x4d, (byte) 0x92, 1681561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x1d, (byte) 0xb6, (byte) 0x6c, (byte) 0x7f, 1682561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5d, (byte) 0x48, (byte) 0xcd, (byte) 0x17, (byte) 0xec, 1683561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd7, (byte) 0x4c, (byte) 0x39, (byte) 0xb1, (byte) 0x7b, 1684561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe2, (byte) 0xbf, (byte) 0x96, (byte) 0x77, (byte) 0xbe, 1685561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd0, (byte) 0xa0, (byte) 0xf0, (byte) 0x2d, (byte) 0x6b, 1686561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x24, (byte) 0xaa, (byte) 0x14, (byte) 0xba, (byte) 0x82, 1687561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x79, (byte) 0x10, (byte) 0x9b, (byte) 0x16, (byte) 0x68, 1688561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x47, (byte) 0x81, (byte) 0x54, (byte) 0xa2, (byte) 0xfa, 1689561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x91, (byte) 0x9e, (byte) 0x0a, (byte) 0x2a, (byte) 0x53, 1690561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa6, (byte) 0xe7, (byte) 0x9e, (byte) 0x7d, (byte) 0x29, 1691561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x33, (byte) 0xd8, (byte) 0x05, (byte) 0xfc, (byte) 0x02, 1692561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3f, (byte) 0xbd, (byte) 0xc7, (byte) 0x6e, (byte) 0xed, 1693561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xaa, (byte) 0x30, (byte) 0x6c, (byte) 0x5f, (byte) 0x52, 1694561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xed, (byte) 0x35, (byte) 0x65, (byte) 0x4b, (byte) 0x0e, 1695561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc8, (byte) 0xa7, (byte) 0x12, (byte) 0x10, (byte) 0x56, 1696561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x37, (byte) 0xaf, (byte) 0x11, (byte) 0xfa, (byte) 0x21, 1697561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0e, (byte) 0x99, (byte) 0xff, (byte) 0xfa, (byte) 0x8c, 1698561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x65, (byte) 0x8e, (byte) 0x6d, (byte) 0x02, (byte) 0x03, 1699561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x81, 1700561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x80, (byte) 0x78, (byte) 0x41, (byte) 0x72, (byte) 0x40, 1701561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x90, (byte) 0x59, (byte) 0x96, (byte) 0x5d, (byte) 0xf3, 1702561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x84, (byte) 0x3d, (byte) 0x99, (byte) 0xd9, (byte) 0x4e, 1703561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x51, (byte) 0xc2, (byte) 0x52, (byte) 0x62, (byte) 0x8d, 1704561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd2, (byte) 0x49, (byte) 0x0b, (byte) 0x73, (byte) 0x1e, 1705561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6f, (byte) 0xb2, (byte) 0x31, (byte) 0x7c, (byte) 0x66, 1706561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x45, (byte) 0x1e, (byte) 0x7c, (byte) 0xdc, (byte) 0x3a, 1707561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc2, (byte) 0x5f, (byte) 0x51, (byte) 0x9a, (byte) 0x1e, 1708561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa4, (byte) 0x19, (byte) 0x8d, (byte) 0xf4, (byte) 0xf9, 1709561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x81, (byte) 0x7e, (byte) 0xbe, (byte) 0x17, (byte) 0xf7, 1710561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc7, (byte) 0x3c, (byte) 0x00, (byte) 0xa1, (byte) 0xf9, 1711561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x60, (byte) 0x82, (byte) 0x34, (byte) 0x8f, (byte) 0x9c, 1712561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xfd, (byte) 0x0b, (byte) 0x63, (byte) 0x42, (byte) 0x1b, 1713561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7f, (byte) 0x45, (byte) 0xf1, (byte) 0x31, (byte) 0xc3, 1714561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x47, (byte) 0x5c, (byte) 0xc1, (byte) 0xb2, 1715561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5f, (byte) 0x57, (byte) 0xee, (byte) 0x02, (byte) 0x9f, 1716561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5e, (byte) 0x08, (byte) 0x48, (byte) 0xba, (byte) 0x74, 1717561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xba, (byte) 0x81, (byte) 0xb7, (byte) 0x30, (byte) 0xac, 1718561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x01, (byte) 0x35, (byte) 0xce, (byte) 0x46, 1719561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x47, (byte) 0x8c, (byte) 0xe4, (byte) 0x62, (byte) 0x36, 1720561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1a, (byte) 0x65, (byte) 0x0e, (byte) 0x33, (byte) 0x56, 1721561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf9, (byte) 0xb7, (byte) 0xa0, (byte) 0xc4, (byte) 0xb6, 1722561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x55, (byte) 0x7d, (byte) 0x36, (byte) 0x55, 1723561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc0, (byte) 0x52, (byte) 0x5e, (byte) 0x35, (byte) 0x54, 1724561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbd, (byte) 0x97, (byte) 0x01, (byte) 0x00, (byte) 0xbf, 1725561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x10, (byte) 0xdc, (byte) 0x1b, (byte) 0x51, (byte) 0x02, 1726561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x41, (byte) 0x00, (byte) 0xe7, (byte) 0x68, (byte) 0x03, 1727561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3e, (byte) 0x21, (byte) 0x64, (byte) 0x68, (byte) 0x24, 1728561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7b, (byte) 0xd0, (byte) 0x31, (byte) 0xa0, (byte) 0xa2, 1729561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd9, (byte) 0x87, (byte) 0x6d, (byte) 0x79, (byte) 0x81, 1730561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x8f, (byte) 0x8f, (byte) 0x2d, (byte) 0x7a, (byte) 0x95, 1731561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2e, (byte) 0x55, (byte) 0x9f, (byte) 0xd7, (byte) 0x86, 1732561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x29, (byte) 0x93, (byte) 0xbd, (byte) 0x04, (byte) 0x7e, 1733561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4f, (byte) 0xdb, (byte) 0x56, (byte) 0xf1, (byte) 0x75, 1734561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd0, (byte) 0x4b, (byte) 0x00, (byte) 0x3a, (byte) 0xe0, 1735561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x26, (byte) 0xf6, (byte) 0xab, (byte) 0x9e, (byte) 0x0b, 1736561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2a, (byte) 0xf4, (byte) 0xa8, (byte) 0xd7, (byte) 0xff, 1737561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbe, (byte) 0x01, (byte) 0xeb, (byte) 0x9b, (byte) 0x81, 1738561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc7, (byte) 0x5f, (byte) 0x02, (byte) 0x73, (byte) 0xe1, 1739561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2b, (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xc5, 1740561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3d, (byte) 0x78, (byte) 0xab, (byte) 0xe6, (byte) 0xab, 1741561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3e, (byte) 0x29, (byte) 0xfd, (byte) 0x98, (byte) 0xd0, 1742561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa4, (byte) 0x3e, (byte) 0x58, (byte) 0xee, (byte) 0x48, 1743561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x45, (byte) 0xa3, (byte) 0x66, (byte) 0xac, (byte) 0xe9, 1744561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4d, (byte) 0xbd, (byte) 0x60, (byte) 0xea, (byte) 0x24, 1745561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xff, (byte) 0xed, (byte) 0x0c, (byte) 0x67, (byte) 0xc5, 1746561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xfd, (byte) 0x36, (byte) 0x28, (byte) 0xea, (byte) 0x74, 1747561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x88, (byte) 0xd1, (byte) 0xd1, (byte) 0xad, (byte) 0x58, 1748561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd7, (byte) 0xf0, (byte) 0x67, (byte) 0x20, (byte) 0xc1, 1749561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe3, (byte) 0xb3, (byte) 0xdb, (byte) 0x52, (byte) 0xad, 1750561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf3, (byte) 0xc4, (byte) 0x21, (byte) 0xd8, (byte) 0x8c, 1751561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4c, (byte) 0x41, (byte) 0x27, (byte) 0xdb, (byte) 0xd0, 1752561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x35, (byte) 0x92, (byte) 0xc7, (byte) 0x02, (byte) 0x41, 1753561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0xe0, (byte) 0x99, (byte) 0x42, (byte) 0xb4, 1754561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x76, (byte) 0x02, (byte) 0x97, (byte) 0x55, (byte) 0xf9, 1755561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xda, (byte) 0x3b, (byte) 0xa0, (byte) 0xd7, (byte) 0x0e, 1756561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xdc, (byte) 0xf4, (byte) 0x33, (byte) 0x7f, (byte) 0xbd, 1757561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcf, (byte) 0xd0, (byte) 0xeb, (byte) 0x6e, (byte) 0x89, 1758561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf7, (byte) 0x4f, (byte) 0x5a, (byte) 0x07, (byte) 0x7c, 1759561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa9, (byte) 0x49, (byte) 0x47, (byte) 0x68, (byte) 0x35, 1760561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa8, (byte) 0x05, (byte) 0x3d, (byte) 0xfd, (byte) 0x04, 1761561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7b, (byte) 0x17, (byte) 0x31, (byte) 0x0d, (byte) 0xc8, 1762561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa3, (byte) 0x98, (byte) 0x34, (byte) 0xa0, (byte) 0x50, 1763561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x44, (byte) 0x00, (byte) 0xf1, (byte) 0x0c, (byte) 0xe6, 1764561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe5, (byte) 0xc4, (byte) 0x41, (byte) 0x3d, (byte) 0xf8, 1765561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3d, (byte) 0x4e, (byte) 0x0b, (byte) 0x1c, (byte) 0xdb, 1766561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0x82, (byte) 0x9b, 1767561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x8a, (byte) 0xfd, (byte) 0xa1, (byte) 0x98, (byte) 0x41, 1768561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0xc2, (byte) 0xd1, (byte) 0xdf, (byte) 0x4e, 1769561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf3, (byte) 0x2e, (byte) 0x26, (byte) 0x53, (byte) 0x5b, 1770561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x31, (byte) 0xb1, (byte) 0x7a, (byte) 0xcc, (byte) 0x5e, 1771561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbb, (byte) 0x09, (byte) 0xa2, (byte) 0xe2, (byte) 0x6f, 1772561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4a, (byte) 0x04, (byte) 0x0d, (byte) 0xef, (byte) 0x90, 1773561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x15, (byte) 0xbe, (byte) 0x10, (byte) 0x4a, (byte) 0xac, 1774561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x92, (byte) 0xeb, (byte) 0xda, (byte) 0x72, (byte) 0xdb, 1775561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x43, (byte) 0x08, (byte) 0xb7, (byte) 0x2b, (byte) 0x4c, 1776561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe1, (byte) 0xbb, (byte) 0x58, (byte) 0xcb, (byte) 0x71, 1777561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x80, (byte) 0xad, (byte) 0xbc, (byte) 0xdc, (byte) 0x62, 1778561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5e, (byte) 0x3e, (byte) 0xcb, (byte) 0x92, (byte) 0xda, 1779561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf6, (byte) 0xdf, (byte) 0x02, (byte) 0x40, (byte) 0x4d, 1780561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x81, (byte) 0x90, (byte) 0xc5, (byte) 0x77, (byte) 0x30, 1781561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb7, (byte) 0x29, (byte) 0x00, (byte) 0xa8, (byte) 0xf1, 1782561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb4, (byte) 0xae, (byte) 0x52, (byte) 0x63, (byte) 0x00, 1783561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x2d, (byte) 0x3e, (byte) 0x7d, (byte) 0xd6, 1784561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4d, (byte) 0xf9, (byte) 0x8a, (byte) 0xc1, (byte) 0xb1, 1785561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x98, (byte) 0x89, (byte) 0x52, (byte) 0x40, (byte) 0x14, 1786561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1b, (byte) 0x0e, (byte) 0x61, (byte) 0x8f, (byte) 0xf4, 1787561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbe, (byte) 0x59, (byte) 0x79, (byte) 0x79, (byte) 0x95, 1788561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x19, (byte) 0x5c, (byte) 0x51, (byte) 0x08, (byte) 0x66, 1789561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc1, (byte) 0x42, (byte) 0x30, (byte) 0xb3, (byte) 0x7a, 1790561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x86, (byte) 0x9f, (byte) 0x3e, (byte) 0xf5, (byte) 0x19, 1791561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa3, (byte) 0xae, (byte) 0x64, (byte) 0x69, (byte) 0x14, 1792561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x07, (byte) 0x50, (byte) 0x97, }; 1793561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 1794561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // valid PrivateKeyInfo encoding (Damaged) 1795561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private static final byte[] privateKeyInfoDamaged = { (byte) 0x30, 1796561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x02, (byte) 0x77, (byte) 0x02, (byte) 0x01, 1797561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, 1798561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, 1799561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05, 1800561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0x04, // private key octet str 1801561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x02, (byte) 0x62, // Damage: l=460->461 1802561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // (0x61->0x62) 1803561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x5d, (byte) 0x02, 1804561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x01, (byte) 0x00, (byte) 0x02, (byte) 0x81, (byte) 0x81, 1805561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x00, (byte) 0xb2, (byte) 0x4a, (byte) 0x9b, (byte) 0x5b, 1806561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xba, (byte) 0x01, (byte) 0xc0, (byte) 0xcd, (byte) 0x65, 1807561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x09, (byte) 0x63, (byte) 0x70, (byte) 0x0b, (byte) 0x5a, 1808561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1b, (byte) 0x92, (byte) 0x08, (byte) 0xf8, (byte) 0x55, 1809561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5e, (byte) 0x7c, (byte) 0x1b, (byte) 0x50, (byte) 0x17, 1810561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xec, (byte) 0x44, (byte) 0x4c, (byte) 0x58, (byte) 0x42, 1811561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2b, (byte) 0x41, (byte) 0x09, (byte) 0x59, (byte) 0xf2, 1812561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe1, (byte) 0x5d, (byte) 0x43, (byte) 0x71, (byte) 0x4d, 1813561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x92, (byte) 0x03, (byte) 0x1d, (byte) 0xb6, (byte) 0x6c, 1814561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7f, (byte) 0x5d, (byte) 0x48, (byte) 0xcd, (byte) 0x17, 1815561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xec, (byte) 0xd7, (byte) 0x4c, (byte) 0x39, (byte) 0xb1, 1816561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7b, (byte) 0xe2, (byte) 0xbf, (byte) 0x96, (byte) 0x77, 1817561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbe, (byte) 0xd0, (byte) 0xa0, (byte) 0xf0, (byte) 0x2d, 1818561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6b, (byte) 0x24, (byte) 0xaa, (byte) 0x14, (byte) 0xba, 1819561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x79, (byte) 0x10, (byte) 0x9b, (byte) 0x16, 1820561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x47, (byte) 0x81, (byte) 0x54, (byte) 0xa2, 1821561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xfa, (byte) 0x91, (byte) 0x9e, (byte) 0x0a, (byte) 0x2a, 1822561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0xa6, (byte) 0xe7, (byte) 0x9e, (byte) 0x7d, 1823561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x29, (byte) 0x33, (byte) 0xd8, (byte) 0x05, (byte) 0xfc, 1824561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x3f, (byte) 0xbd, (byte) 0xc7, (byte) 0x6e, 1825561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xed, (byte) 0xaa, (byte) 0x30, (byte) 0x6c, (byte) 0x5f, 1826561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x52, (byte) 0xed, (byte) 0x35, (byte) 0x65, (byte) 0x4b, 1827561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0e, (byte) 0xc8, (byte) 0xa7, (byte) 0x12, (byte) 0x10, 1828561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x56, (byte) 0x37, (byte) 0xaf, (byte) 0x11, (byte) 0xfa, 1829561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x21, (byte) 0x0e, (byte) 0x99, (byte) 0xff, (byte) 0xfa, 1830561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x8c, (byte) 0x65, (byte) 0x8e, (byte) 0x6d, (byte) 0x02, 1831561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x02, 1832561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x81, (byte) 0x80, (byte) 0x78, (byte) 0x41, (byte) 0x72, 1833561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x40, (byte) 0x90, (byte) 0x59, (byte) 0x96, (byte) 0x5d, 1834561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf3, (byte) 0x84, (byte) 0x3d, (byte) 0x99, (byte) 0xd9, 1835561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4e, (byte) 0x51, (byte) 0xc2, (byte) 0x52, (byte) 0x62, 1836561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x8d, (byte) 0xd2, (byte) 0x49, (byte) 0x0b, (byte) 0x73, 1837561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1e, (byte) 0x6f, (byte) 0xb2, (byte) 0x31, (byte) 0x7c, 1838561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x66, (byte) 0x45, (byte) 0x1e, (byte) 0x7c, (byte) 0xdc, 1839561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3a, (byte) 0xc2, (byte) 0x5f, (byte) 0x51, (byte) 0x9a, 1840561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1e, (byte) 0xa4, (byte) 0x19, (byte) 0x8d, (byte) 0xf4, 1841561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf9, (byte) 0x81, (byte) 0x7e, (byte) 0xbe, (byte) 0x17, 1842561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf7, (byte) 0xc7, (byte) 0x3c, (byte) 0x00, (byte) 0xa1, 1843561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf9, (byte) 0x60, (byte) 0x82, (byte) 0x34, (byte) 0x8f, 1844561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x9c, (byte) 0xfd, (byte) 0x0b, (byte) 0x63, (byte) 0x42, 1845561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1b, (byte) 0x7f, (byte) 0x45, (byte) 0xf1, (byte) 0x31, 1846561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc3, (byte) 0x63, (byte) 0x47, (byte) 0x5c, (byte) 0xc1, 1847561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb2, (byte) 0x5f, (byte) 0x57, (byte) 0xee, (byte) 0x02, 1848561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x9f, (byte) 0x5e, (byte) 0x08, (byte) 0x48, (byte) 0xba, 1849561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x74, (byte) 0xba, (byte) 0x81, (byte) 0xb7, (byte) 0x30, 1850561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xac, (byte) 0x4c, (byte) 0x01, (byte) 0x35, (byte) 0xce, 1851561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x46, (byte) 0x47, (byte) 0x8c, (byte) 0xe4, (byte) 0x62, 1852561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x36, (byte) 0x1a, (byte) 0x65, (byte) 0x0e, (byte) 0x33, 1853561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x56, (byte) 0xf9, (byte) 0xb7, (byte) 0xa0, (byte) 0xc4, 1854561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xb6, (byte) 0x82, (byte) 0x55, (byte) 0x7d, (byte) 0x36, 1855561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0xc0, (byte) 0x52, (byte) 0x5e, (byte) 0x35, 1856561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x54, (byte) 0xbd, (byte) 0x97, (byte) 0x01, (byte) 0x00, 1857561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xbf, (byte) 0x10, (byte) 0xdc, (byte) 0x1b, (byte) 0x51, 1858561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xe7, (byte) 0x68, 1859561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x03, (byte) 0x3e, (byte) 0x21, (byte) 0x64, (byte) 0x68, 1860561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x24, (byte) 0x7b, (byte) 0xd0, (byte) 0x31, (byte) 0xa0, 1861561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa2, (byte) 0xd9, (byte) 0x87, (byte) 0x6d, (byte) 0x79, 1862561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x81, (byte) 0x8f, (byte) 0x8f, (byte) 0x2d, (byte) 0x7a, 1863561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x95, (byte) 0x2e, (byte) 0x55, (byte) 0x9f, (byte) 0xd7, 1864561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x86, (byte) 0x29, (byte) 0x93, (byte) 0xbd, (byte) 0x04, 1865561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7e, (byte) 0x4f, (byte) 0xdb, (byte) 0x56, (byte) 0xf1, 1866561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x75, (byte) 0xd0, (byte) 0x4b, (byte) 0x00, (byte) 0x3a, 1867561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe0, (byte) 0x26, (byte) 0xf6, (byte) 0xab, (byte) 0x9e, 1868561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0b, (byte) 0x2a, (byte) 0xf4, (byte) 0xa8, (byte) 0xd7, 1869561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xff, (byte) 0xbe, (byte) 0x01, (byte) 0xeb, (byte) 0x9b, 1870561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x81, (byte) 0xc7, (byte) 0x5f, (byte) 0x02, (byte) 0x73, 1871561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe1, (byte) 0x2b, (byte) 0x02, (byte) 0x41, (byte) 0x00, 1872561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xc5, (byte) 0x3d, (byte) 0x78, (byte) 0xab, (byte) 0xe6, 1873561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xab, (byte) 0x3e, (byte) 0x29, (byte) 0xfd, // 88 1874561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x98, (byte) 0xd0, (byte) 0xa4, (byte) 0x3e, (byte) 0x58, 1875561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xee, (byte) 0x48, (byte) 0x45, (byte) 0xa3, (byte) 0x66, 1876561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xac, (byte) 0xe9, (byte) 0x4d, (byte) 0xbd, (byte) 0x60, 1877561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xea, (byte) 0x24, (byte) 0xff, (byte) 0xed, (byte) 0x0c, 1878561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x67, (byte) 0xc5, (byte) 0xfd, (byte) 0x36, (byte) 0x28, 1879561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xea, (byte) 0x74, (byte) 0x88, (byte) 0xd1, (byte) 0xd1, 1880561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xad, (byte) 0x58, (byte) 0xd7, (byte) 0xf0, (byte) 0x67, 1881561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x20, (byte) 0xc1, (byte) 0xe3, (byte) 0xb3, (byte) 0xdb, 1882561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x52, (byte) 0xad, (byte) 0xf3, (byte) 0xc4, (byte) 0x21, 1883561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd8, (byte) 0x8c, (byte) 0x4c, (byte) 0x41, (byte) 0x27, 1884561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xdb, (byte) 0xd0, (byte) 0x35, (byte) 0x92, (byte) 0xc7, 1885561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xe0, (byte) 0x99, 1886561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x42, (byte) 0xb4, (byte) 0x76, (byte) 0x02, (byte) 0x97, 1887561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x55, (byte) 0xf9, (byte) 0xda, (byte) 0x3b, (byte) 0xa0, 1888561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xd7, (byte) 0x0e, (byte) 0xdc, (byte) 0xf4, (byte) 0x33, 1889561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x7f, (byte) 0xbd, (byte) 0xcf, (byte) 0xd0, (byte) 0xeb, 1890561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x6e, (byte) 0x89, (byte) 0xf7, (byte) 0x4f, (byte) 0x5a, 1891561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x07, (byte) 0x7c, (byte) 0xa9, (byte) 0x49, (byte) 0x47, 1892561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x68, (byte) 0x35, (byte) 0xa8, (byte) 0x05, (byte) 0x3d, 1893561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xfd, (byte) 0x04, (byte) 0x7b, (byte) 0x17, (byte) 0x31, 1894561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0d, (byte) 0xc8, (byte) 0xa3, (byte) 0x98, (byte) 0x34, 1895561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa0, (byte) 0x50, (byte) 0x44, (byte) 0x00, (byte) 0xf1, 1896561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0c, (byte) 0xe6, (byte) 0xe5, (byte) 0xc4, (byte) 0x41, 1897561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x3d, (byte) 0xf8, (byte) 0x3d, (byte) 0x4e, (byte) 0x0b, // 118 1898561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x1c, (byte) 0xdb, (byte) 0x02, (byte) 0x41, (byte) 0x00, 1899561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x82, (byte) 0x9b, (byte) 0x8a, (byte) 0xfd, (byte) 0xa1, 1900561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x98, (byte) 0x41, (byte) 0x68, (byte) 0xc2, (byte) 0xd1, 1901561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xdf, (byte) 0x4e, (byte) 0xf3, (byte) 0x2e, (byte) 0x26, 1902561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x53, (byte) 0x5b, (byte) 0x31, (byte) 0xb1, (byte) 0x7a, 1903561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcc, (byte) 0x5e, (byte) 0xbb, (byte) 0x09, (byte) 0xa2, 1904561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xe2, (byte) 0x6f, (byte) 0x4a, (byte) 0x04, (byte) 0x0d, 1905561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xef, (byte) 0x90, (byte) 0x15, (byte) 0xbe, (byte) 0x10, 1906561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x4a, (byte) 0xac, (byte) 0x92, (byte) 0xeb, (byte) 0xda, 1907561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x72, (byte) 0xdb, (byte) 0x43, (byte) 0x08, (byte) 0xb7, 1908561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2b, (byte) 0x4c, (byte) 0xe1, (byte) 0xbb, (byte) 0x58, 1909561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xcb, (byte) 0x71, (byte) 0x80, (byte) 0xad, (byte) 0xbc, 1910561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xdc, (byte) 0x62, (byte) 0x5e, (byte) 0x3e, (byte) 0xcb, 1911561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x92, (byte) 0xda, (byte) 0xf6, (byte) 0xdf, (byte) 0x02, 1912561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x40, (byte) 0x4d, (byte) 0x81, (byte) 0x90, (byte) 0xc5, 1913561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x77, (byte) 0x30, (byte) 0xb7, (byte) 0x29, (byte) 0x00, 1914561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xa8, (byte) 0xf1, (byte) 0xb4, (byte) 0xae, (byte) 0x52, 1915561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x63, (byte) 0x00, (byte) 0xb2, // 140 1916561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x2d, (byte) 0x3e, (byte) 0x7d, (byte) 0xd6, (byte) 0x4d, 1917561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xf9, (byte) 0x8a, (byte) 0xc1, (byte) 0xb1, (byte) 0x98, 1918561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x89, (byte) 0x52, (byte) 0x40, (byte) 0x14, (byte) 0x1b, 1919561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x0e, (byte) 0x61, (byte) 0x8f, (byte) 0xf4, (byte) 0xbe, 1920561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x59, (byte) 0x79, (byte) 0x79, (byte) 0x95, (byte) 0x19, 1921561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x5c, (byte) 0x51, (byte) 0x08, (byte) 0x66, (byte) 0xc1, 1922561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x42, (byte) 0x30, (byte) 0xb3, (byte) 0x7a, (byte) 0x86, 1923561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x9f, (byte) 0x3e, (byte) 0xf5, (byte) 0x19, (byte) 0xa3, // 150 1924561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0xae, (byte) 0x64, (byte) 0x69, (byte) 0x14, (byte) 0x07, 1925561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes (byte) 0x50, (byte) 0x97, }; 1926561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 1927