104 lines
5.5 KiB
Java
104 lines
5.5 KiB
Java
package org.bouncycastle.jcajce.provider.asymmetric.x509;
|
|
|
|
import java.io.IOException;
|
|
import java.security.AlgorithmParameters;
|
|
import java.security.GeneralSecurityException;
|
|
import java.security.InvalidKeyException;
|
|
import java.security.NoSuchAlgorithmException;
|
|
import java.security.Provider;
|
|
import java.security.Security;
|
|
import java.security.Signature;
|
|
import java.security.SignatureException;
|
|
import java.security.spec.PSSParameterSpec;
|
|
import org.bouncycastle.asn1.ASN1Encodable;
|
|
import org.bouncycastle.asn1.ASN1Null;
|
|
import org.bouncycastle.asn1.ASN1ObjectIdentifier;
|
|
import org.bouncycastle.asn1.ASN1Sequence;
|
|
import org.bouncycastle.asn1.DERNull;
|
|
import org.bouncycastle.asn1.cryptopro.CryptoProObjectIdentifiers;
|
|
import org.bouncycastle.asn1.nist.NISTObjectIdentifiers;
|
|
import org.bouncycastle.asn1.oiw.OIWObjectIdentifiers;
|
|
import org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers;
|
|
import org.bouncycastle.asn1.pkcs.RSASSAPSSparams;
|
|
import org.bouncycastle.asn1.teletrust.TeleTrusTObjectIdentifiers;
|
|
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
|
|
import org.bouncycastle.asn1.x9.X9ObjectIdentifiers;
|
|
import org.bouncycastle.jce.provider.BouncyCastleProvider;
|
|
|
|
/* loaded from: classes6.dex */
|
|
class X509SignatureUtil {
|
|
private static final ASN1Null derNull = DERNull.INSTANCE;
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public static void setSignatureParameters(Signature signature, ASN1Encodable aSN1Encodable) throws NoSuchAlgorithmException, SignatureException, InvalidKeyException {
|
|
if (aSN1Encodable == null || derNull.equals(aSN1Encodable)) {
|
|
return;
|
|
}
|
|
AlgorithmParameters algorithmParameters = AlgorithmParameters.getInstance(signature.getAlgorithm(), signature.getProvider());
|
|
try {
|
|
algorithmParameters.init(aSN1Encodable.toASN1Primitive().getEncoded());
|
|
if (signature.getAlgorithm().endsWith("MGF1")) {
|
|
try {
|
|
signature.setParameter(algorithmParameters.getParameterSpec(PSSParameterSpec.class));
|
|
} catch (GeneralSecurityException e) {
|
|
StringBuilder sb = new StringBuilder("Exception extracting parameters: ");
|
|
sb.append(e.getMessage());
|
|
throw new SignatureException(sb.toString());
|
|
}
|
|
}
|
|
} catch (IOException e2) {
|
|
StringBuilder sb2 = new StringBuilder("IOException decoding parameters: ");
|
|
sb2.append(e2.getMessage());
|
|
throw new SignatureException(sb2.toString());
|
|
}
|
|
}
|
|
|
|
/* JADX INFO: Access modifiers changed from: package-private */
|
|
public static String getSignatureName(AlgorithmIdentifier algorithmIdentifier) {
|
|
ASN1Encodable parameters = algorithmIdentifier.getParameters();
|
|
if (parameters != null && !derNull.equals(parameters)) {
|
|
if (algorithmIdentifier.getAlgorithm().equals(PKCSObjectIdentifiers.id_RSASSA_PSS)) {
|
|
RSASSAPSSparams rSASSAPSSparams = RSASSAPSSparams.getInstance(parameters);
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(getDigestAlgName(rSASSAPSSparams.getHashAlgorithm().getAlgorithm()));
|
|
sb.append("withRSAandMGF1");
|
|
return sb.toString();
|
|
}
|
|
if (algorithmIdentifier.getAlgorithm().equals(X9ObjectIdentifiers.ecdsa_with_SHA2)) {
|
|
ASN1Sequence aSN1Sequence = ASN1Sequence.getInstance(parameters);
|
|
StringBuilder sb2 = new StringBuilder();
|
|
sb2.append(getDigestAlgName((ASN1ObjectIdentifier) aSN1Sequence.getObjectAt(0)));
|
|
sb2.append("withECDSA");
|
|
return sb2.toString();
|
|
}
|
|
}
|
|
Provider provider = Security.getProvider(BouncyCastleProvider.PROVIDER_NAME);
|
|
if (provider != null) {
|
|
StringBuilder sb3 = new StringBuilder("Alg.Alias.Signature.");
|
|
sb3.append(algorithmIdentifier.getAlgorithm().getId());
|
|
String property = provider.getProperty(sb3.toString());
|
|
if (property != null) {
|
|
return property;
|
|
}
|
|
}
|
|
Provider[] providers = Security.getProviders();
|
|
for (int i = 0; i != providers.length; i++) {
|
|
Provider provider2 = providers[i];
|
|
StringBuilder sb4 = new StringBuilder("Alg.Alias.Signature.");
|
|
sb4.append(algorithmIdentifier.getAlgorithm().getId());
|
|
String property2 = provider2.getProperty(sb4.toString());
|
|
if (property2 != null) {
|
|
return property2;
|
|
}
|
|
}
|
|
return algorithmIdentifier.getAlgorithm().getId();
|
|
}
|
|
|
|
private static String getDigestAlgName(ASN1ObjectIdentifier aSN1ObjectIdentifier) {
|
|
return PKCSObjectIdentifiers.md5.equals(aSN1ObjectIdentifier) ? "MD5" : OIWObjectIdentifiers.idSHA1.equals(aSN1ObjectIdentifier) ? "SHA1" : NISTObjectIdentifiers.id_sha224.equals(aSN1ObjectIdentifier) ? "SHA224" : NISTObjectIdentifiers.id_sha256.equals(aSN1ObjectIdentifier) ? "SHA256" : NISTObjectIdentifiers.id_sha384.equals(aSN1ObjectIdentifier) ? "SHA384" : NISTObjectIdentifiers.id_sha512.equals(aSN1ObjectIdentifier) ? "SHA512" : TeleTrusTObjectIdentifiers.ripemd128.equals(aSN1ObjectIdentifier) ? "RIPEMD128" : TeleTrusTObjectIdentifiers.ripemd160.equals(aSN1ObjectIdentifier) ? "RIPEMD160" : TeleTrusTObjectIdentifiers.ripemd256.equals(aSN1ObjectIdentifier) ? "RIPEMD256" : CryptoProObjectIdentifiers.gostR3411.equals(aSN1ObjectIdentifier) ? "GOST3411" : aSN1ObjectIdentifier.getId();
|
|
}
|
|
|
|
X509SignatureUtil() {
|
|
}
|
|
}
|