MessageImprint.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. /**
  14. * @param o
  15. * @return a MessageImprint object.
  16. */
  17. public static MessageImprint GetInstance(
  18. object o)
  19. {
  20. if (o == null || o is MessageImprint)
  21. {
  22. return (MessageImprint) o;
  23. }
  24. if (o is Asn1Sequence)
  25. {
  26. return new MessageImprint((Asn1Sequence) o);
  27. }
  28. throw new ArgumentException(
  29. "Unknown object in 'MessageImprint' factory: " + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(o));
  30. }
  31. private MessageImprint(
  32. Asn1Sequence seq)
  33. {
  34. if (seq.Count != 2)
  35. throw new ArgumentException("Wrong number of elements in sequence", "seq");
  36. this.hashAlgorithm = AlgorithmIdentifier.GetInstance(seq[0]);
  37. this.hashedMessage = Asn1OctetString.GetInstance(seq[1]).GetOctets();
  38. }
  39. public MessageImprint(
  40. AlgorithmIdentifier hashAlgorithm,
  41. byte[] hashedMessage)
  42. {
  43. this.hashAlgorithm = hashAlgorithm;
  44. this.hashedMessage = hashedMessage;
  45. }
  46. public AlgorithmIdentifier HashAlgorithm
  47. {
  48. get { return hashAlgorithm; }
  49. }
  50. public byte[] GetHashedMessage()
  51. {
  52. return hashedMessage;
  53. }
  54. /**
  55. * <pre>
  56. * MessageImprint ::= SEQUENCE {
  57. * hashAlgorithm AlgorithmIdentifier,
  58. * hashedMessage OCTET STRING }
  59. * </pre>
  60. */
  61. public override Asn1Object ToAsn1Object()
  62. {
  63. return new DerSequence(hashAlgorithm, new DerOctetString(hashedMessage));
  64. }
  65. }
  66. }
  67. #pragma warning restore
  68. #endif