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 Aleksei Y. Semenov
208d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath */
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.security.tests.java.security;
238d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.security.*;
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.PrivateKeyStub;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.PublicKeyStub;
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport org.apache.harmony.security.tests.support.SignerStub;
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport junit.framework.TestCase;
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/**
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes * tests for class Signer
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class SignerTest extends TestCase {
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * Constructor for SignerTest.
408d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath     *
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @param arg0
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public SignerTest(String arg0) {
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        super(arg0);
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * @tests java.security.Signer#toString()
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_toString() throws Exception {
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s1 = new SignerStub("testToString1");
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("[Signer]testToString1", s1.toString());
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s2 = new SignerStub("testToString2", IdentityScope.getSystemScope());
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s2.toString();
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyPair kp = new KeyPair(new PublicKeyStub("public", "SignerTest.testToString", null), new PrivateKeyStub("private", "SignerTest.testToString", null));
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s1.setKeyPair(kp);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s1.toString();
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s2.setKeyPair(kp);
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        s2.toString();
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * verify Signer() creates instance
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSigner() {
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s = new SignerStub();
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(s);
71e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        //assertNull(s.getName(), s.getName());
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(s.getPrivateKey());
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * verify Signer(String) creates instance
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSignerString() throws Exception {
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s = new SignerStub("sss3");
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(s);
81e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        assertEquals("sss3", s.getName());
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(s.getPrivateKey());
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * verify  Signer(String, IdentityScope) creates instance
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testSignerStringIdentityScope() throws Exception {
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s = new SignerStub("sss4", IdentityScope.getSystemScope());
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNotNull(s);
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertEquals("sss4", s.getName());
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(IdentityScope.getSystemScope(), s.getScope());
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(s.getPrivateKey());
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     * verify Signer.getPrivateKey() returns null or private key
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void testGetPrivateKey() throws Exception {
1008d8858e39800de641b50f6e8e864af9cf68bedeaNarayan Kamath        byte[] privateKeyData = { 1, 2, 3, 4, 5 };
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PrivateKeyStub privateKey = new PrivateKeyStub("private", "fff", privateKeyData);
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        PublicKeyStub publicKey = new PublicKeyStub("public", "fff", null);
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        KeyPair kp = new KeyPair(publicKey, privateKey);
104e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        Signer s = new SignerStub("sss5");
106e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertNull(s.getPrivateKey());
108e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
109e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes        s.setKeyPair(kp);
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        assertSame(privateKey, s.getPrivateKey());
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
112e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    /**
114e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes     * @tests java.security.Signer#setKeyPair(java.security.KeyPair)
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes     */
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    public void test_setKeyPairLjava_security_KeyPair() throws Exception {
117e98fbf8686c5289bf03fe5c3de7ff82d3a77104dElliott Hughes
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // Regression for HARMONY-2408
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        // test: NullPointerException if pair is null
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        try {
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            new SignerStub("name").setKeyPair(null);
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes            fail("No expected NullPointerException");
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        } catch (NullPointerException e) {
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes        }
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes    }
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
128