jdk/src/share/classes/com/sun/crypto/provider/SunJCE.java
changeset 10336 0bb1999251f8
parent 7043 5e2d1edeb2c7
child 12685 8a448b5b9006
equal deleted inserted replaced
10335:3c7eda3ab2f5 10336:0bb1999251f8
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    25 
    25 
    26 package com.sun.crypto.provider;
    26 package com.sun.crypto.provider;
    27 
    27 
    28 import java.security.AccessController;
    28 import java.security.AccessController;
    29 import java.security.Provider;
    29 import java.security.Provider;
    30 import java.security.PrivilegedAction;
       
    31 import java.security.cert.*;
       
    32 import java.net.URL;
       
    33 import java.io.ByteArrayInputStream;
       
    34 import java.security.CodeSource;
       
    35 import java.security.SecureRandom;
    30 import java.security.SecureRandom;
    36 
    31 
    37 
    32 
    38 /**
    33 /**
    39  * The "SunJCE" Cryptographic Service Provider.
    34  * The "SunJCE" Cryptographic Service Provider.
   103         final String BLOCK_MODES128 = BLOCK_MODES +
    98         final String BLOCK_MODES128 = BLOCK_MODES +
   104             "|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128" +
    99             "|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128" +
   105             "|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128";
   100             "|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128";
   106         final String BLOCK_PADS = "NOPADDING|PKCS5PADDING|ISO10126PADDING";
   101         final String BLOCK_PADS = "NOPADDING|PKCS5PADDING|ISO10126PADDING";
   107 
   102 
   108         AccessController.doPrivileged(new java.security.PrivilegedAction() {
   103         AccessController.doPrivileged(
       
   104             new java.security.PrivilegedAction<Object>() {
   109                 public Object run() {
   105                 public Object run() {
   110 
   106 
   111                 /*
   107                     /*
   112                  * Cipher engines
   108                      * Cipher engines
   113                  */
   109                      */
   114                 put("Cipher.RSA", "com.sun.crypto.provider.RSACipher");
   110                     put("Cipher.RSA", "com.sun.crypto.provider.RSACipher");
   115                 put("Cipher.RSA SupportedModes", "ECB");
   111                     put("Cipher.RSA SupportedModes", "ECB");
   116                 put("Cipher.RSA SupportedPaddings",
   112                     put("Cipher.RSA SupportedPaddings",
   117                         "NOPADDING|PKCS1PADDING|OAEPWITHMD5ANDMGF1PADDING"
   113                             "NOPADDING|PKCS1PADDING|OAEPWITHMD5ANDMGF1PADDING"
   118                         + "|OAEPWITHSHA1ANDMGF1PADDING"
   114                             + "|OAEPWITHSHA1ANDMGF1PADDING"
   119                         + "|OAEPWITHSHA-1ANDMGF1PADDING"
   115                             + "|OAEPWITHSHA-1ANDMGF1PADDING"
   120                         + "|OAEPWITHSHA-256ANDMGF1PADDING"
   116                             + "|OAEPWITHSHA-256ANDMGF1PADDING"
   121                         + "|OAEPWITHSHA-384ANDMGF1PADDING"
   117                             + "|OAEPWITHSHA-384ANDMGF1PADDING"
   122                         + "|OAEPWITHSHA-512ANDMGF1PADDING");
   118                             + "|OAEPWITHSHA-512ANDMGF1PADDING");
   123                 put("Cipher.RSA SupportedKeyClasses",
   119                     put("Cipher.RSA SupportedKeyClasses",
   124                         "java.security.interfaces.RSAPublicKey" +
   120                             "java.security.interfaces.RSAPublicKey" +
   125                         "|java.security.interfaces.RSAPrivateKey");
   121                             "|java.security.interfaces.RSAPrivateKey");
   126 
   122 
   127                 put("Cipher.DES", "com.sun.crypto.provider.DESCipher");
   123                     put("Cipher.DES", "com.sun.crypto.provider.DESCipher");
   128                 put("Cipher.DES SupportedModes", BLOCK_MODES);
   124                     put("Cipher.DES SupportedModes", BLOCK_MODES);
   129                 put("Cipher.DES SupportedPaddings", BLOCK_PADS);
   125                     put("Cipher.DES SupportedPaddings", BLOCK_PADS);
   130                 put("Cipher.DES SupportedKeyFormats", "RAW");
   126                     put("Cipher.DES SupportedKeyFormats", "RAW");
   131 
   127 
   132                 put("Cipher.DESede", "com.sun.crypto.provider.DESedeCipher");
   128                     put("Cipher.DESede", "com.sun.crypto.provider.DESedeCipher");
   133                 put("Alg.Alias.Cipher.TripleDES", "DESede");
   129                     put("Alg.Alias.Cipher.TripleDES", "DESede");
   134                 put("Cipher.DESede SupportedModes", BLOCK_MODES);
   130                     put("Cipher.DESede SupportedModes", BLOCK_MODES);
   135                 put("Cipher.DESede SupportedPaddings", BLOCK_PADS);
   131                     put("Cipher.DESede SupportedPaddings", BLOCK_PADS);
   136                 put("Cipher.DESede SupportedKeyFormats", "RAW");
   132                     put("Cipher.DESede SupportedKeyFormats", "RAW");
   137 
   133 
   138                 put("Cipher.DESedeWrap",
   134                     put("Cipher.DESedeWrap",
   139                     "com.sun.crypto.provider.DESedeWrapCipher");
   135                         "com.sun.crypto.provider.DESedeWrapCipher");
   140                 put("Cipher.DESedeWrap SupportedModes", "CBC");
   136                     put("Cipher.DESedeWrap SupportedModes", "CBC");
   141                 put("Cipher.DESedeWrap SupportedPaddings", "NOPADDING");
   137                     put("Cipher.DESedeWrap SupportedPaddings", "NOPADDING");
   142                 put("Cipher.DESedeWrap SupportedKeyFormats", "RAW");
   138                     put("Cipher.DESedeWrap SupportedKeyFormats", "RAW");
   143 
   139 
   144                 put("Cipher.PBEWithMD5AndDES",
   140                     put("Cipher.PBEWithMD5AndDES",
   145                     "com.sun.crypto.provider.PBEWithMD5AndDESCipher");
   141                         "com.sun.crypto.provider.PBEWithMD5AndDESCipher");
   146                 put("Alg.Alias.Cipher.OID."+OID_PKCS5_MD5_DES,
   142                     put("Alg.Alias.Cipher.OID."+OID_PKCS5_MD5_DES,
   147                     "PBEWithMD5AndDES");
   143                         "PBEWithMD5AndDES");
   148                 put("Alg.Alias.Cipher."+OID_PKCS5_MD5_DES,
   144                     put("Alg.Alias.Cipher."+OID_PKCS5_MD5_DES,
   149                     "PBEWithMD5AndDES");
   145                         "PBEWithMD5AndDES");
   150                 put("Cipher.PBEWithMD5AndTripleDES",
   146                     put("Cipher.PBEWithMD5AndTripleDES",
   151                     "com.sun.crypto.provider.PBEWithMD5AndTripleDESCipher");
   147                         "com.sun.crypto.provider.PBEWithMD5AndTripleDESCipher");
   152                 put("Cipher.PBEWithSHA1AndRC2_40",
   148                     put("Cipher.PBEWithSHA1AndRC2_40",
   153                     "com.sun.crypto.provider.PKCS12PBECipherCore$" +
   149                         "com.sun.crypto.provider.PKCS12PBECipherCore$" +
   154                     "PBEWithSHA1AndRC2_40");
   150                         "PBEWithSHA1AndRC2_40");
   155                 put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC2_40,
   151                     put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC2_40,
   156                     "PBEWithSHA1AndRC2_40");
   152                         "PBEWithSHA1AndRC2_40");
   157                 put("Alg.Alias.Cipher." + OID_PKCS12_RC2_40,
   153                     put("Alg.Alias.Cipher." + OID_PKCS12_RC2_40,
   158                     "PBEWithSHA1AndRC2_40");
   154                         "PBEWithSHA1AndRC2_40");
   159                 put("Cipher.PBEWithSHA1AndDESede",
   155                     put("Cipher.PBEWithSHA1AndDESede",
   160                     "com.sun.crypto.provider.PKCS12PBECipherCore$" +
   156                         "com.sun.crypto.provider.PKCS12PBECipherCore$" +
   161                     "PBEWithSHA1AndDESede");
   157                         "PBEWithSHA1AndDESede");
   162                 put("Alg.Alias.Cipher.OID." + OID_PKCS12_DESede,
   158                     put("Alg.Alias.Cipher.OID." + OID_PKCS12_DESede,
   163                     "PBEWithSHA1AndDESede");
   159                         "PBEWithSHA1AndDESede");
   164                 put("Alg.Alias.Cipher." + OID_PKCS12_DESede,
   160                     put("Alg.Alias.Cipher." + OID_PKCS12_DESede,
   165                     "PBEWithSHA1AndDESede");
   161                         "PBEWithSHA1AndDESede");
   166 
   162 
   167                 put("Cipher.Blowfish",
   163                     put("Cipher.Blowfish",
   168                     "com.sun.crypto.provider.BlowfishCipher");
   164                         "com.sun.crypto.provider.BlowfishCipher");
   169                 put("Cipher.Blowfish SupportedModes", BLOCK_MODES);
   165                     put("Cipher.Blowfish SupportedModes", BLOCK_MODES);
   170                 put("Cipher.Blowfish SupportedPaddings", BLOCK_PADS);
   166                     put("Cipher.Blowfish SupportedPaddings", BLOCK_PADS);
   171                 put("Cipher.Blowfish SupportedKeyFormats", "RAW");
   167                     put("Cipher.Blowfish SupportedKeyFormats", "RAW");
   172 
   168 
   173                 put("Cipher.AES", "com.sun.crypto.provider.AESCipher");
   169                     put("Cipher.AES", "com.sun.crypto.provider.AESCipher");
   174                 put("Alg.Alias.Cipher.Rijndael", "AES");
   170                     put("Alg.Alias.Cipher.Rijndael", "AES");
   175                 put("Cipher.AES SupportedModes", BLOCK_MODES128);
   171                     put("Cipher.AES SupportedModes", BLOCK_MODES128);
   176                 put("Cipher.AES SupportedPaddings", BLOCK_PADS);
   172                     put("Cipher.AES SupportedPaddings", BLOCK_PADS);
   177                 put("Cipher.AES SupportedKeyFormats", "RAW");
   173                     put("Cipher.AES SupportedKeyFormats", "RAW");
   178 
   174 
   179                 put("Cipher.AESWrap", "com.sun.crypto.provider.AESWrapCipher");
   175                     put("Cipher.AESWrap", "com.sun.crypto.provider.AESWrapCipher");
   180                 put("Cipher.AESWrap SupportedModes", "ECB");
   176                     put("Cipher.AESWrap SupportedModes", "ECB");
   181                 put("Cipher.AESWrap SupportedPaddings", "NOPADDING");
   177                     put("Cipher.AESWrap SupportedPaddings", "NOPADDING");
   182                 put("Cipher.AESWrap SupportedKeyFormats", "RAW");
   178                     put("Cipher.AESWrap SupportedKeyFormats", "RAW");
   183 
   179 
   184                 put("Cipher.RC2",
   180                     put("Cipher.RC2",
   185                     "com.sun.crypto.provider.RC2Cipher");
   181                         "com.sun.crypto.provider.RC2Cipher");
   186                 put("Cipher.RC2 SupportedModes", BLOCK_MODES);
   182                     put("Cipher.RC2 SupportedModes", BLOCK_MODES);
   187                 put("Cipher.RC2 SupportedPaddings", BLOCK_PADS);
   183                     put("Cipher.RC2 SupportedPaddings", BLOCK_PADS);
   188                 put("Cipher.RC2 SupportedKeyFormats", "RAW");
   184                     put("Cipher.RC2 SupportedKeyFormats", "RAW");
   189 
   185 
   190                 put("Cipher.ARCFOUR",
   186                     put("Cipher.ARCFOUR",
   191                     "com.sun.crypto.provider.ARCFOURCipher");
   187                         "com.sun.crypto.provider.ARCFOURCipher");
   192                 put("Alg.Alias.Cipher.RC4", "ARCFOUR");
   188                     put("Alg.Alias.Cipher.RC4", "ARCFOUR");
   193                 put("Cipher.ARCFOUR SupportedModes", "ECB");
   189                     put("Cipher.ARCFOUR SupportedModes", "ECB");
   194                 put("Cipher.ARCFOUR SupportedPaddings", "NOPADDING");
   190                     put("Cipher.ARCFOUR SupportedPaddings", "NOPADDING");
   195                 put("Cipher.ARCFOUR SupportedKeyFormats", "RAW");
   191                     put("Cipher.ARCFOUR SupportedKeyFormats", "RAW");
   196 
   192 
   197                 /*
   193                     /*
   198                  *  Key(pair) Generator engines
   194                      *  Key(pair) Generator engines
   199                  */
   195                      */
   200                 put("KeyGenerator.DES",
   196                     put("KeyGenerator.DES",
   201                     "com.sun.crypto.provider.DESKeyGenerator");
   197                         "com.sun.crypto.provider.DESKeyGenerator");
   202 
   198 
   203                 put("KeyGenerator.DESede",
   199                     put("KeyGenerator.DESede",
   204                     "com.sun.crypto.provider.DESedeKeyGenerator");
   200                         "com.sun.crypto.provider.DESedeKeyGenerator");
   205                 put("Alg.Alias.KeyGenerator.TripleDES", "DESede");
   201                     put("Alg.Alias.KeyGenerator.TripleDES", "DESede");
   206 
   202 
   207                 put("KeyGenerator.Blowfish",
   203                     put("KeyGenerator.Blowfish",
   208                     "com.sun.crypto.provider.BlowfishKeyGenerator");
   204                         "com.sun.crypto.provider.BlowfishKeyGenerator");
   209 
   205 
   210                 put("KeyGenerator.AES",
   206                     put("KeyGenerator.AES",
   211                     "com.sun.crypto.provider.AESKeyGenerator");
   207                         "com.sun.crypto.provider.AESKeyGenerator");
   212                 put("Alg.Alias.KeyGenerator.Rijndael", "AES");
   208                     put("Alg.Alias.KeyGenerator.Rijndael", "AES");
   213 
   209 
   214                 put("KeyGenerator.RC2",
   210                     put("KeyGenerator.RC2",
   215                     "com.sun.crypto.provider.KeyGeneratorCore$" +
   211                         "com.sun.crypto.provider.KeyGeneratorCore$" +
   216                     "RC2KeyGenerator");
   212                         "RC2KeyGenerator");
   217                 put("KeyGenerator.ARCFOUR",
   213                     put("KeyGenerator.ARCFOUR",
   218                     "com.sun.crypto.provider.KeyGeneratorCore$" +
   214                         "com.sun.crypto.provider.KeyGeneratorCore$" +
   219                     "ARCFOURKeyGenerator");
   215                         "ARCFOURKeyGenerator");
   220                 put("Alg.Alias.KeyGenerator.RC4", "ARCFOUR");
   216                     put("Alg.Alias.KeyGenerator.RC4", "ARCFOUR");
   221 
   217 
   222                 put("KeyGenerator.HmacMD5",
   218                     put("KeyGenerator.HmacMD5",
   223                     "com.sun.crypto.provider.HmacMD5KeyGenerator");
   219                         "com.sun.crypto.provider.HmacMD5KeyGenerator");
   224 
   220 
   225                 put("KeyGenerator.HmacSHA1",
   221                     put("KeyGenerator.HmacSHA1",
   226                     "com.sun.crypto.provider.HmacSHA1KeyGenerator");
   222                         "com.sun.crypto.provider.HmacSHA1KeyGenerator");
   227 
   223 
   228                 put("KeyGenerator.HmacSHA256",
   224                     put("KeyGenerator.HmacSHA256",
   229                     "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA256KG");
   225                         "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA256KG");
   230                 put("KeyGenerator.HmacSHA384",
   226                     put("KeyGenerator.HmacSHA384",
   231                     "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA384KG");
   227                         "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA384KG");
   232                 put("KeyGenerator.HmacSHA512",
   228                     put("KeyGenerator.HmacSHA512",
   233                     "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA512KG");
   229                         "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA512KG");
   234 
   230 
   235                 put("KeyPairGenerator.DiffieHellman",
   231                     put("KeyPairGenerator.DiffieHellman",
   236                     "com.sun.crypto.provider.DHKeyPairGenerator");
   232                         "com.sun.crypto.provider.DHKeyPairGenerator");
   237                 put("Alg.Alias.KeyPairGenerator.DH", "DiffieHellman");
   233                     put("Alg.Alias.KeyPairGenerator.DH", "DiffieHellman");
   238                 put("Alg.Alias.KeyPairGenerator.OID."+OID_PKCS3,
   234                     put("Alg.Alias.KeyPairGenerator.OID."+OID_PKCS3,
   239                     "DiffieHellman");
   235                         "DiffieHellman");
   240                 put("Alg.Alias.KeyPairGenerator."+OID_PKCS3,
   236                     put("Alg.Alias.KeyPairGenerator."+OID_PKCS3,
   241                     "DiffieHellman");
   237                         "DiffieHellman");
   242                 /*
   238                     /*
   243                  * Algorithm parameter generation engines
   239                      * Algorithm parameter generation engines
   244                  */
   240                      */
   245                 put("AlgorithmParameterGenerator.DiffieHellman",
   241                     put("AlgorithmParameterGenerator.DiffieHellman",
   246                     "com.sun.crypto.provider.DHParameterGenerator");
   242                         "com.sun.crypto.provider.DHParameterGenerator");
   247                 put("Alg.Alias.AlgorithmParameterGenerator.DH",
   243                     put("Alg.Alias.AlgorithmParameterGenerator.DH",
   248                     "DiffieHellman");
   244                         "DiffieHellman");
   249                 put("Alg.Alias.AlgorithmParameterGenerator.OID."+OID_PKCS3,
   245                     put("Alg.Alias.AlgorithmParameterGenerator.OID."+OID_PKCS3,
   250                     "DiffieHellman");
   246                         "DiffieHellman");
   251                 put("Alg.Alias.AlgorithmParameterGenerator."+OID_PKCS3,
   247                     put("Alg.Alias.AlgorithmParameterGenerator."+OID_PKCS3,
   252                     "DiffieHellman");
   248                         "DiffieHellman");
   253 
   249 
   254                 /*
   250                     /*
   255                  * Key Agreement engines
   251                      * Key Agreement engines
   256                  */
   252                      */
   257                 put("KeyAgreement.DiffieHellman",
   253                     put("KeyAgreement.DiffieHellman",
   258                     "com.sun.crypto.provider.DHKeyAgreement");
   254                         "com.sun.crypto.provider.DHKeyAgreement");
   259                 put("Alg.Alias.KeyAgreement.DH", "DiffieHellman");
   255                     put("Alg.Alias.KeyAgreement.DH", "DiffieHellman");
   260                 put("Alg.Alias.KeyAgreement.OID."+OID_PKCS3, "DiffieHellman");
   256                     put("Alg.Alias.KeyAgreement.OID."+OID_PKCS3, "DiffieHellman");
   261                 put("Alg.Alias.KeyAgreement."+OID_PKCS3, "DiffieHellman");
   257                     put("Alg.Alias.KeyAgreement."+OID_PKCS3, "DiffieHellman");
   262 
   258 
   263                 put("KeyAgreement.DiffieHellman SupportedKeyClasses",
   259                     put("KeyAgreement.DiffieHellman SupportedKeyClasses",
   264                     "javax.crypto.interfaces.DHPublicKey" +
   260                         "javax.crypto.interfaces.DHPublicKey" +
   265                     "|javax.crypto.interfaces.DHPrivateKey");
   261                         "|javax.crypto.interfaces.DHPrivateKey");
   266 
   262 
   267                 /*
   263                     /*
   268                  * Algorithm Parameter engines
   264                      * Algorithm Parameter engines
   269                  */
   265                      */
   270                 put("AlgorithmParameters.DiffieHellman",
   266                     put("AlgorithmParameters.DiffieHellman",
   271                     "com.sun.crypto.provider.DHParameters");
   267                         "com.sun.crypto.provider.DHParameters");
   272                 put("Alg.Alias.AlgorithmParameters.DH", "DiffieHellman");
   268                     put("Alg.Alias.AlgorithmParameters.DH", "DiffieHellman");
   273                 put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS3,
   269                     put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS3,
   274                     "DiffieHellman");
   270                         "DiffieHellman");
   275                 put("Alg.Alias.AlgorithmParameters."+OID_PKCS3,
   271                     put("Alg.Alias.AlgorithmParameters."+OID_PKCS3,
   276                     "DiffieHellman");
   272                         "DiffieHellman");
   277 
   273 
   278                 put("AlgorithmParameters.DES",
   274                     put("AlgorithmParameters.DES",
   279                     "com.sun.crypto.provider.DESParameters");
   275                         "com.sun.crypto.provider.DESParameters");
   280 
   276 
   281                 put("AlgorithmParameters.DESede",
   277                     put("AlgorithmParameters.DESede",
   282                     "com.sun.crypto.provider.DESedeParameters");
   278                         "com.sun.crypto.provider.DESedeParameters");
   283                 put("Alg.Alias.AlgorithmParameters.TripleDES", "DESede");
   279                     put("Alg.Alias.AlgorithmParameters.TripleDES", "DESede");
   284 
   280 
   285                 put("AlgorithmParameters.PBE",
   281                     put("AlgorithmParameters.PBE",
   286                     "com.sun.crypto.provider.PBEParameters");
   282                         "com.sun.crypto.provider.PBEParameters");
   287 
   283 
   288                 put("AlgorithmParameters.PBEWithMD5AndDES",
   284                     put("AlgorithmParameters.PBEWithMD5AndDES",
   289                     "com.sun.crypto.provider.PBEParameters");
   285                         "com.sun.crypto.provider.PBEParameters");
   290                 put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS5_MD5_DES,
   286                     put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS5_MD5_DES,
   291                     "PBEWithMD5AndDES");
   287                         "PBEWithMD5AndDES");
   292                 put("Alg.Alias.AlgorithmParameters."+OID_PKCS5_MD5_DES,
   288                     put("Alg.Alias.AlgorithmParameters."+OID_PKCS5_MD5_DES,
   293                     "PBEWithMD5AndDES");
   289                         "PBEWithMD5AndDES");
   294 
   290 
   295                 put("AlgorithmParameters.PBEWithMD5AndTripleDES",
   291                     put("AlgorithmParameters.PBEWithMD5AndTripleDES",
   296                     "com.sun.crypto.provider.PBEParameters");
   292                         "com.sun.crypto.provider.PBEParameters");
   297 
   293 
   298                 put("AlgorithmParameters.PBEWithSHA1AndDESede",
   294                     put("AlgorithmParameters.PBEWithSHA1AndDESede",
   299                     "com.sun.crypto.provider.PBEParameters");
   295                         "com.sun.crypto.provider.PBEParameters");
   300                 put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_DESede,
   296                     put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_DESede,
   301                     "PBEWithSHA1AndDESede");
   297                         "PBEWithSHA1AndDESede");
   302                 put("Alg.Alias.AlgorithmParameters."+OID_PKCS12_DESede,
   298                     put("Alg.Alias.AlgorithmParameters."+OID_PKCS12_DESede,
   303                     "PBEWithSHA1AndDESede");
   299                         "PBEWithSHA1AndDESede");
   304 
   300 
   305                 put("AlgorithmParameters.PBEWithSHA1AndRC2_40",
   301                     put("AlgorithmParameters.PBEWithSHA1AndRC2_40",
   306                     "com.sun.crypto.provider.PBEParameters");
   302                         "com.sun.crypto.provider.PBEParameters");
   307                 put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC2_40,
   303                     put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC2_40,
   308                     "PBEWithSHA1AndRC2_40");
   304                         "PBEWithSHA1AndRC2_40");
   309                 put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC2_40,
   305                     put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC2_40,
   310                     "PBEWithSHA1AndRC2_40");
   306                         "PBEWithSHA1AndRC2_40");
   311 
   307 
   312                 put("AlgorithmParameters.Blowfish",
   308                     put("AlgorithmParameters.Blowfish",
   313                     "com.sun.crypto.provider.BlowfishParameters");
   309                         "com.sun.crypto.provider.BlowfishParameters");
   314 
   310 
   315                 put("AlgorithmParameters.AES",
   311                     put("AlgorithmParameters.AES",
   316                     "com.sun.crypto.provider.AESParameters");
   312                         "com.sun.crypto.provider.AESParameters");
   317                 put("Alg.Alias.AlgorithmParameters.Rijndael", "AES");
   313                     put("Alg.Alias.AlgorithmParameters.Rijndael", "AES");
   318 
   314 
   319 
   315 
   320                 put("AlgorithmParameters.RC2",
   316                     put("AlgorithmParameters.RC2",
   321                     "com.sun.crypto.provider.RC2Parameters");
   317                         "com.sun.crypto.provider.RC2Parameters");
   322 
   318 
   323                 put("AlgorithmParameters.OAEP",
   319                     put("AlgorithmParameters.OAEP",
   324                     "com.sun.crypto.provider.OAEPParameters");
   320                         "com.sun.crypto.provider.OAEPParameters");
   325 
   321 
   326 
   322 
   327                 /*
   323                     /*
   328                  * Key factories
   324                      * Key factories
   329                  */
   325                      */
   330                 put("KeyFactory.DiffieHellman",
   326                     put("KeyFactory.DiffieHellman",
   331                     "com.sun.crypto.provider.DHKeyFactory");
   327                         "com.sun.crypto.provider.DHKeyFactory");
   332                 put("Alg.Alias.KeyFactory.DH", "DiffieHellman");
   328                     put("Alg.Alias.KeyFactory.DH", "DiffieHellman");
   333                 put("Alg.Alias.KeyFactory.OID."+OID_PKCS3,
   329                     put("Alg.Alias.KeyFactory.OID."+OID_PKCS3,
   334                     "DiffieHellman");
   330                         "DiffieHellman");
   335                 put("Alg.Alias.KeyFactory."+OID_PKCS3, "DiffieHellman");
   331                     put("Alg.Alias.KeyFactory."+OID_PKCS3, "DiffieHellman");
   336                 /*
   332                     /*
   337                  * Secret-key factories
   333                      * Secret-key factories
   338                  */
   334                      */
   339                 put("SecretKeyFactory.DES",
   335                     put("SecretKeyFactory.DES",
   340                     "com.sun.crypto.provider.DESKeyFactory");
   336                         "com.sun.crypto.provider.DESKeyFactory");
   341 
   337 
   342                 put("SecretKeyFactory.DESede",
   338                     put("SecretKeyFactory.DESede",
   343                     "com.sun.crypto.provider.DESedeKeyFactory");
   339                         "com.sun.crypto.provider.DESedeKeyFactory");
   344                 put("Alg.Alias.SecretKeyFactory.TripleDES", "DESede");
   340                     put("Alg.Alias.SecretKeyFactory.TripleDES", "DESede");
   345 
   341 
   346                 put("SecretKeyFactory.PBEWithMD5AndDES",
   342                     put("SecretKeyFactory.PBEWithMD5AndDES",
   347                     "com.sun.crypto.provider.PBEKeyFactory$PBEWithMD5AndDES"
   343                         "com.sun.crypto.provider.PBEKeyFactory$PBEWithMD5AndDES"
   348                     );
   344                         );
   349                 put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS5_MD5_DES,
   345                     put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS5_MD5_DES,
   350                     "PBEWithMD5AndDES");
   346                         "PBEWithMD5AndDES");
   351                 put("Alg.Alias.SecretKeyFactory."+OID_PKCS5_MD5_DES,
   347                     put("Alg.Alias.SecretKeyFactory."+OID_PKCS5_MD5_DES,
   352                     "PBEWithMD5AndDES");
   348                         "PBEWithMD5AndDES");
   353 
   349 
   354                 put("Alg.Alias.SecretKeyFactory.PBE",
   350                     put("Alg.Alias.SecretKeyFactory.PBE",
   355                     "PBEWithMD5AndDES");
   351                         "PBEWithMD5AndDES");
   356 
   352 
   357                 /*
   353                     /*
   358                  * Internal in-house crypto algorithm used for
   354                      * Internal in-house crypto algorithm used for
   359                  * the JCEKS keystore type.  Since this was developed
   355                      * the JCEKS keystore type.  Since this was developed
   360                  * internally, there isn't an OID corresponding to this
   356                      * internally, there isn't an OID corresponding to this
   361                  * algorithm.
   357                      * algorithm.
   362                  */
   358                      */
   363                 put("SecretKeyFactory.PBEWithMD5AndTripleDES",
   359                     put("SecretKeyFactory.PBEWithMD5AndTripleDES",
   364                     "com.sun.crypto.provider.PBEKeyFactory$" +
   360                         "com.sun.crypto.provider.PBEKeyFactory$" +
   365                     "PBEWithMD5AndTripleDES"
   361                         "PBEWithMD5AndTripleDES"
   366                     );
   362                         );
   367 
   363 
   368                 put("SecretKeyFactory.PBEWithSHA1AndDESede",
   364                     put("SecretKeyFactory.PBEWithSHA1AndDESede",
   369                     "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndDESede"
   365                         "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndDESede"
   370                     );
   366                         );
   371                 put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS12_DESede,
   367                     put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS12_DESede,
   372                     "PBEWithSHA1AndDESede");
   368                         "PBEWithSHA1AndDESede");
   373                 put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_DESede,
   369                     put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_DESede,
   374                     "PBEWithSHA1AndDESede");
   370                         "PBEWithSHA1AndDESede");
   375 
   371 
   376                 put("SecretKeyFactory.PBEWithSHA1AndRC2_40",
   372                     put("SecretKeyFactory.PBEWithSHA1AndRC2_40",
   377                     "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_40"
   373                         "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_40"
   378                     );
   374                         );
   379                 put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC2_40,
   375                     put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC2_40,
   380                     "PBEWithSHA1AndRC2_40");
   376                         "PBEWithSHA1AndRC2_40");
   381                 put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC2_40,
   377                     put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC2_40,
   382                     "PBEWithSHA1AndRC2_40");
   378                         "PBEWithSHA1AndRC2_40");
   383 
   379 
   384                 put("SecretKeyFactory.PBKDF2WithHmacSHA1",
   380                     put("SecretKeyFactory.PBKDF2WithHmacSHA1",
   385                     "com.sun.crypto.provider.PBKDF2HmacSHA1Factory");
   381                         "com.sun.crypto.provider.PBKDF2HmacSHA1Factory");
   386                 put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS5_PBKDF2,
   382                     put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS5_PBKDF2,
   387                     "PBKDF2WithHmacSHA1");
   383                         "PBKDF2WithHmacSHA1");
   388                 put("Alg.Alias.SecretKeyFactory." + OID_PKCS5_PBKDF2,
   384                     put("Alg.Alias.SecretKeyFactory." + OID_PKCS5_PBKDF2,
   389                     "PBKDF2WithHmacSHA1");
   385                         "PBKDF2WithHmacSHA1");
   390 
   386 
   391                 /*
   387                     /*
   392                  * MAC
   388                      * MAC
   393                  */
   389                      */
   394                 put("Mac.HmacMD5", "com.sun.crypto.provider.HmacMD5");
   390                     put("Mac.HmacMD5", "com.sun.crypto.provider.HmacMD5");
   395                 put("Mac.HmacSHA1", "com.sun.crypto.provider.HmacSHA1");
   391                     put("Mac.HmacSHA1", "com.sun.crypto.provider.HmacSHA1");
   396                 put("Mac.HmacSHA256",
   392                     put("Mac.HmacSHA256",
   397                     "com.sun.crypto.provider.HmacCore$HmacSHA256");
   393                         "com.sun.crypto.provider.HmacCore$HmacSHA256");
   398                 put("Mac.HmacSHA384",
   394                     put("Mac.HmacSHA384",
   399                     "com.sun.crypto.provider.HmacCore$HmacSHA384");
   395                         "com.sun.crypto.provider.HmacCore$HmacSHA384");
   400                 put("Mac.HmacSHA512",
   396                     put("Mac.HmacSHA512",
   401                     "com.sun.crypto.provider.HmacCore$HmacSHA512");
   397                         "com.sun.crypto.provider.HmacCore$HmacSHA512");
   402                 put("Mac.HmacPBESHA1",
   398                     put("Mac.HmacPBESHA1",
   403                     "com.sun.crypto.provider.HmacPKCS12PBESHA1");
   399                         "com.sun.crypto.provider.HmacPKCS12PBESHA1");
   404 
   400 
   405                 put("Mac.SslMacMD5",
   401                     put("Mac.SslMacMD5",
   406                     "com.sun.crypto.provider.SslMacCore$SslMacMD5");
   402                         "com.sun.crypto.provider.SslMacCore$SslMacMD5");
   407                 put("Mac.SslMacSHA1",
   403                     put("Mac.SslMacSHA1",
   408                     "com.sun.crypto.provider.SslMacCore$SslMacSHA1");
   404                         "com.sun.crypto.provider.SslMacCore$SslMacSHA1");
   409 
   405 
   410                 put("Mac.HmacMD5 SupportedKeyFormats", "RAW");
   406                     put("Mac.HmacMD5 SupportedKeyFormats", "RAW");
   411                 put("Mac.HmacSHA1 SupportedKeyFormats", "RAW");
   407                     put("Mac.HmacSHA1 SupportedKeyFormats", "RAW");
   412                 put("Mac.HmacSHA256 SupportedKeyFormats", "RAW");
   408                     put("Mac.HmacSHA256 SupportedKeyFormats", "RAW");
   413                 put("Mac.HmacSHA384 SupportedKeyFormats", "RAW");
   409                     put("Mac.HmacSHA384 SupportedKeyFormats", "RAW");
   414                 put("Mac.HmacSHA512 SupportedKeyFormats", "RAW");
   410                     put("Mac.HmacSHA512 SupportedKeyFormats", "RAW");
   415                 put("Mac.HmacPBESHA1 SupportedKeyFormats", "RAW");
   411                     put("Mac.HmacPBESHA1 SupportedKeyFormats", "RAW");
   416                 put("Mac.SslMacMD5 SupportedKeyFormats", "RAW");
   412                     put("Mac.SslMacMD5 SupportedKeyFormats", "RAW");
   417                 put("Mac.SslMacSHA1 SupportedKeyFormats", "RAW");
   413                     put("Mac.SslMacSHA1 SupportedKeyFormats", "RAW");
   418 
   414 
   419                 /*
   415                     /*
   420                  * KeyStore
   416                      * KeyStore
   421                  */
   417                      */
   422                 put("KeyStore.JCEKS", "com.sun.crypto.provider.JceKeyStore");
   418                     put("KeyStore.JCEKS", "com.sun.crypto.provider.JceKeyStore");
   423 
   419 
   424                 /*
   420                     /*
   425                  * SSL/TLS mechanisms
   421                      * SSL/TLS mechanisms
   426                  *
   422                      *
   427                  * These are strictly internal implementations and may
   423                      * These are strictly internal implementations and may
   428                  * be changed at any time.  These names were chosen
   424                      * be changed at any time.  These names were chosen
   429                  * because PKCS11/SunPKCS11 does not yet have TLS1.2
   425                      * because PKCS11/SunPKCS11 does not yet have TLS1.2
   430                  * mechanisms, and it will cause calls to come here.
   426                      * mechanisms, and it will cause calls to come here.
   431                  */
   427                      */
   432                 put("KeyGenerator.SunTlsPrf",
   428                     put("KeyGenerator.SunTlsPrf",
   433                         "com.sun.crypto.provider.TlsPrfGenerator$V10");
   429                             "com.sun.crypto.provider.TlsPrfGenerator$V10");
   434                 put("KeyGenerator.SunTls12Prf",
   430                     put("KeyGenerator.SunTls12Prf",
   435                         "com.sun.crypto.provider.TlsPrfGenerator$V12");
   431                             "com.sun.crypto.provider.TlsPrfGenerator$V12");
   436 
   432 
   437                 put("KeyGenerator.SunTlsMasterSecret",
   433                     put("KeyGenerator.SunTlsMasterSecret",
   438                     "com.sun.crypto.provider.TlsMasterSecretGenerator");
   434                         "com.sun.crypto.provider.TlsMasterSecretGenerator");
   439                 put("Alg.Alias.KeyGenerator.SunTls12MasterSecret",
   435                     put("Alg.Alias.KeyGenerator.SunTls12MasterSecret",
   440                     "SunTlsMasterSecret");
   436                         "SunTlsMasterSecret");
   441 
   437 
   442                 put("KeyGenerator.SunTlsKeyMaterial",
   438                     put("KeyGenerator.SunTlsKeyMaterial",
   443                     "com.sun.crypto.provider.TlsKeyMaterialGenerator");
   439                         "com.sun.crypto.provider.TlsKeyMaterialGenerator");
   444                 put("Alg.Alias.KeyGenerator.SunTls12KeyMaterial",
   440                     put("Alg.Alias.KeyGenerator.SunTls12KeyMaterial",
   445                     "SunTlsKeyMaterial");
   441                         "SunTlsKeyMaterial");
   446 
   442 
   447                 put("KeyGenerator.SunTlsRsaPremasterSecret",
   443                     put("KeyGenerator.SunTlsRsaPremasterSecret",
   448                     "com.sun.crypto.provider.TlsRsaPremasterSecretGenerator");
   444                         "com.sun.crypto.provider.TlsRsaPremasterSecretGenerator");
   449                 put("Alg.Alias.KeyGenerator.SunTls12RsaPremasterSecret",
   445                     put("Alg.Alias.KeyGenerator.SunTls12RsaPremasterSecret",
   450                     "SunTlsRsaPremasterSecret");
   446                         "SunTlsRsaPremasterSecret");
   451 
   447 
   452                 return null;
   448                     return null;
   453             }
   449                 }
   454         });
   450             });
   455     }
   451     }
   456 }
   452 }