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.provider.crypto;
19
20import java.security.KeyFactory;
21import java.security.MessageDigest;
22import java.security.NoSuchAlgorithmException;
23import java.security.NoSuchProviderException;
24import java.security.SecureRandom;
25import java.security.Signature;
26
27import junit.framework.Test;
28import junit.framework.TestCase;
29import junit.framework.TestSuite;
30
31/**
32 * Tests against CryptoProvider.
33 */
34public class CryptoProviderTest extends TestCase {
35
36    private static final String providerName = "Crypto";     // name of provider
37    private static final String shaprng      = "SHA1PRNG";   // name of algorithm
38    private static final String sha_1        = "SHA-1";      // name of algorithm
39    private static final String sha_1_alias  = "SHA1";       // alias name
40    private static final String sha_1_alias2 = "SHA";        // alias name
41
42    private static final String dsaNames[] = { "SHA1withDSA",
43                                               "SHAwithDSA",
44                                               "DSAwithSHA1",
45                                               "SHA1/DSA",
46                                               "SHA/DSA",
47                                               "SHA-1/DSA",
48                                               "DSA",
49                                               "DSS",
50                                               "OID.1.2.840.10040.4.3",
51                                               "1.2.840.10040.4.3",
52                                               "1.3.14.3.2.13",
53                                               "1.3.14.3.2.27" };
54
55    private static final String keyFactoryNames[] = { "DSA",
56                                                      "1.3.14.3.2.12",
57                                                      "1.2.840.10040.4.1" };
58
59    /**
60     * Test against CryptoProvider() methods.
61     */
62    public void testCrypto() throws NoSuchAlgorithmException, NoSuchProviderException {
63        SecureRandom sr;
64        MessageDigest md;
65        Signature sign;
66        KeyFactory keyFactory;
67
68        sr = SecureRandom.getInstance(shaprng, providerName);
69
70        md = MessageDigest.getInstance(sha_1, providerName);
71        md = MessageDigest.getInstance(sha_1_alias, providerName);
72        md = MessageDigest.getInstance(sha_1_alias2, providerName);
73
74        for ( int i = 0; i < dsaNames.length; i++ ) {
75            sign = Signature.getInstance(dsaNames[i], providerName);
76        }
77
78        for ( int i = 0; i < keyFactoryNames.length; i++ ) {
79            keyFactory = KeyFactory.getInstance(keyFactoryNames[i], providerName);
80        }
81    }
82
83
84    public static Test suite() {
85        return new TestSuite(CryptoProviderTest.class);
86    }
87
88 }
89