1 package org.bouncycastle.jce.provider; 2 3 import java.security.interfaces.RSAPrivateCrtKey; 4 import java.security.interfaces.RSAPrivateKey; 5 import java.security.interfaces.RSAPublicKey; 6 7 import org.bouncycastle.asn1.DERObjectIdentifier; 8 import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 9 import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; 10 import org.bouncycastle.crypto.params.RSAKeyParameters; 11 import org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; 12 13 /** 14 * utility class for converting java.security RSA objects into their 15 * org.bouncycastle.crypto counterparts. 16 */ 17 class RSAUtil 18 { 19 static boolean isRsaOid( 20 DERObjectIdentifier algOid) 21 { 22 return algOid.equals(PKCSObjectIdentifiers.rsaEncryption) 23 || algOid.equals(X509ObjectIdentifiers.id_ea_rsa) 24 || algOid.equals(PKCSObjectIdentifiers.id_RSASSA_PSS) 25 || algOid.equals(PKCSObjectIdentifiers.id_RSAES_OAEP); 26 } 27 28 static RSAKeyParameters generatePublicKeyParameter( 29 RSAPublicKey key) 30 { 31 return new RSAKeyParameters(false, key.getModulus(), key.getPublicExponent()); 32 33 } 34 35 static RSAKeyParameters generatePrivateKeyParameter( 36 RSAPrivateKey key) 37 { 38 if (key instanceof RSAPrivateCrtKey) 39 { 40 RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; 41 42 return new RSAPrivateCrtKeyParameters(k.getModulus(), 43 k.getPublicExponent(), k.getPrivateExponent(), 44 k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); 45 } 46 else 47 { 48 RSAPrivateKey k = key; 49 50 return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); 51 } 52 } 53 } 54