package com.sun.crypto.provider;
import java.security.AccessController;
import java.security.Provider;
import java.security.SecureRandom;
import java.security.PrivilegedAction;
import java.util.HashMap;
import java.util.List;
import static sun.security.util.SecurityConstants.PROVIDER_VER;
import static sun.security.util.SecurityProviderConstants.*;
public final class SunJCE extends Provider {
@java.io.Serial
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, ChaCha20)";
static final boolean debug = false;
private static volatile SunJCE instance;
private static class SecureRandomHolder {
static final SecureRandom RANDOM = new SecureRandom();
}
static SecureRandom getRandom() { return SecureRandomHolder.RANDOM; }
private void ps(String type, String algo, String cn) {
putService(new Provider.Service(this, type, algo, cn, null, null));
}
private void ps(String type, String algo, String cn, List<String> als,
HashMap<String, String> attrs) {
putService(new Provider.Service(this, type, algo, cn, als,
attrs));
}
private void psA(String type, String algo, String cn,
HashMap<String, String> attrs) {
putService(new Provider.Service(this, type, algo, cn, getAliases(algo),
attrs));
}
public SunJCE() {
super("SunJCE", PROVIDER_VER, info);
if (System.getSecurityManager() == null) {
putEntries();
} else {
AccessController.doPrivileged(new PrivilegedAction<Void>() {
@Override
public Void run() {
putEntries();
return null;
}
});
}
if (instance == null) {
instance = this;
}
}
void putEntries() {
HashMap<String, String> attrs = new HashMap<>(3);
attrs.put("SupportedModes", "ECB");
attrs.put("SupportedPaddings", "NOPADDING|PKCS1PADDING|OAEPPADDING"
+ "|OAEPWITHMD5ANDMGF1PADDING"
+ "|OAEPWITHSHA1ANDMGF1PADDING"
+ "|OAEPWITHSHA-1ANDMGF1PADDING"
+ "|OAEPWITHSHA-224ANDMGF1PADDING"
+ "|OAEPWITHSHA-256ANDMGF1PADDING"
+ "|OAEPWITHSHA-384ANDMGF1PADDING"
+ "|OAEPWITHSHA-512ANDMGF1PADDING"
+ "|OAEPWITHSHA-512/224ANDMGF1PADDING"
+ "|OAEPWITHSHA-512/256ANDMGF1PADDING");
attrs.put("SupportedKeyClasses",
"java.security.interfaces.RSAPublicKey" +
"|java.security.interfaces.RSAPrivateKey");
ps("Cipher", "RSA",
"com.sun.crypto.provider.RSACipher", null, attrs);
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";
attrs.clear();
attrs.put("SupportedModes", BLOCK_MODES);
attrs.put("SupportedPaddings", BLOCK_PADS);
attrs.put("SupportedKeyFormats", "RAW");
ps("Cipher", "DES",
"com.sun.crypto.provider.DESCipher", null, attrs);
psA("Cipher", "DESede", "com.sun.crypto.provider.DESedeCipher",
attrs);
ps("Cipher", "Blowfish",
"com.sun.crypto.provider.BlowfishCipher", null, attrs);
ps("Cipher", "RC2",
"com.sun.crypto.provider.RC2Cipher", null, attrs);
attrs.clear();
attrs.put("SupportedModes", BLOCK_MODES128);
attrs.put("SupportedPaddings", BLOCK_PADS);
attrs.put("SupportedKeyFormats", "RAW");
psA("Cipher", "AES",
"com.sun.crypto.provider.AESCipher$General", attrs);
attrs.clear();
attrs.put("SupportedKeyFormats", "RAW");
psA("Cipher", "AES_128/ECB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES128_ECB_NoPadding",
attrs);
psA("Cipher", "AES_128/CBC/NoPadding",
"com.sun.crypto.provider.AESCipher$AES128_CBC_NoPadding",
attrs);
psA("Cipher", "AES_128/OFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES128_OFB_NoPadding",
attrs);
psA("Cipher", "AES_128/CFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES128_CFB_NoPadding",
attrs);
psA("Cipher", "AES_128/GCM/NoPadding",
"com.sun.crypto.provider.AESCipher$AES128_GCM_NoPadding",
attrs);
psA("Cipher", "AES_192/ECB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES192_ECB_NoPadding",
attrs);
psA("Cipher", "AES_192/CBC/NoPadding",
"com.sun.crypto.provider.AESCipher$AES192_CBC_NoPadding",
attrs);
psA("Cipher", "AES_192/OFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES192_OFB_NoPadding",
attrs);
psA("Cipher", "AES_192/CFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES192_CFB_NoPadding",
attrs);
psA("Cipher", "AES_192/GCM/NoPadding",
"com.sun.crypto.provider.AESCipher$AES192_GCM_NoPadding",
attrs);
psA("Cipher", "AES_256/ECB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES256_ECB_NoPadding",
attrs);
psA("Cipher", "AES_256/CBC/NoPadding",
"com.sun.crypto.provider.AESCipher$AES256_CBC_NoPadding",
attrs);
psA("Cipher", "AES_256/OFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES256_OFB_NoPadding",
attrs);
psA("Cipher", "AES_256/CFB/NoPadding",
"com.sun.crypto.provider.AESCipher$AES256_CFB_NoPadding",
attrs);
psA("Cipher", "AES_256/GCM/NoPadding",
"com.sun.crypto.provider.AESCipher$AES256_GCM_NoPadding",
attrs);
attrs.clear();
attrs.put("SupportedModes", "CBC");
attrs.put("SupportedPaddings", "NOPADDING");
attrs.put("SupportedKeyFormats", "RAW");
ps("Cipher", "DESedeWrap",
"com.sun.crypto.provider.DESedeWrapCipher", null, attrs);
attrs.clear();
attrs.put("SupportedModes", "ECB");
attrs.put("SupportedPaddings", "NOPADDING");
attrs.put("SupportedKeyFormats", "RAW");
psA("Cipher", "ARCFOUR",
"com.sun.crypto.provider.ARCFOURCipher", attrs);
ps("Cipher", "AESWrap", "com.sun.crypto.provider.AESWrapCipher$General",
null, attrs);
psA("Cipher", "AESWrap_128",
"com.sun.crypto.provider.AESWrapCipher$AES128",
attrs);
psA("Cipher", "AESWrap_192",
"com.sun.crypto.provider.AESWrapCipher$AES192",
attrs);
psA("Cipher", "AESWrap_256",
"com.sun.crypto.provider.AESWrapCipher$AES256",
attrs);
attrs.clear();
attrs.put("SupportedKeyFormats", "RAW");
ps("Cipher", "ChaCha20",
"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Only",
null, attrs);
psA("Cipher", "ChaCha20-Poly1305",
"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305",
attrs);
psA("Cipher", "PBEWithMD5AndDES",
"com.sun.crypto.provider.PBEWithMD5AndDESCipher",
null);
ps("Cipher", "PBEWithMD5AndTripleDES",
"com.sun.crypto.provider.PBEWithMD5AndTripleDESCipher");
psA("Cipher", "PBEWithSHA1AndDESede",
"com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndDESede",
null);
psA("Cipher", "PBEWithSHA1AndRC2_40",
"com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_40",
null);
psA("Cipher", "PBEWithSHA1AndRC2_128",
"com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC2_128",
null);
psA("Cipher", "PBEWithSHA1AndRC4_40",
"com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC4_40",
null);
psA("Cipher", "PBEWithSHA1AndRC4_128",
"com.sun.crypto.provider.PKCS12PBECipherCore$PBEWithSHA1AndRC4_128",
null);
ps("Cipher", "PBEWithHmacSHA1AndAES_128",
"com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_128");
ps("Cipher", "PBEWithHmacSHA224AndAES_128",
"com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_128");
ps("Cipher", "PBEWithHmacSHA256AndAES_128",
"com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_128");
ps("Cipher", "PBEWithHmacSHA384AndAES_128",
"com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_128");
ps("Cipher", "PBEWithHmacSHA512AndAES_128",
"com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_128");
ps("Cipher", "PBEWithHmacSHA1AndAES_256",
"com.sun.crypto.provider.PBES2Core$HmacSHA1AndAES_256");
ps("Cipher", "PBEWithHmacSHA224AndAES_256",
"com.sun.crypto.provider.PBES2Core$HmacSHA224AndAES_256");
ps("Cipher", "PBEWithHmacSHA256AndAES_256",
"com.sun.crypto.provider.PBES2Core$HmacSHA256AndAES_256");
ps("Cipher", "PBEWithHmacSHA384AndAES_256",
"com.sun.crypto.provider.PBES2Core$HmacSHA384AndAES_256");
ps("Cipher", "PBEWithHmacSHA512AndAES_256",
"com.sun.crypto.provider.PBES2Core$HmacSHA512AndAES_256");
ps("KeyGenerator", "DES",
"com.sun.crypto.provider.DESKeyGenerator");
psA("KeyGenerator", "DESede",
"com.sun.crypto.provider.DESedeKeyGenerator",
null);
ps("KeyGenerator", "Blowfish",
"com.sun.crypto.provider.BlowfishKeyGenerator");
psA("KeyGenerator", "AES",
"com.sun.crypto.provider.AESKeyGenerator",
null);
ps("KeyGenerator", "RC2",
"com.sun.crypto.provider.KeyGeneratorCore$RC2KeyGenerator");
psA("KeyGenerator", "ARCFOUR",
"com.sun.crypto.provider.KeyGeneratorCore$ARCFOURKeyGenerator",
null);
ps("KeyGenerator", "ChaCha20",
"com.sun.crypto.provider.KeyGeneratorCore$ChaCha20KeyGenerator");
ps("KeyGenerator", "HmacMD5",
"com.sun.crypto.provider.HmacMD5KeyGenerator");
psA("KeyGenerator", "HmacSHA1",
"com.sun.crypto.provider.HmacSHA1KeyGenerator", null);
psA("KeyGenerator", "HmacSHA224",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA224",
null);
psA("KeyGenerator", "HmacSHA256",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA256",
null);
psA("KeyGenerator", "HmacSHA384",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA384",
null);
psA("KeyGenerator", "HmacSHA512",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA512",
null);
psA("KeyGenerator", "HmacSHA512/224",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA512_224",
null);
psA("KeyGenerator", "HmacSHA512/256",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA512_256",
null);
psA("KeyGenerator", "HmacSHA3-224",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA3_224",
null);
psA("KeyGenerator", "HmacSHA3-256",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA3_256",
null);
psA("KeyGenerator", "HmacSHA3-384",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA3_384",
null);
psA("KeyGenerator", "HmacSHA3-512",
"com.sun.crypto.provider.KeyGeneratorCore$HmacKG$SHA3_512",
null);
psA("KeyPairGenerator", "DiffieHellman",
"com.sun.crypto.provider.DHKeyPairGenerator",
null);
psA("AlgorithmParameterGenerator",
"DiffieHellman", "com.sun.crypto.provider.DHParameterGenerator",
null);
attrs.clear();
attrs.put("SupportedKeyClasses", "javax.crypto.interfaces.DHPublicKey" +
"|javax.crypto.interfaces.DHPrivateKey");
psA("KeyAgreement", "DiffieHellman",
"com.sun.crypto.provider.DHKeyAgreement",
attrs);
psA("AlgorithmParameters", "DiffieHellman",
"com.sun.crypto.provider.DHParameters", null);
ps("AlgorithmParameters", "DES",
"com.sun.crypto.provider.DESParameters");
psA("AlgorithmParameters", "DESede",
"com.sun.crypto.provider.DESedeParameters", null);
psA("AlgorithmParameters", "PBEWithMD5AndDES",
"com.sun.crypto.provider.PBEParameters",
null);
ps("AlgorithmParameters", "PBEWithMD5AndTripleDES",
"com.sun.crypto.provider.PBEParameters");
psA("AlgorithmParameters", "PBEWithSHA1AndDESede",
"com.sun.crypto.provider.PBEParameters",
null);
psA("AlgorithmParameters", "PBEWithSHA1AndRC2_40",
"com.sun.crypto.provider.PBEParameters",
null);
psA("AlgorithmParameters", "PBEWithSHA1AndRC2_128",
"com.sun.crypto.provider.PBEParameters",
null);
psA("AlgorithmParameters", "PBEWithSHA1AndRC4_40",
"com.sun.crypto.provider.PBEParameters",
null);
psA("AlgorithmParameters", "PBEWithSHA1AndRC4_128",
"com.sun.crypto.provider.PBEParameters",
null);
psA("AlgorithmParameters", "PBES2",
"com.sun.crypto.provider.PBES2Parameters$General",
null);
ps("AlgorithmParameters", "PBEWithHmacSHA1AndAES_128",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA1AndAES_128");
ps("AlgorithmParameters", "PBEWithHmacSHA224AndAES_128",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA224AndAES_128");
ps("AlgorithmParameters", "PBEWithHmacSHA256AndAES_128",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA256AndAES_128");
ps("AlgorithmParameters", "PBEWithHmacSHA384AndAES_128",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA384AndAES_128");
ps("AlgorithmParameters", "PBEWithHmacSHA512AndAES_128",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA512AndAES_128");
ps("AlgorithmParameters", "PBEWithHmacSHA1AndAES_256",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA1AndAES_256");
ps("AlgorithmParameters", "PBEWithHmacSHA224AndAES_256",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA224AndAES_256");
ps("AlgorithmParameters", "PBEWithHmacSHA256AndAES_256",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA256AndAES_256");
ps("AlgorithmParameters", "PBEWithHmacSHA384AndAES_256",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA384AndAES_256");
ps("AlgorithmParameters", "PBEWithHmacSHA512AndAES_256",
"com.sun.crypto.provider.PBES2Parameters$HmacSHA512AndAES_256");
ps("AlgorithmParameters", "Blowfish",
"com.sun.crypto.provider.BlowfishParameters");
psA("AlgorithmParameters", "AES",
"com.sun.crypto.provider.AESParameters", null);
ps("AlgorithmParameters", "GCM",
"com.sun.crypto.provider.GCMParameters");
ps("AlgorithmParameters", "RC2",
"com.sun.crypto.provider.RC2Parameters");
ps("AlgorithmParameters", "OAEP",
"com.sun.crypto.provider.OAEPParameters");
psA("AlgorithmParameters", "ChaCha20-Poly1305",
"com.sun.crypto.provider.ChaCha20Poly1305Parameters", null);
psA("KeyFactory", "DiffieHellman",
"com.sun.crypto.provider.DHKeyFactory",
null);
ps("SecretKeyFactory", "DES",
"com.sun.crypto.provider.DESKeyFactory");
psA("SecretKeyFactory", "DESede",
"com.sun.crypto.provider.DESedeKeyFactory", null);
psA("SecretKeyFactory", "PBEWithMD5AndDES",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithMD5AndDES",
null);
ps("SecretKeyFactory", "PBEWithMD5AndTripleDES",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithMD5AndTripleDES");
psA("SecretKeyFactory", "PBEWithSHA1AndDESede",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndDESede",
null);
psA("SecretKeyFactory", "PBEWithSHA1AndRC2_40",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_40",
null);
psA("SecretKeyFactory", "PBEWithSHA1AndRC2_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC2_128",
null);
psA("SecretKeyFactory", "PBEWithSHA1AndRC4_40",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC4_40",
null);
psA("SecretKeyFactory", "PBEWithSHA1AndRC4_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithSHA1AndRC4_128",
null);
ps("SecretKeyFactory", "PBEWithHmacSHA1AndAES_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA1AndAES_128");
ps("SecretKeyFactory", "PBEWithHmacSHA224AndAES_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA224AndAES_128");
ps("SecretKeyFactory", "PBEWithHmacSHA256AndAES_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA256AndAES_128");
ps("SecretKeyFactory", "PBEWithHmacSHA384AndAES_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA384AndAES_128");
ps("SecretKeyFactory", "PBEWithHmacSHA512AndAES_128",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA512AndAES_128");
ps("SecretKeyFactory", "PBEWithHmacSHA1AndAES_256",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA1AndAES_256");
ps("SecretKeyFactory", "PBEWithHmacSHA224AndAES_256",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA224AndAES_256");
ps("SecretKeyFactory", "PBEWithHmacSHA256AndAES_256",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA256AndAES_256");
ps("SecretKeyFactory", "PBEWithHmacSHA384AndAES_256",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA384AndAES_256");
ps("SecretKeyFactory", "PBEWithHmacSHA512AndAES_256",
"com.sun.crypto.provider.PBEKeyFactory$PBEWithHmacSHA512AndAES_256");
psA("SecretKeyFactory", "PBKDF2WithHmacSHA1",
"com.sun.crypto.provider.PBKDF2Core$HmacSHA1",
null);
ps("SecretKeyFactory", "PBKDF2WithHmacSHA224",
"com.sun.crypto.provider.PBKDF2Core$HmacSHA224");
ps("SecretKeyFactory", "PBKDF2WithHmacSHA256",
"com.sun.crypto.provider.PBKDF2Core$HmacSHA256");
ps("SecretKeyFactory", "PBKDF2WithHmacSHA384",
"com.sun.crypto.provider.PBKDF2Core$HmacSHA384");
ps("SecretKeyFactory", "PBKDF2WithHmacSHA512",
"com.sun.crypto.provider.PBKDF2Core$HmacSHA512");
attrs.clear();
attrs.put("SupportedKeyFormats", "RAW");
ps("Mac", "HmacMD5", "com.sun.crypto.provider.HmacMD5", null, attrs);
psA("Mac", "HmacSHA1", "com.sun.crypto.provider.HmacSHA1",
attrs);
psA("Mac", "HmacSHA224",
"com.sun.crypto.provider.HmacCore$HmacSHA224", attrs);
psA("Mac", "HmacSHA256",
"com.sun.crypto.provider.HmacCore$HmacSHA256", attrs);
psA("Mac", "HmacSHA384",
"com.sun.crypto.provider.HmacCore$HmacSHA384", attrs);
psA("Mac", "HmacSHA512",
"com.sun.crypto.provider.HmacCore$HmacSHA512", attrs);
psA("Mac", "HmacSHA512/224",
"com.sun.crypto.provider.HmacCore$HmacSHA512_224", attrs);
psA("Mac", "HmacSHA512/256",
"com.sun.crypto.provider.HmacCore$HmacSHA512_256", attrs);
psA("Mac", "HmacSHA3-224",
"com.sun.crypto.provider.HmacCore$HmacSHA3_224", attrs);
psA("Mac", "HmacSHA3-256",
"com.sun.crypto.provider.HmacCore$HmacSHA3_256", attrs);
psA("Mac", "HmacSHA3-384",
"com.sun.crypto.provider.HmacCore$HmacSHA3_384", attrs);
psA("Mac", "HmacSHA3-512",
"com.sun.crypto.provider.HmacCore$HmacSHA3_512", attrs);
ps("Mac", "HmacPBESHA1",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA1",
null, attrs);
ps("Mac", "HmacPBESHA224",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA224",
null, attrs);
ps("Mac", "HmacPBESHA256",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA256",
null, attrs);
ps("Mac", "HmacPBESHA384",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA384",
null, attrs);
ps("Mac", "HmacPBESHA512",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA512",
null, attrs);
ps("Mac", "HmacPBESHA512/224",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA512_224",
null, attrs);
ps("Mac", "HmacPBESHA512/256",
"com.sun.crypto.provider.HmacPKCS12PBECore$HmacPKCS12PBE_SHA512_256",
null, attrs);
ps("Mac", "PBEWithHmacSHA1",
"com.sun.crypto.provider.PBMAC1Core$HmacSHA1", null, attrs);
ps("Mac", "PBEWithHmacSHA224",
"com.sun.crypto.provider.PBMAC1Core$HmacSHA224", null, attrs);
ps("Mac", "PBEWithHmacSHA256",
"com.sun.crypto.provider.PBMAC1Core$HmacSHA256", null, attrs);
ps("Mac", "PBEWithHmacSHA384",
"com.sun.crypto.provider.PBMAC1Core$HmacSHA384", null, attrs);
ps("Mac", "PBEWithHmacSHA512",
"com.sun.crypto.provider.PBMAC1Core$HmacSHA512", null, attrs);
ps("Mac", "SslMacMD5",
"com.sun.crypto.provider.SslMacCore$SslMacMD5", null, attrs);
ps("Mac", "SslMacSHA1",
"com.sun.crypto.provider.SslMacCore$SslMacSHA1", null, attrs);
ps("KeyStore", "JCEKS",
"com.sun.crypto.provider.JceKeyStore");
ps("KeyGenerator", "SunTlsPrf",
"com.sun.crypto.provider.TlsPrfGenerator$V10");
ps("KeyGenerator", "SunTls12Prf",
"com.sun.crypto.provider.TlsPrfGenerator$V12");
ps("KeyGenerator", "SunTlsMasterSecret",
"com.sun.crypto.provider.TlsMasterSecretGenerator",
List.of("SunTls12MasterSecret", "SunTlsExtendedMasterSecret"),
null);
ps("KeyGenerator", "SunTlsKeyMaterial",
"com.sun.crypto.provider.TlsKeyMaterialGenerator",
List.of("SunTls12KeyMaterial"), null);
ps("KeyGenerator", "SunTlsRsaPremasterSecret",
"com.sun.crypto.provider.TlsRsaPremasterSecretGenerator",
List.of("SunTls12RsaPremasterSecret"), null);
}
static SunJCE getInstance() {
if (instance == null) {
return new SunJCE();
}
return instance;
}
}