89 lines
2.2 KiB
C#
89 lines
2.2 KiB
C#
using Org.BouncyCastle.Asn1;
|
|
using Org.BouncyCastle.Asn1.CryptoPro;
|
|
using Org.BouncyCastle.Asn1.Nist;
|
|
using Org.BouncyCastle.Asn1.Oiw;
|
|
using Org.BouncyCastle.Asn1.Pkcs;
|
|
using Org.BouncyCastle.Asn1.TeleTrust;
|
|
using Org.BouncyCastle.Asn1.X509;
|
|
using Org.BouncyCastle.Asn1.X9;
|
|
using Org.BouncyCastle.Crypto;
|
|
|
|
namespace Org.BouncyCastle.X509;
|
|
|
|
internal class X509SignatureUtilities
|
|
{
|
|
private static readonly Asn1Null derNull = DerNull.Instance;
|
|
|
|
internal static void SetSignatureParameters(ISigner signature, Asn1Encodable parameters)
|
|
{
|
|
if (parameters != null)
|
|
{
|
|
derNull.Equals(parameters);
|
|
}
|
|
}
|
|
|
|
internal static string GetSignatureName(AlgorithmIdentifier sigAlgId)
|
|
{
|
|
Asn1Encodable parameters = sigAlgId.Parameters;
|
|
if (parameters != null && !derNull.Equals(parameters))
|
|
{
|
|
if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss))
|
|
{
|
|
RsassaPssParameters instance = RsassaPssParameters.GetInstance(parameters);
|
|
return GetDigestAlgName(instance.HashAlgorithm.Algorithm) + "withRSAandMGF1";
|
|
}
|
|
if (sigAlgId.Algorithm.Equals(X9ObjectIdentifiers.ECDsaWithSha2))
|
|
{
|
|
Asn1Sequence instance2 = Asn1Sequence.GetInstance(parameters);
|
|
return GetDigestAlgName((DerObjectIdentifier)instance2[0]) + "withECDSA";
|
|
}
|
|
}
|
|
return sigAlgId.Algorithm.Id;
|
|
}
|
|
|
|
private static string GetDigestAlgName(DerObjectIdentifier digestAlgOID)
|
|
{
|
|
if (PkcsObjectIdentifiers.MD5.Equals(digestAlgOID))
|
|
{
|
|
return "MD5";
|
|
}
|
|
if (OiwObjectIdentifiers.IdSha1.Equals(digestAlgOID))
|
|
{
|
|
return "SHA1";
|
|
}
|
|
if (NistObjectIdentifiers.IdSha224.Equals(digestAlgOID))
|
|
{
|
|
return "SHA224";
|
|
}
|
|
if (NistObjectIdentifiers.IdSha256.Equals(digestAlgOID))
|
|
{
|
|
return "SHA256";
|
|
}
|
|
if (NistObjectIdentifiers.IdSha384.Equals(digestAlgOID))
|
|
{
|
|
return "SHA384";
|
|
}
|
|
if (NistObjectIdentifiers.IdSha512.Equals(digestAlgOID))
|
|
{
|
|
return "SHA512";
|
|
}
|
|
if (TeleTrusTObjectIdentifiers.RipeMD128.Equals(digestAlgOID))
|
|
{
|
|
return "RIPEMD128";
|
|
}
|
|
if (TeleTrusTObjectIdentifiers.RipeMD160.Equals(digestAlgOID))
|
|
{
|
|
return "RIPEMD160";
|
|
}
|
|
if (TeleTrusTObjectIdentifiers.RipeMD256.Equals(digestAlgOID))
|
|
{
|
|
return "RIPEMD256";
|
|
}
|
|
if (CryptoProObjectIdentifiers.GostR3411.Equals(digestAlgOID))
|
|
{
|
|
return "GOST3411";
|
|
}
|
|
return digestAlgOID.Id;
|
|
}
|
|
}
|