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 Project/** 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project* @author Vera Y. Petrashkova 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project* @version $Revision$ 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project*/ 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.apache.harmony.crypto.tests.javax.crypto; 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetClass; 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargets; 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestLevel; 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport dalvik.annotation.TestTargetNew; 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.math.BigInteger; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.nio.ByteBuffer; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidKeyException; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchAlgorithmException; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.NoSuchProviderException; 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Provider; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.DSAParameterSpec; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.PSSParameterSpec; 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.Mac; 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.MacSpi; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.ShortBufferException; 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.DHGenParameterSpec; 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.SecretKeySpec; 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.crypto.tests.support.MyMacSpi; 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.security.tests.support.SpiEngUtils; 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.Test; 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestSuite; 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(Mac.class) 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for Mac class constructors and methods 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class MacTest extends TestCase { 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static final String srvMac = "Mac"; 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String defaultAlgorithm = null; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String defaultProviderName = null; 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static Provider defaultProvider = null; 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static boolean DEFSupported = false; 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String NotSupportedMsg = "There is no suitable provider for Mac"; 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static final String[] invalidValues = SpiEngUtils.invalidValues; 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private static String[] validValues = new String[3]; 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static final String validAlgorithmsMac [] = 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project {"HmacSHA1", "HmacMD5", "HmacSHA256", "HmacSHA384", "HmacSHA512"}; 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project static { 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validAlgorithmsMac.length; i++) { 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project defaultProvider = SpiEngUtils.isSupport(validAlgorithmsMac[i], 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project srvMac); 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DEFSupported = (defaultProvider != null); 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (DEFSupported) { 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project defaultAlgorithm = validAlgorithmsMac[i]; 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project defaultProviderName = defaultProvider.getName(); 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project validValues[0] = defaultAlgorithm; 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project validValues[1] = defaultAlgorithm.toUpperCase(); 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project validValues[2] = defaultAlgorithm.toLowerCase(); 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project break; 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project private Mac [] createMacs() { 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac m [] = new Mac[3]; 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m[0] = Mac.getInstance(defaultAlgorithm); 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m[1] = Mac.getInstance(defaultAlgorithm, defaultProvider); 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project m[2] = Mac.getInstance(defaultAlgorithm, defaultProviderName); 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return m; 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return null; 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NullPointerException when algorithm is null 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not available 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac01() { 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(null); 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown when algorithm is null"); 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(invalidValues[i]); 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchAlgorithmException must be thrown when algorithm is not available: " 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(invalidValues[i])); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm)</code> method 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns Mac object 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class} 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac02() throws NoSuchAlgorithmException { 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac; 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = Mac.getInstance(validValues[i]); 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", mac.getAlgorithm(), validValues[i]); 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws IllegalArgumentException when provider is null or empty 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NoSuchProviderException when provider is not available 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac03() throws NoSuchAlgorithmException, NoSuchProviderException { 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String provider = null; 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(validValues[i], provider); 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null"); 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(validValues[i], ""); 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown when provider is empty"); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 1; j < invalidValues.length; j++) { 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(validValues[i], invalidValues[j]); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchProviderException must be thrown (algorithm: " 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(validValues[i]).concat(" provider: ") 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(invalidValues[j]).concat(")")); 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchProviderException e) { 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NullPointerException when algorithm is null 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not available 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac04() throws NoSuchAlgorithmException, 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, NoSuchProviderException { 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(null, defaultProviderName); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown when algorithm is null"); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(invalidValues[i], defaultProviderName); 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchAlgorithmException must be throws when algorithm is not available: " 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(invalidValues[i])); 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch( NoSuchAlgorithmException e) { 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, String provider)</code> method 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns Mac object 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.lang.String.class} 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac05() throws NoSuchAlgorithmException, NoSuchProviderException, 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException { 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac; 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = Mac.getInstance(validValues[i], defaultProviderName); 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", mac.getAlgorithm(), validValues[i]); 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect provider", mac.getProvider().getName(), 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project defaultProviderName); 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> method 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws IllegalArgumentException when provider is null 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.security.Provider.class} 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac06() throws NoSuchAlgorithmException, NoSuchProviderException { 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Provider provider = null; 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 282f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(validValues[i], provider); 283f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown when provider is null"); 284f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 285f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 286f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 287f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 288f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 289f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> method 290f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: 291f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NullPointerException when algorithm is null 292f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws NoSuchAlgorithmException when algorithm is not available 293f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 294f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 295f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 296f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 297f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 298f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.security.Provider.class} 299f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 300f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac07() throws NoSuchAlgorithmException, 301f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, IllegalArgumentException { 302f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 303f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 304f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 305f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 306f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 307f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(null, defaultProvider); 308f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException or NoSuchAlgorithmException should be thrown when algorithm is null"); 309f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 310f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 311f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 312f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < invalidValues.length; i++) { 313f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 314f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac.getInstance(invalidValues[i], defaultProvider); 315f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NoSuchAlgorithmException must be thrown when algorithm is not available: " 316f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(invalidValues[i])); 317f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NoSuchAlgorithmException e) { 318f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 319f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 320f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 321f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 322f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 323f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getInstance(String algorithm, Provider provider)</code> method 324f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns Mac object 325f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 326f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 327f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 328f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "This is a complete subset of tests for getInstance method.", 329f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getInstance", 330f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.lang.String.class, java.security.Provider.class} 331f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 332f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac08() throws NoSuchAlgorithmException, NoSuchProviderException, 333f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException { 334f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 335f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 336f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 337f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 338f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac; 339f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 340f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = Mac.getInstance(validValues[i], defaultProvider); 341f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", mac.getAlgorithm(), validValues[i]); 342f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect provider", mac.getProvider(), defaultProvider); 343f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 344f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 345f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 346f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>update</code> and <code>doFinal</code> methods 347f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws IllegalStateException when Mac is not initialized 348f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws Exception 349f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 350f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 351f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 352f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 353f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 354f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 355f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 356f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 357f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 358f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 359f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 360f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 361f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineDoFinal", 362f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 363f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 364f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 365f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 366f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 367f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 368f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 369f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 370f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 371f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 372f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 373f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 374f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 375f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 376f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 377f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 378f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 379f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 380f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte.class} 381f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 382f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 383f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 384f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 385f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 386f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 387f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte.class} 388f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 389f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 390f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 391f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 392f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 393f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 394f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 395f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 396f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 397f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 398f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 399f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 400f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 401f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 402f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 403f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 404f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 405f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 406f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 407f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 408f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 409f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 410f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 411f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 412f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 413f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 414f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 415f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac09() throws Exception { 416f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 417f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 418f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 419f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 420f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 421f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 422f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] buf = new byte[10]; 423f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer bBuf = ByteBuffer.wrap(buf, 0, 10); 424f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 425f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(bb, "SHA1"); 426f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 427f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 428f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update((byte)0); 429f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 430f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 431f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 432f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 433f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(buf); 434f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 435f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 436f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 437f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 438f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(buf, 0, 3); 439f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 440f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 441f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 442f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 443f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(bBuf); 444f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 445f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 446f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 447f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 448f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(); 449f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 450f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 451f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 452f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 453f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(new byte[10]); 454f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 455f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 456f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 457f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 458f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(new byte[10], 0); 459f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalStateException must be thrown"); 460f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalStateException e) { 461f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 462f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 463f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 464f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 465f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(new byte[1], 0); 466f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException expected"); 467f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 468f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project //expected 469f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 470f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 471f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 472f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 473f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>doFinal(byte[] output, int outOffset)</code> method 474f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: 475f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * throws ShotBufferException when outOffset is negative or 476f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * outOffset >= output.length or when given buffer is small 477f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 478f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 479f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 480f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks ShortBufferException", 481f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 482f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 483f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 484f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac10() throws NoSuchAlgorithmException, 485f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, IllegalArgumentException, 486f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalStateException, InvalidKeyException { 487f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 488f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 489f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 490f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 491f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac[] macs = createMacs(); 492f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 493f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] b = { (byte) 0, (byte) 0, (byte) 0, (byte) 0, (byte) 0 }; 494f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] byteA = new byte[b.length]; 495f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(b, "SHA1"); 496f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 497f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 498f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 499f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(null, 10); 500f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException must be thrown"); 501f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 502f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 503f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 504f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(byteA, -4); 505f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException must be thrown"); 506f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 507f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 508f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 509f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(byteA, 10); 510f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException must be thrown"); 511f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 512f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 513f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 514f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(new byte[1], 0); 515f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException must be thrown"); 516f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 517f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 518f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] res = macs[i].doFinal(); 519f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 520f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(new byte[res.length - 1], 0); 521f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("ShortBufferException must be thrown"); 522f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (ShortBufferException e) { 523f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 524f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 525f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 526f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 527f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 528f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>doFinal(byte[] output, int outOffset)</code> and 529f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>doFinal()</code> methods Assertion: Mac result is stored in 530f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * output buffer 531f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 532f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 533f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 534f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 535f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 536f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 537f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 538f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 539f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 540f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 541f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 542f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 543f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineDoFinal", 544f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 545f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 546f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 547f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 548f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 549f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 550f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class} 551f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 552f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 553f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac11() throws NoSuchAlgorithmException, NoSuchProviderException, 554f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, IllegalStateException, 555f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException, ShortBufferException { 556f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 557f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 558f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 559f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 560f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 561f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 562f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] b = {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0}; 563f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec scs = new SecretKeySpec(b, "SHA1"); 564f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 565f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 566f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res1 = macs[i].doFinal(); 567f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res2 = new byte[res1.length + 10]; 568f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].doFinal(res2, 0); 569f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int j = 0; j < res1.length; j++) { 570f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Not equals byte number: " 571f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project .concat(Integer.toString(j)), res1[j], res2[j]); 572f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 573f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 574f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 575f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 576f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>doFinal(byte[] input)</code> method 577f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: update Mac and returns result 578f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 579f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 580f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 581f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 582f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 583f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 584f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 585f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 586f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 587f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 588f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 589f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 590f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineDoFinal", 591f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 592f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 593f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 594f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 595f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 596f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "doFinal", 597f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class} 598f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 599f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 600f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac12() throws NoSuchAlgorithmException, NoSuchProviderException, 601f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, IllegalStateException, 602f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 603f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 604f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 605f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 606f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 607f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 608f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 609f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] b = {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0}; 610f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] upd = {(byte)5, (byte)4, (byte)3, (byte)2, (byte)1, (byte)0}; 611f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec scs = new SecretKeySpec(b, "SHA1"); 612f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 613f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 614f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res1 = macs[i].doFinal(); 615f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res2 = macs[i].doFinal(); 616f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1.length, res2.length); 617f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for(int t = 0; t < res1.length; t++) { 618f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1[t], res2[t]); 619f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 620f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res2 = macs[i].doFinal(upd); 621f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(upd); 622f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res1 = macs[i].doFinal(); 623f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1.length, res2.length); 624f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for(int t = 0; t < res1.length; t++) { 625f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1[t], res2[t]); 626f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 627f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 628f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 629f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 630f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 631f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>update(byte[] input, int outset, int len)</code> method 632f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws IllegalArgumentException when offset or len is negative, 633f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * offset + len >= input.length 634f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 635f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 636f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 637f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 638f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalArgumentException", 639f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 640f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 641f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 642f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 643f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 644f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 645f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 646f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 647f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 648f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 649f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 650f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac13() throws NoSuchAlgorithmException, 651f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, IllegalArgumentException, IllegalStateException, 652f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 653f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 654f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 655f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 656f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 657f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 658f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 659f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] b = {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0}; 660f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec scs = new SecretKeySpec(b, "SHA1"); 661f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 662f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 663f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 664f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(b, -10, b.length); 665f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 666f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 667f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 668f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 669f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(b, 0, -10); 670f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 671f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 672f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 673f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 674f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(b, 0, b.length + 1); 675f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 676f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 677f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 678f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 679f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(b, b.length - 1, 2); 680f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 681f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 682f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 683f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 684f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 685f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 686f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>update(byte[] input, int outset, int len)</code> and 687f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>update(byte[] input</code> 688f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * methods 689f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: updates Mac 690f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 691f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 692f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 693f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 694f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 695f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 696f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte.class} 697f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 698f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 699f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 700f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 701f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 702f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 703f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte.class} 704f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 705f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 706f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 707f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality.", 708f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 709f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 710f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 711f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 712f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 713f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 714f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 715f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 716f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 717f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 718f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 719f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMac14() throws NoSuchAlgorithmException, 720f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project NoSuchProviderException, IllegalArgumentException, IllegalStateException, 721f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 722f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 723f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 724f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 725f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 726f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 727f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 728f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] b = {(byte)0, (byte)0, (byte)0, (byte)0, (byte)0}; 729f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] upd1 = {(byte)0, (byte)1, (byte)5, (byte)4, (byte)3, (byte)2}; 730f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] upd2 = {(byte)5, (byte)4, (byte)3, (byte)2}; 731f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res1; 732f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] res2; 733f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec scs = new SecretKeySpec(b, "SHA1"); 734f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 735f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 736f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(upd1, 2, 4); 737f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res1 = macs[i].doFinal(); 738f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 739f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(upd2); 740f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res2 = macs[i].doFinal(); 741f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1.length, res2.length); 742f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for(int t = 0; t < res1.length; t++) { 743f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1[t], res2[t]); 744f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 745f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 746f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update((byte)5); 747f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res1 = macs[i].doFinal(); 748f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(scs); 749f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(upd1,2,1); 750f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res2 = macs[i].doFinal(); 751f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1.length, res2.length); 752f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for(int t = 0; t < res1.length; t++) { 753f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Results are not the same", res1[t], res2[t]); 754f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 755f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 756f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 757f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 758f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>clone()</code> method 759f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns Mac object or throws CloneNotSupportedException 760f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 761f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 762f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 763f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 764f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "clone", 765f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 766f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 767f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMacClone() throws NoSuchAlgorithmException, CloneNotSupportedException { 768f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 769f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 770f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 771f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 772f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 773f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 774f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 775f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 776f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac1 = (Mac) macs[i].clone(); 777f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mac1.getAlgorithm(), macs[i].getAlgorithm()); 778f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(mac1.getProvider(), macs[i].getProvider()); 779f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertFalse(macs[i].equals(mac1)); 780f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CloneNotSupportedException e) { 781f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 782f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 783f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 784f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 785f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for 786f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>init(Key key, AlgorithmParameterSpec params)</code> 787f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>init(Key key)</code> 788f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * methods 789f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: throws InvalidKeyException and InvalidAlgorithmParameterException 790f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * when parameters are not appropriate 791f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 792f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 793f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 794f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 795f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks exceptions", 796f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "init", 797f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class} 798f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 799f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 800f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 801f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks exceptions", 802f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "init", 803f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.spec.AlgorithmParameterSpec.class} 804f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 805f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 806f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 807f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks exceptions", 808f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 809f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineInit", 810f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.security.Key.class, java.security.spec.AlgorithmParameterSpec.class} 811f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 812f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 813f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testInit() throws NoSuchAlgorithmException, NoSuchProviderException, 814f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, IllegalStateException, InvalidAlgorithmParameterException, 815f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 816f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 817f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 818f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 819f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 820f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 821f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 822f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] b = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 823f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(b, "SHA1"); 824f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project DHGenParameterSpec algPS = new DHGenParameterSpec(1, 2); 825f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project PSSParameterSpec algPSS = new PSSParameterSpec(20); 826f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks1 = new SecretKeySpec(b, "RSA"); 827f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 828f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 829f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 830f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 831f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks1, algPSS); 832f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("init(..) accepts incorrect AlgorithmParameterSpec parameter"); 833f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 834f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 835f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 836f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks, algPS); 837f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("init(..) accepts incorrect AlgorithmParameterSpec parameter"); 838f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidAlgorithmParameterException e) { 839f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 840f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 841f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 842f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(null, null); 843f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException must be thrown"); 844f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 845f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 846f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 847f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 848f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(null); 849f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("InvalidKeyException must be thrown"); 850f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (InvalidKeyException e) { 851f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 852f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// macs[i].init(sks, null); 853f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 854f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 855f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 856f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 857f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>update(ByteBuffer input)</code> 858f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>update(byte[] input, int offset, int len)</code> 859f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * methods 860f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: processes Mac; if input is null then do nothing 861f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 862f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 863f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 864f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 865f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality", 866f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 867f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 868f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 869f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 870f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 871f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 872f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 873f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 874f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 875f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 876f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 877f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 878f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality", 879f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 880f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 881f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 882f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 883f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testUpdateByteBuffer01() throws NoSuchAlgorithmException, NoSuchProviderException, 884f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, IllegalStateException, InvalidAlgorithmParameterException, 885f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 886f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 887f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 888f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 889f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 890f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 891f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 892f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 893f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(bb, "SHA1"); 894f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer byteNull = null; 895f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer byteBuff = ByteBuffer.allocate(0); 896f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb1; 897f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb2; 898f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 899f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 900f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb1 = macs[i].doFinal(); 901f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 902f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(byteNull); 903f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown because buffer is null"); 904f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 905f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 906f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(byteBuff); 907f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb2 = macs[i].doFinal(); 908f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int t = 0; t < bb1.length; t++) { 909f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect doFinal result", bb1[t], bb2[t]); 910f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 911f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 912f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb1 = macs[i].doFinal(); 913f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(null, 0, 0); 914f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb2 = macs[i].doFinal(); 915f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int t = 0; t < bb1.length; t++) { 916f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect doFinal result", bb1[t], bb2[t]); 917f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 918f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 919f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 920f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 921f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>update(ByteBuffer input)</code> 922f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <code>update(byte[] input, int offset, int len)</code> 923f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * methods 924f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: processes Mac 925f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 926f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 927f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 928f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 929f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality", 930f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 931f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 932f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 933f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 934f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 935f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks functionality", 936f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "update", 937f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 938f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 939f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 940f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.PARTIAL_COMPLETE, 941f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "Checks IllegalStateException only but for all methods. Not enough for doFinal(byte[] output, int outOffset) - it can throw ShortBufferException", 942f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 943f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 944f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {byte[].class, int.class, int.class} 945f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 946f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 947f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testUpdateByteBuffer02() throws NoSuchAlgorithmException, NoSuchProviderException, 948f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project IllegalArgumentException, IllegalStateException, InvalidAlgorithmParameterException, 949f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException { 950f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 951f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 952f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 953f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 954f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 955f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 956f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 957f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(bb, "SHA1"); 958f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bbuf = {(byte)5, (byte)4, (byte)3, (byte)2, (byte)1}; 959f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer byteBuf; 960f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb1; 961f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb2; 962f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 963f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf = ByteBuffer.allocate(5); 964f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.put(bbuf); 965f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.position(2); 966f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 967f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(byteBuf); 968f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb1 = macs[i].doFinal(); 969f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 970f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 971f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(bbuf, 2, 3); 972f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb2 = macs[i].doFinal(); 973f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int t = 0; t < bb1.length; t++) { 974f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect doFinal result", bb1[t], bb2[t]); 975f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 976f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 977f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 978f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 979f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>clone()</code> method 980f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: clone if provider is clo 981f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 982f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 983f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 984f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 985f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "clone", 986f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 987f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 988f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testClone() { 989f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 990f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 991f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 992f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 993f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 994f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 995f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac res; 996f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 997f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 998f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project res = (Mac)macs[i].clone(); 999f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Object should not be equals", !macs[i].equals(res)); 1000f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect class", macs[i].getClass(), res.getClass()); 1001f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CloneNotSupportedException e) { 1002f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1003f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1004f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1005f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1006f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>getMacLength()</code> method 1007f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: return Mac length 1008f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1009f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 1010f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1011f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1012f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1013f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getMacLength", 1014f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1015f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 1016f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1017f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1018f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1019f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 1020f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineGetMacLength", 1021f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1022f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1023f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 1024f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testGetMacLength() { 1025f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 1026f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 1027f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1028f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1029f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 1030f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 1031f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 1032f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertTrue("Length should be positive", (macs[i].getMacLength() >= 0)); 1033f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1034f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1035f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1036f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1037f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>reset()</code> method 1038f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: return Mac length 1039f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1040f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 1041f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1042f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1043f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1044f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "reset", 1045f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1046f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 1047f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1048f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1049f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1050f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project clazz = MacSpi.class, 1051f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineReset", 1052f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1053f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1054f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 1055f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testReset() throws InvalidKeyException { 1056f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 1057f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 1058f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1059f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1060f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac [] macs = createMacs(); 1061f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull("Mac objects were not created", macs); 1062f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 1063f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(bb, "SHA1"); 1064f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bbuf = {(byte)5, (byte)4, (byte)3, (byte)2, (byte)1}; 1065f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb1; 1066f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb2; 1067f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < macs.length; i++) { 1068f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].init(sks); 1069f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb1 = macs[i].doFinal(); 1070f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].reset(); 1071f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb2 = macs[i].doFinal(); 1072f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("incorrect result",bb1.length, bb2.length); 1073f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int t = 0; t < bb1.length; t++) { 1074f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect doFinal result", bb1[t], bb2[t]); 1075f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1076f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].reset(); 1077f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(bbuf); 1078f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb1 = macs[i].doFinal(); 1079f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].reset(); 1080f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project macs[i].update(bbuf, 0, bbuf.length); 1081f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb2 = macs[i].doFinal(); 1082f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("incorrect result",bb1.length, bb2.length); 1083f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int t = 0; t < bb1.length; t++) { 1084f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect doFinal result", bb1[t], bb2[t]); 1085f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1086f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1087f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1088f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 1089f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>Mac</code> constructor 1090f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: returns Mac object 1091f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1092f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1093f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1094f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1095f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "Mac", 1096f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {javax.crypto.MacSpi.class, java.security.Provider.class, java.lang.String.class} 1097f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1098f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMacConstructor() throws NoSuchAlgorithmException, 1099f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project InvalidKeyException, InvalidAlgorithmParameterException { 1100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!DEFSupported) { 1101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail(NotSupportedMsg); 1102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return; 1103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project MacSpi spi = new MyMacSpi(); 1105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac = new myMac(spi, defaultProvider, defaultAlgorithm); 1106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", mac.getAlgorithm(), 1107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project defaultAlgorithm); 1108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect provider", mac.getProvider(), defaultProvider); 1109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac.init(null, null); 1111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Exception should be thrown because init(..) uses incorrect parameters"); 1112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Invalid mac length", mac.getMacLength(), 0); 1115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = new myMac(null, null, null); 1117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Algorithm must be null", mac.getAlgorithm()); 1118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull("Provider must be null", mac.getProvider()); 1119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac.init(null, null); 1121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("Exception should be thrown because init(..) uses incorrect parameters"); 1122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (Exception e) { 1123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 1125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac.getMacLength(); 1126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("NullPointerException must be thrown"); 1127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (NullPointerException e) { 1128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getAlgorithm", 1135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getAlgorithm() throws NoSuchAlgorithmException { 1138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac; 1139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 1140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = Mac.getInstance(validValues[i]); 1141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect algorithm", mac.getAlgorithm(), validValues[i]); 1142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = new Mock_Mac(null, null, null); 1145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mac.getAlgorithm()); 1146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 1149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 1150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "", 1151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "getProvider", 1152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 1153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 1154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void test_getProvider() throws NoSuchAlgorithmException { 1155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mac mac; 1156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < validValues.length; i++) { 1157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = Mac.getInstance(validValues[i]); 1158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNotNull(mac.getProvider()); 1159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mac = new Mock_Mac(null, null, null); 1162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertNull(mac.getProvider()); 1163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project class Mock_Mac extends Mac { 1166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected Mock_Mac(MacSpi arg0, Provider arg1, String arg2) { 1167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(arg0, arg1, arg2); 1168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static Test suite() { 1172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new TestSuite(MacTest.class); 1173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public static void main(String args[]) { 1176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project junit.textui.TestRunner.run(suite()); 1177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 1181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Additional class for Mac constructor verification 1182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 1183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass myMac extends Mac { 1184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 1185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public myMac(MacSpi macSpi, Provider provider, 1186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project String algorithm) { 1187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super(macSpi, provider, algorithm); 1188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 1189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 1190