src/java.base/share/classes/sun/security/ssl/SunJSSE.java
author wetmore
Fri, 11 May 2018 15:53:12 -0700
branchJDK-8145252-TLS13-branch
changeset 56542 56aaa6cb3693
parent 47216 71c04702a3d5
child 56592 b1902b22005e
permissions -rw-r--r--
Initial TLSv1.3 Implementation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     1
/*
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
     2
 * Copyright (c) 1999, 2018, Oracle and/or its affiliates. All rights reserved.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
90ce3da70b43 Initial load
duke
parents:
diff changeset
     4
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
90ce3da70b43 Initial load
duke
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3618
diff changeset
     7
 * published by the Free Software Foundation.  Oracle designates this
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
     8
 * particular file as subject to the "Classpath" exception as provided
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3618
diff changeset
     9
 * by Oracle in the LICENSE file that accompanied this code.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    10
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    11
 * This code is distributed in the hope that it will be useful, but WITHOUT
90ce3da70b43 Initial load
duke
parents:
diff changeset
    12
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
90ce3da70b43 Initial load
duke
parents:
diff changeset
    13
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
90ce3da70b43 Initial load
duke
parents:
diff changeset
    14
 * version 2 for more details (a copy is included in the LICENSE file that
90ce3da70b43 Initial load
duke
parents:
diff changeset
    15
 * accompanied this code).
90ce3da70b43 Initial load
duke
parents:
diff changeset
    16
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    17
 * You should have received a copy of the GNU General Public License version
90ce3da70b43 Initial load
duke
parents:
diff changeset
    18
 * 2 along with this work; if not, write to the Free Software Foundation,
90ce3da70b43 Initial load
duke
parents:
diff changeset
    19
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    20
 *
5506
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3618
diff changeset
    21
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3618
diff changeset
    22
 * or visit www.oracle.com if you need additional information or have any
202f599c92aa 6943119: Rebrand source copyright notices
ohair
parents: 3618
diff changeset
    23
 * questions.
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    24
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    25
90ce3da70b43 Initial load
duke
parents:
diff changeset
    26
package sun.security.ssl;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    27
90ce3da70b43 Initial load
duke
parents:
diff changeset
    28
import java.security.*;
40416
5d91b2fd668c 8130181: Deprecate java.security.Provider(String, double, String), add Provider(Strin
valeriep
parents: 39562
diff changeset
    29
import static sun.security.util.SecurityConstants.PROVIDER_VER;
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    30
90ce3da70b43 Initial load
duke
parents:
diff changeset
    31
/**
90ce3da70b43 Initial load
duke
parents:
diff changeset
    32
 * The JSSE provider.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    33
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    34
 * The RSA implementation has been removed from JSSE, but we still need to
90ce3da70b43 Initial load
duke
parents:
diff changeset
    35
 * register the same algorithms for compatibility. We just point to the RSA
90ce3da70b43 Initial load
duke
parents:
diff changeset
    36
 * implementation in the SunRsaSign provider. This works because all classes
90ce3da70b43 Initial load
duke
parents:
diff changeset
    37
 * are in the bootclasspath and therefore loaded by the same classloader.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    38
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    39
 * SunJSSE now supports an experimental FIPS compliant mode when used with an
90ce3da70b43 Initial load
duke
parents:
diff changeset
    40
 * appropriate FIPS certified crypto provider. In FIPS mode, we:
7039
6464c8e62a18 4873188: Support TLS 1.1
xuelei
parents: 5506
diff changeset
    41
 *  . allow only TLS 1.0 or later
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    42
 *  . allow only FIPS approved ciphersuites
90ce3da70b43 Initial load
duke
parents:
diff changeset
    43
 *  . perform all crypto in the FIPS crypto provider
90ce3da70b43 Initial load
duke
parents:
diff changeset
    44
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    45
 * It is currently not possible to use both FIPS compliant SunJSSE and
90ce3da70b43 Initial load
duke
parents:
diff changeset
    46
 * standard JSSE at the same time because of the various static data structures
90ce3da70b43 Initial load
duke
parents:
diff changeset
    47
 * we use.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    48
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    49
 * However, we do want to allow FIPS mode to be enabled at runtime and without
90ce3da70b43 Initial load
duke
parents:
diff changeset
    50
 * editing the java.security file. That means we need to allow
90ce3da70b43 Initial load
duke
parents:
diff changeset
    51
 * Security.removeProvider("SunJSSE") to work, which creates an instance of
90ce3da70b43 Initial load
duke
parents:
diff changeset
    52
 * this class in non-FIPS mode. That is why we delay the selection of the mode
90ce3da70b43 Initial load
duke
parents:
diff changeset
    53
 * as long as possible. This is until we open an SSL/TLS connection and the
90ce3da70b43 Initial load
duke
parents:
diff changeset
    54
 * data structures need to be initialized or until SunJSSE is initialized in
90ce3da70b43 Initial load
duke
parents:
diff changeset
    55
 * FIPS mode.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    56
 *
90ce3da70b43 Initial load
duke
parents:
diff changeset
    57
 */
90ce3da70b43 Initial load
duke
parents:
diff changeset
    58
public abstract class SunJSSE extends java.security.Provider {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    59
90ce3da70b43 Initial load
duke
parents:
diff changeset
    60
    private static final long serialVersionUID = 3231825739635378733L;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    61
90ce3da70b43 Initial load
duke
parents:
diff changeset
    62
    private static String info = "Sun JSSE provider" +
22068
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
    63
        "(PKCS12, SunX509/PKIX key/trust factories, " +
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
    64
        "SSLv3/TLSv1/TLSv1.1/TLSv1.2/TLSv1.3/DTLSv1.0/DTLSv1.2)";
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
    65
90ce3da70b43 Initial load
duke
parents:
diff changeset
    66
    private static String fipsInfo =
90ce3da70b43 Initial load
duke
parents:
diff changeset
    67
        "Sun JSSE provider (FIPS mode, crypto provider ";
90ce3da70b43 Initial load
duke
parents:
diff changeset
    68
90ce3da70b43 Initial load
duke
parents:
diff changeset
    69
    // tri-valued flag:
90ce3da70b43 Initial load
duke
parents:
diff changeset
    70
    // null  := no final decision made
90ce3da70b43 Initial load
duke
parents:
diff changeset
    71
    // false := data structures initialized in non-FIPS mode
90ce3da70b43 Initial load
duke
parents:
diff changeset
    72
    // true  := data structures initialized in FIPS mode
90ce3da70b43 Initial load
duke
parents:
diff changeset
    73
    private static Boolean fips;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    74
90ce3da70b43 Initial load
duke
parents:
diff changeset
    75
    // the FIPS certificate crypto provider that we use to perform all crypto
90ce3da70b43 Initial load
duke
parents:
diff changeset
    76
    // operations. null in non-FIPS mode
90ce3da70b43 Initial load
duke
parents:
diff changeset
    77
    static java.security.Provider cryptoProvider;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    78
90ce3da70b43 Initial load
duke
parents:
diff changeset
    79
    protected static synchronized boolean isFIPS() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    80
        if (fips == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    81
            fips = false;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    82
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    83
        return fips;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    84
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    85
90ce3da70b43 Initial load
duke
parents:
diff changeset
    86
    // ensure we can use FIPS mode using the specified crypto provider.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    87
    // enable FIPS mode if not already enabled.
90ce3da70b43 Initial load
duke
parents:
diff changeset
    88
    private static synchronized void ensureFIPS(java.security.Provider p) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    89
        if (fips == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    90
            fips = true;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    91
            cryptoProvider = p;
90ce3da70b43 Initial load
duke
parents:
diff changeset
    92
        } else {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    93
            if (fips == false) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    94
                throw new ProviderException
90ce3da70b43 Initial load
duke
parents:
diff changeset
    95
                    ("SunJSSE already initialized in non-FIPS mode");
90ce3da70b43 Initial load
duke
parents:
diff changeset
    96
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
    97
            if (cryptoProvider != p) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
    98
                throw new ProviderException
90ce3da70b43 Initial load
duke
parents:
diff changeset
    99
                    ("SunJSSE already initialized with FIPS crypto provider "
90ce3da70b43 Initial load
duke
parents:
diff changeset
   100
                    + cryptoProvider);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   101
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   102
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   103
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   104
90ce3da70b43 Initial load
duke
parents:
diff changeset
   105
    // standard constructor
90ce3da70b43 Initial load
duke
parents:
diff changeset
   106
    protected SunJSSE() {
40416
5d91b2fd668c 8130181: Deprecate java.security.Provider(String, double, String), add Provider(Strin
valeriep
parents: 39562
diff changeset
   107
        super("SunJSSE", PROVIDER_VER, info);
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   108
        subclassCheck();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   109
        if (Boolean.TRUE.equals(fips)) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   110
            throw new ProviderException
90ce3da70b43 Initial load
duke
parents:
diff changeset
   111
                ("SunJSSE is already initialized in FIPS mode");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   112
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   113
        registerAlgorithms(false);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   114
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   115
21278
ef8a3a2a72f2 8022746: List of spelling errors in API doc
malenkov
parents: 20485
diff changeset
   116
    // preferred constructor to enable FIPS mode at runtime
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   117
    protected SunJSSE(java.security.Provider cryptoProvider){
90ce3da70b43 Initial load
duke
parents:
diff changeset
   118
        this(checkNull(cryptoProvider), cryptoProvider.getName());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   119
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   120
90ce3da70b43 Initial load
duke
parents:
diff changeset
   121
    // constructor to enable FIPS mode from java.security file
90ce3da70b43 Initial load
duke
parents:
diff changeset
   122
    protected SunJSSE(String cryptoProvider){
90ce3da70b43 Initial load
duke
parents:
diff changeset
   123
        this(null, checkNull(cryptoProvider));
90ce3da70b43 Initial load
duke
parents:
diff changeset
   124
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   125
90ce3da70b43 Initial load
duke
parents:
diff changeset
   126
    private static <T> T checkNull(T t) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   127
        if (t == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   128
            throw new ProviderException("cryptoProvider must not be null");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   129
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   130
        return t;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   131
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   132
7043
5e2d1edeb2c7 6916074: Add support for TLS 1.2
xuelei
parents: 7039
diff changeset
   133
    private SunJSSE(java.security.Provider cryptoProvider,
5e2d1edeb2c7 6916074: Add support for TLS 1.2
xuelei
parents: 7039
diff changeset
   134
            String providerName) {
40416
5d91b2fd668c 8130181: Deprecate java.security.Provider(String, double, String), add Provider(Strin
valeriep
parents: 39562
diff changeset
   135
        super("SunJSSE", PROVIDER_VER, fipsInfo + providerName + ")");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   136
        subclassCheck();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   137
        if (cryptoProvider == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   138
            // Calling Security.getProvider() will cause other providers to be
90ce3da70b43 Initial load
duke
parents:
diff changeset
   139
            // loaded. That is not good but unavoidable here.
90ce3da70b43 Initial load
duke
parents:
diff changeset
   140
            cryptoProvider = Security.getProvider(providerName);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   141
            if (cryptoProvider == null) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   142
                throw new ProviderException
90ce3da70b43 Initial load
duke
parents:
diff changeset
   143
                    ("Crypto provider not installed: " + providerName);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   144
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   145
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   146
        ensureFIPS(cryptoProvider);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   147
        registerAlgorithms(true);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   148
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   149
90ce3da70b43 Initial load
duke
parents:
diff changeset
   150
    private void registerAlgorithms(final boolean isfips) {
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   151
        AccessController.doPrivileged(new PrivilegedAction<Object>() {
14664
e71aa0962e70 8003950: Adds missing Override annotations and removes unnecessary imports in sun.security.ssl
xuelei
parents: 14194
diff changeset
   152
            @Override
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   153
            public Object run() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   154
                doRegister(isfips);
90ce3da70b43 Initial load
duke
parents:
diff changeset
   155
                return null;
90ce3da70b43 Initial load
duke
parents:
diff changeset
   156
            }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   157
        });
90ce3da70b43 Initial load
duke
parents:
diff changeset
   158
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   159
90ce3da70b43 Initial load
duke
parents:
diff changeset
   160
    private void doRegister(boolean isfips) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   161
        if (isfips == false) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   162
            put("KeyFactory.RSA",
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   163
                "sun.security.rsa.RSAKeyFactory$Legacy");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   164
            put("Alg.Alias.KeyFactory.1.2.840.113549.1.1", "RSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   165
            put("Alg.Alias.KeyFactory.OID.1.2.840.113549.1.1", "RSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   166
90ce3da70b43 Initial load
duke
parents:
diff changeset
   167
            put("KeyPairGenerator.RSA",
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   168
                "sun.security.rsa.RSAKeyPairGenerator$Legacy");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   169
            put("Alg.Alias.KeyPairGenerator.1.2.840.113549.1.1", "RSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   170
            put("Alg.Alias.KeyPairGenerator.OID.1.2.840.113549.1.1", "RSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   171
90ce3da70b43 Initial load
duke
parents:
diff changeset
   172
            put("Signature.MD2withRSA",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   173
                "sun.security.rsa.RSASignature$MD2withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   174
            put("Alg.Alias.Signature.1.2.840.113549.1.1.2", "MD2withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   175
            put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.2",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   176
                "MD2withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   177
90ce3da70b43 Initial load
duke
parents:
diff changeset
   178
            put("Signature.MD5withRSA",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   179
                "sun.security.rsa.RSASignature$MD5withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   180
            put("Alg.Alias.Signature.1.2.840.113549.1.1.4", "MD5withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   181
            put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.4",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   182
                "MD5withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   183
90ce3da70b43 Initial load
duke
parents:
diff changeset
   184
            put("Signature.SHA1withRSA",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   185
                "sun.security.rsa.RSASignature$SHA1withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   186
            put("Alg.Alias.Signature.1.2.840.113549.1.1.5", "SHA1withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   187
            put("Alg.Alias.Signature.OID.1.2.840.113549.1.1.5",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   188
                "SHA1withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   189
            put("Alg.Alias.Signature.1.3.14.3.2.29", "SHA1withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   190
            put("Alg.Alias.Signature.OID.1.3.14.3.2.29", "SHA1withRSA");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   191
90ce3da70b43 Initial load
duke
parents:
diff changeset
   192
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   193
        put("Signature.MD5andSHA1withRSA",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   194
            "sun.security.ssl.RSASignature");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   195
90ce3da70b43 Initial load
duke
parents:
diff changeset
   196
        put("KeyManagerFactory.SunX509",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   197
            "sun.security.ssl.KeyManagerFactoryImpl$SunX509");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   198
        put("KeyManagerFactory.NewSunX509",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   199
            "sun.security.ssl.KeyManagerFactoryImpl$X509");
8791
f5106bbf577d 7022855: Export "PKIX" as the standard algorithm name of KeyManagerFactory
xuelei
parents: 7043
diff changeset
   200
        put("Alg.Alias.KeyManagerFactory.PKIX", "NewSunX509");
f5106bbf577d 7022855: Export "PKIX" as the standard algorithm name of KeyManagerFactory
xuelei
parents: 7043
diff changeset
   201
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   202
        put("TrustManagerFactory.SunX509",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   203
            "sun.security.ssl.TrustManagerFactoryImpl$SimpleFactory");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   204
        put("TrustManagerFactory.PKIX",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   205
            "sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   206
        put("Alg.Alias.TrustManagerFactory.SunPKIX", "PKIX");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   207
        put("Alg.Alias.TrustManagerFactory.X509", "PKIX");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   208
        put("Alg.Alias.TrustManagerFactory.X.509", "PKIX");
9246
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   209
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   210
        put("SSLContext.TLSv1",
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   211
            "sun.security.ssl.SSLContextImpl$TLS10Context");
7039
6464c8e62a18 4873188: Support TLS 1.1
xuelei
parents: 5506
diff changeset
   212
        put("SSLContext.TLSv1.1",
9246
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   213
            "sun.security.ssl.SSLContextImpl$TLS11Context");
7043
5e2d1edeb2c7 6916074: Add support for TLS 1.2
xuelei
parents: 7039
diff changeset
   214
        put("SSLContext.TLSv1.2",
9246
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   215
            "sun.security.ssl.SSLContextImpl$TLS12Context");
56542
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   216
        put("SSLContext.TLSv1.3",
56aaa6cb3693 Initial TLSv1.3 Implementation
wetmore
parents: 47216
diff changeset
   217
            "sun.security.ssl.SSLContextImpl$TLS13Context");
22068
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   218
        put("SSLContext.TLS",
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   219
            "sun.security.ssl.SSLContextImpl$TLSContext");
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   220
        if (isfips == false) {
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   221
            put("Alg.Alias.SSLContext.SSL", "TLS");
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   222
            put("Alg.Alias.SSLContext.SSLv3", "TLSv1");
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   223
        }
95a7a3cd72a0 7093640: Enable client-side TLS 1.2 by default
xuelei
parents: 21278
diff changeset
   224
30904
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   225
        put("SSLContext.DTLSv1.0",
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   226
            "sun.security.ssl.SSLContextImpl$DTLS10Context");
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   227
        put("SSLContext.DTLSv1.2",
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   228
            "sun.security.ssl.SSLContextImpl$DTLS12Context");
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   229
        put("SSLContext.DTLS",
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   230
            "sun.security.ssl.SSLContextImpl$DTLSContext");
ec0224270f90 8043758: Datagram Transport Layer Security (DTLS)
xuelei
parents: 30033
diff changeset
   231
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   232
        put("SSLContext.Default",
9246
c459f79af46b 6976117: SSLContext.getInstance("TLSv1.1") returns SSLEngines/SSLSockets without TLSv1.1 enabled
xuelei
parents: 8791
diff changeset
   233
            "sun.security.ssl.SSLContextImpl$DefaultSSLContext");
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   234
90ce3da70b43 Initial load
duke
parents:
diff changeset
   235
        /*
90ce3da70b43 Initial load
duke
parents:
diff changeset
   236
         * KeyStore
90ce3da70b43 Initial load
duke
parents:
diff changeset
   237
         */
90ce3da70b43 Initial load
duke
parents:
diff changeset
   238
        put("KeyStore.PKCS12",
90ce3da70b43 Initial load
duke
parents:
diff changeset
   239
            "sun.security.pkcs12.PKCS12KeyStore");
90ce3da70b43 Initial load
duke
parents:
diff changeset
   240
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   241
39562
672b948cb355 8157712: Deprecate the javax.security.cert and com.sun.net.ssl APIs with forRemoval=true
xuelei
parents: 33991
diff changeset
   242
    // com.sun.net.ssl.internal.ssl.Provider has been deprecated since JDK 9
672b948cb355 8157712: Deprecate the javax.security.cert and com.sun.net.ssl APIs with forRemoval=true
xuelei
parents: 33991
diff changeset
   243
    @SuppressWarnings("deprecation")
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   244
    private void subclassCheck() {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   245
        if (getClass() != com.sun.net.ssl.internal.ssl.Provider.class) {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   246
            throw new AssertionError("Illegal subclass: " + getClass());
90ce3da70b43 Initial load
duke
parents:
diff changeset
   247
        }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   248
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   249
90ce3da70b43 Initial load
duke
parents:
diff changeset
   250
    @Override
44534
a076dffbc2c1 8165641: Deprecate Object.finalize
rriggs
parents: 40416
diff changeset
   251
    @SuppressWarnings("deprecation")
2
90ce3da70b43 Initial load
duke
parents:
diff changeset
   252
    protected final void finalize() throws Throwable {
90ce3da70b43 Initial load
duke
parents:
diff changeset
   253
        // empty
90ce3da70b43 Initial load
duke
parents:
diff changeset
   254
        super.finalize();
90ce3da70b43 Initial load
duke
parents:
diff changeset
   255
    }
90ce3da70b43 Initial load
duke
parents:
diff changeset
   256
90ce3da70b43 Initial load
duke
parents:
diff changeset
   257
}