MessageImprint.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  5. using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
  6. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Tsp
  7. {
  8. public class MessageImprint
  9. : Asn1Encodable
  10. {
  11. private readonly AlgorithmIdentifier hashAlgorithm;
  12. private readonly byte[] hashedMessage;
  13. public static MessageImprint GetInstance(object obj)
  14. {
  15. if (obj is MessageImprint)
  16. return (MessageImprint)obj;
  17. if (obj == null)
  18. return null;
  19. return new MessageImprint(Asn1Sequence.GetInstance(obj));
  20. }
  21. private MessageImprint(
  22. Asn1Sequence seq)
  23. {
  24. if (seq.Count != 2)
  25. throw new ArgumentException("Wrong number of elements in sequence", "seq");
  26. this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]);
  27. this.hashedMessage = Asn1OctetString.GetInstance(seq[1]).GetOctets();
  28. }
  29. public MessageImprint(
  30. AlgorithmIdentifier hashAlgorithm,
  31. byte[] hashedMessage)
  32. {
  33. this.hashAlgorithm = hashAlgorithm;
  34. this.hashedMessage = hashedMessage;
  35. }
  36. public AlgorithmIdentifier HashAlgorithm
  37. {
  38. get { return hashAlgorithm; }
  39. }
  40. public byte[] GetHashedMessage()
  41. {
  42. return hashedMessage;
  43. }
  44. /**
  45. * <pre>
  46. * MessageImprint ::= SEQUENCE {
  47. * hashAlgorithm AlgorithmIdentifier,
  48. * hashedMessage OCTET STRING }
  49. * </pre>
  50. */
  51. public override Asn1Object ToAsn1Object()
  52. {
  53. return new DerSequence(hashAlgorithm, new DerOctetString(hashedMessage));
  54. }
  55. }
  56. }
  57. #pragma warning restore
  58. #endif