1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @author Boris V. Kuznetsov
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project* @version $Revision$
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project*/
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage org.apache.harmony.security.tests.java.security;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25d5a055e559219904a95f6a32114e22d5fb943bd5Jorg Pleumannimport dalvik.annotation.KnownFailure;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidParameterException;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.NoSuchAlgorithmException;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Provider;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Security;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Signature;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidAlgorithmParameterException;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.InvalidKeyException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Key;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PrivateKey;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.PublicKey;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SecureRandom;
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.SignatureException;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.cert.Certificate;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec;
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport org.apache.harmony.security.tests.support.MySignature1;
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport junit.framework.TestCase;
45229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/**
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tests for <code>Signature</code> constructor and methods
48f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes *
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class SignatureTest extends TestCase {
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for Signature(String)
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testConstructor() {
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String [] algorithms = { "SHA256WITHRSA", "NONEWITHDSA", "SHA384WITHRSA",
5787eb4de6347e1be029cde77dd43ad9b1af901472Urs Grob            "MD5ANDSHA1WITHRSA", "SHA512WITHRSA",
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            "SHA1WITHRSA", "SHA1WITHDSA", "MD5WITHRSA" };
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < algorithms.length; i ++) {
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            MySignature1 s = new MySignature1(algorithms[i]);
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(algorithms[i],s.getAlgorithm());
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertNull(s.getProvider());
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(0, s.getState());
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
65f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s1 = new MySignature1(null);
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(s1.getAlgorithm());
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(s1.getProvider());
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, s1.getState());
70f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s2 = new MySignature1("ABCD@#&^%$)(*&");
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("ABCD@#&^%$)(*&", s2.getAlgorithm());
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull(s2.getProvider());
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, s2.getState());
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for Object clone()
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testClone() {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.clone();
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected CloneNotSupportedException");
85f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (CloneNotSupportedException e) {
86f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
87f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature sc = new MySignature();
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sc.clone();
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (CloneNotSupportedException e) {
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected exception: " + e);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
94f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetProvider() {
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
99f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.UNINITIALIZED, s.getState());
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNull("provider", s.getProvider());
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetAlgorithm() {
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.UNINITIALIZED, s.getState());
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("algorithm", "ABC", s.getAlgorithm());
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void initVerify(PublicKey)
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testInitVerifyPublicKey() throws InvalidKeyException {
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.VERIFY, s.getState());
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("initVerify() failed", s.runEngineInitVerify);
120f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.initVerify((PublicKey)null);
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidKeyException e) {
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected : " + e);
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void initVerify(Certificate)
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testInitVerifyCertificate() throws InvalidKeyException {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyCertificate());
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.VERIFY, s.getState());
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("initVerify() failed", s.runEngineInitVerify);
140f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.initVerify(new MyCertificate());
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected InvalidKeyException");
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidKeyException e) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected : " + e);
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void initSign(PrivateKey)
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testInitSignPrivateKey() throws InvalidKeyException {
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("initSign() failed", s.runEngineInitSign);
161f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature signature = getTestSignature();
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            signature.initSign(null);
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected InvalidKeyException");
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidKeyException e) {
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected: " + e);
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
172f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private Signature getTestSignature() throws NoSuchAlgorithmException {
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Provider provider = new MyProvider("TestProvider", 1.0, "Test Provider", "Signature.ABC", MySignature.class.getName());
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Security.insertProviderAt(provider, 1);
176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return Signature.getInstance("ABC");
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        finally {
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project           Security.removeProvider("TestProvider");
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
183f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void initSign(PrivateKey, SecureRandom)
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testInitSignPrivateKeySecureRandom() throws InvalidKeyException {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey(), new SecureRandom());
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("initSign() failed", s.runEngineInitSign);
195f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.initSign(null, null);
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected InvalidKeyException");
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidKeyException e) {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected : " + e);
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for byte[] sign()
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSign() throws Exception {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign();
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
215f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
219f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign();
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
223f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
225f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.sign();
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("sign() failed", s.runEngineSign);
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for sign(byte[], offset, len)
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSignbyteintint() throws Exception {
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] outbuf = new byte [10];
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign(outbuf, 0, outbuf.length);
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
241f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
245f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign(outbuf, 0, outbuf.length);
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
249f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
251f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(s.getBufferLength(), s.sign(outbuf, 0, outbuf.length));
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("sign() failed", s.runEngineSign);
256f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.initSign(new MyPrivateKey());
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign(outbuf, outbuf.length, 0);
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected SignatureException");
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SignatureException e) {
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.initSign(new MyPrivateKey());
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.sign(outbuf, outbuf.length, 3);
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected IllegalArgumentException");
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
275f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for boolean verify(byte[])
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testVerifybyteArray() throws Exception {
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] b = {1, 2, 3, 4};
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.verify(b);
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
285f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.verify(b);
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
292f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
294f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.verify(b);
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.VERIFY, s.getState());
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("verify() failed", s.runEngineVerify);
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for boolean verify(byte[], int, int)
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testVerifybyteArrayintint() throws Exception {
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] b = {1, 2, 3, 4};
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.verify(b, 0, 3);
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
310f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.verify(b, 0, 3);
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
318f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
320f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
322f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.verify(b, 0, 5);
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected IllegalArgumentException");
326f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (IllegalArgumentException e) {
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
328f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.verify(b, 0, 3);
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.VERIFY, s.getState());
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("verify() failed", s.runEngineVerify);
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void update(byte)
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testUpdatebyte() throws Exception {
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update((byte)1);
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
342f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update((byte) 1);
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update((byte) 1);
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("update() failed", s.runEngineUpdate1);
352f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.update((byte) 42);
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected SignatureException");
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SignatureException e) {
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void update(byte[])
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testUpdatebyteArray() throws Exception {
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] b = {1, 2, 3, 4};
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update(b);
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
371f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update(b);
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update(b);
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("update() failed", s.runEngineUpdate2);
381f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.update(b);
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected SignatureException");
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SignatureException e) {
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
389f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.update((byte[])null);
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected NullPointerException");
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (SignatureException e) {
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void update(byte[], int, int)
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testUpdatebyteArrayintint() throws Exception {
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] b = {1, 2, 3, 4};
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update(b, 0, 3);
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected SignatureException");
410f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (SignatureException e) {
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initVerify(new MyPublicKey());
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update(b, 0, 3);
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.initSign(new MyPrivateKey());
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.update(b, 0, 3);
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("state", MySignature1.SIGN, s.getState());
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue("update() failed", s.runEngineUpdate2);
420f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update(b, 3, 0);
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected IllegalArgumentException");
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update(b, 0, b.length + 1);
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected IllegalArgumentException");
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
434f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.update(b, -1, b.length);
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected IllegalArgumentException");
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
441f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
443f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
44450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob    /*
44550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob     * Class under test for void update(byte[], int, int)
44650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob     */
44750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob    @KnownFailure("Android throws IllegalArgumentException, RI throws NullpointerException")
44850b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob    public void testUpdatebyteArrayintint2() throws Exception {
44950b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        MySignature1 s = new MySignature1("ABC");
45050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        byte[] b = {1, 2, 3, 4};
45150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob
45250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        s.initVerify(new MyPublicKey());
45350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        s.update(b, 0, 3);
45450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        s.initSign(new MyPrivateKey());
45550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        s.update(b, 0, 3);
45650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob
45750b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        assertEquals("state", MySignature1.SIGN, s.getState());
45850b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        assertTrue("update() failed", s.runEngineUpdate2);
459f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
46050b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        try {
46150b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            s.update(null, 0, 3);
46250b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            fail("NullPointerException wasn't thrown");
46350b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        } catch (NullPointerException npe) {
46450b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob            // ok
46550b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob        }
46650b97349a2607e5b350ccadccc364972f3aaeeddUrs Grob    }
467f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void setParameter(String, Object)
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("deprecation")
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetParameterStringObject() {
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.setParameter("aaa", new Object());
476f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.setParameter("TestParam", new Integer(42));
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("expected InvalidParameterException");
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidParameterException e) {
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // expected
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected: " + e);
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /*
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * Class under test for void setParameter(AlgorithmParameterSpec)
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSetParameterAlgorithmParameterSpec() throws InvalidAlgorithmParameterException {
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            s.setParameter((java.security.spec.AlgorithmParameterSpec)null);
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("No expected UnsupportedOperationException");
496f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        } catch (UnsupportedOperationException e){
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
498f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
499adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            Signature sig = getTestSignature();
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sig.setParameter(new AlgorithmParameterSpec() {});
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidAlgorithmParameterException e) {
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected: " + e);
504adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NoSuchAlgorithmException e) {
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("unexpected: " + e);
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
508f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("deprecation")
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetParameter() {
511adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MySignature1 s = new MySignature1("ABC");
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s.getParameter("aaa");
513f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            MySignature se = new MySignature();
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            se.getParameter("test");
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (InvalidParameterException e) {
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            // ok
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
520f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
522f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyKey implements Key {
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getFormat() {
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return "123";
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() {
528adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String getAlgorithm() {
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return "aaa";
532f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes        }
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
534f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyPublicKey extends MyKey implements PublicKey {}
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyPrivateKey extends MyKey implements PrivateKey {}
538f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
539f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes    private class MyCertificate extends java.security.cert.Certificate {
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public  MyCertificate() {
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super("MyCertificateType");
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
543f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public PublicKey getPublicKey() {
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return new MyPublicKey();
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
547f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public byte[] getEncoded() {
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key) {}
552f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void verify(PublicKey key, String sigProvider) {}
554f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public String toString() {
556adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return "MyCertificate";
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
559f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @SuppressWarnings("unused")
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected static class MySignature extends Signature implements Cloneable {
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
563adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public MySignature() {
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super("TestSignature");
565adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected Object engineGetParameter(String param)
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws InvalidParameterException {
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new InvalidParameterException();
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineInitSign(PrivateKey privateKey)
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws InvalidKeyException {
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new InvalidKeyException();
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineInitVerify(PublicKey publicKey)
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws InvalidKeyException {
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new InvalidKeyException();
583adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineSetParameter(String param, Object value)
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws InvalidParameterException {
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new InvalidParameterException();
589adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected byte[] engineSign() throws SignatureException {
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
595adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineUpdate(byte b) throws SignatureException {
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            throw new SignatureException();
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
601adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineUpdate(byte[] b, int off, int len)
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws SignatureException {
604f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
608adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected boolean engineVerify(byte[] sigBytes)
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws SignatureException {
610adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return false;
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
612f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void engineSetParameter(AlgorithmParameterSpec params)
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throws InvalidAlgorithmParameterException {
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            if (params == null) {
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                throw new InvalidAlgorithmParameterException();
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
621f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    private class MyProvider extends Provider {
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected MyProvider(String name, double version, String info, String signame, String className) {
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(name, version, info);
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            put(signame, className);
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
628f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
631