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