123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Nist;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Ess
- {
- public class EssCertIDv2
- : Asn1Encodable
- {
- private readonly AlgorithmIdentifier hashAlgorithm;
- private readonly byte[] certHash;
- private readonly IssuerSerial issuerSerial;
- private static readonly AlgorithmIdentifier DefaultAlgID = new AlgorithmIdentifier(
- NistObjectIdentifiers.IdSha256);
- public static EssCertIDv2 GetInstance(object obj)
- {
- if (obj == null)
- return null;
- EssCertIDv2 existing = obj as EssCertIDv2;
- if (existing != null)
- return existing;
- return new EssCertIDv2(Asn1Sequence.GetInstance(obj));
- }
- private EssCertIDv2(
- Asn1Sequence seq)
- {
- if (seq.Count > 3)
- throw new ArgumentException("Bad sequence size: " + seq.Count, "seq");
- int count = 0;
- if (seq[0] is Asn1OctetString)
- {
- // Default value
- this.hashAlgorithm = DefaultAlgID;
- }
- else
- {
- this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[count++].ToAsn1Object());
- }
- this.certHash = Asn1OctetString.GetInstance(seq[count++].ToAsn1Object()).GetOctets();
- if (seq.Count > count)
- {
- this.issuerSerial = IssuerSerial.GetInstance(
- Asn1Sequence.GetInstance(seq[count].ToAsn1Object()));
- }
- }
- public EssCertIDv2(byte[] certHash)
- : this(null, certHash, null)
- {
- }
- public EssCertIDv2(
- AlgorithmIdentifier algId,
- byte[] certHash)
- : this(algId, certHash, null)
- {
- }
- public EssCertIDv2(
- byte[] certHash,
- IssuerSerial issuerSerial)
- : this(null, certHash, issuerSerial)
- {
- }
- public EssCertIDv2(
- AlgorithmIdentifier algId,
- byte[] certHash,
- IssuerSerial issuerSerial)
- {
- if (algId == null)
- {
- // Default value
- this.hashAlgorithm = DefaultAlgID;
- }
- else
- {
- this.hashAlgorithm = algId;
- }
- this.certHash = certHash;
- this.issuerSerial = issuerSerial;
- }
- public AlgorithmIdentifier HashAlgorithm
- {
- get { return this.hashAlgorithm; }
- }
- public byte[] GetCertHash()
- {
- return Arrays.Clone(certHash);
- }
- public IssuerSerial IssuerSerial
- {
- get { return issuerSerial; }
- }
- /**
- * <pre>
- * EssCertIDv2 ::= SEQUENCE {
- * hashAlgorithm AlgorithmIdentifier
- * DEFAULT {algorithm id-sha256},
- * certHash Hash,
- * issuerSerial IssuerSerial OPTIONAL
- * }
- *
- * Hash ::= OCTET STRING
- *
- * IssuerSerial ::= SEQUENCE {
- * issuer GeneralNames,
- * serialNumber CertificateSerialNumber
- * }
- * </pre>
- */
- public override Asn1Object ToAsn1Object()
- {
- Asn1EncodableVector v = new Asn1EncodableVector();
- if (!hashAlgorithm.Equals(DefaultAlgID))
- {
- v.Add(hashAlgorithm);
- }
- v.Add(new DerOctetString(certHash).ToAsn1Object());
- v.AddOptional(issuerSerial);
- return new DerSequence(v);
- }
- }
- }
- #pragma warning restore
- #endif
|