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