test/jdk/sun/security/tools/keytool/fakegen/DefaultSignatureAlgorithm.java
author chegar
Thu, 17 Oct 2019 20:54:25 +0100
branchdatagramsocketimpl-branch
changeset 58679 9c3209ff7550
parent 58678 9cf78a70fa4f
parent 57572 c449f430ac3f
permissions -rw-r--r--
datagramsocketimpl-branch: merge with default
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     1
/*
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
     2
 * Copyright (c) 2019, Oracle and/or its affiliates. All rights reserved.
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     4
 *
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     7
 * published by the Free Software Foundation.
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     8
 *
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    13
 * accompanied this code).
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    14
 *
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    18
 *
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    21
 * questions.
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    22
 */
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    23
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    24
/*
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    25
 * @test
57572
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    26
 * @bug 8138766 8227059 8227595
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    27
 * @summary New default -sigalg for keytool
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    28
 * @library /test/lib
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    29
 * @build java.base/sun.security.rsa.RSAKeyPairGenerator
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    30
 *        java.base/sun.security.provider.DSAKeyPairGenerator
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    31
 *        jdk.crypto.ec/sun.security.ec.ECKeyPairGenerator
57572
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    32
 * @requires os.family != "solaris"
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    33
 * @run main DefaultSignatureAlgorithm
40975
680639c9b307 8165689: Fix module dependencies for sun/security/pkcs11/* tests
skovalev
parents: 39464
diff changeset
    34
 * @modules jdk.crypto.ec
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    35
 */
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    36
57572
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    37
// This test is excluded from Solaris because the RSA key pair generator
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    38
// is extremely slow there with a big keysize. Please note the fake
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    39
// KeyPairGenerator will not be used because of provider preferences.
c449f430ac3f 8227595: keytool/fakegen/DefaultSignatureAlgorithm.java fails due to "exitValue = 6"
weijun
parents: 55640
diff changeset
    40
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    41
import jdk.test.lib.Asserts;
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    42
import jdk.test.lib.SecurityTools;
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    43
import jdk.test.lib.process.OutputAnalyzer;
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    44
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    45
import java.io.File;
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    46
import java.security.KeyStore;
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    47
import java.security.cert.X509Certificate;
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    48
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    49
public class DefaultSignatureAlgorithm {
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    50
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    51
    static int pos = 0;
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    52
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    53
    public static void main(String[] args) throws Exception {
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    54
        check("RSA", 1024, null, "SHA256withRSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    55
        check("RSA", 3072, null, "SHA256withRSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    56
        check("RSA", 3073, null, "SHA384withRSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    57
        check("RSA", 7680, null, "SHA384withRSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    58
        check("RSA", 7681, null, "SHA512withRSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    59
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    60
        check("DSA", 1024, null, "SHA256withDSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    61
        check("DSA", 3072, null, "SHA256withDSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    62
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    63
        check("EC", 192, null, "SHA256withECDSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    64
        check("EC", 384, null, "SHA384withECDSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    65
        check("EC", 571, null, "SHA512withECDSA");
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    66
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    67
        check("EC", 571, "SHA256withECDSA", "SHA256withECDSA");
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    68
    }
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    69
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    70
    private static void check(String keyAlg, int keySize,
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    71
            String requestedSigAlg, String expectedSigAlg)
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    72
            throws Exception {
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    73
        String alias = keyAlg + keySize + "-" + pos++;
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    74
        String sigAlgParam = requestedSigAlg == null
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    75
                ? ""
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    76
                : (" -sigalg " + requestedSigAlg);
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    77
        genkeypair(alias,
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    78
                "-keyalg " + keyAlg + " -keysize " + keySize + sigAlgParam)
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    79
            .shouldHaveExitValue(0);
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    80
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    81
        KeyStore ks = KeyStore.getInstance(
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    82
                new File("ks"), "changeit".toCharArray());
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
    83
        X509Certificate cert = (X509Certificate)ks.getCertificate(alias);
55640
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    84
        Asserts.assertEQ(cert.getPublicKey().getAlgorithm(), keyAlg);
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    85
        Asserts.assertEQ(cert.getSigAlgName(), expectedSigAlg);
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    86
    }
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    87
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    88
    static OutputAnalyzer genkeypair(String alias, String options)
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    89
            throws Exception {
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    90
        String patchArg = "-J--patch-module=java.base="
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    91
                + System.getProperty("test.classes")
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    92
                + File.separator + "patches" + File.separator + "java.base"
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    93
                + " -J--patch-module=jdk.crypto.ec="
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    94
                + System.getProperty("test.classes")
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    95
                + File.separator + "patches" + File.separator + "jdk.crypto.ec";;
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    96
        return kt(patchArg + " -genkeypair -alias " + alias
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    97
                + " -dname CN=" + alias + " " + options);
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    98
    }
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
    99
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
   100
    static OutputAnalyzer kt(String cmd)
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
   101
            throws Exception {
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
   102
        return SecurityTools.keytool("-storepass changeit -keypass changeit "
3081f39a3d30 8227059: sun/security/tools/keytool/DefaultSignatureAlgorithm.java timed out
weijun
parents: 47216
diff changeset
   103
                + "-keystore ks " + cmd);
38439
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
   104
    }
8a3871cd7fca 8138766: New default -sigalg for keytool
weijun
parents:
diff changeset
   105
}