1e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro/* 2e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * Copyright (C) 2015 The Android Open Source Project 3e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * 4e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * Licensed under the Apache License, Version 2.0 (the "License"); 5e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * you may not use this file except in compliance with the License. 6e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * You may obtain a copy of the License at 7e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * 8e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * http://www.apache.org/licenses/LICENSE-2.0 9e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * 10e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * Unless required by applicable law or agreed to in writing, software 11e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * distributed under the License is distributed on an "AS IS" BASIS, 12e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * See the License for the specific language governing permissions and 14e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * limitations under the License 15e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro */ 16e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 17e38b83dd96281d178b01476b67d354655bf2de62Sergio Giropackage libcore.javax.crypto; 18e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 19e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.AlgorithmParameters; 20e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.InvalidAlgorithmParameterException; 21e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.InvalidKeyException; 22e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.Key; 23e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.NoSuchAlgorithmException; 24e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.SecureRandom; 25e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport java.security.spec.AlgorithmParameterSpec; 26e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 27e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport javax.crypto.BadPaddingException; 28e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport javax.crypto.MacSpi; 29e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport javax.crypto.NoSuchPaddingException; 30e38b83dd96281d178b01476b67d354655bf2de62Sergio Giroimport javax.crypto.ShortBufferException; 31e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 32e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro/** 33e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro * Mock CipherSpi used by {@link libcore.javax.crypto.CipherTest}. 34e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro */ 35e38b83dd96281d178b01476b67d354655bf2de62Sergio Giropublic class MockMacSpi extends MacSpi { 36e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public static class SpecificKeyTypes extends MockMacSpi { 37e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 38e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public void checkKeyType(Key key) throws InvalidKeyException { 39e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro if (!(key instanceof MockKey)) { 40e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new InvalidKeyException("Must be MockKey!"); 41e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 42e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 43e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 44e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 45e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public static class SpecificKeyTypes2 extends MockMacSpi { 46e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 47e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public void checkKeyType(Key key) throws InvalidKeyException { 48e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro System.err.println("Checking key of type " + key.getClass().getName()); 49e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro if (!(key instanceof MockKey2)) { 50e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new InvalidKeyException("Must be MockKey2!"); 51e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 52e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 53e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 54e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 55e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public static class AllKeyTypes extends MockMacSpi { 56e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 57e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 58e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro public void checkKeyType(Key key) throws InvalidKeyException { 59e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 60e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 61e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 62e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected int engineGetMacLength() { 63e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 64e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 65e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 66e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 67e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected void engineInit(Key key, AlgorithmParameterSpec params) 68e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throws InvalidKeyException, InvalidAlgorithmParameterException { 69e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 70e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 71e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 72e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 73e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected void engineUpdate(byte input) { 74e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 75e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 76e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 77e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 78e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected void engineUpdate(byte[] input, int inputOffset, int inputLen) { 79e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 80e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 81e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 82e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 83e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected byte[] engineDoFinal() { 84e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 85e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 86e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro 87e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro @Override 88e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro protected void engineReset() { 89e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro throw new UnsupportedOperationException("not implemented"); 90e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro } 91e38b83dd96281d178b01476b67d354655bf2de62Sergio Giro} 92