TimeStampTokenInfo.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.Tsp;
  5. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
  6. using Best.HTTP.SecureProtocol.Org.BouncyCastle.Math;
  7. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Tsp
  8. {
  9. public class TimeStampTokenInfo
  10. {
  11. private static TstInfo ParseTstInfo(byte[] tstInfoEncoding)
  12. {
  13. try
  14. {
  15. return TstInfo.GetInstance(tstInfoEncoding);
  16. }
  17. catch (Exception e)
  18. {
  19. throw new TspException("unable to parse TstInfo encoding: " + e.Message);
  20. }
  21. }
  22. private TstInfo tstInfo;
  23. private DateTime genTime;
  24. public TimeStampTokenInfo(byte[] tstInfoEncoding)
  25. : this(ParseTstInfo(tstInfoEncoding))
  26. {
  27. }
  28. public TimeStampTokenInfo(
  29. TstInfo tstInfo)
  30. {
  31. this.tstInfo = tstInfo;
  32. try
  33. {
  34. this.genTime = tstInfo.GenTime.ToDateTime();
  35. }
  36. catch (Exception e)
  37. {
  38. throw new TspException("unable to parse genTime field: " + e.Message);
  39. }
  40. }
  41. public bool IsOrdered
  42. {
  43. get { return tstInfo.Ordering.IsTrue; }
  44. }
  45. public Accuracy Accuracy
  46. {
  47. get { return tstInfo.Accuracy; }
  48. }
  49. public DateTime GenTime
  50. {
  51. get { return genTime; }
  52. }
  53. public GenTimeAccuracy GenTimeAccuracy
  54. {
  55. get
  56. {
  57. return this.Accuracy == null
  58. ? null
  59. : new GenTimeAccuracy(this.Accuracy);
  60. }
  61. }
  62. public string Policy
  63. {
  64. get { return tstInfo.Policy.Id; }
  65. }
  66. public BigInteger SerialNumber
  67. {
  68. get { return tstInfo.SerialNumber.Value; }
  69. }
  70. public GeneralName Tsa
  71. {
  72. get { return tstInfo.Tsa; }
  73. }
  74. /**
  75. * @return the nonce value, null if there isn't one.
  76. */
  77. public BigInteger Nonce
  78. {
  79. get
  80. {
  81. return tstInfo.Nonce == null
  82. ? null
  83. : tstInfo.Nonce.Value;
  84. }
  85. }
  86. public AlgorithmIdentifier HashAlgorithm
  87. {
  88. get { return tstInfo.MessageImprint.HashAlgorithm; }
  89. }
  90. public string MessageImprintAlgOid
  91. {
  92. get { return tstInfo.MessageImprint.HashAlgorithm.Algorithm.Id; }
  93. }
  94. public byte[] GetMessageImprintDigest()
  95. {
  96. return tstInfo.MessageImprint.GetHashedMessage();
  97. }
  98. public byte[] GetEncoded()
  99. {
  100. return tstInfo.GetEncoded();
  101. }
  102. public TstInfo TstInfo
  103. {
  104. get { return tstInfo; }
  105. }
  106. }
  107. }
  108. #pragma warning restore
  109. #endif