1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.crypto.tests.javax.crypto; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 243819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilsonimport dalvik.annotation.SideEffect; 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.AlgorithmParameters; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidKeyException; 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Key; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchAlgorithmException; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchProviderException; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Provider; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.SecureRandom; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.RSAKeyGenParameterSpec; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Vector; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.ExemptionMechanism; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.ExemptionMechanismException; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.ExemptionMechanismSpi; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.KeyGenerator; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.ShortBufferException; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.crypto.tests.support.MyExemptionMechanismSpi; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.crypto.tests.support.MyExemptionMechanismSpi.tmpKey; 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(ExemptionMechanism.class) 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>ExemptionMechanism</code> class constructors and methods 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class ExemptionMechanismTest extends TestCase { 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String srvExemptionMechanism = "ExemptionMechanism"; 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String defaultAlg = "EMech"; 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String ExemptionMechanismProviderClass = "org.apache.harmony.crypto.tests.support.MyExemptionMechanismSpi"; 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>ExemptionMechanism</code> constructor 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: creates new object using provider and mechanism name 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "ExemptionMechanism", 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {javax.crypto.ExemptionMechanismSpi.class, java.security.Provider.class, java.lang.String.class} 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testExemptionMechanism() throws Exception { 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismSpi spi = new MyExemptionMechanismSpi(); 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism(spi, mProv, defaultAlg) {}; 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect provider", em.getProvider(), mProv); 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", em.getName(), defaultAlg); 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(null); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException must be thrown"); 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) {} 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getOutputSize(100); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) {} 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em = new ExemptionMechanism(null, null, null) {}; 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Incorrect mechanism", em.getName()); 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Incorrect provider", em.getProvider()); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(null); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException must be thrown"); 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) {} 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getOutputSize(100); 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) {} 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @tests javax/crypto/ExemptionMechanism#getInstance(String algorithm, String provider) 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Checks exception order 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetInstance() throws Exception { 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //Regression for HARMONY-762 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism.getInstance((String) null, "aaa"); 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchProviderException must be thrown"); 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchProviderException pe) { 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism.getInstance("AlgName", (String)null); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>isCryptoAllowed(Key key)</code> method 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "isCryptoAllowed", 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class} 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testIsCryptoAllowed() throws Exception { 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //Regression for HARMONY-1029 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(em.isCryptoAllowed(key)); 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(em.isCryptoAllowed(key)); 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(); 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(em.isCryptoAllowed(key)); 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key1 = new MyExemptionMechanismSpi().new tmpKey("Proba", 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new byte[] { 1 }); 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(em.isCryptoAllowed(key1)); 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key1); 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(em.isCryptoAllowed(key)); 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>genExemptionBlob((byte[] output, int outputOffset)</code> method 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL, 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Regression test", 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "genExemptionBlob", 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGenExemptionBlob() throws Exception { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //Regression for HARMONY-1029 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // ExemptionMechanism doesn't check parameters 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project // it is a responsibility of ExemptionMechanismSpi 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(null, 0); 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[0], 0); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[10], -5); 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static boolean flag = false; 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class Mock_ExemptionMechanism extends ExemptionMechanism { 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected Mock_ExemptionMechanism(ExemptionMechanismSpi exmechSpi, Provider provider, String mechanism) { 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(exmechSpi, provider, mechanism); 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void finalize() { 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project flag = true; 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.finalize(); 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "finalize", 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 2253819a76e7c1f49253f0e077bd497f149340c02b8Jesse Wilson @SideEffect("Causes OutOfMemoryError to test finalization") 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_finalize () { 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mock_ExemptionMechanism mem = new Mock_ExemptionMechanism(null, null, "Name"); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(mem); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mem = null; 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(flag); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Vector v = new Vector(); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int capacity; 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project while(true) { 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v.add(this); 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (OutOfMemoryError e) { 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project capacity = v.size(); 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v = null; 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v = new Vector(); 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < capacity/2; i++) { 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v.add(this); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project v = null; 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue(flag); 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class Mock_ExemptionMechanismSpi extends MyExemptionMechanismSpi { 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineGenExemptionBlob() 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws ExemptionMechanismException { 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new ExemptionMechanismException(); 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int engineGenExemptionBlob(byte[] output, int outputOffset) 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws ShortBufferException, ExemptionMechanismException { 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (output.length - outputOffset < 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineGenExemptionBlob(output, outputOffset)) { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new ShortBufferException(); 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (output[outputOffset + 3] == 33) { 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throw new ExemptionMechanismException(); 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineGenExemptionBlob(output, outputOffset); 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "genExemptionBlob", 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineGenExemptionBlob", 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_genExemptionBlob() throws InvalidKeyException, 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismException { 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(); 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(em.genExemptionBlob()); 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em = new ExemptionMechanism( 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Mock_ExemptionMechanismSpi(), mProv, defaultAlg) { 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project key = new Mock_ExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(); 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "genExemptionBlob", 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_genExemptionBlob$B() throws InvalidKeyException, 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismException, ShortBufferException { 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Mock_ExemptionMechanismSpi(), mProv, defaultAlg) { 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new Mock_ExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[10]); 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, (em.genExemptionBlob(new byte[10]))); 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[2]); 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException expected"); 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b = new byte[] {0,0,0,33,0}; 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(b); 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "genExemptionBlob", 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineGenExemptionBlob", 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_genExemptionBlob$BI() throws InvalidKeyException, 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismException, ShortBufferException { 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Mock_ExemptionMechanismSpi(), mProv, defaultAlg) { 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new Mock_ExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[10], 2); 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(5, (em.genExemptionBlob(new byte[10], 5))); 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(new byte[7], 3); 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException expected"); 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b = new byte[] {0, 0, 0, 1, 2, 3, 33, 0}; 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.genExemptionBlob(b, 3); 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Tests Exceptions", 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getInstanceLjava_lang_String() throws Exception { 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism.getInstance((String) null); 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException expected"); 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Mock_ExemptionMechanismSpi(), mProv, defaultAlg) { 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getInstance("WrongAlgName"); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchAlgorithmException expected"); 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Tests Exceptions", 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.security.Provider.class} 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getInstanceLjava_lang_StringLjava_security_Provider() 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism.getInstance((String) null, mProv); 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException expected"); 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new Mock_ExemptionMechanismSpi(), mProv, defaultAlg) { 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getInstance("WrongAlgName", mProv); 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchAlgorithmException expected"); 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getInstance("WrongAlgName", (Provider)null); 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException expected"); 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getName", 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getName() throws Exception { 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(defaultAlg, em.getName()); 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getOutputSize", 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineGetOutputSize", 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {int.class} 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getOutputSizeI() throws Exception { 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.getOutputSize(10); 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException expected"); 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //failed 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(10, em.getOutputSize(10)); 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getProvider", 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getProvider() throws Exception { 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mProv, em.getProvider()); 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "init", 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class} 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineInit", 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class} 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_initLjava_security_Key() throws Exception { 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project KeyGenerator kg = KeyGenerator.getInstance("DES"); 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project kg.init(56, new SecureRandom()); 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project key = kg.generateKey(); 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(null); 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException expected"); 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "init", 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.AlgorithmParameters.class} 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineInit", 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.AlgorithmParameters.class} 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_initLjava_security_KeyLjava_security_AlgorithmParameters() 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception { 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, AlgorithmParameters.getInstance("DES")); 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, (AlgorithmParameters)null); 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidAlgorithmParameterException expected"); 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project KeyGenerator kg = KeyGenerator.getInstance("DES"); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project kg.init(56, new SecureRandom()); 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project key = kg.generateKey(); 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(null, AlgorithmParameters.getInstance("DES")); 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException expected"); 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, AlgorithmParameters.getInstance("DES")); 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "init", 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.spec.AlgorithmParameterSpec.class} 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = ExemptionMechanismSpi.class, 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineInit", 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.spec.AlgorithmParameterSpec.class} 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_initLjava_security_KeyLjava_security_spec_AlgorithmParameterSpec() 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws Exception{ 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider mProv = (new SpiEngUtils()).new MyProvider("MyExMechProvider", 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project "Provider for ExemptionMechanism testing", 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvExemptionMechanism.concat(".").concat(defaultAlg), 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanismProviderClass); 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ExemptionMechanism em = new ExemptionMechanism( 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project new MyExemptionMechanismSpi(), mProv, defaultAlg) { 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }; 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Key key = new MyExemptionMechanismSpi().new tmpKey("Proba", new byte[0]); 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, new RSAKeyGenParameterSpec(10, new BigInteger("10"))); 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, (AlgorithmParameterSpec)null); 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidAlgorithmParameterException expected"); 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project KeyGenerator kg = KeyGenerator.getInstance("DES"); 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project kg.init(56, new SecureRandom()); 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project key = kg.generateKey(); 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(null, new RSAKeyGenParameterSpec(10, new BigInteger("10"))); 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException expected"); 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project em.init(key, new RSAKeyGenParameterSpec(10, new BigInteger("10"))); 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ExemptionMechanismException expected"); 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ExemptionMechanismException e) { 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 737