| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
 | 
 | 
package com.sun.crypto.provider;  | 
 | 
 | 
 | 
import java.security.AccessController;  | 
 | 
import java.security.Provider;  | 
 | 
import java.security.SecureRandom;  | 
 | 
 | 
 | 
 | 
 | 
/**  | 
 | 
 * The "SunJCE" Cryptographic Service Provider.  | 
 | 
 *  | 
 | 
 * @author Jan Luehe  | 
 | 
 * @author Sharon Liu  | 
 | 
 */  | 
 | 
 | 
 | 
/**  | 
 | 
 * Defines the "SunJCE" provider.  | 
 | 
 *  | 
 | 
 * Supported algorithms and their names:  | 
 | 
 *  | 
 | 
 * - RSA encryption (PKCS#1 v1.5 and raw)  | 
 | 
 *  | 
 | 
 * - DES  | 
 | 
 *  | 
 | 
 * - DES-EDE  | 
 | 
 *  | 
 | 
 * - AES  | 
 | 
 *  | 
 | 
 * - Blowfish  | 
 | 
 *  | 
 | 
 * - RC2  | 
 | 
 *  | 
 | 
 * - ARCFOUR (RC4 compatible)  | 
 | 
 *  | 
 | 
 * - Cipher modes ECB, CBC, CFB, OFB, PCBC, CTR, and CTS for all block ciphers  | 
 | 
 *   and mode GCM for AES cipher  | 
 | 
 *  | 
 | 
 * - Cipher padding ISO10126Padding for non-PKCS#5 block ciphers and  | 
 | 
 *   NoPadding and PKCS5Padding for all block ciphers  | 
 | 
 *  | 
 | 
 * - Password-based Encryption (PBE)  | 
 | 
 *  | 
 | 
 * - Diffie-Hellman Key Agreement  | 
 | 
 *  | 
 | 
 * - HMAC-MD5, HMAC-SHA1, HMAC-SHA-224, HMAC-SHA-256, HMAC-SHA-384, HMAC-SHA-512  | 
 | 
 *  | 
 | 
 */  | 
 | 
 | 
 | 
public final class SunJCE extends Provider { | 
 | 
 | 
 | 
    private static final long serialVersionUID = 6812507587804302833L;  | 
 | 
 | 
 | 
    private static final String info = "SunJCE Provider " +  | 
 | 
    "(implements RSA, DES, Triple DES, AES, Blowfish, ARCFOUR, RC2, PBE, "  | 
 | 
    + "Diffie-Hellman, HMAC)";  | 
 | 
 | 
 | 
    private static final String OID_PKCS12_RC4_128 = "1.2.840.113549.1.12.1.1";  | 
 | 
    private static final String OID_PKCS12_RC4_40 = "1.2.840.113549.1.12.1.2";  | 
 | 
    private static final String OID_PKCS12_DESede = "1.2.840.113549.1.12.1.3";  | 
 | 
    private static final String OID_PKCS12_RC2_128 = "1.2.840.113549.1.12.1.5";  | 
 | 
    private static final String OID_PKCS12_RC2_40 = "1.2.840.113549.1.12.1.6";  | 
 | 
    private static final String OID_PKCS5_MD5_DES = "1.2.840.113549.1.5.3";  | 
 | 
    private static final String OID_PKCS5_PBKDF2 = "1.2.840.113549.1.5.12";  | 
 | 
    private static final String OID_PKCS5_PBES2 = "1.2.840.113549.1.5.13";  | 
 | 
    private static final String OID_PKCS3 = "1.2.840.113549.1.3.1";  | 
 | 
 | 
 | 
      | 
 | 
    static final boolean debug = false;  | 
 | 
 | 
 | 
    // Instance of this provider, so we don't have to call the provider list  | 
 | 
      | 
 | 
    private static volatile SunJCE instance = null;  | 
 | 
 | 
 | 
    // lazy initialize SecureRandom to avoid potential recursion if Sun  | 
 | 
      | 
 | 
    private static class SecureRandomHolder { | 
 | 
        static final SecureRandom RANDOM = new SecureRandom();  | 
 | 
    }  | 
 | 
    static SecureRandom getRandom() { return SecureRandomHolder.RANDOM; } | 
 | 
 | 
 | 
    public SunJCE() { | 
 | 
          | 
 | 
        super("SunJCE", 1.8d, info); | 
 | 
 | 
 | 
        final String BLOCK_MODES = "ECB|CBC|PCBC|CTR|CTS|CFB|OFB" +  | 
 | 
            "|CFB8|CFB16|CFB24|CFB32|CFB40|CFB48|CFB56|CFB64" +  | 
 | 
            "|OFB8|OFB16|OFB24|OFB32|OFB40|OFB48|OFB56|OFB64";  | 
 | 
        final String BLOCK_MODES128 = BLOCK_MODES +  | 
 | 
            "|GCM|CFB72|CFB80|CFB88|CFB96|CFB104|CFB112|CFB120|CFB128" +  | 
 | 
            "|OFB72|OFB80|OFB88|OFB96|OFB104|OFB112|OFB120|OFB128";  | 
 | 
        final String BLOCK_PADS = "NOPADDING|PKCS5PADDING|ISO10126PADDING";  | 
 | 
 | 
 | 
        AccessController.doPrivileged(  | 
 | 
            new java.security.PrivilegedAction<Object>() { | 
 | 
                public Object run() { | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("Cipher.RSA", "com.sun.crypto.provider.RSACipher"); | 
 | 
                    put("Cipher.RSA SupportedModes", "ECB"); | 
 | 
                    put("Cipher.RSA SupportedPaddings", | 
 | 
                            "NOPADDING|PKCS1PADDING|OAEPPADDING"  | 
 | 
                            + "|OAEPWITHMD5ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA1ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-1ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-224ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-256ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-384ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-512ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-512/224ANDMGF1PADDING"  | 
 | 
                            + "|OAEPWITHSHA-512/256ANDMGF1PADDING");  | 
 | 
                    put("Cipher.RSA SupportedKeyClasses", | 
 | 
                            "java.security.interfaces.RSAPublicKey" +  | 
 | 
                            "|java.security.interfaces.RSAPrivateKey");  | 
 | 
 | 
 | 
                    put("Cipher.DES", "com.sun.crypto.provider.DESCipher"); | 
 | 
                    put("Cipher.DES SupportedModes", BLOCK_MODES); | 
 | 
                    put("Cipher.DES SupportedPaddings", BLOCK_PADS); | 
 | 
                    put("Cipher.DES SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.DESede", "com.sun.crypto.provider.DESedeCipher"); | 
 | 
                    put("Alg.Alias.Cipher.TripleDES", "DESede"); | 
 | 
                    put("Cipher.DESede SupportedModes", BLOCK_MODES); | 
 | 
                    put("Cipher.DESede SupportedPaddings", BLOCK_PADS); | 
 | 
                    put("Cipher.DESede SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.DESedeWrap", | 
 | 
                        "com.sun.crypto.provider.DESedeWrapCipher");  | 
 | 
                    put("Cipher.DESedeWrap SupportedModes", "CBC"); | 
 | 
                    put("Cipher.DESedeWrap SupportedPaddings", "NOPADDING"); | 
 | 
                    put("Cipher.DESedeWrap SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    // PBES1  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithMD5AndDES", | 
 | 
                        "com.sun.crypto.provider.PBEWithMD5AndDESCipher");  | 
 | 
                    put("Alg.Alias.Cipher.OID."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
                    put("Alg.Alias.Cipher."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithMD5AndTripleDES", | 
 | 
                        "com.sun.crypto.provider.PBEWithMD5AndTripleDESCipher");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithSHA1AndDESede", | 
 | 
                        "com.sun.crypto.provider.PKCS12PBECipherCore$" +  | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
                    put("Alg.Alias.Cipher.OID." + OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
                    put("Alg.Alias.Cipher." + OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithSHA1AndRC2_40", | 
 | 
                        "com.sun.crypto.provider.PKCS12PBECipherCore$" +  | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
                    put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
                    put("Alg.Alias.Cipher." + OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithSHA1AndRC2_128", | 
 | 
                        "com.sun.crypto.provider.PKCS12PBECipherCore$" +  | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
                    put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
                    put("Alg.Alias.Cipher." + OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithSHA1AndRC4_40", | 
 | 
                        "com.sun.crypto.provider.PKCS12PBECipherCore$" +  | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
                    put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
                    put("Alg.Alias.Cipher." + OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithSHA1AndRC4_128", | 
 | 
                        "com.sun.crypto.provider.PKCS12PBECipherCore$" +  | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
                    put("Alg.Alias.Cipher.OID." + OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
                    put("Alg.Alias.Cipher." + OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
 | 
 | 
                    //PBES2  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA1AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA224AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA224AndAES_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA256AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA256AndAES_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA384AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA384AndAES_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA512AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA512AndAES_128");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA1AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_256");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA224AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA224AndAES_256");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA256AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA256AndAES_256");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA384AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA384AndAES_256");  | 
 | 
 | 
 | 
                    put("Cipher.PBEWithHmacSHA512AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Core$" +  | 
 | 
                            "HmacSHA512AndAES_256");  | 
 | 
 | 
 | 
                    put("Cipher.Blowfish", | 
 | 
                        "com.sun.crypto.provider.BlowfishCipher");  | 
 | 
                    put("Cipher.Blowfish SupportedModes", BLOCK_MODES); | 
 | 
                    put("Cipher.Blowfish SupportedPaddings", BLOCK_PADS); | 
 | 
                    put("Cipher.Blowfish SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.AES", "com.sun.crypto.provider.AESCipher$General"); | 
 | 
                    put("Alg.Alias.Cipher.Rijndael", "AES"); | 
 | 
                    put("Cipher.AES SupportedModes", BLOCK_MODES128); | 
 | 
                    put("Cipher.AES SupportedPaddings", BLOCK_PADS); | 
 | 
                    put("Cipher.AES SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.AES_128/ECB/NoPadding", "com.sun.crypto.provider.AESCipher$AES128_ECB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.1", "AES_128/ECB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.1", "AES_128/ECB/NoPadding"); | 
 | 
                    put("Cipher.AES_128/CBC/NoPadding", "com.sun.crypto.provider.AESCipher$AES128_CBC_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.2", "AES_128/CBC/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.2", "AES_128/CBC/NoPadding"); | 
 | 
                    put("Cipher.AES_128/OFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES128_OFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.3", "AES_128/OFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.3", "AES_128/OFB/NoPadding"); | 
 | 
                    put("Cipher.AES_128/CFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES128_CFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.4", "AES_128/CFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.4", "AES_128/CFB/NoPadding"); | 
 | 
                    put("Cipher.AES_128/GCM/NoPadding", "com.sun.crypto.provider.AESCipher$AES128_GCM_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.6", "AES_128/GCM/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.6", "AES_128/GCM/NoPadding"); | 
 | 
 | 
 | 
                    put("Cipher.AES_192/ECB/NoPadding", "com.sun.crypto.provider.AESCipher$AES192_ECB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.21", "AES_192/ECB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.21", "AES_192/ECB/NoPadding"); | 
 | 
                    put("Cipher.AES_192/CBC/NoPadding", "com.sun.crypto.provider.AESCipher$AES192_CBC_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.22", "AES_192/CBC/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.22", "AES_192/CBC/NoPadding"); | 
 | 
                    put("Cipher.AES_192/OFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES192_OFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.23", "AES_192/OFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.23", "AES_192/OFB/NoPadding"); | 
 | 
                    put("Cipher.AES_192/CFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES192_CFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.24", "AES_192/CFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.24", "AES_192/CFB/NoPadding"); | 
 | 
                    put("Cipher.AES_192/GCM/NoPadding", "com.sun.crypto.provider.AESCipher$AES192_GCM_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.26", "AES_192/GCM/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.26", "AES_192/GCM/NoPadding"); | 
 | 
 | 
 | 
                    put("Cipher.AES_256/ECB/NoPadding", "com.sun.crypto.provider.AESCipher$AES256_ECB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.41", "AES_256/ECB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.41", "AES_256/ECB/NoPadding"); | 
 | 
                    put("Cipher.AES_256/CBC/NoPadding", "com.sun.crypto.provider.AESCipher$AES256_CBC_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.42", "AES_256/CBC/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.42", "AES_256/CBC/NoPadding"); | 
 | 
                    put("Cipher.AES_256/OFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES256_OFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.43", "AES_256/OFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.43", "AES_256/OFB/NoPadding"); | 
 | 
                    put("Cipher.AES_256/CFB/NoPadding", "com.sun.crypto.provider.AESCipher$AES256_CFB_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.44", "AES_256/CFB/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.44", "AES_256/CFB/NoPadding"); | 
 | 
                    put("Cipher.AES_256/GCM/NoPadding", "com.sun.crypto.provider.AESCipher$AES256_GCM_NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.46", "AES_256/GCM/NoPadding"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.46", "AES_256/GCM/NoPadding"); | 
 | 
 | 
 | 
                    put("Cipher.AESWrap", "com.sun.crypto.provider.AESWrapCipher$General"); | 
 | 
                    put("Cipher.AESWrap SupportedModes", "ECB"); | 
 | 
                    put("Cipher.AESWrap SupportedPaddings", "NOPADDING"); | 
 | 
                    put("Cipher.AESWrap SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.AESWrap_128", "com.sun.crypto.provider.AESWrapCipher$AES128"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.5", "AESWrap_128"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.5", "AESWrap_128"); | 
 | 
                    put("Cipher.AESWrap_192", "com.sun.crypto.provider.AESWrapCipher$AES192"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.25", "AESWrap_192"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.25", "AESWrap_192"); | 
 | 
                    put("Cipher.AESWrap_256", "com.sun.crypto.provider.AESWrapCipher$AES256"); | 
 | 
                    put("Alg.Alias.Cipher.2.16.840.1.101.3.4.1.45", "AESWrap_256"); | 
 | 
                    put("Alg.Alias.Cipher.OID.2.16.840.1.101.3.4.1.45", "AESWrap_256"); | 
 | 
 | 
 | 
                    put("Cipher.RC2", | 
 | 
                        "com.sun.crypto.provider.RC2Cipher");  | 
 | 
                    put("Cipher.RC2 SupportedModes", BLOCK_MODES); | 
 | 
                    put("Cipher.RC2 SupportedPaddings", BLOCK_PADS); | 
 | 
                    put("Cipher.RC2 SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                    put("Cipher.ARCFOUR", | 
 | 
                        "com.sun.crypto.provider.ARCFOURCipher");  | 
 | 
                    put("Alg.Alias.Cipher.RC4", "ARCFOUR"); | 
 | 
                    put("Cipher.ARCFOUR SupportedModes", "ECB"); | 
 | 
                    put("Cipher.ARCFOUR SupportedPaddings", "NOPADDING"); | 
 | 
                    put("Cipher.ARCFOUR SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("KeyGenerator.DES", | 
 | 
                        "com.sun.crypto.provider.DESKeyGenerator");  | 
 | 
 | 
 | 
                    put("KeyGenerator.DESede", | 
 | 
                        "com.sun.crypto.provider.DESedeKeyGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.TripleDES", "DESede"); | 
 | 
 | 
 | 
                    put("KeyGenerator.Blowfish", | 
 | 
                        "com.sun.crypto.provider.BlowfishKeyGenerator");  | 
 | 
 | 
 | 
                    put("KeyGenerator.AES", | 
 | 
                        "com.sun.crypto.provider.AESKeyGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.Rijndael", "AES"); | 
 | 
 | 
 | 
                    put("KeyGenerator.RC2", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$" +  | 
 | 
                        "RC2KeyGenerator");  | 
 | 
                    put("KeyGenerator.ARCFOUR", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$" +  | 
 | 
                        "ARCFOURKeyGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.RC4", "ARCFOUR"); | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacMD5", | 
 | 
                        "com.sun.crypto.provider.HmacMD5KeyGenerator");  | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacSHA1", | 
 | 
                        "com.sun.crypto.provider.HmacSHA1KeyGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.OID.1.2.840.113549.2.7", "HmacSHA1"); | 
 | 
                    put("Alg.Alias.KeyGenerator.1.2.840.113549.2.7", "HmacSHA1"); | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacSHA224", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA2KG$SHA224");  | 
 | 
                    put("Alg.Alias.KeyGenerator.OID.1.2.840.113549.2.8", "HmacSHA224"); | 
 | 
                    put("Alg.Alias.KeyGenerator.1.2.840.113549.2.8", "HmacSHA224"); | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacSHA256", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA2KG$SHA256");  | 
 | 
                    put("Alg.Alias.KeyGenerator.OID.1.2.840.113549.2.9", "HmacSHA256"); | 
 | 
                    put("Alg.Alias.KeyGenerator.1.2.840.113549.2.9", "HmacSHA256"); | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacSHA384", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA2KG$SHA384");  | 
 | 
                    put("Alg.Alias.KeyGenerator.OID.1.2.840.113549.2.10", "HmacSHA384"); | 
 | 
                    put("Alg.Alias.KeyGenerator.1.2.840.113549.2.10", "HmacSHA384"); | 
 | 
 | 
 | 
                    put("KeyGenerator.HmacSHA512", | 
 | 
                        "com.sun.crypto.provider.KeyGeneratorCore$HmacSHA2KG$SHA512");  | 
 | 
                    put("Alg.Alias.KeyGenerator.OID.1.2.840.113549.2.11", "HmacSHA512"); | 
 | 
                    put("Alg.Alias.KeyGenerator.1.2.840.113549.2.11", "HmacSHA512"); | 
 | 
 | 
 | 
                    put("KeyPairGenerator.DiffieHellman", | 
 | 
                        "com.sun.crypto.provider.DHKeyPairGenerator");  | 
 | 
                    put("Alg.Alias.KeyPairGenerator.DH", "DiffieHellman"); | 
 | 
                    put("Alg.Alias.KeyPairGenerator.OID."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
                    put("Alg.Alias.KeyPairGenerator."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("AlgorithmParameterGenerator.DiffieHellman", | 
 | 
                        "com.sun.crypto.provider.DHParameterGenerator");  | 
 | 
                    put("Alg.Alias.AlgorithmParameterGenerator.DH", | 
 | 
                        "DiffieHellman");  | 
 | 
                    put("Alg.Alias.AlgorithmParameterGenerator.OID."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
                    put("Alg.Alias.AlgorithmParameterGenerator."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("KeyAgreement.DiffieHellman", | 
 | 
                        "com.sun.crypto.provider.DHKeyAgreement");  | 
 | 
                    put("Alg.Alias.KeyAgreement.DH", "DiffieHellman"); | 
 | 
                    put("Alg.Alias.KeyAgreement.OID."+OID_PKCS3, "DiffieHellman"); | 
 | 
                    put("Alg.Alias.KeyAgreement."+OID_PKCS3, "DiffieHellman"); | 
 | 
 | 
 | 
                    put("KeyAgreement.DiffieHellman SupportedKeyClasses", | 
 | 
                        "javax.crypto.interfaces.DHPublicKey" +  | 
 | 
                        "|javax.crypto.interfaces.DHPrivateKey");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("AlgorithmParameters.DiffieHellman", | 
 | 
                        "com.sun.crypto.provider.DHParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.DH", "DiffieHellman"); | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.DES", | 
 | 
                        "com.sun.crypto.provider.DESParameters");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.DESede", | 
 | 
                        "com.sun.crypto.provider.DESedeParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.TripleDES", "DESede"); | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBE", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithMD5AndDES", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithMD5AndTripleDES", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithSHA1AndDESede", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters."+OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithSHA1AndRC2_40", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithSHA1AndRC2_128", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithSHA1AndRC4_40", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithSHA1AndRC4_128", | 
 | 
                        "com.sun.crypto.provider.PBEParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters." + OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBES2", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$General");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.OID."+OID_PKCS5_PBES2, | 
 | 
                        "PBES2");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters." + OID_PKCS5_PBES2, | 
 | 
                        "PBES2");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA1AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA1AndAES_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA224AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA224AndAES_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA256AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA256AndAES_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA384AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA384AndAES_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA512AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA512AndAES_128");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA1AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA1AndAES_256");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA224AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA224AndAES_256");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA256AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA256AndAES_256");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA384AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA384AndAES_256");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.PBEWithHmacSHA512AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBES2Parameters$HmacSHA512AndAES_256");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.Blowfish", | 
 | 
                        "com.sun.crypto.provider.BlowfishParameters");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.AES", | 
 | 
                        "com.sun.crypto.provider.AESParameters");  | 
 | 
                    put("Alg.Alias.AlgorithmParameters.Rijndael", "AES"); | 
 | 
                    put("AlgorithmParameters.GCM", | 
 | 
                        "com.sun.crypto.provider.GCMParameters");  | 
 | 
 | 
 | 
 | 
 | 
                    put("AlgorithmParameters.RC2", | 
 | 
                        "com.sun.crypto.provider.RC2Parameters");  | 
 | 
 | 
 | 
                    put("AlgorithmParameters.OAEP", | 
 | 
                        "com.sun.crypto.provider.OAEPParameters");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("KeyFactory.DiffieHellman", | 
 | 
                        "com.sun.crypto.provider.DHKeyFactory");  | 
 | 
                    put("Alg.Alias.KeyFactory.DH", "DiffieHellman"); | 
 | 
                    put("Alg.Alias.KeyFactory.OID."+OID_PKCS3, | 
 | 
                        "DiffieHellman");  | 
 | 
                    put("Alg.Alias.KeyFactory."+OID_PKCS3, "DiffieHellman"); | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("SecretKeyFactory.DES", | 
 | 
                        "com.sun.crypto.provider.DESKeyFactory");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.DESede", | 
 | 
                        "com.sun.crypto.provider.DESedeKeyFactory");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.TripleDES", "DESede"); | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithMD5AndDES", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithMD5AndDES"  | 
 | 
                        );  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory."+OID_PKCS5_MD5_DES, | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
 | 
 | 
                    put("Alg.Alias.SecretKeyFactory.PBE", | 
 | 
                        "PBEWithMD5AndDES");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("SecretKeyFactory.PBEWithMD5AndTripleDES", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithMD5AndTripleDES"  | 
 | 
                        );  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithSHA1AndDESede", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndDESede"  | 
 | 
                        );  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID."+OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_DESede, | 
 | 
                        "PBEWithSHA1AndDESede");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithSHA1AndRC2_40", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_40"  | 
 | 
                        );  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC2_40, | 
 | 
                        "PBEWithSHA1AndRC2_40");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithSHA1AndRC2_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_128"  | 
 | 
                        );  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC2_128, | 
 | 
                        "PBEWithSHA1AndRC2_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithSHA1AndRC4_40", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC4_40"  | 
 | 
                        );  | 
 | 
 | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC4_40, | 
 | 
                        "PBEWithSHA1AndRC4_40");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithSHA1AndRC4_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC4_128"  | 
 | 
                        );  | 
 | 
 | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS12_RC4_128, | 
 | 
                        "PBEWithSHA1AndRC4_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA1AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA1AndAES_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA224AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA224AndAES_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA256AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA256AndAES_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA384AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA384AndAES_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA512AndAES_128", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA512AndAES_128");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA1AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA1AndAES_256");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA224AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA224AndAES_256");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA256AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA256AndAES_256");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA384AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA384AndAES_256");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBEWithHmacSHA512AndAES_256", | 
 | 
                        "com.sun.crypto.provider.PBEKeyFactory$" +  | 
 | 
                        "PBEWithHmacSHA512AndAES_256");  | 
 | 
 | 
 | 
                    // PBKDF2  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBKDF2WithHmacSHA1", | 
 | 
                        "com.sun.crypto.provider.PBKDF2Core$HmacSHA1");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory.OID." + OID_PKCS5_PBKDF2, | 
 | 
                        "PBKDF2WithHmacSHA1");  | 
 | 
                    put("Alg.Alias.SecretKeyFactory." + OID_PKCS5_PBKDF2, | 
 | 
                        "PBKDF2WithHmacSHA1");  | 
 | 
 | 
 | 
                    put("SecretKeyFactory.PBKDF2WithHmacSHA224", | 
 | 
                        "com.sun.crypto.provider.PBKDF2Core$HmacSHA224");  | 
 | 
                    put("SecretKeyFactory.PBKDF2WithHmacSHA256", | 
 | 
                        "com.sun.crypto.provider.PBKDF2Core$HmacSHA256");  | 
 | 
                    put("SecretKeyFactory.PBKDF2WithHmacSHA384", | 
 | 
                        "com.sun.crypto.provider.PBKDF2Core$HmacSHA384");  | 
 | 
                    put("SecretKeyFactory.PBKDF2WithHmacSHA512", | 
 | 
                        "com.sun.crypto.provider.PBKDF2Core$HmacSHA512");  | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("Mac.HmacMD5", "com.sun.crypto.provider.HmacMD5"); | 
 | 
                    put("Mac.HmacSHA1", "com.sun.crypto.provider.HmacSHA1"); | 
 | 
                    put("Alg.Alias.Mac.OID.1.2.840.113549.2.7", "HmacSHA1"); | 
 | 
                    put("Alg.Alias.Mac.1.2.840.113549.2.7", "HmacSHA1"); | 
 | 
                    put("Mac.HmacSHA224", | 
 | 
                        "com.sun.crypto.provider.HmacCore$HmacSHA224");  | 
 | 
                    put("Alg.Alias.Mac.OID.1.2.840.113549.2.8", "HmacSHA224"); | 
 | 
                    put("Alg.Alias.Mac.1.2.840.113549.2.8", "HmacSHA224"); | 
 | 
                    put("Mac.HmacSHA256", | 
 | 
                        "com.sun.crypto.provider.HmacCore$HmacSHA256");  | 
 | 
                    put("Alg.Alias.Mac.OID.1.2.840.113549.2.9", "HmacSHA256"); | 
 | 
                    put("Alg.Alias.Mac.1.2.840.113549.2.9", "HmacSHA256"); | 
 | 
                    put("Mac.HmacSHA384", | 
 | 
                        "com.sun.crypto.provider.HmacCore$HmacSHA384");  | 
 | 
                    put("Alg.Alias.Mac.OID.1.2.840.113549.2.10", "HmacSHA384"); | 
 | 
                    put("Alg.Alias.Mac.1.2.840.113549.2.10", "HmacSHA384"); | 
 | 
                    put("Mac.HmacSHA512", | 
 | 
                        "com.sun.crypto.provider.HmacCore$HmacSHA512");  | 
 | 
                    put("Alg.Alias.Mac.OID.1.2.840.113549.2.11", "HmacSHA512"); | 
 | 
                    put("Alg.Alias.Mac.1.2.840.113549.2.11", "HmacSHA512"); | 
 | 
 | 
 | 
                    put("Mac.HmacPBESHA1", | 
 | 
                        "com.sun.crypto.provider.HmacPKCS12PBESHA1");  | 
 | 
 | 
 | 
                    // PBMAC1  | 
 | 
 | 
 | 
                    put("Mac.PBEWithHmacSHA1", | 
 | 
                        "com.sun.crypto.provider.PBMAC1Core$HmacSHA1");  | 
 | 
                    put("Mac.PBEWithHmacSHA224", | 
 | 
                        "com.sun.crypto.provider.PBMAC1Core$HmacSHA224");  | 
 | 
                    put("Mac.PBEWithHmacSHA256", | 
 | 
                        "com.sun.crypto.provider.PBMAC1Core$HmacSHA256");  | 
 | 
                    put("Mac.PBEWithHmacSHA384", | 
 | 
                        "com.sun.crypto.provider.PBMAC1Core$HmacSHA384");  | 
 | 
                    put("Mac.PBEWithHmacSHA512", | 
 | 
                        "com.sun.crypto.provider.PBMAC1Core$HmacSHA512");  | 
 | 
 | 
 | 
                    put("Mac.SslMacMD5", | 
 | 
                        "com.sun.crypto.provider.SslMacCore$SslMacMD5");  | 
 | 
                    put("Mac.SslMacSHA1", | 
 | 
                        "com.sun.crypto.provider.SslMacCore$SslMacSHA1");  | 
 | 
 | 
 | 
                    put("Mac.HmacMD5 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacSHA1 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacSHA224 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacSHA256 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacSHA384 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacSHA512 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.HmacPBESHA1 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.PBEWithHmacSHA1 SupportedKeyFormatS", "RAW"); | 
 | 
                    put("Mac.PBEWithHmacSHA224 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.PBEWithHmacSHA256 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.PBEWithHmacSHA384 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.PBEWithHmacSHA512 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.SslMacMD5 SupportedKeyFormats", "RAW"); | 
 | 
                    put("Mac.SslMacSHA1 SupportedKeyFormats", "RAW"); | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("KeyStore.JCEKS", "com.sun.crypto.provider.JceKeyStore"); | 
 | 
 | 
 | 
                      | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
                     */  | 
 | 
                    put("KeyGenerator.SunTlsPrf", | 
 | 
                            "com.sun.crypto.provider.TlsPrfGenerator$V10");  | 
 | 
                    put("KeyGenerator.SunTls12Prf", | 
 | 
                            "com.sun.crypto.provider.TlsPrfGenerator$V12");  | 
 | 
 | 
 | 
                    put("KeyGenerator.SunTlsMasterSecret", | 
 | 
                        "com.sun.crypto.provider.TlsMasterSecretGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.SunTls12MasterSecret", | 
 | 
                        "SunTlsMasterSecret");  | 
 | 
                    put("Alg.Alias.KeyGenerator.SunTlsExtendedMasterSecret", | 
 | 
                        "SunTlsMasterSecret");  | 
 | 
 | 
 | 
                    put("KeyGenerator.SunTlsKeyMaterial", | 
 | 
                        "com.sun.crypto.provider.TlsKeyMaterialGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.SunTls12KeyMaterial", | 
 | 
                        "SunTlsKeyMaterial");  | 
 | 
 | 
 | 
                    put("KeyGenerator.SunTlsRsaPremasterSecret", | 
 | 
                        "com.sun.crypto.provider.TlsRsaPremasterSecretGenerator");  | 
 | 
                    put("Alg.Alias.KeyGenerator.SunTls12RsaPremasterSecret", | 
 | 
                        "SunTlsRsaPremasterSecret");  | 
 | 
 | 
 | 
                    return null;  | 
 | 
                }  | 
 | 
            });  | 
 | 
 | 
 | 
        if (instance == null) { | 
 | 
            instance = this;  | 
 | 
        }  | 
 | 
    }  | 
 | 
 | 
 | 
      | 
 | 
    static SunJCE getInstance() { | 
 | 
        if (instance == null) { | 
 | 
            return new SunJCE();  | 
 | 
        }  | 
 | 
        return instance;  | 
 | 
    }  | 
 | 
}  |