what-the-bank/sources/org/bouncycastle/jcajce/provider/asymmetric/gost/BCGOST3410PrivateKey.java

171 lines
8.0 KiB
Java
Raw Normal View History

2024-07-27 18:17:47 +07:00
package org.bouncycastle.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.bouncycastle.asn1.ASN1Encodable;
import org.bouncycastle.asn1.ASN1Encoding;
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.ASN1Sequence;
import org.bouncycastle.asn1.DEROctetString;
import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
import org.bouncycastle.asn1.cryptopro.GOST3410PublicKeyAlgParameters;
import org.bouncycastle.asn1.pkcs.PrivateKeyInfo;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.crypto.params.GOST3410PrivateKeyParameters;
import org.bouncycastle.jcajce.provider.asymmetric.util.PKCS12BagAttributeCarrierImpl;
import org.bouncycastle.jce.interfaces.GOST3410Params;
import org.bouncycastle.jce.interfaces.GOST3410PrivateKey;
import org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier;
import org.bouncycastle.jce.spec.GOST3410ParameterSpec;
import org.bouncycastle.jce.spec.GOST3410PrivateKeySpec;
import org.bouncycastle.jce.spec.GOST3410PublicKeyParameterSetSpec;
/* loaded from: classes6.dex */
public class BCGOST3410PrivateKey implements GOST3410PrivateKey, PKCS12BagAttributeCarrier {
static final long serialVersionUID = 8581661527592305464L;
private transient PKCS12BagAttributeCarrier attrCarrier = new PKCS12BagAttributeCarrierImpl();
private transient GOST3410Params gost3410Spec;
private BigInteger x;
@Override // org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
public void setBagAttribute(ASN1ObjectIdentifier aSN1ObjectIdentifier, ASN1Encodable aSN1Encodable) {
this.attrCarrier.setBagAttribute(aSN1ObjectIdentifier, aSN1Encodable);
}
public int hashCode() {
return getX().hashCode() ^ this.gost3410Spec.hashCode();
}
@Override // org.bouncycastle.jce.interfaces.GOST3410PrivateKey
public BigInteger getX() {
return this.x;
}
@Override // org.bouncycastle.jce.interfaces.GOST3410Key
public GOST3410Params getParameters() {
return this.gost3410Spec;
}
@Override // java.security.Key
public String getFormat() {
return "PKCS#8";
}
@Override // java.security.Key
public byte[] getEncoded() {
byte[] byteArray = getX().toByteArray();
int length = byteArray[0] == 0 ? byteArray.length - 1 : byteArray.length;
byte[] bArr = new byte[length];
for (int i = 0; i != length; i++) {
bArr[i] = byteArray[(byteArray.length - 1) - i];
}
try {
return (this.gost3410Spec instanceof GOST3410ParameterSpec ? new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_94, new GOST3410PublicKeyAlgParameters(new ASN1ObjectIdentifier(this.gost3410Spec.getPublicKeyParamSetOID()), new ASN1ObjectIdentifier(this.gost3410Spec.getDigestParamSetOID()))), new DEROctetString(bArr)) : new PrivateKeyInfo(new AlgorithmIdentifier(CryptoProObjectIdentifiers.gostR3410_94), new DEROctetString(bArr))).getEncoded(ASN1Encoding.DER);
} catch (IOException unused) {
return null;
}
}
@Override // org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
public Enumeration getBagAttributeKeys() {
return this.attrCarrier.getBagAttributeKeys();
}
@Override // org.bouncycastle.jce.interfaces.PKCS12BagAttributeCarrier
public ASN1Encodable getBagAttribute(ASN1ObjectIdentifier aSN1ObjectIdentifier) {
return this.attrCarrier.getBagAttribute(aSN1ObjectIdentifier);
}
@Override // java.security.Key
public String getAlgorithm() {
return "GOST3410";
}
public boolean equals(Object obj) {
if (!(obj instanceof GOST3410PrivateKey)) {
return false;
}
GOST3410PrivateKey gOST3410PrivateKey = (GOST3410PrivateKey) obj;
return getX().equals(gOST3410PrivateKey.getX()) && getParameters().getPublicKeyParameters().equals(gOST3410PrivateKey.getParameters().getPublicKeyParameters()) && getParameters().getDigestParamSetOID().equals(gOST3410PrivateKey.getParameters().getDigestParamSetOID()) && compareObj(getParameters().getEncryptionParamSetOID(), gOST3410PrivateKey.getParameters().getEncryptionParamSetOID());
}
private void writeObject(ObjectOutputStream objectOutputStream) throws IOException {
Object a;
objectOutputStream.defaultWriteObject();
if (this.gost3410Spec.getPublicKeyParamSetOID() != null) {
a = this.gost3410Spec.getPublicKeyParamSetOID();
} else {
objectOutputStream.writeObject(null);
objectOutputStream.writeObject(this.gost3410Spec.getPublicKeyParameters().getP());
objectOutputStream.writeObject(this.gost3410Spec.getPublicKeyParameters().getQ());
a = this.gost3410Spec.getPublicKeyParameters().getA();
}
objectOutputStream.writeObject(a);
objectOutputStream.writeObject(this.gost3410Spec.getDigestParamSetOID());
objectOutputStream.writeObject(this.gost3410Spec.getEncryptionParamSetOID());
}
private void readObject(ObjectInputStream objectInputStream) throws IOException, ClassNotFoundException {
objectInputStream.defaultReadObject();
String str = (String) objectInputStream.readObject();
if (str != null) {
this.gost3410Spec = new GOST3410ParameterSpec(str, (String) objectInputStream.readObject(), (String) objectInputStream.readObject());
} else {
this.gost3410Spec = new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec((BigInteger) objectInputStream.readObject(), (BigInteger) objectInputStream.readObject(), (BigInteger) objectInputStream.readObject()));
objectInputStream.readObject();
objectInputStream.readObject();
}
this.attrCarrier = new PKCS12BagAttributeCarrierImpl();
}
private boolean compareObj(Object obj, Object obj2) {
if (obj == obj2) {
return true;
}
if (obj == null) {
return false;
}
return obj.equals(obj2);
}
/* JADX INFO: Access modifiers changed from: package-private */
public BCGOST3410PrivateKey(GOST3410PrivateKeySpec gOST3410PrivateKeySpec) {
this.x = gOST3410PrivateKeySpec.getX();
this.gost3410Spec = new GOST3410ParameterSpec(new GOST3410PublicKeyParameterSetSpec(gOST3410PrivateKeySpec.getP(), gOST3410PrivateKeySpec.getQ(), gOST3410PrivateKeySpec.getA()));
}
/* JADX INFO: Access modifiers changed from: package-private */
public BCGOST3410PrivateKey(GOST3410PrivateKey gOST3410PrivateKey) {
this.x = gOST3410PrivateKey.getX();
this.gost3410Spec = gOST3410PrivateKey.getParameters();
}
/* JADX INFO: Access modifiers changed from: package-private */
public BCGOST3410PrivateKey(GOST3410PrivateKeyParameters gOST3410PrivateKeyParameters, GOST3410ParameterSpec gOST3410ParameterSpec) {
this.x = gOST3410PrivateKeyParameters.getX();
this.gost3410Spec = gOST3410ParameterSpec;
if (gOST3410ParameterSpec == null) {
throw new IllegalArgumentException("spec is null");
}
}
/* JADX INFO: Access modifiers changed from: package-private */
public BCGOST3410PrivateKey(PrivateKeyInfo privateKeyInfo) throws IOException {
GOST3410PublicKeyAlgParameters gOST3410PublicKeyAlgParameters = new GOST3410PublicKeyAlgParameters((ASN1Sequence) privateKeyInfo.getAlgorithmId().getParameters());
byte[] octets = ASN1OctetString.getInstance(privateKeyInfo.parsePrivateKey()).getOctets();
byte[] bArr = new byte[octets.length];
for (int i = 0; i != octets.length; i++) {
bArr[i] = octets[(octets.length - 1) - i];
}
this.x = new BigInteger(1, bArr);
this.gost3410Spec = GOST3410ParameterSpec.fromPublicKeyAlg(gOST3410PublicKeyAlgParameters);
}
protected BCGOST3410PrivateKey() {
}
}