aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java')
-rw-r--r--libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java253
1 files changed, 0 insertions, 253 deletions
diff --git a/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java b/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java
deleted file mode 100644
index 13340f1ef..000000000
--- a/libraries/spongycastle/prov/src/main/java/org/spongycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java
+++ /dev/null
@@ -1,253 +0,0 @@
-package org.spongycastle.jcajce.provider.asymmetric.gost;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.math.BigInteger;
-import java.util.Enumeration;
-
-import org.spongycastle.asn1.ASN1Encodable;
-import org.spongycastle.asn1.ASN1Encoding;
-import org.spongycastle.asn1.ASN1ObjectIdentifier;
-import org.spongycastle.asn1.ASN1OctetString;
-import org.spongycastle.asn1.ASN1Sequence;
-import org.spongycastle.asn1.DEROctetString;
-import org.spongycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
-import org.spongycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
-import org.spongycastle.asn1.pkcs.PrivateKeyInfo;
-import org.spongycastle.asn1.x509.AlgorithmIdentifier;
-import org.spongycastle.crypto.params.GOST3410PrivateKeyParameters;
-import org.spongycastle.jcajce.provider.asymmetric.util.PKCS12BagAttributeCarrierImpl;
-import org.spongycastle.jce.interfaces.GOST3410Params;
-import org.spongycastle.jce.interfaces.GOST3410PrivateKey;
-import org.spongycastle.jce.interfaces.PKCS12BagAttributeCarrier;
-import org.spongycastle.jce.spec.GOST3410ParameterSpec;
-import org.spongycastle.jce.spec.GOST3410PrivateKeySpec;
-import org.spongycastle.jce.spec.GOST3410PublicKeyParameterSetSpec;
-
-public class BCGOST3410PrivateKey
- implements GOST3410PrivateKey, PKCS12BagAttributeCarrier
-{
- static final long serialVersionUID = 8581661527592305464L;
-
- private BigInteger x;
-
- private transient GOST3410Params gost3410Spec;
- private transient PKCS12BagAttributeCarrier attrCarrier = new PKCS12BagAttributeCarrierImpl();
-
- protected BCGOST3410PrivateKey()
- {
- }
-
- BCGOST3410PrivateKey(
- GOST3410PrivateKey key)
- {
- this.x = key.getX();
- this.gost3410Spec = key.getParameters();
- }
-
- BCGOST3410PrivateKey(
- GOST3410PrivateKeySpec spec)
- {
- this.x = spec.getX();
- this.gost3410Spec = new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec(spec.getP(), spec.getQ(), spec.getA()));
- }
-
- BCGOST3410PrivateKey(
- PrivateKeyInfo info)
- throws IOException
- {
- GOST3410PublicKeyAlgParameters params = new GOST3410PublicKeyAlgParameters((ASN1Sequence)info.getAlgorithmId().getParameters());
- ASN1OctetString derX = ASN1OctetString.getInstance(info.parsePrivateKey());
- byte[] keyEnc = derX.getOctets();
- byte[] keyBytes = new byte[keyEnc.length];
-
- for (int i = 0; i != keyEnc.length; i++)
- {
- keyBytes[i] = keyEnc[keyEnc.length - 1 - i]; // was little endian
- }
-
- this.x = new BigInteger(1, keyBytes);
- this.gost3410Spec = GOST3410ParameterSpec.fromPublicKeyAlg(params);
- }
-
- BCGOST3410PrivateKey(
- GOST3410PrivateKeyParameters params,
- GOST3410ParameterSpec spec)
- {
- this.x = params.getX();
- this.gost3410Spec = spec;
-
- if (spec == null)
- {
- throw new IllegalArgumentException("spec is null");
- }
- }
-
- public String getAlgorithm()
- {
- return "GOST3410";
- }
-
- /**
- * return the encoding format we produce in getEncoded().
- *
- * @return the string "PKCS#8"
- */
- public String getFormat()
- {
- return "PKCS#8";
- }
-
- /**
- * Return a PKCS8 representation of the key. The sequence returned
- * represents a full PrivateKeyInfo object.
- *
- * @return a PKCS8 representation of the key.
- */
- public byte[] getEncoded()
- {
- PrivateKeyInfo info;
- byte[] keyEnc = this.getX().toByteArray();
- byte[] keyBytes;
-
- if (keyEnc[0] == 0)
- {
- keyBytes = new byte[keyEnc.length - 1];
- }
- else
- {
- keyBytes = new byte[keyEnc.length];
- }
-
- for (int i = 0; i != keyBytes.length; i++)
- {
- keyBytes[i] = keyEnc[keyEnc.length - 1 - i]; // must be little endian
- }
-
- try
- {
- if (gost3410Spec instanceof GOST3410ParameterSpec)
- {
- info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_94, new GOST3410PublicKeyAlgParameters(new ASN1ObjectIdentifier(gost3410Spec.getPublicKeyParamSetOID()), new ASN1ObjectIdentifier(gost3410Spec.getDigestParamSetOID()))), new DEROctetString(keyBytes));
- }
- else
- {
- info = new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_94), new DEROctetString(keyBytes));
- }
-
- return info.getEncoded(ASN1Encoding.DER);
- }
- catch (IOException e)
- {
- return null;
- }
- }
-
- public GOST3410Params getParameters()
- {
- return gost3410Spec;
- }
-
- public BigInteger getX()
- {
- return x;
- }
-
- public boolean equals(
- Object o)
- {
- if (!(o instanceof GOST3410PrivateKey))
- {
- return false;
- }
-
- GOST3410PrivateKey other = (GOST3410PrivateKey)o;
-
- return this.getX().equals(other.getX())
- && this.getParameters().getPublicKeyParameters().equals(other.getParameters().getPublicKeyParameters())
- && this.getParameters().getDigestParamSetOID().equals(other.getParameters().getDigestParamSetOID())
- && compareObj(this.getParameters().getEncryptionParamSetOID(), other.getParameters().getEncryptionParamSetOID());
- }
-
- private boolean compareObj(Object o1, Object o2)
- {
- if (o1 == o2)
- {
- return true;
- }
-
- if (o1 == null)
- {
- return false;
- }
-
- return o1.equals(o2);
- }
-
- public int hashCode()
- {
- return this.getX().hashCode() ^ gost3410Spec.hashCode();
- }
-
- public void setBagAttribute(
- ASN1ObjectIdentifier oid,
- ASN1Encodable attribute)
- {
- attrCarrier.setBagAttribute(oid, attribute);
- }
-
- public ASN1Encodable getBagAttribute(
- ASN1ObjectIdentifier oid)
- {
- return attrCarrier.getBagAttribute(oid);
- }
-
- public Enumeration getBagAttributeKeys()
- {
- return attrCarrier.getBagAttributeKeys();
- }
-
- private void readObject(
- ObjectInputStream in)
- throws IOException, ClassNotFoundException
- {
- in.defaultReadObject();
-
- String publicKeyParamSetOID = (String)in.readObject();
- if (publicKeyParamSetOID != null)
- {
- this.gost3410Spec = new GOST3410ParameterSpec(publicKeyParamSetOID, (String)in.readObject(), (String)in.readObject());
- }
- else
- {
- this.gost3410Spec = new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec((BigInteger)in.readObject(), (BigInteger)in.readObject(), (BigInteger)in.readObject()));
- in.readObject();
- in.readObject();
- }
- this.attrCarrier = new PKCS12BagAttributeCarrierImpl();
- }
-
- private void writeObject(
- ObjectOutputStream out)
- throws IOException
- {
- out.defaultWriteObject();
-
- if (gost3410Spec.getPublicKeyParamSetOID() != null)
- {
- out.writeObject(gost3410Spec.getPublicKeyParamSetOID());
- out.writeObject(gost3410Spec.getDigestParamSetOID());
- out.writeObject(gost3410Spec.getEncryptionParamSetOID());
- }
- else
- {
- out.writeObject(null);
- out.writeObject(gost3410Spec.getPublicKeyParameters().getP());
- out.writeObject(gost3410Spec.getPublicKeyParameters().getQ());
- out.writeObject(gost3410Spec.getPublicKeyParameters().getA());
- out.writeObject(gost3410Spec.getDigestParamSetOID());
- out.writeObject(gost3410Spec.getEncryptionParamSetOID());
- }
- }
-}