1package org.bouncycastle.jcajce.provider.asymmetric.rsa; 2 3import java.security.interfaces.RSAPrivateCrtKey; 4import java.security.interfaces.RSAPrivateKey; 5import java.security.interfaces.RSAPublicKey; 6 7import org.bouncycastle.asn1.ASN1ObjectIdentifier; 8import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 9import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; 10import org.bouncycastle.crypto.params.RSAKeyParameters; 11import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; 12 13/** 14 * utility class for converting java.security RSA objects into their 15 * org.bouncycastle.crypto counterparts. 16 */ 17public class RSAUtil 18{ 19 public static final ASN1ObjectIdentifier[] rsaOids = 20 { 21 PKCSObjectIdentifiers.rsaEncryption, 22 X509ObjectIdentifiers.id_ea_rsa, 23 PKCSObjectIdentifiers.id_RSAES_OAEP, 24 PKCSObjectIdentifiers.id_RSASSA_PSS 25 }; 26 27 public static boolean isRsaOid( 28 ASN1ObjectIdentifier algOid) 29 { 30 for (int i = 0; i != rsaOids.length; i++) 31 { 32 if (algOid.equals(rsaOids[i])) 33 { 34 return true; 35 } 36 } 37 38 return false; 39 } 40 41 static RSAKeyParameters generatePublicKeyParameter( 42 RSAPublicKey key) 43 { 44 return new RSAKeyParameters(false, key.getModulus(), key.getPublicExponent()); 45 46 } 47 48 static RSAKeyParameters generatePrivateKeyParameter( 49 RSAPrivateKey key) 50 { 51 if (key instanceof RSAPrivateCrtKey) 52 { 53 RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; 54 55 return new RSAPrivateCrtKeyParameters(k.getModulus(), 56 k.getPublicExponent(), k.getPrivateExponent(), 57 k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); 58 } 59 else 60 { 61 RSAPrivateKey k = key; 62 63 return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); 64 } 65 } 66} 67