14c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompackage org.bouncycastle.jcajce.provider.asymmetric.rsa; 2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.security.interfaces.RSAPrivateCrtKey; 4b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.security.interfaces.RSAPrivateKey; 5b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport java.security.interfaces.RSAPublicKey; 6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 74c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1ObjectIdentifier; 8b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; 9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.x509.X509ObjectIdentifiers; 10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.crypto.params.RSAKeyParameters; 11b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.crypto.params.RSAPrivateCrtKeyParameters; 12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 13b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam/** 14b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * utility class for converting java.security RSA objects into their 15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam * org.bouncycastle.crypto counterparts. 16b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam */ 174c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrompublic class RSAUtil 18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{ 194c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static final ASN1ObjectIdentifier[] rsaOids = 20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom PKCSObjectIdentifiers.rsaEncryption, 224c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom X509ObjectIdentifiers.id_ea_rsa, 234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom PKCSObjectIdentifiers.id_RSAES_OAEP, 244c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom PKCSObjectIdentifiers.id_RSASSA_PSS 254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom }; 264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom public static boolean isRsaOid( 284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom ASN1ObjectIdentifier algOid) 294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom for (int i = 0; i != rsaOids.length; i++) 314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom if (algOid.equals(rsaOids[i])) 334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom { 344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return true; 354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom } 374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom return false; 39b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom 41b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam static RSAKeyParameters generatePublicKeyParameter( 424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom RSAPublicKey key) 43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new RSAKeyParameters(false, key.getModulus(), key.getPublicExponent()); 45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam static RSAKeyParameters generatePrivateKeyParameter( 494c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom RSAPrivateKey key) 50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam if (key instanceof RSAPrivateCrtKey) 52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 534c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom RSAPrivateCrtKey k = (RSAPrivateCrtKey)key; 54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new RSAPrivateCrtKeyParameters(k.getModulus(), 56b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam k.getPublicExponent(), k.getPrivateExponent(), 574c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom k.getPrimeP(), k.getPrimeQ(), k.getPrimeExponentP(), k.getPrimeExponentQ(), k.getCrtCoefficient()); 58b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam else 60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam { 614c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom RSAPrivateKey k = key; 62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam 63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam return new RSAKeyParameters(true, k.getModulus(), k.getPrivateExponent()); 64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 65b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam } 66b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam} 67