diff options
Diffstat (limited to 'crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/EncryptedPrivateKeyInfoTest.java')
-rw-r--r-- | crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/EncryptedPrivateKeyInfoTest.java | 1926 |
1 files changed, 0 insertions, 1926 deletions
diff --git a/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/EncryptedPrivateKeyInfoTest.java b/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/EncryptedPrivateKeyInfoTest.java deleted file mode 100644 index 4e94377..0000000 --- a/crypto/src/test/api/java/org/apache/harmony/crypto/tests/javax/crypto/EncryptedPrivateKeyInfoTest.java +++ /dev/null @@ -1,1926 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @author Vladimir N. Molotkov - */ - -package org.apache.harmony.crypto.tests.javax.crypto; - -import java.io.IOException; -import java.security.AlgorithmParameters; -import java.security.InvalidAlgorithmParameterException; -import java.security.InvalidKeyException; -import java.security.Key; -import java.security.KeyPair; -import java.security.KeyPairGenerator; -import java.security.NoSuchAlgorithmException; -import java.security.Provider; -import java.security.Security; -import java.security.spec.InvalidKeySpecException; -import java.security.spec.InvalidParameterSpecException; -import java.security.spec.PKCS8EncodedKeySpec; -import java.util.Arrays; - -import javax.crypto.BadPaddingException; -import javax.crypto.Cipher; -import javax.crypto.EncryptedPrivateKeyInfo; -import javax.crypto.IllegalBlockSizeException; -import javax.crypto.KeyGenerator; -import javax.crypto.NoSuchPaddingException; -import javax.crypto.SecretKeyFactory; -import javax.crypto.spec.PBEKeySpec; -import javax.crypto.spec.PBEParameterSpec; - -import org.apache.harmony.crypto.tests.support.EncryptedPrivateKeyInfoData; - -import junit.framework.TestCase; - -/** - * Test for EncryptedPrivateKeyInfo class. - * <p/> - * All binary data for this test were generated using BEA JRockit j2sdk1.4.2_04 - * (http://www.bea.com) with security providers list extended by Bouncy Castle's - * one (http://www.bouncycastle.org) - */ -public class EncryptedPrivateKeyInfoTest extends TestCase { - - private static final Provider[] provider = Security.getProviders(); - - /** - * Algorithm names/transformations used in roundtrip tests of - * getKeySpec(...) methods - */ - private static final String[][] algName = { - // AES - { "AES", null }, - // {"AES", "AES/ECB/PKCS5Padding"}, - // {"AES", "AES/CBC/PKCS5Padding"}, - // {"AES", "AES/OFB/PKCS5Padding"}, - // {"AES", "AES/CFB/PKCS5Padding"}, - // {"2.16.840.1.101.3.4.1.1", null}, - // {"2.16.840.1.101.3.4.1.2", null}, - // {"2.16.840.1.101.3.4.1.3", null}, - // {"2.16.840.1.101.3.4.1.4", null}, - // {"2.16.840.1.101.3.4.1.5", null}, - // {"2.16.840.1.101.3.4.1.21", null}, - // {"2.16.840.1.101.3.4.1.22", null}, - // {"2.16.840.1.101.3.4.1.23", null}, - // {"2.16.840.1.101.3.4.1.24", null}, - // {"2.16.840.1.101.3.4.1.25", null}, - // {"2.16.840.1.101.3.4.1.41", null}, - // {"2.16.840.1.101.3.4.1.42", null}, - // {"2.16.840.1.101.3.4.1.43", null}, - // {"2.16.840.1.101.3.4.1.44", null}, - // {"2.16.840.1.101.3.4.1.45", null}, - - // Blowfish - // NO OIDs for Blowfish defined (?) - { "Blowfish", null }, - // {"Blowfish","Blowfish/CBC/PKCS5Padding"}, - // {"Blowfish","Blowfish/CFB/PKCS5Padding"}, - // {"Blowfish","Blowfish/OFB/PKCS5Padding"}, - // {"Blowfish","Blowfish/PCBC/PKCS5Padding"}, - - // DES: OIW OIDs only - // {iso(1) identified-organization(3) oiw(14) secsig(3) - // algorithms(2) desECB(6)} - // 1.3.14.3.2.6 - // 1.3.14.3.2.7 - // 1.3.14.3.2.8 - // 1.3.14.3.2.9 - { "DES", null }, - // {"DES", "DES/CBC/PKCS5Padding"}, - // {"DES","DES/CFB/PKCS5Padding"}, - // {"DES","DES/OFB/PKCS5Padding"}, - // {"DES","DES/PCBC/PKCS5Padding"}, - - // DESede (=TripleDes) - //{iso(1) identified-organization(3) oiw(14) secsig(3) - // algorithms(2) desEDE(17)} - // 1.3.14.3.2.17 - // {"DESede",null}, - // {"DESede","DESede/CBC/PKCS5Padding"}, - // {"DESede","DESede/CFB/PKCS5Padding"}, - // {"DESede","DESede/OFB/PKCS5Padding"}, - // {"DESede","DESede/PCBC/PKCS5Padding"}, - { "TripleDES", null }, - // {"TripleDES","TripleDES/CBC/PKCS5Padding"}, - // {"TripleDES","TripleDES/CFB/PKCS5Padding"}, - // {"TripleDES","TripleDES/OFB/PKCS5Padding"}, - // {"TripleDES","TripleDES/PCBC/PKCS5Padding"}, - - // PBEWith<digest>And<encryption> - { "PBEWithMD5AndTripleDES", null }, - // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-5(5) - // pbeWithMD5AndDES-CBC(3)} - { "PBEWithMD5AndDES", "PBEWithMD5AndDES/CBC/PKCS5Padding" }, - { "PBEWithMD5AndDES", null }, { "PBEWithHmacSHA1AndDESede", null }, - // more oids: - // {iso(1) member-body(2) us(840) nortelnetworks(113533) entrust(7) - // algorithms(66) pbeWithMD5AndCAST5-CBC(12)} - // - // also named pbeWithSHAAnd128BitRC4, pbeWithSHA1And128BitRC4: - // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-12(12) - // pkcs-12-PbeIds(1) pkcs-12-OfflineTransportMode(1)} - // - // {iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-12(12) - // pkcs-12-PbeIds(1)} + - // pbeWithSHAAnd40BitRC4(2) pbeWithSHAAnd3-KeyTripleDES-CBC(3) - // pbeWithSHAAnd2-KeyTripleDES-CBC(4) pbeWithSHAAnd128BitRC2-CBC(5) - // pbeWithSHAAnd40BitRC2-CBC(6) - - // DiffieHellman - { "DiffieHellman", null }, // 1.2.840.10046.2.1 - // {"DH",null}, // 1.2.840.10046.2.1 - // {"1.2.840.113549.1.3.1", null}, - - { "DSA", null }, // 1.2.840.10040.4.1 - - { "RC2", null }, - - { "RC4", null }, - - { "RC5", null }, - - // {"1.2.840.113549.1.12.1.1",null}, - // {"1.2.840.113549.1.12.1.2",null}, - { "1.2.840.113549.1.12.1.3", null }, - { "PBEWithSHA1AndDESede", null }, - // {"1.2.840.113549.1.12.1.4",null}, - // {"1.2.840.113549.1.12.1.5",null}, - // {"1.2.840.113549.1.12.1.6",null}, - // {"ELGAMAL/PKCS1", "ELGAMAL/ECB/PKCS1PADDING"}, - // {"ELGAMAL/PKCS1","ELGAMAL/NONE/PKCS1PADDING"}, - // {"PBEWITHSHAAND3-KEYTRIPLEDES-CBC", null}, - // {"PBEWITHSHA1ANDDESEDE", null}, - // {"PBEWithSHAAnd3KeyTripleDES",null}, - // {"PBEWITHSHAAND3-KEYTRIPLEDES-CBC",null}, - // - // {"RC5-32",null}, - // - // {"RSA/1", "RSA/1/PKCS1PADDING"}, - // {"RSA/2", "RSA/2/PKCS1PADDING"}, - // {"RSA/ISO9796-1", "RSA/ECB/ISO9796-1PADDING"}, - // {"RSA", "RSA/ECB/NOPADDING"}, - // {"RSA/OAEP", "RSA/ECB/OAEPPADDING"}, - // {"RSA/PKCS1", "RSA/ECB/PKCS1PADDING"}, - // {"RSA/ISO9796-1", "RSA/NONE/ISO9796-1PADDING"}, - // {"RSA", "RSA/NONE/NOPADDING"}, - // {"RSA/OAEP", "RSA/NONE/OAEPPADDING"}, - // {"RSA/PKCS1", "RSA/NONE/PKCS1PADDING"}, - // {"RSA",null}, // 1.2.840.113549.1.1.1 - // {"1.2.840.113549.1.1.1", null}, - }; - - /** - * Test #1 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> - * Test preconditions: valid parameters passed <br> - * Expected: must pass without any exceptions - * - * @throws IOException - * @throws NoSuchAlgorithmException - */ - public final void testEncryptedPrivateKeyInfobyteArray1() throws Exception { - new EncryptedPrivateKeyInfo(EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DH")); - } - - /** - * Test #2 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: <code>NullPointerException</code> if encoding is - * <code>null</code><br> - * Test preconditions: <code>null</code> passed as a parameter <br> - * Expected: <code>NullPointerException</code> - * - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfobyteArray2() - throws IOException { - try { - new EncryptedPrivateKeyInfo(null); - fail(getName() + ": NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - } - - /** - * Test #3 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: <code>IOException</code> if encoding is wrong <br> - * Test preconditions: wrong encoding passed as a parameter <br> - * Expected: <code>IOException</code> - */ - public final void testEncryptedPrivateKeyInfobyteArray3() { - try { - new EncryptedPrivateKeyInfo(new byte[0]); - fail(getName() + ": IOException has not been thrown"); - } catch (IOException ok) { - } - } - - /** - * Test #4 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: <code>IOException</code> if encoding is wrong <br> - * Test preconditions: wrong encoding passed as a parameter <br> - * Expected: <code>IOException</code> - */ - public final void testEncryptedPrivateKeyInfobyteArray4() { - try { - new EncryptedPrivateKeyInfo(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10 }); - fail(getName() + ": IOException has not been thrown"); - } catch (IOException ok) { - } - } - - /** - * Test #5 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: <code>IOException</code> if encoding is wrong <br> - * Test preconditions: wrong encoding passed as a parameter <br> - * Expected: <code>IOException</code> - */ - public final void testEncryptedPrivateKeyInfobyteArray5() throws Exception { - byte[] enc = null; - try { - // 1: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - - // ... and corrupt it (set wrong alg OID length) - enc[9] = (byte) 6; - - new EncryptedPrivateKeyInfo(enc); - fail(getName() + "(1): IOException has not been thrown"); - } catch (IOException ok) { - } - - try { - // 2: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - // ... and corrupt it (set wrong encrypted data tag) - enc[307] = (byte) 6; - new EncryptedPrivateKeyInfo(enc); - fail(getName() + "(2): IOException has not been thrown"); - } catch (IOException ok) { - } - - try { - // 3: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - // ... and corrupt it (set wrong encrypted data length) - enc[310] = (byte) 1; - new EncryptedPrivateKeyInfo(enc); - fail(getName() + "(3): IOException has not been thrown"); - } catch (IOException ok) { - } - - try { - // 4: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - // ... and corrupt it (set wrong tag for alg params sequence) - enc[17] = (byte) 0x29; - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(enc); - - if (epki.getAlgParameters() == null) { - // This kind of encoding corruption can - // be only determined while AlgorithmParameters - // initialization BUT No AlgorithmParameters instance - // available for algName0[i][0]. - // So just skip this sub test - } else { - fail(getName() + "(4): IOException has not been thrown"); - } - - } catch (IOException ok) { - } - - try { - // 5: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - // ... and corrupt it (set wrong length for alg params sequence) - enc[20] = (byte) 0x1d; - new EncryptedPrivateKeyInfo(enc); - fail(getName() + "(5): IOException has not been thrown"); - } catch (IOException ok) { - } - - try { - // 6: get valid encoding - enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - // ... and corrupt it (set wrong length for alg params sequence) - enc[20] = (byte) 0x1f; - new EncryptedPrivateKeyInfo(enc); - fail(getName() + "(6): IOException has not been thrown"); - } catch (IOException ok) { - } - } - - /** - * Test #6 for <code>EncryptedPrivateKeyInfo(byte[])</code> constructor - * <br> - * Assertion: byte array is copied to prevent subsequent modification <br> - * Test preconditions: valid array passed then modified <br> - * Expected: getEncoded(), invoked after above modification, must return - * array as it was before the modification - * - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfobyteArray6() throws Exception { - byte[] encoded = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DSA"); - byte[] encodedCopy = encoded.clone(); - // pass valid array - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(encodedCopy); - // modify array passed - encodedCopy[9] = (byte) 6; - // check that internal state has not been affected - assertTrue(Arrays.equals(encoded, epki.getEncoded())); - } - - /** - * Test #1 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> - * Test preconditions: valid parameters passed <br> - * Expected: must pass without any exceptions - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray1() { - boolean performed = false; - - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - performed = true; - } catch (NoSuchAlgorithmException allowed) { - } - } - - assertTrue("Test not performed", performed); - } - - /** - * Test #2 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: <code>NoSuchAlgorithmException</code>- if the specified - * algorithm is not supported <br> - * Test preconditions: pass nonexistent algorithm name <br> - * Expected: <code>NoSuchAlgorithmException</code> - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray2() { - try { - new EncryptedPrivateKeyInfo("bla-bla", - EncryptedPrivateKeyInfoData.encryptedData); - fail(getName() + ": NoSuchAlgorithmException has not been thrown"); - } catch (NoSuchAlgorithmException ok) { - } - - try { - new EncryptedPrivateKeyInfo("", - EncryptedPrivateKeyInfoData.encryptedData); - fail(getName() + ": NoSuchAlgorithmException has not been thrown"); - } catch (NoSuchAlgorithmException ok) { - } - } - - /** - * Test #3 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: <code>NullPointerException</code>- if the specified - * algorithm or encrypted data is <code>null</code><br> - * Test preconditions: pass <code>null</code> as algorithm name then as - * encrypted data <br> - * Expected: <code>NullPointerException</code> in both cases - * - * @throws NoSuchAlgorithmException - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray3() - throws NoSuchAlgorithmException { - // pass null as name - try { - new EncryptedPrivateKeyInfo((String) null, - EncryptedPrivateKeyInfoData.encryptedData); - fail(getName() + ": NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - - // pass null as encrypted data - try { - new EncryptedPrivateKeyInfo("DSA", null); - fail(getName() + ": NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - } - - /** - * Test #4 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: <code>IllegalArgumentException</code>- if encrypted data is - * empty, i.e. 0-length <br> - * Test preconditions: pass empty encrypted data <br> - * Expected: <code>IllegalArgumentException</code> - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray4() - throws Exception { - try { - new EncryptedPrivateKeyInfo("DSA", new byte[] { }); - fail(getName() + ": IllegalArgumentException has not been thrown"); - } catch (IllegalArgumentException ok) { - } - } - - /** - * Test #5 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: byte array is copied to prevent subsequent modification <br> - * Test preconditions: valid array passed then modified <br> - * Expected: getEncryptedData(), invoked after above modification, must - * return array as it was before the modification - * - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray5() - throws Exception { - byte[] encryptedDataCopy = EncryptedPrivateKeyInfoData.encryptedData - .clone(); - // pass valid array - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo("DSA", - encryptedDataCopy); - // modify array passed - encryptedDataCopy[0] = (byte) 6; - // check that internal state has not been affected - assertTrue(Arrays.equals(EncryptedPrivateKeyInfoData.encryptedData, - epki.getEncryptedData())); - } - - /** - * @tests javax/crypto/EncryptedPrivateKeyInfo(String, byte[]) - * Checks exception order - */ - public final void testEncryptedPrivateKeyInfoStringbyteArray6() { - //Regression for HARMONY-768 - try { - new EncryptedPrivateKeyInfo("0", new byte[] { }); - fail("NoSuchAlgorithmException expected"); - } catch (NoSuchAlgorithmException e) { - //expected - } - } - - /** - * Test #1 for - * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) - * </code> - * constructor <br> - * Assertion: creates <code>EncryptedPrivateKeyInfo</code> instance <br> - * Test preconditions: valid parameters passed <br> - * Expected: must pass without any exceptions - * - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray1() - throws IOException { - - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - AlgorithmParameters ap = AlgorithmParameters - .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - new EncryptedPrivateKeyInfo(ap, - EncryptedPrivateKeyInfoData.encryptedData); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #2 for - * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) - * </code> - * constructor <br> - * Assertion: <code>NullPointerException</code>- if the specified - * algorithm parameters or encrypted data is <code>null</code><br> - * Test preconditions: pass <code>null</code> as algorithm parameters then - * as encrypted data <br> - * Expected: <code>NullPointerException</code> in both cases - * - * @throws NoSuchAlgorithmException - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray2() - throws NoSuchAlgorithmException, IOException { - // 1: pass null as AlgorithmParameters - try { - new EncryptedPrivateKeyInfo((AlgorithmParameters) null, - EncryptedPrivateKeyInfoData.encryptedData); - fail(getName() + ": NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - - // 2: pass null as encrypted data - try { - AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); - new EncryptedPrivateKeyInfo(ap, null); - fail(getName() + ": NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - } - - /** - * Test #3 for - * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) - * </code> - * constructor <br> - * Assertion: <code>IllegalArgumentException</code>- if encrypted data is - * empty, i.e. 0-length <br> - * Test preconditions: pass empty encrypted data <br> - * Expected: <code>IllegalArgumentException</code> - * - * @throws NoSuchAlgorithmException - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray3() - throws Exception { - try { - AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); - - new EncryptedPrivateKeyInfo(ap, new byte[] { }); - fail(getName() + ": IllegalArgumentException has not been thrown"); - - } catch (IllegalArgumentException ok) { - } - } - - /** - * Test #4 for - * <code>EncryptedPrivateKeyInfo(java.security.AlgorithmParameters, byte[]) - * </code> - * constructor <br> - * Assertion: byte array is copied to prevent subsequent modification <br> - * Test preconditions: valid array passed then modified <br> - * Expected: getEncryptedData(), invoked after above modification, must - * return array as it was before the modification - * - * @throws IOException - */ - public final void testEncryptedPrivateKeyInfoAlgorithmParametersbyteArray4() - throws Exception { - AlgorithmParameters ap = AlgorithmParameters.getInstance("DSA"); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding("DSA")); - - byte[] encryptedDataCopy = EncryptedPrivateKeyInfoData.encryptedData.clone(); - // pass valid array - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, - encryptedDataCopy); - - // modify array passed - encryptedDataCopy[0] = (byte) 6; - - // check that internal state has not been affected - assertTrue(Arrays.equals(EncryptedPrivateKeyInfoData.encryptedData, - epki.getEncryptedData())); - } - - /** - * Test #1 for <code>getAlgParameters()</code> method <br> - * Assertion: returns the algorithm parameters <br> - * Test preconditions: test object created using ctor which takes encoded - * form as the only parameter; encoded form passed contains algorithm - * parameters encoding <br> - * Expected: corresponding algorithm parameters must be returned - * - * @throws IOException - */ - public final void testGetAlgParameters01() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - AlgorithmParameters apar = epki.getAlgParameters(); - if (apar == null) { - continue; - } - - // check that method under test returns - // parameters with the same encoded form - assertTrue(Arrays - .equals( - EncryptedPrivateKeyInfoData - .getParametersEncoding(EncryptedPrivateKeyInfoData.algName0[i][0]), - apar.getEncoded())); - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - public final void testGetAlgParameters01_01() throws Exception { - byte[] validEncodingWithUnknownAlgOID = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding("DH"); - // correct oid value - validEncodingWithUnknownAlgOID[18] = 0; - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - validEncodingWithUnknownAlgOID); - - assertNull(epki.getAlgParameters()); - } - - /** - * Test #2 for <code>getAlgParameters()</code> method <br> - * Assertion: returns the algorithm parameters <br> - * Test preconditions: test object created using ctor which takes encoded - * form as the only parameter; encoded form passed does not contain - * algorithm parameters encoding <br> - * Expected: <code>null</code> must be returned - * - * @throws IOException - */ - public final void testGetAlgParameters02() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0], - false)); - - // check that method under test returns null - assertNull(epki.getAlgParameters()); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #3 for <code>getAlgParameters()</code> method <br> - * Assertion: returns the algorithm parameters <br> - * Test #6 for <code>EncryptedPrivateKeyInfo(String, byte[])</code> - * constructor <br> - * Assertion: ...This constructor will use null as the value of the - * algorithm parameters. <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: <code>null</code> must be returned - * - * @throws IOException - */ - public final void testGetAlgParameters03() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns null - // for object constructed in such a way - assertNull(epki.getAlgParameters()); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #4 for <code>getAlgParameters()</code> method <br> - * Assertion: returns the algorithm parameters <br> - * Test preconditions: test object created using ctor which takes - * AlgorithmParameters and encrypted data as a parameters; <br> - * Expected: the same algorithm parameters as ones passed to the ctor must be - * returned - * - * @throws IOException - */ - public final void testGetAlgParameters04() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - AlgorithmParameters ap = AlgorithmParameters - .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); - // use pregenerated AlgorithmParameters encodings - ap - .init(EncryptedPrivateKeyInfoData - .getParametersEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // the same parameters instance - assertSame(ap, epki.getAlgParameters()); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #1 for <code>getEncryptedData()</code> method <br> - * Assertion: returns the encrypted data <br> - * Test preconditions: test object created using ctor which takes encoded - * form as the only parameter; encoded form passed contains encrypted data - * <br> - * Expected: the equivalent encrypted data must be returned - * - * @throws IOException - */ - public final void testGetEncryptedData01() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - // check that method under test returns - // valid encrypted data - assertTrue(Arrays.equals( - EncryptedPrivateKeyInfoData.encryptedData, epki - .getEncryptedData())); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #2 for <code>getEncryptedData()</code> method <br> - * Assertion: returns the encrypted data <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: the equivalent encrypted data must be returned - */ - public final void testGetEncryptedData02() { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // valid encrypted data - assertTrue(Arrays.equals( - EncryptedPrivateKeyInfoData.encryptedData, epki - .getEncryptedData())); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #3 for <code>getEncryptedData()</code> method <br> - * Assertion: returns the encrypted data <br> - * Test preconditions: test object created using ctor which takes algorithm - * parameters and encrypted data as a parameters <br> - * Expected: the equivalent encrypted data must be returned - * - * @throws IOException - */ - public final void testGetEncryptedData03() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - AlgorithmParameters ap = AlgorithmParameters - .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // valid encrypted data - assertTrue(Arrays.equals( - EncryptedPrivateKeyInfoData.encryptedData, epki - .getEncryptedData())); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #4 for <code>getEncryptedData()</code> method <br> - * Assertion: returns a new array each time this method is called <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: refs to encrypted data byte array passed to the ctor and - * returned by the method under test must be different - */ - public final void testGetEncryptedData04() { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // new array each time - byte[] ecd1 = epki.getEncryptedData(); - byte[] ecd2 = epki.getEncryptedData(); - assertNotSame(EncryptedPrivateKeyInfoData.encryptedData, ecd1); - assertNotSame(EncryptedPrivateKeyInfoData.encryptedData, ecd2); - assertNotSame(ecd1, ecd2); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #1 for <code>getEncoded()</code> method <br> - * Assertion: returns the ASN.1 encoding of this object <br> - * Test preconditions: test object created using ctor which takes encoded - * form as the only parameter <br> - * Expected: equivalent encoded form must be returned - * - * @throws IOException - */ - public final void testGetEncoded01() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - byte[] enc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0]); - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(enc); - - // check that method under test returns - // valid encoded form - assertTrue(Arrays.equals(enc, epki.getEncoded())); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #2 for <code>getEncoded()</code> method <br> - * Assertion: returns the ASN.1 encoding of this object <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: equivalent encoded form (without alg params) must be returned - * - * @throws IOException - */ - public final void testGetEncoded02() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // valid encoded form - byte[] refEnc = EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0], - false); - // System.out.println(Array.toString(refEnc, " ")); - byte[] actEnc = epki.getEncoded(); - // System.out.println(Array.toString(actEnc, " ")); - assertTrue(Arrays.equals(refEnc, actEnc)); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #3 for <code>getEncoded()</code> method <br> - * Assertion: returns the ASN.1 encoding of this object <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: equivalent encoded form (without alg params) must be returned - * - * @throws IOException - */ - public final void testGetEncoded03() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - AlgorithmParameters ap = AlgorithmParameters - .getInstance(EncryptedPrivateKeyInfoData.algName0[i][0]); - // use pregenerated AlgorithmParameters encodings - ap.init(EncryptedPrivateKeyInfoData.getParametersEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0])); - - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo(ap, - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // valid encoded form - assertTrue(Arrays.equals( - EncryptedPrivateKeyInfoData - .getValidEncryptedPrivateKeyInfoEncoding( - EncryptedPrivateKeyInfoData.algName0[i][0]), - epki.getEncoded())); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Test #4 for <code>getEncoded()</code> method <br> - * Assertion: returns a new array each time this method is called <br> - * Test preconditions: test object created using ctor which takes algorithm - * name and encrypted data as a parameters <br> - * Expected: several refs to byte array returned by the method under test - * must be different - * - * @throws IOException - */ - public final void testGetEncoded04() throws IOException { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - // check that method under test returns - // new array each time - byte[] ec1 = epki.getEncoded(); - byte[] ec2 = epki.getEncoded(); - byte[] ec3 = epki.getEncoded(); - assertNotSame(ec1, ec2); - assertNotSame(ec2, ec3); - assertNotSame(ec1, ec3); - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - public final void testGetKeySpecCipher01() { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - try { - - // check that method under test throws NPE - epki.getKeySpec((Cipher) null); - fail(getName() + "NullPointerException has not been thrown"); - - } catch (NullPointerException ok) { - } catch (InvalidKeySpecException e) { - fail(getName() + "Unexpected exception: " + e); - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains valid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecCipher01() { - boolean performed = false; - - for (int i = 0; i < algName.length; i++) { - try { - // generate test data - TestDataGenerator g = new TestDataGenerator(algName[i][0], - algName[i][1], privateKeyInfo, null); - - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - - // call methods under test - try { - - PKCS8EncodedKeySpec eks = epki.getKeySpec(g.c()); - - if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { - fail(algName[i][0] + " != " + algName[i][1]); - } - } catch (InvalidKeySpecException e) { - fail(algName[i][0] + ", " + algName[i][1] + e + "\n"); - } - performed = true; - - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - } catch (NoSuchAlgorithmException allowed) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains invalid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecCipher02() { - boolean performed = false; - for (int i = 0; i < algName.length; i++) { - try { - // generate test data - TestDataGenerator g = new TestDataGenerator(algName[i][0], - algName[i][1], privateKeyInfoDamaged, null); - - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - - // call methods under test - try { - epki.getKeySpec(g.c()); - - // must not get here because decrypted data does - // not represent valid PKCS8 encoding - fail(algName[i][0] + ", " + algName[i][1]); - } catch (InvalidKeySpecException ok) { - } - - performed = true; - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - public final void testGetKeySpecKey01() { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - try { - - // check that method under test throws NPE - epki.getKeySpec((Key) null); - fail(getName() + "NullPointerException has not been thrown"); - - } catch (NullPointerException ok) { - } catch (InvalidKeyException e) { - fail(getName() + "Unexpected exception: " + e); - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains valid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKey01() { - boolean performed = false; - for (int i = 0; i < algName.length; i++) { - try { - // generate test data - TestDataGenerator g = new TestDataGenerator(algName[i][0], - algName[i][1], privateKeyInfo, null); - - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - - try { - PKCS8EncodedKeySpec eks = epki - .getKeySpec(g.pubK() == null ? g.k() : g.pubK()); - - if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { - fail(algName[i][0] + " != " + algName[i][1]); - } - } catch (InvalidKeyException e) { - fail(algName[i][0] + ", " + algName[i][1] + ": " + e); - } - - performed = true; - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains invalid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKey02() { - boolean performed = false; - for (int i = 0; i < algName.length; i++) { - try { - // generate test data - TestDataGenerator g = new TestDataGenerator(algName[i][0], - algName[i][1], privateKeyInfoDamaged, null); - - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g.ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - - try { - epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK()); - fail(algName[i][0] + ", " + algName[i][1]); - } catch (InvalidKeyException e) { - } - - performed = true; - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - public final void testGetKeySpecKeyString01() throws Exception { - boolean performed = false; - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - try { - - // check that method under test throws NPE - epki.getKeySpec((Key) null, "SomeProviderName"); - fail(getName() + "NullPointerException has not been thrown"); - - } catch (NullPointerException ok) { - } - - try { - - // check that method under test throws NPE - epki.getKeySpec(new Key() { - public String getAlgorithm() { - return "alg"; - } - - public String getFormat() { - return "fmt"; - } - - public byte[] getEncoded() { - return new byte[] { }; - } - }, (String) null); - - fail(getName() + "NullPointerException has not been thrown"); - - } catch (NullPointerException ok) { - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains valid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKeyString01() throws Exception { - boolean performed = false; - for (int i = 0; i < algName.length; i++) { - for (int l = 0; l < provider.length; l++) { - if (provider[l] == null) { - continue; - } - TestDataGenerator g; - try { - // generate test data - g = new TestDataGenerator(algName[i][0], algName[i][1], - privateKeyInfo, provider[l]); - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - continue; - } - - try { - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g - .ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - try { - - PKCS8EncodedKeySpec eks = epki.getKeySpec( - g.pubK() == null ? g.k() : g.pubK(), - provider[l].getName()); - - if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { - fail(algName[i][0] + " != " + algName[i][1]); - } - } catch (InvalidKeyException e) { - fail(algName[i][0] + ", " + algName[i][1] + ": " + e); - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains invalid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKeyString02() throws Exception { - boolean performed = false; - for (int i = 0; i < algName.length; i++) { - for (int l = 0; l < provider.length; l++) { - if (provider[l] == null) { - continue; - } - TestDataGenerator g; - try { - // generate test data - g = new TestDataGenerator(algName[i][0], algName[i][1], - privateKeyInfoDamaged, provider[l]); - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - continue; - } - - try { - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g - .ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - - try { - - epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK(), - provider[l].getName()); - - fail(algName[i][0] + ", " + algName[i][1]); - - } catch (InvalidKeyException e) { - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - } - assertTrue("Test not performed", performed); - } - - public final void testGetKeySpecKeyProvider01() throws Exception { - boolean performed = false; - - for (int i = 0; i < EncryptedPrivateKeyInfoData.algName0.length; i++) { - try { - EncryptedPrivateKeyInfo epki = new EncryptedPrivateKeyInfo( - EncryptedPrivateKeyInfoData.algName0[i][0], - EncryptedPrivateKeyInfoData.encryptedData); - - try { - - // check that method under test throws NPE - epki.getKeySpec((Key) null, (Provider) null); - fail(getName() + "NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - - try { - - // check that method under test throws NPE - epki.getKeySpec(new Key() { - public String getAlgorithm() { - return "alg"; - } - - public String getFormat() { - return "fmt"; - } - - public byte[] getEncoded() { - return new byte[] { }; - } - }, (Provider) null); - - fail(getName() + "NullPointerException has not been thrown"); - } catch (NullPointerException ok) { - } - - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains valid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKeyProvider01() { - boolean performed = false; - - for (int i = 0; i < algName.length; i++) { - for (int l = 0; l < provider.length; l++) { - if (provider[l] == null) { - continue; - } - TestDataGenerator g; - try { - // generate test data - g = new TestDataGenerator(algName[i][0], algName[i][1], - privateKeyInfo, provider[l]); - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - continue; - } - try { - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g - .ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - try { - - PKCS8EncodedKeySpec eks = epki.getKeySpec( - g.pubK() == null ? g.k() : g.pubK(), - provider[l]); - - if (!Arrays.equals(privateKeyInfo, eks.getEncoded())) { - fail(algName[i][0] + " != " + algName[i][1]); - } - } catch (InvalidKeyException e) { - fail(algName[i][0] + ", " + algName[i][1] + ": " + e); - } - performed = true; - - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - } - assertTrue("Test not performed", performed); - } - - /** - * Encrypted data contains invalid PKCS8 key info encoding - */ - public final void test_ROUNDTRIP_GetKeySpecKeyProvider02() { - boolean performed = false; - - for (int i = 0; i < algName.length; i++) { - for (int l = 0; l < provider.length; l++) { - if (provider[l] == null) { - continue; - } - TestDataGenerator g; - try { - // generate test data - g = new TestDataGenerator(algName[i][0], algName[i][1], - privateKeyInfoDamaged, provider[l]); - } catch (TestDataGenerator.AllowedFailure allowedFailure) { - continue; - } - - try { - // create test object - EncryptedPrivateKeyInfo epki; - if (g.ap() == null) { - epki = new EncryptedPrivateKeyInfo(algName[i][0], g - .ct()); - } else { - epki = new EncryptedPrivateKeyInfo(g.ap(), g.ct()); - } - try { - - epki.getKeySpec(g.pubK() == null ? g.k() : g.pubK(), - provider[l]); - - fail(algName[i][0] + ", " + algName[i][1]); - - } catch (InvalidKeyException e) { - } - performed = true; - } catch (NoSuchAlgorithmException allowedFailure) { - } - } - } - assertTrue("Test not performed", performed); - } - - public static class TestDataGenerator { - - public static class AllowedFailure extends Exception { - AllowedFailure(String msg) { - super(msg); - } - } - - private Cipher c = null; - - private Key k = null, pubK = null; - - private AlgorithmParameters ap = null; - - byte[] ct; - - public TestDataGenerator(String algName, String transformation, - byte[] privateKeyInfo, Provider provider) throws AllowedFailure { - try { - c = (provider == null) ? Cipher - .getInstance(transformation != null ? transformation - : algName) : Cipher.getInstance( - transformation != null ? transformation : algName, - provider); - } catch (NoSuchAlgorithmException e) { - throw new AllowedFailure(e.getMessage()); - } catch (NoSuchPaddingException e) { - throw new AllowedFailure(e.getMessage()); - } - - try { - KeyGenerator kg = (provider == null) ? KeyGenerator - .getInstance(algName) : KeyGenerator.getInstance( - algName, provider); - k = kg.generateKey(); - } catch (NoSuchAlgorithmException e) { - } - - if (k == null) { - try { - KeyPairGenerator kpg = (provider == null) ? KeyPairGenerator - .getInstance(algName) - : KeyPairGenerator.getInstance(algName, provider); - KeyPair kp = kpg.genKeyPair(); - k = kp.getPrivate(); - pubK = kp.getPublic(); - } catch (NoSuchAlgorithmException e) { - } - } - - PBEParameterSpec pbeParamSpec = null; - if (k == null) { - try { - pbeParamSpec = new PBEParameterSpec(new byte[] { 1, 2, 3, - 4, 5, 6, 7, 8 }, 10); - SecretKeyFactory skf = (provider == null) ? SecretKeyFactory - .getInstance(algName) - : SecretKeyFactory.getInstance(algName, provider); - PBEKeySpec ks = new PBEKeySpec("12345678".toCharArray()); - try { - k = skf.generateSecret(ks); - } catch (InvalidKeySpecException e) { - throw new AllowedFailure(e.getMessage()); - } - - } catch (NoSuchAlgorithmException e) { - throw new AllowedFailure(e.getMessage()); - } - } - - try { - if (pbeParamSpec == null) { - c.init(Cipher.ENCRYPT_MODE, k); - } else { - c.init(Cipher.ENCRYPT_MODE, k, pbeParamSpec); - } - } catch (InvalidKeyException e) { - throw new AllowedFailure(e.getMessage()); - } catch (SecurityException e) { - throw new AllowedFailure(e.getMessage()); - } catch (InvalidAlgorithmParameterException e) { - throw new AllowedFailure(e.getMessage()); - } - - ap = c.getParameters(); - - try { - ct = c.doFinal(privateKeyInfo); - } catch (IllegalStateException e) { - throw new AllowedFailure(e.getMessage()); - } catch (IllegalBlockSizeException e) { - throw new AllowedFailure(e.getMessage()); - } catch (BadPaddingException e) { - throw new AllowedFailure(e.getMessage()); - } catch (RuntimeException e) { - throw new AllowedFailure(e.getMessage()); - } - - try { - // try to convert pbeParamSpec->ap - if (pbeParamSpec != null) { - try { - ap = (provider == null) ? AlgorithmParameters - .getInstance(algName) : AlgorithmParameters - .getInstance(algName, provider); - ap.init(pbeParamSpec); - pbeParamSpec = null; - } catch (NoSuchAlgorithmException e) { - // couldn't convert - throw new AllowedFailure(e.getMessage()); - } catch (InvalidParameterSpecException e) { - // couldn't convert - throw new AllowedFailure(e.getMessage()); - } - } - - if (ap == null) { - c.init(Cipher.DECRYPT_MODE, pubK == null ? k : pubK); - } else { - c.init(Cipher.DECRYPT_MODE, pubK == null ? k : pubK, ap); - } - - } catch (InvalidKeyException e) { - throw new AllowedFailure(e.getMessage()); - } catch (SecurityException e) { - throw new AllowedFailure(e.getMessage()); - } catch (InvalidAlgorithmParameterException e) { - throw new AllowedFailure(e.getMessage()); - } - } - - public Key k() { - return k; - } - - public Key pubK() { - return pubK; - } - - public Cipher c() { - return c; - } - - public byte[] ct() { - return ct; - } - - public AlgorithmParameters ap() { - return ap; - } - } - - // valid PrivateKeyInfo encoding - private static final byte[] privateKeyInfo = { (byte) 0x30, (byte) 0x82, - (byte) 0x02, (byte) 0x77, (byte) 0x02, (byte) 0x01, (byte) 0x00, - (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, (byte) 0x2a, - (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, (byte) 0x0d, - (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05, (byte) 0x00, - (byte) 0x04, (byte) 0x82, (byte) 0x02, (byte) 0x61, (byte) 0x30, - (byte) 0x82, (byte) 0x02, (byte) 0x5d, (byte) 0x02, (byte) 0x01, - (byte) 0x00, (byte) 0x02, (byte) 0x81, (byte) 0x81, (byte) 0x00, - (byte) 0xb2, (byte) 0x4a, (byte) 0x9b, (byte) 0x5b, (byte) 0xba, - (byte) 0x01, (byte) 0xc0, (byte) 0xcd, (byte) 0x65, (byte) 0x09, - (byte) 0x63, (byte) 0x70, (byte) 0x0b, (byte) 0x5a, (byte) 0x1b, - (byte) 0x92, (byte) 0x08, (byte) 0xf8, (byte) 0x55, (byte) 0x5e, - (byte) 0x7c, (byte) 0x1b, (byte) 0x50, (byte) 0x17, (byte) 0xec, - (byte) 0x44, (byte) 0x4c, (byte) 0x58, (byte) 0x42, (byte) 0x2b, - (byte) 0x41, (byte) 0x09, (byte) 0x59, (byte) 0xf2, (byte) 0xe1, - (byte) 0x5d, (byte) 0x43, (byte) 0x71, (byte) 0x4d, (byte) 0x92, - (byte) 0x03, (byte) 0x1d, (byte) 0xb6, (byte) 0x6c, (byte) 0x7f, - (byte) 0x5d, (byte) 0x48, (byte) 0xcd, (byte) 0x17, (byte) 0xec, - (byte) 0xd7, (byte) 0x4c, (byte) 0x39, (byte) 0xb1, (byte) 0x7b, - (byte) 0xe2, (byte) 0xbf, (byte) 0x96, (byte) 0x77, (byte) 0xbe, - (byte) 0xd0, (byte) 0xa0, (byte) 0xf0, (byte) 0x2d, (byte) 0x6b, - (byte) 0x24, (byte) 0xaa, (byte) 0x14, (byte) 0xba, (byte) 0x82, - (byte) 0x79, (byte) 0x10, (byte) 0x9b, (byte) 0x16, (byte) 0x68, - (byte) 0x47, (byte) 0x81, (byte) 0x54, (byte) 0xa2, (byte) 0xfa, - (byte) 0x91, (byte) 0x9e, (byte) 0x0a, (byte) 0x2a, (byte) 0x53, - (byte) 0xa6, (byte) 0xe7, (byte) 0x9e, (byte) 0x7d, (byte) 0x29, - (byte) 0x33, (byte) 0xd8, (byte) 0x05, (byte) 0xfc, (byte) 0x02, - (byte) 0x3f, (byte) 0xbd, (byte) 0xc7, (byte) 0x6e, (byte) 0xed, - (byte) 0xaa, (byte) 0x30, (byte) 0x6c, (byte) 0x5f, (byte) 0x52, - (byte) 0xed, (byte) 0x35, (byte) 0x65, (byte) 0x4b, (byte) 0x0e, - (byte) 0xc8, (byte) 0xa7, (byte) 0x12, (byte) 0x10, (byte) 0x56, - (byte) 0x37, (byte) 0xaf, (byte) 0x11, (byte) 0xfa, (byte) 0x21, - (byte) 0x0e, (byte) 0x99, (byte) 0xff, (byte) 0xfa, (byte) 0x8c, - (byte) 0x65, (byte) 0x8e, (byte) 0x6d, (byte) 0x02, (byte) 0x03, - (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x81, - (byte) 0x80, (byte) 0x78, (byte) 0x41, (byte) 0x72, (byte) 0x40, - (byte) 0x90, (byte) 0x59, (byte) 0x96, (byte) 0x5d, (byte) 0xf3, - (byte) 0x84, (byte) 0x3d, (byte) 0x99, (byte) 0xd9, (byte) 0x4e, - (byte) 0x51, (byte) 0xc2, (byte) 0x52, (byte) 0x62, (byte) 0x8d, - (byte) 0xd2, (byte) 0x49, (byte) 0x0b, (byte) 0x73, (byte) 0x1e, - (byte) 0x6f, (byte) 0xb2, (byte) 0x31, (byte) 0x7c, (byte) 0x66, - (byte) 0x45, (byte) 0x1e, (byte) 0x7c, (byte) 0xdc, (byte) 0x3a, - (byte) 0xc2, (byte) 0x5f, (byte) 0x51, (byte) 0x9a, (byte) 0x1e, - (byte) 0xa4, (byte) 0x19, (byte) 0x8d, (byte) 0xf4, (byte) 0xf9, - (byte) 0x81, (byte) 0x7e, (byte) 0xbe, (byte) 0x17, (byte) 0xf7, - (byte) 0xc7, (byte) 0x3c, (byte) 0x00, (byte) 0xa1, (byte) 0xf9, - (byte) 0x60, (byte) 0x82, (byte) 0x34, (byte) 0x8f, (byte) 0x9c, - (byte) 0xfd, (byte) 0x0b, (byte) 0x63, (byte) 0x42, (byte) 0x1b, - (byte) 0x7f, (byte) 0x45, (byte) 0xf1, (byte) 0x31, (byte) 0xc3, - (byte) 0x63, (byte) 0x47, (byte) 0x5c, (byte) 0xc1, (byte) 0xb2, - (byte) 0x5f, (byte) 0x57, (byte) 0xee, (byte) 0x02, (byte) 0x9f, - (byte) 0x5e, (byte) 0x08, (byte) 0x48, (byte) 0xba, (byte) 0x74, - (byte) 0xba, (byte) 0x81, (byte) 0xb7, (byte) 0x30, (byte) 0xac, - (byte) 0x4c, (byte) 0x01, (byte) 0x35, (byte) 0xce, (byte) 0x46, - (byte) 0x47, (byte) 0x8c, (byte) 0xe4, (byte) 0x62, (byte) 0x36, - (byte) 0x1a, (byte) 0x65, (byte) 0x0e, (byte) 0x33, (byte) 0x56, - (byte) 0xf9, (byte) 0xb7, (byte) 0xa0, (byte) 0xc4, (byte) 0xb6, - (byte) 0x82, (byte) 0x55, (byte) 0x7d, (byte) 0x36, (byte) 0x55, - (byte) 0xc0, (byte) 0x52, (byte) 0x5e, (byte) 0x35, (byte) 0x54, - (byte) 0xbd, (byte) 0x97, (byte) 0x01, (byte) 0x00, (byte) 0xbf, - (byte) 0x10, (byte) 0xdc, (byte) 0x1b, (byte) 0x51, (byte) 0x02, - (byte) 0x41, (byte) 0x00, (byte) 0xe7, (byte) 0x68, (byte) 0x03, - (byte) 0x3e, (byte) 0x21, (byte) 0x64, (byte) 0x68, (byte) 0x24, - (byte) 0x7b, (byte) 0xd0, (byte) 0x31, (byte) 0xa0, (byte) 0xa2, - (byte) 0xd9, (byte) 0x87, (byte) 0x6d, (byte) 0x79, (byte) 0x81, - (byte) 0x8f, (byte) 0x8f, (byte) 0x2d, (byte) 0x7a, (byte) 0x95, - (byte) 0x2e, (byte) 0x55, (byte) 0x9f, (byte) 0xd7, (byte) 0x86, - (byte) 0x29, (byte) 0x93, (byte) 0xbd, (byte) 0x04, (byte) 0x7e, - (byte) 0x4f, (byte) 0xdb, (byte) 0x56, (byte) 0xf1, (byte) 0x75, - (byte) 0xd0, (byte) 0x4b, (byte) 0x00, (byte) 0x3a, (byte) 0xe0, - (byte) 0x26, (byte) 0xf6, (byte) 0xab, (byte) 0x9e, (byte) 0x0b, - (byte) 0x2a, (byte) 0xf4, (byte) 0xa8, (byte) 0xd7, (byte) 0xff, - (byte) 0xbe, (byte) 0x01, (byte) 0xeb, (byte) 0x9b, (byte) 0x81, - (byte) 0xc7, (byte) 0x5f, (byte) 0x02, (byte) 0x73, (byte) 0xe1, - (byte) 0x2b, (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xc5, - (byte) 0x3d, (byte) 0x78, (byte) 0xab, (byte) 0xe6, (byte) 0xab, - (byte) 0x3e, (byte) 0x29, (byte) 0xfd, (byte) 0x98, (byte) 0xd0, - (byte) 0xa4, (byte) 0x3e, (byte) 0x58, (byte) 0xee, (byte) 0x48, - (byte) 0x45, (byte) 0xa3, (byte) 0x66, (byte) 0xac, (byte) 0xe9, - (byte) 0x4d, (byte) 0xbd, (byte) 0x60, (byte) 0xea, (byte) 0x24, - (byte) 0xff, (byte) 0xed, (byte) 0x0c, (byte) 0x67, (byte) 0xc5, - (byte) 0xfd, (byte) 0x36, (byte) 0x28, (byte) 0xea, (byte) 0x74, - (byte) 0x88, (byte) 0xd1, (byte) 0xd1, (byte) 0xad, (byte) 0x58, - (byte) 0xd7, (byte) 0xf0, (byte) 0x67, (byte) 0x20, (byte) 0xc1, - (byte) 0xe3, (byte) 0xb3, (byte) 0xdb, (byte) 0x52, (byte) 0xad, - (byte) 0xf3, (byte) 0xc4, (byte) 0x21, (byte) 0xd8, (byte) 0x8c, - (byte) 0x4c, (byte) 0x41, (byte) 0x27, (byte) 0xdb, (byte) 0xd0, - (byte) 0x35, (byte) 0x92, (byte) 0xc7, (byte) 0x02, (byte) 0x41, - (byte) 0x00, (byte) 0xe0, (byte) 0x99, (byte) 0x42, (byte) 0xb4, - (byte) 0x76, (byte) 0x02, (byte) 0x97, (byte) 0x55, (byte) 0xf9, - (byte) 0xda, (byte) 0x3b, (byte) 0xa0, (byte) 0xd7, (byte) 0x0e, - (byte) 0xdc, (byte) 0xf4, (byte) 0x33, (byte) 0x7f, (byte) 0xbd, - (byte) 0xcf, (byte) 0xd0, (byte) 0xeb, (byte) 0x6e, (byte) 0x89, - (byte) 0xf7, (byte) 0x4f, (byte) 0x5a, (byte) 0x07, (byte) 0x7c, - (byte) 0xa9, (byte) 0x49, (byte) 0x47, (byte) 0x68, (byte) 0x35, - (byte) 0xa8, (byte) 0x05, (byte) 0x3d, (byte) 0xfd, (byte) 0x04, - (byte) 0x7b, (byte) 0x17, (byte) 0x31, (byte) 0x0d, (byte) 0xc8, - (byte) 0xa3, (byte) 0x98, (byte) 0x34, (byte) 0xa0, (byte) 0x50, - (byte) 0x44, (byte) 0x00, (byte) 0xf1, (byte) 0x0c, (byte) 0xe6, - (byte) 0xe5, (byte) 0xc4, (byte) 0x41, (byte) 0x3d, (byte) 0xf8, - (byte) 0x3d, (byte) 0x4e, (byte) 0x0b, (byte) 0x1c, (byte) 0xdb, - (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0x82, (byte) 0x9b, - (byte) 0x8a, (byte) 0xfd, (byte) 0xa1, (byte) 0x98, (byte) 0x41, - (byte) 0x68, (byte) 0xc2, (byte) 0xd1, (byte) 0xdf, (byte) 0x4e, - (byte) 0xf3, (byte) 0x2e, (byte) 0x26, (byte) 0x53, (byte) 0x5b, - (byte) 0x31, (byte) 0xb1, (byte) 0x7a, (byte) 0xcc, (byte) 0x5e, - (byte) 0xbb, (byte) 0x09, (byte) 0xa2, (byte) 0xe2, (byte) 0x6f, - (byte) 0x4a, (byte) 0x04, (byte) 0x0d, (byte) 0xef, (byte) 0x90, - (byte) 0x15, (byte) 0xbe, (byte) 0x10, (byte) 0x4a, (byte) 0xac, - (byte) 0x92, (byte) 0xeb, (byte) 0xda, (byte) 0x72, (byte) 0xdb, - (byte) 0x43, (byte) 0x08, (byte) 0xb7, (byte) 0x2b, (byte) 0x4c, - (byte) 0xe1, (byte) 0xbb, (byte) 0x58, (byte) 0xcb, (byte) 0x71, - (byte) 0x80, (byte) 0xad, (byte) 0xbc, (byte) 0xdc, (byte) 0x62, - (byte) 0x5e, (byte) 0x3e, (byte) 0xcb, (byte) 0x92, (byte) 0xda, - (byte) 0xf6, (byte) 0xdf, (byte) 0x02, (byte) 0x40, (byte) 0x4d, - (byte) 0x81, (byte) 0x90, (byte) 0xc5, (byte) 0x77, (byte) 0x30, - (byte) 0xb7, (byte) 0x29, (byte) 0x00, (byte) 0xa8, (byte) 0xf1, - (byte) 0xb4, (byte) 0xae, (byte) 0x52, (byte) 0x63, (byte) 0x00, - (byte) 0xb2, (byte) 0x2d, (byte) 0x3e, (byte) 0x7d, (byte) 0xd6, - (byte) 0x4d, (byte) 0xf9, (byte) 0x8a, (byte) 0xc1, (byte) 0xb1, - (byte) 0x98, (byte) 0x89, (byte) 0x52, (byte) 0x40, (byte) 0x14, - (byte) 0x1b, (byte) 0x0e, (byte) 0x61, (byte) 0x8f, (byte) 0xf4, - (byte) 0xbe, (byte) 0x59, (byte) 0x79, (byte) 0x79, (byte) 0x95, - (byte) 0x19, (byte) 0x5c, (byte) 0x51, (byte) 0x08, (byte) 0x66, - (byte) 0xc1, (byte) 0x42, (byte) 0x30, (byte) 0xb3, (byte) 0x7a, - (byte) 0x86, (byte) 0x9f, (byte) 0x3e, (byte) 0xf5, (byte) 0x19, - (byte) 0xa3, (byte) 0xae, (byte) 0x64, (byte) 0x69, (byte) 0x14, - (byte) 0x07, (byte) 0x50, (byte) 0x97, }; - - // valid PrivateKeyInfo encoding (Damaged) - private static final byte[] privateKeyInfoDamaged = { (byte) 0x30, - (byte) 0x82, (byte) 0x02, (byte) 0x77, (byte) 0x02, (byte) 0x01, - (byte) 0x00, (byte) 0x30, (byte) 0x0d, (byte) 0x06, (byte) 0x09, - (byte) 0x2a, (byte) 0x86, (byte) 0x48, (byte) 0x86, (byte) 0xf7, - (byte) 0x0d, (byte) 0x01, (byte) 0x01, (byte) 0x01, (byte) 0x05, - (byte) 0x00, (byte) 0x04, // private key octet str - (byte) 0x82, (byte) 0x02, (byte) 0x62, // Damage: l=460->461 - // (0x61->0x62) - (byte) 0x30, (byte) 0x82, (byte) 0x02, (byte) 0x5d, (byte) 0x02, - (byte) 0x01, (byte) 0x00, (byte) 0x02, (byte) 0x81, (byte) 0x81, - (byte) 0x00, (byte) 0xb2, (byte) 0x4a, (byte) 0x9b, (byte) 0x5b, - (byte) 0xba, (byte) 0x01, (byte) 0xc0, (byte) 0xcd, (byte) 0x65, - (byte) 0x09, (byte) 0x63, (byte) 0x70, (byte) 0x0b, (byte) 0x5a, - (byte) 0x1b, (byte) 0x92, (byte) 0x08, (byte) 0xf8, (byte) 0x55, - (byte) 0x5e, (byte) 0x7c, (byte) 0x1b, (byte) 0x50, (byte) 0x17, - (byte) 0xec, (byte) 0x44, (byte) 0x4c, (byte) 0x58, (byte) 0x42, - (byte) 0x2b, (byte) 0x41, (byte) 0x09, (byte) 0x59, (byte) 0xf2, - (byte) 0xe1, (byte) 0x5d, (byte) 0x43, (byte) 0x71, (byte) 0x4d, - (byte) 0x92, (byte) 0x03, (byte) 0x1d, (byte) 0xb6, (byte) 0x6c, - (byte) 0x7f, (byte) 0x5d, (byte) 0x48, (byte) 0xcd, (byte) 0x17, - (byte) 0xec, (byte) 0xd7, (byte) 0x4c, (byte) 0x39, (byte) 0xb1, - (byte) 0x7b, (byte) 0xe2, (byte) 0xbf, (byte) 0x96, (byte) 0x77, - (byte) 0xbe, (byte) 0xd0, (byte) 0xa0, (byte) 0xf0, (byte) 0x2d, - (byte) 0x6b, (byte) 0x24, (byte) 0xaa, (byte) 0x14, (byte) 0xba, - (byte) 0x82, (byte) 0x79, (byte) 0x10, (byte) 0x9b, (byte) 0x16, - (byte) 0x68, (byte) 0x47, (byte) 0x81, (byte) 0x54, (byte) 0xa2, - (byte) 0xfa, (byte) 0x91, (byte) 0x9e, (byte) 0x0a, (byte) 0x2a, - (byte) 0x53, (byte) 0xa6, (byte) 0xe7, (byte) 0x9e, (byte) 0x7d, - (byte) 0x29, (byte) 0x33, (byte) 0xd8, (byte) 0x05, (byte) 0xfc, - (byte) 0x02, (byte) 0x3f, (byte) 0xbd, (byte) 0xc7, (byte) 0x6e, - (byte) 0xed, (byte) 0xaa, (byte) 0x30, (byte) 0x6c, (byte) 0x5f, - (byte) 0x52, (byte) 0xed, (byte) 0x35, (byte) 0x65, (byte) 0x4b, - (byte) 0x0e, (byte) 0xc8, (byte) 0xa7, (byte) 0x12, (byte) 0x10, - (byte) 0x56, (byte) 0x37, (byte) 0xaf, (byte) 0x11, (byte) 0xfa, - (byte) 0x21, (byte) 0x0e, (byte) 0x99, (byte) 0xff, (byte) 0xfa, - (byte) 0x8c, (byte) 0x65, (byte) 0x8e, (byte) 0x6d, (byte) 0x02, - (byte) 0x03, (byte) 0x01, (byte) 0x00, (byte) 0x01, (byte) 0x02, - (byte) 0x81, (byte) 0x80, (byte) 0x78, (byte) 0x41, (byte) 0x72, - (byte) 0x40, (byte) 0x90, (byte) 0x59, (byte) 0x96, (byte) 0x5d, - (byte) 0xf3, (byte) 0x84, (byte) 0x3d, (byte) 0x99, (byte) 0xd9, - (byte) 0x4e, (byte) 0x51, (byte) 0xc2, (byte) 0x52, (byte) 0x62, - (byte) 0x8d, (byte) 0xd2, (byte) 0x49, (byte) 0x0b, (byte) 0x73, - (byte) 0x1e, (byte) 0x6f, (byte) 0xb2, (byte) 0x31, (byte) 0x7c, - (byte) 0x66, (byte) 0x45, (byte) 0x1e, (byte) 0x7c, (byte) 0xdc, - (byte) 0x3a, (byte) 0xc2, (byte) 0x5f, (byte) 0x51, (byte) 0x9a, - (byte) 0x1e, (byte) 0xa4, (byte) 0x19, (byte) 0x8d, (byte) 0xf4, - (byte) 0xf9, (byte) 0x81, (byte) 0x7e, (byte) 0xbe, (byte) 0x17, - (byte) 0xf7, (byte) 0xc7, (byte) 0x3c, (byte) 0x00, (byte) 0xa1, - (byte) 0xf9, (byte) 0x60, (byte) 0x82, (byte) 0x34, (byte) 0x8f, - (byte) 0x9c, (byte) 0xfd, (byte) 0x0b, (byte) 0x63, (byte) 0x42, - (byte) 0x1b, (byte) 0x7f, (byte) 0x45, (byte) 0xf1, (byte) 0x31, - (byte) 0xc3, (byte) 0x63, (byte) 0x47, (byte) 0x5c, (byte) 0xc1, - (byte) 0xb2, (byte) 0x5f, (byte) 0x57, (byte) 0xee, (byte) 0x02, - (byte) 0x9f, (byte) 0x5e, (byte) 0x08, (byte) 0x48, (byte) 0xba, - (byte) 0x74, (byte) 0xba, (byte) 0x81, (byte) 0xb7, (byte) 0x30, - (byte) 0xac, (byte) 0x4c, (byte) 0x01, (byte) 0x35, (byte) 0xce, - (byte) 0x46, (byte) 0x47, (byte) 0x8c, (byte) 0xe4, (byte) 0x62, - (byte) 0x36, (byte) 0x1a, (byte) 0x65, (byte) 0x0e, (byte) 0x33, - (byte) 0x56, (byte) 0xf9, (byte) 0xb7, (byte) 0xa0, (byte) 0xc4, - (byte) 0xb6, (byte) 0x82, (byte) 0x55, (byte) 0x7d, (byte) 0x36, - (byte) 0x55, (byte) 0xc0, (byte) 0x52, (byte) 0x5e, (byte) 0x35, - (byte) 0x54, (byte) 0xbd, (byte) 0x97, (byte) 0x01, (byte) 0x00, - (byte) 0xbf, (byte) 0x10, (byte) 0xdc, (byte) 0x1b, (byte) 0x51, - (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xe7, (byte) 0x68, - (byte) 0x03, (byte) 0x3e, (byte) 0x21, (byte) 0x64, (byte) 0x68, - (byte) 0x24, (byte) 0x7b, (byte) 0xd0, (byte) 0x31, (byte) 0xa0, - (byte) 0xa2, (byte) 0xd9, (byte) 0x87, (byte) 0x6d, (byte) 0x79, - (byte) 0x81, (byte) 0x8f, (byte) 0x8f, (byte) 0x2d, (byte) 0x7a, - (byte) 0x95, (byte) 0x2e, (byte) 0x55, (byte) 0x9f, (byte) 0xd7, - (byte) 0x86, (byte) 0x29, (byte) 0x93, (byte) 0xbd, (byte) 0x04, - (byte) 0x7e, (byte) 0x4f, (byte) 0xdb, (byte) 0x56, (byte) 0xf1, - (byte) 0x75, (byte) 0xd0, (byte) 0x4b, (byte) 0x00, (byte) 0x3a, - (byte) 0xe0, (byte) 0x26, (byte) 0xf6, (byte) 0xab, (byte) 0x9e, - (byte) 0x0b, (byte) 0x2a, (byte) 0xf4, (byte) 0xa8, (byte) 0xd7, - (byte) 0xff, (byte) 0xbe, (byte) 0x01, (byte) 0xeb, (byte) 0x9b, - (byte) 0x81, (byte) 0xc7, (byte) 0x5f, (byte) 0x02, (byte) 0x73, - (byte) 0xe1, (byte) 0x2b, (byte) 0x02, (byte) 0x41, (byte) 0x00, - (byte) 0xc5, (byte) 0x3d, (byte) 0x78, (byte) 0xab, (byte) 0xe6, - (byte) 0xab, (byte) 0x3e, (byte) 0x29, (byte) 0xfd, // 88 - (byte) 0x98, (byte) 0xd0, (byte) 0xa4, (byte) 0x3e, (byte) 0x58, - (byte) 0xee, (byte) 0x48, (byte) 0x45, (byte) 0xa3, (byte) 0x66, - (byte) 0xac, (byte) 0xe9, (byte) 0x4d, (byte) 0xbd, (byte) 0x60, - (byte) 0xea, (byte) 0x24, (byte) 0xff, (byte) 0xed, (byte) 0x0c, - (byte) 0x67, (byte) 0xc5, (byte) 0xfd, (byte) 0x36, (byte) 0x28, - (byte) 0xea, (byte) 0x74, (byte) 0x88, (byte) 0xd1, (byte) 0xd1, - (byte) 0xad, (byte) 0x58, (byte) 0xd7, (byte) 0xf0, (byte) 0x67, - (byte) 0x20, (byte) 0xc1, (byte) 0xe3, (byte) 0xb3, (byte) 0xdb, - (byte) 0x52, (byte) 0xad, (byte) 0xf3, (byte) 0xc4, (byte) 0x21, - (byte) 0xd8, (byte) 0x8c, (byte) 0x4c, (byte) 0x41, (byte) 0x27, - (byte) 0xdb, (byte) 0xd0, (byte) 0x35, (byte) 0x92, (byte) 0xc7, - (byte) 0x02, (byte) 0x41, (byte) 0x00, (byte) 0xe0, (byte) 0x99, - (byte) 0x42, (byte) 0xb4, (byte) 0x76, (byte) 0x02, (byte) 0x97, - (byte) 0x55, (byte) 0xf9, (byte) 0xda, (byte) 0x3b, (byte) 0xa0, - (byte) 0xd7, (byte) 0x0e, (byte) 0xdc, (byte) 0xf4, (byte) 0x33, - (byte) 0x7f, (byte) 0xbd, (byte) 0xcf, (byte) 0xd0, (byte) 0xeb, - (byte) 0x6e, (byte) 0x89, (byte) 0xf7, (byte) 0x4f, (byte) 0x5a, - (byte) 0x07, (byte) 0x7c, (byte) 0xa9, (byte) 0x49, (byte) 0x47, - (byte) 0x68, (byte) 0x35, (byte) 0xa8, (byte) 0x05, (byte) 0x3d, - (byte) 0xfd, (byte) 0x04, (byte) 0x7b, (byte) 0x17, (byte) 0x31, - (byte) 0x0d, (byte) 0xc8, (byte) 0xa3, (byte) 0x98, (byte) 0x34, - (byte) 0xa0, (byte) 0x50, (byte) 0x44, (byte) 0x00, (byte) 0xf1, - (byte) 0x0c, (byte) 0xe6, (byte) 0xe5, (byte) 0xc4, (byte) 0x41, - (byte) 0x3d, (byte) 0xf8, (byte) 0x3d, (byte) 0x4e, (byte) 0x0b, // 118 - (byte) 0x1c, (byte) 0xdb, (byte) 0x02, (byte) 0x41, (byte) 0x00, - (byte) 0x82, (byte) 0x9b, (byte) 0x8a, (byte) 0xfd, (byte) 0xa1, - (byte) 0x98, (byte) 0x41, (byte) 0x68, (byte) 0xc2, (byte) 0xd1, - (byte) 0xdf, (byte) 0x4e, (byte) 0xf3, (byte) 0x2e, (byte) 0x26, - (byte) 0x53, (byte) 0x5b, (byte) 0x31, (byte) 0xb1, (byte) 0x7a, - (byte) 0xcc, (byte) 0x5e, (byte) 0xbb, (byte) 0x09, (byte) 0xa2, - (byte) 0xe2, (byte) 0x6f, (byte) 0x4a, (byte) 0x04, (byte) 0x0d, - (byte) 0xef, (byte) 0x90, (byte) 0x15, (byte) 0xbe, (byte) 0x10, - (byte) 0x4a, (byte) 0xac, (byte) 0x92, (byte) 0xeb, (byte) 0xda, - (byte) 0x72, (byte) 0xdb, (byte) 0x43, (byte) 0x08, (byte) 0xb7, - (byte) 0x2b, (byte) 0x4c, (byte) 0xe1, (byte) 0xbb, (byte) 0x58, - (byte) 0xcb, (byte) 0x71, (byte) 0x80, (byte) 0xad, (byte) 0xbc, - (byte) 0xdc, (byte) 0x62, (byte) 0x5e, (byte) 0x3e, (byte) 0xcb, - (byte) 0x92, (byte) 0xda, (byte) 0xf6, (byte) 0xdf, (byte) 0x02, - (byte) 0x40, (byte) 0x4d, (byte) 0x81, (byte) 0x90, (byte) 0xc5, - (byte) 0x77, (byte) 0x30, (byte) 0xb7, (byte) 0x29, (byte) 0x00, - (byte) 0xa8, (byte) 0xf1, (byte) 0xb4, (byte) 0xae, (byte) 0x52, - (byte) 0x63, (byte) 0x00, (byte) 0xb2, // 140 - (byte) 0x2d, (byte) 0x3e, (byte) 0x7d, (byte) 0xd6, (byte) 0x4d, - (byte) 0xf9, (byte) 0x8a, (byte) 0xc1, (byte) 0xb1, (byte) 0x98, - (byte) 0x89, (byte) 0x52, (byte) 0x40, (byte) 0x14, (byte) 0x1b, - (byte) 0x0e, (byte) 0x61, (byte) 0x8f, (byte) 0xf4, (byte) 0xbe, - (byte) 0x59, (byte) 0x79, (byte) 0x79, (byte) 0x95, (byte) 0x19, - (byte) 0x5c, (byte) 0x51, (byte) 0x08, (byte) 0x66, (byte) 0xc1, - (byte) 0x42, (byte) 0x30, (byte) 0xb3, (byte) 0x7a, (byte) 0x86, - (byte) 0x9f, (byte) 0x3e, (byte) 0xf5, (byte) 0x19, (byte) 0xa3, // 150 - (byte) 0xae, (byte) 0x64, (byte) 0x69, (byte) 0x14, (byte) 0x07, - (byte) 0x50, (byte) 0x97, }; -} |