1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17
18package org.apache.harmony.security.tests.support;
19
20import java.security.InvalidKeyException;
21import java.security.KeyStore;
22import java.security.NoSuchAlgorithmException;
23import java.security.NoSuchProviderException;
24import java.security.PrivateKey;
25import java.security.Provider;
26import java.security.PublicKey;
27import java.security.SignatureException;
28import java.security.cert.Certificate;
29import java.security.cert.CertificateEncodingException;
30import java.security.cert.CertificateException;
31
32import javax.crypto.SecretKey;
33
34/**
35 * Support class for KeyStore tests
36 *
37 */
38
39public class KeyStoreTestSupport {
40
41    public static final String srvKeyStore = "KeyStore";
42
43    public static String[] validValues = { "bks", "BKS", "bKS", "Bks", "bKs",
44            "BkS" };
45
46    public static String defaultType = "bks";
47
48    public static boolean JKSSupported = false;
49
50    public static String defaultProviderName = null;
51
52    public static Provider defaultProvider = null;
53
54    static {
55        defaultProvider = SpiEngUtils.isSupport(defaultType, srvKeyStore);
56        JKSSupported = (defaultProvider != null);
57        defaultProviderName = (JKSSupported ? defaultProvider.getName() : null);
58    }
59
60    /**
61     * Additional class to create SecretKey object
62     */
63    public static class SKey implements SecretKey {
64        private String type;
65
66        private byte[] encoded;
67
68        public SKey(String type, byte[] encoded) {
69            this.type = type;
70            this.encoded = encoded;
71        }
72
73        public String getAlgorithm() {
74            return type;
75        }
76
77        public byte[] getEncoded() {
78            return encoded;
79        }
80
81        public String getFormat() {
82            return "test";
83        }
84    }
85
86    /**
87     * Additional class to create PrivateKey object
88     */
89    public static class MyPrivateKey implements PrivateKey {
90        private String algorithm;
91
92        private String format;
93
94        private byte[] encoded;
95
96        public MyPrivateKey(String algorithm, String format, byte[] encoded) {
97            this.algorithm = algorithm;
98            this.format = format;
99            this.encoded = encoded;
100        }
101
102        public String getAlgorithm() {
103            return algorithm;
104        }
105
106        public String getFormat() {
107            return format;
108        }
109
110        public byte[] getEncoded() {
111            return encoded;
112        }
113    }
114
115    /**
116     * Additional class to create Certificate and Key objects
117     */
118    public static class MCertificate extends Certificate {
119        private final byte[] encoding;
120
121        private final String type;
122
123        public MCertificate(String type, byte[] encoding) {
124            super(type);
125            this.encoding = encoding;
126            this.type = type;
127        }
128
129        public byte[] getEncoded() throws CertificateEncodingException {
130            return encoding.clone();
131        }
132
133        public void verify(PublicKey key) throws CertificateException,
134                NoSuchAlgorithmException, InvalidKeyException,
135                NoSuchProviderException, SignatureException {
136        }
137
138        public void verify(PublicKey key, String sigProvider)
139                throws CertificateException, NoSuchAlgorithmException,
140                InvalidKeyException, NoSuchProviderException,
141                SignatureException {
142        }
143
144        public String toString() {
145            return "[MCertificate, type: " + getType() + "]";
146        }
147
148        public PublicKey getPublicKey() {
149            return new PublicKey() {
150                public String getAlgorithm() {
151                    return type;
152                }
153
154                public byte[] getEncoded() {
155                    return encoding;
156                }
157
158                public String getFormat() {
159                    return "test";
160                }
161            };
162        }
163    }
164
165    /**
166     * Additional class to create ProtectionParameter object
167     */
168    public static class ProtPar implements KeyStore.ProtectionParameter {
169    }
170
171    /**
172     * Additional class to create KeyStore.Entry object
173     */
174    public static class AnotherEntry implements KeyStore.Entry {
175    }
176}
177
178