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