package org.bouncycastle.crypto.util; import java.io.IOException; import java.io.InputStream; import java.math.BigInteger; import org.bouncycastle.asn1.ASN1Encodable; import org.bouncycastle.asn1.ASN1InputStream; import org.bouncycastle.asn1.ASN1Integer; import org.bouncycastle.asn1.ASN1ObjectIdentifier; import org.bouncycastle.asn1.ASN1Primitive; import org.bouncycastle.asn1.DEROctetString; import org.bouncycastle.asn1.oiw.ElGamalParameter; import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers; import org.bouncycastle.asn1.pkcs.DHParameter; import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers; import org.bouncycastle.asn1.pkcs.RSAPublicKey; import org.bouncycastle.asn1.x509.AlgorithmIdentifier; import org.bouncycastle.asn1.x509.DSAParameter; import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo; import org.bouncycastle.asn1.x509.X509ObjectIdentifiers; import org.bouncycastle.asn1.x9.DHPublicKey; import org.bouncycastle.asn1.x9.DomainParameters; import org.bouncycastle.asn1.x9.ECNamedCurveTable; import org.bouncycastle.asn1.x9.ValidationParams; import org.bouncycastle.asn1.x9.X962Parameters; import org.bouncycastle.asn1.x9.X9ECParameters; import org.bouncycastle.asn1.x9.X9ECPoint; import org.bouncycastle.asn1.x9.X9ObjectIdentifiers; import org.bouncycastle.crypto.ec.CustomNamedCurves; import org.bouncycastle.crypto.params.AsymmetricKeyParameter; import org.bouncycastle.crypto.params.DHParameters; import org.bouncycastle.crypto.params.DHPublicKeyParameters; import org.bouncycastle.crypto.params.DHValidationParameters; import org.bouncycastle.crypto.params.DSAParameters; import org.bouncycastle.crypto.params.DSAPublicKeyParameters; import org.bouncycastle.crypto.params.ECDomainParameters; import org.bouncycastle.crypto.params.ECNamedDomainParameters; import org.bouncycastle.crypto.params.ECPublicKeyParameters; import org.bouncycastle.crypto.params.ElGamalParameters; import org.bouncycastle.crypto.params.ElGamalPublicKeyParameters; import org.bouncycastle.crypto.params.RSAKeyParameters; /* loaded from: classes6.dex */ public class PublicKeyFactory { public static AsymmetricKeyParameter createKey(byte[] bArr) throws IOException { return createKey(SubjectPublicKeyInfo.getInstance(ASN1Primitive.fromByteArray(bArr))); } public static AsymmetricKeyParameter createKey(SubjectPublicKeyInfo subjectPublicKeyInfo) throws IOException { X9ECParameters x9ECParameters; ECDomainParameters eCDomainParameters; AlgorithmIdentifier algorithm = subjectPublicKeyInfo.getAlgorithm(); if (algorithm.getAlgorithm().equals(PKCSObjectIdentifiers.rsaEncryption) || algorithm.getAlgorithm().equals(X509ObjectIdentifiers.id_ea_rsa)) { RSAPublicKey rSAPublicKey = RSAPublicKey.getInstance(subjectPublicKeyInfo.parsePublicKey()); return new RSAKeyParameters(false, rSAPublicKey.getModulus(), rSAPublicKey.getPublicExponent()); } DSAParameters dSAParameters = null; if (algorithm.getAlgorithm().equals(X9ObjectIdentifiers.dhpublicnumber)) { BigInteger y = DHPublicKey.getInstance(subjectPublicKeyInfo.parsePublicKey()).getY(); DomainParameters domainParameters = DomainParameters.getInstance(algorithm.getParameters()); BigInteger p = domainParameters.getP(); BigInteger g = domainParameters.getG(); BigInteger q = domainParameters.getQ(); BigInteger j = domainParameters.getJ() != null ? domainParameters.getJ() : null; ValidationParams validationParams = domainParameters.getValidationParams(); return new DHPublicKeyParameters(y, new DHParameters(p, g, q, j, validationParams != null ? new DHValidationParameters(validationParams.getSeed(), validationParams.getPgenCounter().intValue()) : null)); } if (algorithm.getAlgorithm().equals(PKCSObjectIdentifiers.dhKeyAgreement)) { DHParameter dHParameter = DHParameter.getInstance(algorithm.getParameters()); ASN1Integer aSN1Integer = (ASN1Integer) subjectPublicKeyInfo.parsePublicKey(); BigInteger l = dHParameter.getL(); return new DHPublicKeyParameters(aSN1Integer.getValue(), new DHParameters(dHParameter.getP(), dHParameter.getG(), null, l != null ? l.intValue() : 0)); } if (algorithm.getAlgorithm().equals(OIWObjectIdentifiers.elGamalAlgorithm)) { ElGamalParameter elGamalParameter = ElGamalParameter.getInstance(algorithm.getParameters()); return new ElGamalPublicKeyParameters(((ASN1Integer) subjectPublicKeyInfo.parsePublicKey()).getValue(), new ElGamalParameters(elGamalParameter.getP(), elGamalParameter.getG())); } if (algorithm.getAlgorithm().equals(X9ObjectIdentifiers.id_dsa) || algorithm.getAlgorithm().equals(OIWObjectIdentifiers.dsaWithSHA1)) { ASN1Integer aSN1Integer2 = (ASN1Integer) subjectPublicKeyInfo.parsePublicKey(); ASN1Encodable parameters = algorithm.getParameters(); if (parameters != null) { DSAParameter dSAParameter = DSAParameter.getInstance(parameters.toASN1Primitive()); dSAParameters = new DSAParameters(dSAParameter.getP(), dSAParameter.getQ(), dSAParameter.getG()); } return new DSAPublicKeyParameters(aSN1Integer2.getValue(), dSAParameters); } if (!algorithm.getAlgorithm().equals(X9ObjectIdentifiers.id_ecPublicKey)) { throw new RuntimeException("algorithm identifier in key not recognised"); } X962Parameters x962Parameters = X962Parameters.getInstance(algorithm.getParameters()); boolean isNamedCurve = x962Parameters.isNamedCurve(); ASN1Primitive parameters2 = x962Parameters.getParameters(); if (isNamedCurve) { ASN1ObjectIdentifier aSN1ObjectIdentifier = (ASN1ObjectIdentifier) parameters2; x9ECParameters = CustomNamedCurves.getByOID(aSN1ObjectIdentifier); if (x9ECParameters == null) { x9ECParameters = ECNamedCurveTable.getByOID(aSN1ObjectIdentifier); } eCDomainParameters = new ECNamedDomainParameters(aSN1ObjectIdentifier, x9ECParameters.getCurve(), x9ECParameters.getG(), x9ECParameters.getN(), x9ECParameters.getH(), x9ECParameters.getSeed()); } else { x9ECParameters = X9ECParameters.getInstance(parameters2); eCDomainParameters = new ECDomainParameters(x9ECParameters.getCurve(), x9ECParameters.getG(), x9ECParameters.getN(), x9ECParameters.getH(), x9ECParameters.getSeed()); } return new ECPublicKeyParameters(new X9ECPoint(x9ECParameters.getCurve(), new DEROctetString(subjectPublicKeyInfo.getPublicKeyData().getBytes())).getPoint(), eCDomainParameters); } public static AsymmetricKeyParameter createKey(InputStream inputStream) throws IOException { return createKey(SubjectPublicKeyInfo.getInstance(new ASN1InputStream(inputStream).readObject())); } }