Thursday, August 30, 2012

How can you add BouncyCastle Provider to to JCE providers list?

public final class BouncyCastleProvider
extends java.security.Provider
implements org.bouncycastle.jcajce.provider.config.ConfigurableProvider
To add the provider at runtime use:
 import java.security.Security;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;

 Security.addProvider(new BouncyCastleProvider());
 
The provider can also be configured as part of your environment via static registration by adding an entry to the java.security properties file (found in $JAVA_HOME/jre/lib/security/java.security, where $JAVA_HOME is the location of your JDK/JRE distribution). You'll find detailed instructions in the file but basically it comes down to adding a line:
 
    security.provider.=org.bouncycastle.jce.provider.BouncyCastleProvider
 
 
Where is the preference you want the provider at (1 being the most preferred).


  Program to display Provider services


package com.suresh.security;

import java.security.Provider;
import java.security.Provider.Service;
import java.security.Security;
import java.util.Iterator;
import java.util.Set;


public class ListSecurityProviders {

   
    public static void main(String[] args) {
        Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider());
        Provider[] providers = Security.getProviders();
        for(Provider p:providers){
            System.out.println("Provider Name: "+ p.getName());
            System.out.println("services provided are :");
            Set service = p.getServices();
            Iterator itr = service.iterator();
            while(itr.hasNext()){
                Service s = (Service) itr.next();
                System.out.println(s.getAlgorithm());
            }
           
            System.out.println("\n\n\n");
        }
       
    }
}



Output:

Provider Name: BC
services provided are :
GOST3411
HMACGOST3411
HMACGOST3411
MD2
HMACMD2
HMACMD2
MD4
HMACMD4
HMACMD4
MD5
HMACMD5
HMACMD5
SHA-1
HMACSHA1
HMACSHA1
RIPEMD128
HMACRIPEMD128
HMACRIPEMD128
RIPEMD160
HMACRIPEMD160
HMACRIPEMD160
RIPEMD256
HMACRIPEMD256
HMACRIPEMD256
RIPEMD320
HMACRIPEMD320
HMACRIPEMD320
SHA-224
HMACSHA224
HMACSHA224
SHA-256
HMACSHA256
HMACSHA256
SHA-384
HMACSHA384
HMACSHA384
SHA-512
HMACSHA512
HMACSHA512
TIGER
HMACTIGER
HMACTIGER
WHIRLPOOL
HMACWHIRLPOOL
HMACWHIRLPOOL
AES
AES
AES
2.16.840.1.101.3.4.1.1
2.16.840.1.101.3.4.1.21
2.16.840.1.101.3.4.1.41
2.16.840.1.101.3.4.1.2
2.16.840.1.101.3.4.1.22
2.16.840.1.101.3.4.1.42
2.16.840.1.101.3.4.1.3
2.16.840.1.101.3.4.1.23
2.16.840.1.101.3.4.1.43
2.16.840.1.101.3.4.1.4
2.16.840.1.101.3.4.1.24
2.16.840.1.101.3.4.1.44
AESWRAP
AESRFC3211WRAP
AES
2.16.840.1.101.3.4.2
2.16.840.1.101.3.4.22
2.16.840.1.101.3.4.42
2.16.840.1.101.3.4.1.1
2.16.840.1.101.3.4.1.2
2.16.840.1.101.3.4.1.3
2.16.840.1.101.3.4.1.4
2.16.840.1.101.3.4.1.21
2.16.840.1.101.3.4.1.22
2.16.840.1.101.3.4.1.23
2.16.840.1.101.3.4.1.24
2.16.840.1.101.3.4.1.41
2.16.840.1.101.3.4.1.42
2.16.840.1.101.3.4.1.43
2.16.840.1.101.3.4.1.44
AESWRAP
2.16.840.1.101.3.4.1.5
2.16.840.1.101.3.4.1.25
2.16.840.1.101.3.4.1.45
AESCMAC
ARC4
ARC4
BLOWFISH
1.3.6.1.4.1.3029.1.2
BLOWFISH
BLOWFISH
CAMELLIA
CAMELLIA
CAMELLIA
1.2.392.200011.61.1.1.1.2
1.2.392.200011.61.1.1.1.3
1.2.392.200011.61.1.1.1.4
CAMELLIARFC3211WRAP
CAMELLIAWRAP
CAMELLIA
1.2.392.200011.61.1.1.3.2
1.2.392.200011.61.1.1.3.3
1.2.392.200011.61.1.1.3.4
1.2.392.200011.61.1.1.1.2
1.2.392.200011.61.1.1.1.3
1.2.392.200011.61.1.1.1.4
CAST5
CAST5
CAST5
1.2.840.113533.7.66.10
CAST5
CAST6
CAST6
DES
1.3.14.3.2.7
DES
DESRFC3211WRAP
DES
DESCMAC
DESMAC
DESMAC/CFB8
DESMAC64
DESMAC64WITHISO7816-4PADDING
DES
DES
DESEDE
1.2.840.113549.3.7
DESEDEWRAP
1.2.840.113549.1.9.16.3.6
DESEDERFC3211WRAP
PBEWITHSHAAND3-KEYTRIPLEDES-CBC
BROKENPBEWITHSHAAND3-KEYTRIPLEDES-CBC
OLDPBEWITHSHAAND3-KEYTRIPLEDES-CBC
PBEWITHSHAAND2-KEYTRIPLEDES-CBC
BROKENPBEWITHSHAAND2-KEYTRIPLEDES-CBC
DESEDE
1.2.840.113549.3.7
DESEDEWRAP
DESEDE
DESEDECMAC
DESEDEMAC
DESEDEMAC/CFB8
DESEDEMAC64
DESEDEMAC64WITHISO7816-4PADDING
DESEDE
DESEDE
GOST28147
1.2.643.2.2.21
GOST28147
GOST28147MAC
Grainv1
Grainv1
Grain128
Grain128
HC128
HC128
HC256
HC256
NOEKEON
NOEKEON
NOEKEON
NOEKEON
RC2
1.2.840.113549.3.2
RC2
1.2.840.113549.3.2
RC2
1.2.840.113549.3.2
RC2
RC2WRAP
1.2.840.113549.3.2
RC2MAC
RC2MAC/CFB8
RC5
RC5-64
RC5
RC5-64
RC5
RC5-64
RC5MAC
RC5MAC/CFB8
RC6
RC6
RC6
RIJNDAEL
RIJNDAEL
RIJNDAEL
SALSA20
SALSA20
SEED
SEED
SEED
1.2.410.200004.1.4
SEEDWRAP
SEED
1.2.410.200004.1.4
1.2.410.200004.7.1.1.1
Serpent
Serpent
Serpent
SKIPJACK
SKIPJACK
SKIPJACK
SKIPJACKMAC
SKIPJACKMAC/CFB8
TEA
TEA
TEA
Twofish
Twofish
Twofish
VMPC
VMPC
VMPCMAC
VMPC-KSA3
VMPC-KSA3
XTEA
XTEA
XTEA
X.509
X.509
DSA
DSA
DSA
DSA
DSA
NONEWITHDSA
SHA224WITHDSA
SHA256WITHDSA
SHA384WITHDSA
SHA512WITHDSA
DH
DH
DH
DH
DH
ECDH
ECDHC
ECMQV
1.3.133.16.840.63.0.2
1.3.133.16.840.63.0.16
EC
EC
ECMQV
ECMQV
ECDSA
ECDH
ECDHC
ECDSA
ECDH
ECDHC
ECIES
ECDSA
NONEwithECDSA
SHA224WITHECDSA
SHA256WITHECDSA
SHA384WITHECDSA
SHA512WITHECDSA
RIPEMD160WITHECDSA
SHA1WITHECNR
SHA224WITHECNR
SHA256WITHECNR
SHA384WITHECNR
SHA512WITHECNR
SHA1WITHCVC-ECDSA
SHA224WITHCVC-ECDSA
SHA256WITHCVC-ECDSA
OAEP
PSS
RSA
RSA/RAW
RSA/PKCS1
1.2.840.113549.1.1.1
2.5.8.1.1
RSA/1
RSA/2
RSA/OAEP
1.2.840.113549.1.1.7
RSA/ISO9796-1
RSA
RSA
RSASSA-PSS
1.2.840.113549.1.1.10
OID.1.2.840.113549.1.1.10
SHA224withRSA/PSS
SHA256withRSA/PSS
SHA384withRSA/PSS
SHA512withRSA/PSS
RSA
RAWRSASSA-PSS
MD2WITHRSA
MD4WITHRSA
MD5WITHRSA
MD5withRSA/ISO9796-2
SHA1withRSA/PSS
SHA1WITHRSA
SHA1withRSA/ISO9796-2
SHA224WITHRSA
SHA256WITHRSA
SHA384WITHRSA
SHA512WITHRSA
RIPEMD128WITHRSA
RMD128WITHRSA
RIPEMD160WITHRSA
RMD160WITHRSA
RIPEMD160withRSA/ISO9796-2
RIPEMD256WITHRSA
RMD256WITHRSA
GOST3410
GOST3410
GOST3410
GOST3410
GOST3410
ECGOST3410
ECGOST3410
ECGOST3410
GOST3411WITHECGOST3410
ELGAMAL
ELGAMAL
ELGAMAL
ELGAMAL/PKCS1
ELGAMAL
ELGAMAL
CERTIFICATE/COLLECTION
ATTRIBUTECERTIFICATE/COLLECTION
CRL/COLLECTION
CERTIFICATEPAIR/COLLECTION
CERTIFICATE/LDAP
CRL/LDAP
ATTRIBUTECERTIFICATE/LDAP
CERTIFICATEPAIR/LDAP
CERTIFICATE
ATTRIBUTECERTIFICATE
CRL
CERTIFICATEPAIR
BKS
BouncyCastle
PKCS12
BCPKCS12
PKCS12-DEF
PKCS12-3DES-40RC2
PKCS12-3DES-3DES
PKCS12-DEF-3DES-40RC2
PKCS12-DEF-3DES-3DES
IES
PKCS12PBE
1.2.840.113549.1.5.12
SHA1WITHECDSA
SHA224WITHECDSA
SHA256WITHECDSA
SHA384WITHECDSA
SHA512WITHECDSA
ECIES
BrokenECIES
IES
BrokenIES
PBEWITHMD5ANDDES
BROKENPBEWITHMD5ANDDES
PBEWITHMD5ANDRC2
PBEWITHSHA1ANDDES
BROKENPBEWITHSHA1ANDDES
PBEWITHSHA1ANDRC2
PBEWITHSHAAND128BITRC2-CBC
PBEWITHSHAAND40BITRC2-CBC
PBEWITHSHAAND128BITRC4
PBEWITHSHAAND40BITRC4
PBEWITHSHAAND128BITAES-CBC-BC
PBEWITHSHAAND192BITAES-CBC-BC
PBEWITHSHAAND256BITAES-CBC-BC
PBEWITHSHA256AND128BITAES-CBC-BC
PBEWITHSHA256AND192BITAES-CBC-BC
PBEWITHSHA256AND256BITAES-CBC-BC
PBEWITHMD5AND128BITAES-CBC-OPENSSL
PBEWITHMD5AND192BITAES-CBC-OPENSSL
PBEWITHMD5AND256BITAES-CBC-OPENSSL
PBEWITHSHAANDTWOFISH-CBC
OLDPBEWITHSHAANDTWOFISH-CBC
PBEWITHMD2ANDDES
PBEWITHMD2ANDRC2
PBEWITHMD5ANDDES
PBEWITHMD5ANDRC2
PBEWITHSHA1ANDDES
PBEWITHSHA1ANDRC2
PBEWITHSHAAND3-KEYTRIPLEDES-CBC
PBEWITHSHAAND2-KEYTRIPLEDES-CBC
PBEWITHSHAAND128BITRC4
PBEWITHSHAAND40BITRC4
PBEWITHSHAAND128BITRC2-CBC
PBEWITHSHAAND40BITRC2-CBC
PBEWITHSHAANDTWOFISH-CBC
PBEWITHHMACRIPEMD160
PBEWITHHMACSHA1
PBEWITHHMACTIGER
PBEWITHMD5AND128BITAES-CBC-OPENSSL
PBEWITHMD5AND192BITAES-CBC-OPENSSL
PBEWITHMD5AND256BITAES-CBC-OPENSSL
PBEWITHSHAAND128BITAES-CBC-BC
PBEWITHSHAAND192BITAES-CBC-BC
PBEWITHSHAAND256BITAES-CBC-BC
PBEWITHSHA256AND128BITAES-CBC-BC
PBEWITHSHA256AND192BITAES-CBC-BC
PBEWITHSHA256AND256BITAES-CBC-BC
DESWITHISO9797
ISO9797ALG3MAC
ISO9797ALG3WITHISO7816-4PADDING
OLDHMACSHA384
OLDHMACSHA512
PBEWITHHMACSHA
PBEWITHHMACSHA1
PBEWITHHMACRIPEMD160
RFC3281
RFC3281
RFC3280
RFC3280
PKIX
PKIX
Collection
LDAP
Multi

1 comment:

  1. nice post.. I found your blog by using this keyword

    1.2.840.113549.3.7

    ReplyDelete