AttributeCertificate.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509
  6. {
  7. public class AttributeCertificate
  8. : Asn1Encodable
  9. {
  10. private readonly AttributeCertificateInfo acinfo;
  11. private readonly AlgorithmIdentifier signatureAlgorithm;
  12. private readonly DerBitString signatureValue;
  13. /**
  14. * @param obj
  15. * @return
  16. */
  17. public static AttributeCertificate GetInstance(
  18. object obj)
  19. {
  20. if (obj is AttributeCertificate)
  21. return (AttributeCertificate) obj;
  22. if (obj != null)
  23. return new AttributeCertificate(Asn1Sequence.GetInstance(obj));
  24. return null;
  25. }
  26. public AttributeCertificate(
  27. AttributeCertificateInfo acinfo,
  28. AlgorithmIdentifier signatureAlgorithm,
  29. DerBitString signatureValue)
  30. {
  31. this.acinfo = acinfo;
  32. this.signatureAlgorithm = signatureAlgorithm;
  33. this.signatureValue = signatureValue;
  34. }
  35. private AttributeCertificate(
  36. Asn1Sequence seq)
  37. {
  38. if (seq.Count != 3)
  39. throw new ArgumentException("Bad sequence size: " + seq.Count);
  40. this.acinfo = AttributeCertificateInfo.GetInstance(seq[0]);
  41. this.signatureAlgorithm = AlgorithmIdentifier.GetInstance(seq[1]);
  42. this.signatureValue = DerBitString.GetInstance(seq[2]);
  43. }
  44. public AttributeCertificateInfo ACInfo
  45. {
  46. get { return acinfo; }
  47. }
  48. public AlgorithmIdentifier SignatureAlgorithm
  49. {
  50. get { return signatureAlgorithm; }
  51. }
  52. public DerBitString SignatureValue
  53. {
  54. get { return signatureValue; }
  55. }
  56. public byte[] GetSignatureOctets()
  57. {
  58. return signatureValue.GetOctets();
  59. }
  60. /**
  61. * Produce an object suitable for an Asn1OutputStream.
  62. * <pre>
  63. * AttributeCertificate ::= Sequence {
  64. * acinfo AttributeCertificateInfo,
  65. * signatureAlgorithm AlgorithmIdentifier,
  66. * signatureValue BIT STRING
  67. * }
  68. * </pre>
  69. */
  70. public override Asn1Object ToAsn1Object()
  71. {
  72. return new DerSequence(acinfo, signatureAlgorithm, signatureValue);
  73. }
  74. }
  75. }
  76. #pragma warning restore
  77. #endif