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.security.tests.java.security.spec; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.EncodedKeySpec; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.X509EncodedKeySpec; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Arrays; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for <code>X509EncodedKeySpec</code> class fields and methods 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class X509EncodedKeySpecTest extends TestCase { 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Constructor for X509EncodedKeySpecTest. 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * @param name 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public X509EncodedKeySpecTest(String name) { 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes super(name); 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Test cases 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // 47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>X509EncodedKeySpec</code> constructor<br> 50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: constructs new <code>X509EncodedKeySpec</code> 51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * object using valid parameter 52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testX509EncodedKeySpec() { 54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKey = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4}; 55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes EncodedKeySpec eks = new X509EncodedKeySpec(encodedKey); 57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(eks instanceof X509EncodedKeySpec); 59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getEncoded()</code> method<br> 63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns encoded key 64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetEncoded() { 66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKey = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4}; 67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509EncodedKeySpec eks = new X509EncodedKeySpec(encodedKey); 69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ek = eks.getEncoded(); 71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(encodedKey, ek)); 73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Test for <code>getFormat()</code> method 77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Assertion: returns format name (always "X.509") 78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testGetFormat() { 80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKey = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4}; 81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509EncodedKeySpec meks = new X509EncodedKeySpec(encodedKey); 83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertEquals("X.509", meks.getFormat()); 85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests that internal state of the object 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * can not be changed by modifying initial 90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * array value 91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testIsStatePreserved1() { 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Reference array 94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKey = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4}; 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Reference array's copy will be used for test 96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKeyCopy = encodedKey.clone(); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509EncodedKeySpec meks = new X509EncodedKeySpec(encodedKeyCopy); 99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Modify initial array's value 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes encodedKeyCopy[3] = (byte)5; 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Get encoded key 104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ek = meks.getEncoded(); 105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check using reference array that 107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // byte value has not been changed 108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(encodedKey, ek)); 109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes /** 112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests that internal state of the object 113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * can not be modified using returned value 114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * of <code>getEncoded()</code> method 115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public final void testIsStatePreserved2() { 117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Reference array 118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKey = new byte[] {(byte)1,(byte)2,(byte)3,(byte)4}; 119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Reference array's copy will be used for test 120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] encodedKeyCopy = encodedKey.clone(); 121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes X509EncodedKeySpec meks = new X509EncodedKeySpec(encodedKeyCopy); 123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ek = meks.getEncoded(); 125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Modify returned array 127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes ek[3] = (byte)5; 128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Get encoded key again 130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes byte[] ek1 = meks.getEncoded(); 131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // Check using reference array that 133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes // byte value has not been changed 134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes assertTrue(Arrays.equals(encodedKey, ek1)); 135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 138