diff options
Diffstat (limited to 'libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java')
-rw-r--r-- | libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java b/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java deleted file mode 100644 index 750c6ac55..000000000 --- a/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java +++ /dev/null @@ -1,152 +0,0 @@ -package org.spongycastle.crypto.util; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigInteger; - -import org.spongycastle.asn1.ASN1Encodable; -import org.spongycastle.asn1.ASN1InputStream; -import org.spongycastle.asn1.ASN1Integer; -import org.spongycastle.asn1.ASN1ObjectIdentifier; -import org.spongycastle.asn1.ASN1Primitive; -import org.spongycastle.asn1.ASN1Sequence; -import org.spongycastle.asn1.oiw.ElGamalParameter; -import org.spongycastle.asn1.oiw.OIWObjectIdentifiers; -import org.spongycastle.asn1.pkcs.DHParameter; -import org.spongycastle.asn1.pkcs.PKCSObjectIdentifiers; -import org.spongycastle.asn1.pkcs.PrivateKeyInfo; -import org.spongycastle.asn1.pkcs.RSAPrivateKey; -import org.spongycastle.asn1.sec.ECPrivateKey; -import org.spongycastle.asn1.x509.AlgorithmIdentifier; -import org.spongycastle.asn1.x509.DSAParameter; -import org.spongycastle.asn1.x9.ECNamedCurveTable; -import org.spongycastle.asn1.x9.X962Parameters; -import org.spongycastle.asn1.x9.X9ECParameters; -import org.spongycastle.asn1.x9.X9ObjectIdentifiers; -import org.spongycastle.crypto.params.AsymmetricKeyParameter; -import org.spongycastle.crypto.params.DHParameters; -import org.spongycastle.crypto.params.DHPrivateKeyParameters; -import org.spongycastle.crypto.params.DSAParameters; -import org.spongycastle.crypto.params.DSAPrivateKeyParameters; -import org.spongycastle.crypto.params.ECDomainParameters; -import org.spongycastle.crypto.params.ECPrivateKeyParameters; -import org.spongycastle.crypto.params.ElGamalParameters; -import org.spongycastle.crypto.params.ElGamalPrivateKeyParameters; -import org.spongycastle.crypto.params.RSAPrivateCrtKeyParameters; - -/** - * Factory for creating private key objects from PKCS8 PrivateKeyInfo objects. - */ -public class PrivateKeyFactory -{ - /** - * Create a private key parameter from a PKCS8 PrivateKeyInfo encoding. - * - * @param privateKeyInfoData the PrivateKeyInfo encoding - * @return a suitable private key parameter - * @throws IOException on an error decoding the key - */ - public static AsymmetricKeyParameter createKey(byte[] privateKeyInfoData) throws IOException - { - return createKey(PrivateKeyInfo.getInstance(ASN1Primitive.fromByteArray(privateKeyInfoData))); - } - - /** - * Create a private key parameter from a PKCS8 PrivateKeyInfo encoding read from a - * stream. - * - * @param inStr the stream to read the PrivateKeyInfo encoding from - * @return a suitable private key parameter - * @throws IOException on an error decoding the key - */ - public static AsymmetricKeyParameter createKey(InputStream inStr) throws IOException - { - return createKey(PrivateKeyInfo.getInstance(new ASN1InputStream(inStr).readObject())); - } - - /** - * Create a private key parameter from the passed in PKCS8 PrivateKeyInfo object. - * - * @param keyInfo the PrivateKeyInfo object containing the key material - * @return a suitable private key parameter - * @throws IOException on an error decoding the key - */ - public static AsymmetricKeyParameter createKey(PrivateKeyInfo keyInfo) throws IOException - { - AlgorithmIdentifier algId = keyInfo.getPrivateKeyAlgorithm(); - - if (algId.getAlgorithm().equals(PKCSObjectIdentifiers.rsaEncryption)) - { - RSAPrivateKey keyStructure = RSAPrivateKey.getInstance(keyInfo.parsePrivateKey()); - - return new RSAPrivateCrtKeyParameters(keyStructure.getModulus(), - keyStructure.getPublicExponent(), keyStructure.getPrivateExponent(), - keyStructure.getPrime1(), keyStructure.getPrime2(), keyStructure.getExponent1(), - keyStructure.getExponent2(), keyStructure.getCoefficient()); - } - // TODO? -// else if (algId.getObjectId().equals(X9ObjectIdentifiers.dhpublicnumber)) - else if (algId.getAlgorithm().equals(PKCSObjectIdentifiers.dhKeyAgreement)) - { - DHParameter params = DHParameter.getInstance(algId.getParameters()); - ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey(); - - BigInteger lVal = params.getL(); - int l = lVal == null ? 0 : lVal.intValue(); - DHParameters dhParams = new DHParameters(params.getP(), params.getG(), null, l); - - return new DHPrivateKeyParameters(derX.getValue(), dhParams); - } - else if (algId.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) - { - ElGamalParameter params = new ElGamalParameter((ASN1Sequence)algId.getParameters()); - ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey(); - - return new ElGamalPrivateKeyParameters(derX.getValue(), new ElGamalParameters( - params.getP(), params.getG())); - } - else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa)) - { - ASN1Integer derX = (ASN1Integer)keyInfo.parsePrivateKey(); - ASN1Encodable de = algId.getParameters(); - - DSAParameters parameters = null; - if (de != null) - { - DSAParameter params = DSAParameter.getInstance(de.toASN1Primitive()); - parameters = new DSAParameters(params.getP(), params.getQ(), params.getG()); - } - - return new DSAPrivateKeyParameters(derX.getValue(), parameters); - } - else if (algId.getAlgorithm().equals(X9ObjectIdentifiers.id_ecPublicKey)) - { - X962Parameters params = new X962Parameters((ASN1Primitive)algId.getParameters()); - - X9ECParameters x9; - if (params.isNamedCurve()) - { - ASN1ObjectIdentifier oid = ASN1ObjectIdentifier.getInstance(params.getParameters()); - x9 = ECNamedCurveTable.getByOID(oid); - } - else - { - x9 = X9ECParameters.getInstance(params.getParameters()); - } - - ECPrivateKey ec = ECPrivateKey.getInstance(keyInfo.parsePrivateKey()); - BigInteger d = ec.getKey(); - - // TODO We lose any named parameters here - - ECDomainParameters dParams = new ECDomainParameters( - x9.getCurve(), x9.getG(), x9.getN(), x9.getH(), x9.getSeed()); - - return new ECPrivateKeyParameters(d, dParams); - } - else - { - throw new RuntimeException("algorithm identifier in key not recognised"); - } - } -} |