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/** 198d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath * @author Boris V. Kuznetsov 208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */ 21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security.serialization; 23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.IOException; 25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.io.Serializable; 26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.InvalidKeyException; 27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.NoSuchAlgorithmException; 28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.Signature; 29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SignatureException; 30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.SignedObject; 31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.spec.InvalidKeySpecException; 32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Properties; 33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.testframework.serialization.SerializationTest; 35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.TestKeyPair; 36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/** 39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * Tests for SignedObject serialization 40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */ 41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SignedObjectTest extends SerializationTest implements 42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes SerializationTest.SerializableAssert { 43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 448d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private Signature sig; 458d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath private TestKeyPair tkp = null; 46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes private Properties prop; 47e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes protected Object[] getData() { 498d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 508d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath sig = Signature.getInstance("SHA1withDSA"); 518d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NoSuchAlgorithmException e) { 528d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 538d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 548d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 558d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath tkp = new TestKeyPair("DSA"); 568d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (NoSuchAlgorithmException e1) { 578d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e1.toString()); 588d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 598d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath prop = new Properties(); 608d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath prop.put("aaa", "bbb"); 618d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath Object o = null; 628d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath try { 638d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath o = new SignedObject(prop, tkp.getPrivate(), sig); 648d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (IOException e) { 658d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 668d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (SignatureException e) { 678d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 688d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (InvalidKeyException e) { 698d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 708d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } catch (InvalidKeySpecException e) { 718d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 728d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 738d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath return new Object[] { o }; 74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes public void assertDeserialized(Serializable oref, Serializable otest) { 778d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath SignedObject ref = (SignedObject) oref; 788d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath SignedObject test = (SignedObject) otest; 79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 808d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath assertEquals(test.getAlgorithm(), ref.getAlgorithm()); 81e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes 82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 83e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes assertEquals(test.getObject(), prop); 84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (ClassNotFoundException e) { 858d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (IOException e) { 878d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes try { 908d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath if (!test.verify(tkp.getPublic(), sig)) { 918d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail("verify() failed"); 92e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes } 93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (SignatureException e) { 948d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeyException e) { 968d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } catch (InvalidKeySpecException e) { 988d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath fail(e.toString()); 998d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath } 100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes } 101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes 102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes} 103