Home | History | Annotate | Download | only in rsa
      1 package org.bouncycastle.jcajce.provider.asymmetric.rsa;
      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.ASN1ObjectIdentifier;
      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 public 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