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