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.nio.ByteBuffer; 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidAlgorithmParameterException; 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.InvalidKeyException; 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.Key; 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.security.spec.AlgorithmParameterSpec; 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.spec.SecretKeySpec; 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport javax.crypto.MacSpi; 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.apache.harmony.crypto.tests.support.MyMacSpi; 40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport junit.framework.TestCase; 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@TestTargetClass(MacSpi.class) 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Tests for <code>MacSpi</code> class constructors and methods. 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class MacSpiTest extends TestCase { 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass Mock_MacSpi extends MyMacSpi { 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineDoFinal() { 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineDoFinal(); 56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int engineGetMacLength() { 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineGetMacLength(); 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException { 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineInit(key, params); 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineReset() { 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineReset(); 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte input) { 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input); 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte[] input, int offset, int len) { 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input, offset, len); 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass Mock_MacSpi1 extends MyMacSpi1 { 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineDoFinal() { 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineDoFinal(); 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int engineGetMacLength() { 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineGetMacLength(); 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException { 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineInit(key, params); 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineReset() { 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineReset(); 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte input) { 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input); 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte[] input, int offset, int len) { 114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input, offset, len); 115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(ByteBuffer input) { 118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input); 119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass Mock_MacSpi2 extends MyMacSpi2 { 125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineDoFinal() { 128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineDoFinal(); 129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int engineGetMacLength() { 133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return super.engineGetMacLength(); 134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException, InvalidAlgorithmParameterException { 138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineInit(key, params); 139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineReset() { 143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineReset(); 144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte input) { 148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input); 149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @Override 152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte[] input, int offset, int len) { 153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input, offset, len); 154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(ByteBuffer input) { 157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project super.engineUpdate(input); 158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Test for <code>MacSpi</code> constructor 165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Assertion: constructs MacSpi 166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargets({ 168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "All others methods are abstract.", 171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "MacSpi", 172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "All others methods are abstract.", 177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "engineUpdate", 178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {java.nio.ByteBuffer.class} 179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ), 180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project @TestTargetNew( 181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project level = TestLevel.COMPLETE, 182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project notes = "All others methods are abstract.", 183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project method = "clone", 184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project args = {} 185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ) 186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project }) 187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void testMacSpiTests01() throws Exception { 188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mock_MacSpi mSpi = new Mock_MacSpi(); 189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bb1 = {(byte)1, (byte)2, (byte)3, (byte)4, (byte)5}; 191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project SecretKeySpec sks = new SecretKeySpec(bb1, "SHA1"); 192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect MacLength", mSpi.engineGetMacLength(), 0); 194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi.engineInit(null, null); 197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi.engineInit(sks, null); 202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte[] bb = mSpi.engineDoFinal(); 204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals(bb.length, 0); 205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi.clone(); 207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("CloneNotSupportedException was not thrown as expected"); 208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CloneNotSupportedException e) { 209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mock_MacSpi1 mSpi1 = new Mock_MacSpi1(); 212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi1.clone(); 213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bbb = new byte[10]; 215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project for (int i = 0; i < bbb.length; i++) { 216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bbb[i] = (byte)i; 217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi1.engineInit(null, null); 220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project fail("IllegalArgumentException must be thrown"); 221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (IllegalArgumentException e) { 222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi1.engineInit(sks, null); 224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project ByteBuffer byteBuf = ByteBuffer.allocate(10); 226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.put(bbb); 227f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.position(5); 228f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project int beforeUp = byteBuf.remaining(); 229f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi1.engineUpdate(byteBuf); 230f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project bb = mSpi1.engineDoFinal(); 231f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project assertEquals("Incorrect result of engineDoFinal", bb.length, beforeUp); 232f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 233f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project Mock_MacSpi2 mSpi2 = new Mock_MacSpi2(); 234f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 235f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi2.engineInit(null, null); 236f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi2.engineInit(sks, null); 237f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 238f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project try { 239f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi2.clone(); 240f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } catch (CloneNotSupportedException e) { 241f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 242f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 243f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byte [] bbuf = {(byte)5, (byte)4, (byte)3, (byte)2, (byte)1}; 244f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf = ByteBuffer.allocate(5); 245f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.put(bbuf); 246f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project byteBuf.position(5); 247f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project if (!byteBuf.hasRemaining()) { 248f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project mSpi2.engineUpdate(byteBuf); 249f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 250f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 251f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 252f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 253f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 254f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass MyMacSpi1 extends MyMacSpi { 255f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Object clone() throws CloneNotSupportedException { 256f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new MyMacSpi1(); 257f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 258f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 259f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 260f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectclass MyMacSpi2 extends MacSpi { 261f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected int engineGetMacLength() { 262f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return 0; 263f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 264f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 265f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineInit(Key key, AlgorithmParameterSpec params) 266f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project throws InvalidKeyException, InvalidAlgorithmParameterException { 267f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 268f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 269f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte input) { 270f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 271f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 272f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineUpdate(byte[] input, int offset, int len) { 273f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 274f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 275f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected byte[] engineDoFinal() { 276f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project return new byte[0]; 277f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 278f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 279f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project protected void engineReset() { 280f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project } 281f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 282