RSAUtil.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
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