123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- using System;
- 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))
- {
- // TODO Put back in
- // AlgorithmParameters sigParams = AlgorithmParameters.GetInstance(signature.getAlgorithm());
- //
- // try
- // {
- // sigParams.Init(parameters.ToAsn1Object().GetDerEncoded());
- // }
- // catch (IOException e)
- // {
- // throw new SignatureException("IOException decoding parameters: " + e.Message);
- // }
- //
- // if (Org.BouncyCastle.Utilities.Platform.EndsWith(signature.getAlgorithm(), "MGF1"))
- // {
- // try
- // {
- // signature.setParameter(sigParams.getParameterSpec(PSSParameterSpec.class));
- // }
- // catch (GeneralSecurityException e)
- // {
- // throw new SignatureException("Exception extracting parameters: " + e.Message);
- // }
- // }
- }
- }
- internal static string GetSignatureName(
- AlgorithmIdentifier sigAlgId)
- {
- Asn1Encodable parameters = sigAlgId.Parameters;
- if (parameters != null && !derNull.Equals(parameters))
- {
- if (sigAlgId.Algorithm.Equals(PkcsObjectIdentifiers.IdRsassaPss))
- {
- RsassaPssParameters rsaParams = RsassaPssParameters.GetInstance(parameters);
- return GetDigestAlgName(rsaParams.HashAlgorithm.Algorithm) + "withRSAandMGF1";
- }
- if (sigAlgId.Algorithm.Equals(X9ObjectIdentifiers.ECDsaWithSha2))
- {
- Asn1Sequence ecDsaParams = Asn1Sequence.GetInstance(parameters);
- return GetDigestAlgName((DerObjectIdentifier)ecDsaParams[0]) + "withECDSA";
- }
- }
- return sigAlgId.Algorithm.Id;
- }
- /**
- * Return the digest algorithm using one of the standard JCA string
- * representations rather than the algorithm identifier (if possible).
- */
- private static string GetDigestAlgName(
- DerObjectIdentifier digestAlgOID)
- {
- if (PkcsObjectIdentifiers.MD5.Equals(digestAlgOID))
- {
- return "MD5";
- }
- else if (OiwObjectIdentifiers.IdSha1.Equals(digestAlgOID))
- {
- return "SHA1";
- }
- else if (NistObjectIdentifiers.IdSha224.Equals(digestAlgOID))
- {
- return "SHA224";
- }
- else if (NistObjectIdentifiers.IdSha256.Equals(digestAlgOID))
- {
- return "SHA256";
- }
- else if (NistObjectIdentifiers.IdSha384.Equals(digestAlgOID))
- {
- return "SHA384";
- }
- else if (NistObjectIdentifiers.IdSha512.Equals(digestAlgOID))
- {
- return "SHA512";
- }
- else if (TeleTrusTObjectIdentifiers.RipeMD128.Equals(digestAlgOID))
- {
- return "RIPEMD128";
- }
- else if (TeleTrusTObjectIdentifiers.RipeMD160.Equals(digestAlgOID))
- {
- return "RIPEMD160";
- }
- else if (TeleTrusTObjectIdentifiers.RipeMD256.Equals(digestAlgOID))
- {
- return "RIPEMD256";
- }
- else if (CryptoProObjectIdentifiers.GostR3411.Equals(digestAlgOID))
- {
- return "GOST3411";
- }
- else
- {
- return digestAlgOID.Id;
- }
- }
- }
- }
- #endif
|