51 lines
3.2 KiB
Java
51 lines
3.2 KiB
Java
|
package org.bouncycastle.crypto.util;
|
||
|
|
||
|
import java.io.IOException;
|
||
|
import org.bouncycastle.asn1.ASN1Integer;
|
||
|
import org.bouncycastle.asn1.ASN1Null;
|
||
|
import org.bouncycastle.asn1.ASN1OctetString;
|
||
|
import org.bouncycastle.asn1.DERNull;
|
||
|
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.x9.X962Parameters;
|
||
|
import org.bouncycastle.asn1.x9.X9ECParameters;
|
||
|
import org.bouncycastle.asn1.x9.X9ECPoint;
|
||
|
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
|
||
|
import org.bouncycastle.crypto.params.AsymmetricKeyParameter;
|
||
|
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.RSAKeyParameters;
|
||
|
|
||
|
/* loaded from: classes6.dex */
|
||
|
public class SubjectPublicKeyInfoFactory {
|
||
|
public static SubjectPublicKeyInfo createSubjectPublicKeyInfo(AsymmetricKeyParameter asymmetricKeyParameter) throws IOException {
|
||
|
X962Parameters x962Parameters;
|
||
|
if (asymmetricKeyParameter instanceof RSAKeyParameters) {
|
||
|
RSAKeyParameters rSAKeyParameters = (RSAKeyParameters) asymmetricKeyParameter;
|
||
|
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(PKCSObjectIdentifiers.rsaEncryption, DERNull.INSTANCE), new RSAPublicKey(rSAKeyParameters.getModulus(), rSAKeyParameters.getExponent()));
|
||
|
}
|
||
|
if (asymmetricKeyParameter instanceof DSAPublicKeyParameters) {
|
||
|
DSAPublicKeyParameters dSAPublicKeyParameters = (DSAPublicKeyParameters) asymmetricKeyParameter;
|
||
|
DSAParameters parameters = dSAPublicKeyParameters.getParameters();
|
||
|
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_dsa, parameters != null ? new DSAParameter(parameters.getP(), parameters.getQ(), parameters.getG()) : null), new ASN1Integer(dSAPublicKeyParameters.getY()));
|
||
|
}
|
||
|
if (!(asymmetricKeyParameter instanceof ECPublicKeyParameters)) {
|
||
|
throw new IOException("key parameters not recognised.");
|
||
|
}
|
||
|
ECPublicKeyParameters eCPublicKeyParameters = (ECPublicKeyParameters) asymmetricKeyParameter;
|
||
|
ECDomainParameters parameters2 = eCPublicKeyParameters.getParameters();
|
||
|
if (parameters2 == null) {
|
||
|
x962Parameters = new X962Parameters((ASN1Null) DERNull.INSTANCE);
|
||
|
} else {
|
||
|
x962Parameters = parameters2 instanceof ECNamedDomainParameters ? new X962Parameters(((ECNamedDomainParameters) parameters2).getName()) : new X962Parameters(new X9ECParameters(parameters2.getCurve(), parameters2.getG(), parameters2.getN(), parameters2.getH(), parameters2.getSeed()));
|
||
|
}
|
||
|
return new SubjectPublicKeyInfo(new AlgorithmIdentifier(X9ObjectIdentifiers.id_ecPublicKey, x962Parameters), ((ASN1OctetString) new X9ECPoint(eCPublicKeyParameters.getQ()).toASN1Primitive()).getOctets());
|
||
|
}
|
||
|
}
|