114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root/* 214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * Copyright 2014 The Android Open Source Project 314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * 414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * you may not use this file except in compliance with the License. 614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * You may obtain a copy of the License at 714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * 814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * 1014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * Unless required by applicable law or agreed to in writing, software 1114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 1214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * See the License for the specific language governing permissions and 1414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root * limitations under the License. 1514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root */ 1614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 1714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootpackage org.apache.harmony.crypto.tests.javax.crypto; 1814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 1914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.InvalidAlgorithmParameterException; 2014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.InvalidKeyException; 2114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.Key; 2214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.NoSuchAlgorithmException; 2314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.SecureRandom; 2414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport java.security.spec.AlgorithmParameterSpec; 2514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport javax.crypto.KeyAgreementSpi; 2614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport javax.crypto.SecretKey; 2714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport javax.crypto.ShortBufferException; 2814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport libcore.javax.crypto.MockKey; 2914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootimport libcore.javax.crypto.MockKey2; 3014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 3114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Rootpublic class MockKeyAgreementSpi extends KeyAgreementSpi { 3214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public static class SpecificKeyTypes extends MockKeyAgreementSpi { 3314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 3414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public void checkKeyType(Key key) throws InvalidKeyException { 3514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root if (!(key instanceof MockKey)) { 3614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new InvalidKeyException("Must be MockKey!"); 3714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 3814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 3914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 4014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 4114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public static class SpecificKeyTypes2 extends MockKeyAgreementSpi { 4214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 4314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public void checkKeyType(Key key) throws InvalidKeyException { 4414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root if (!(key instanceof MockKey2)) { 4514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new InvalidKeyException("Must be MockKey2!"); 4614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 4714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 4814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 4914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 5014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public static class AllKeyTypes extends MockKeyAgreementSpi { 5114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 5214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 5314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root public void checkKeyType(Key key) throws InvalidKeyException { 5414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 5514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 5614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 5714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected Key engineDoPhase(Key key, boolean lastPhase) throws InvalidKeyException, 5814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root IllegalStateException { 5914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new UnsupportedOperationException(); 6014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 6114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 6214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 6314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected byte[] engineGenerateSecret() throws IllegalStateException { 6414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new UnsupportedOperationException(); 6514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 6614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 6714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 6814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected int engineGenerateSecret(byte[] sharedSecret, int offset) 6914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throws IllegalStateException, ShortBufferException { 7014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new UnsupportedOperationException(); 7114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 7214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 7314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 7414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected SecretKey engineGenerateSecret(String algorithm) throws IllegalStateException, 7514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root NoSuchAlgorithmException, InvalidKeyException { 7614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throw new UnsupportedOperationException(); 7714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 7814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 7914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 8014a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected void engineInit(Key key, SecureRandom random) throws InvalidKeyException { 8114a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root checkKeyType(key); 8214a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 8314a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root 8414a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root @Override 8514a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root protected void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random) 8614a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root throws InvalidKeyException, InvalidAlgorithmParameterException { 8714a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root checkKeyType(key); 8814a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root } 8914a26bd0975d4f986552b8f5aa34c6526ab4f6b7Kenny Root} 90