aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/main/java/org/spongycastle/crypto/util/PrivateKeyFactory.java
diff options
context:
space:
mode:
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.java152
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");
- }
- }
-}