SignerAttribute.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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.Esf
  7. {
  8. public class SignerAttribute
  9. : Asn1Encodable
  10. {
  11. private Asn1Sequence claimedAttributes;
  12. private AttributeCertificate certifiedAttributes;
  13. public static SignerAttribute GetInstance(
  14. object obj)
  15. {
  16. if (obj == null || obj is SignerAttribute)
  17. return (SignerAttribute) obj;
  18. if (obj is Asn1Sequence)
  19. return new SignerAttribute(obj);
  20. throw new ArgumentException(
  21. "Unknown object in 'SignerAttribute' factory: "
  22. + BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.GetTypeName(obj),
  23. "obj");
  24. }
  25. private SignerAttribute(
  26. object obj)
  27. {
  28. Asn1Sequence seq = (Asn1Sequence) obj;
  29. DerTaggedObject taggedObject = (DerTaggedObject) seq[0];
  30. if (taggedObject.TagNo == 0)
  31. {
  32. claimedAttributes = Asn1Sequence.GetInstance(taggedObject, true);
  33. }
  34. else if (taggedObject.TagNo == 1)
  35. {
  36. certifiedAttributes = AttributeCertificate.GetInstance(taggedObject);
  37. }
  38. else
  39. {
  40. throw new ArgumentException("illegal tag.", "obj");
  41. }
  42. }
  43. public SignerAttribute(
  44. Asn1Sequence claimedAttributes)
  45. {
  46. this.claimedAttributes = claimedAttributes;
  47. }
  48. public SignerAttribute(
  49. AttributeCertificate certifiedAttributes)
  50. {
  51. this.certifiedAttributes = certifiedAttributes;
  52. }
  53. public virtual Asn1Sequence ClaimedAttributes
  54. {
  55. get { return claimedAttributes; }
  56. }
  57. public virtual AttributeCertificate CertifiedAttributes
  58. {
  59. get { return certifiedAttributes; }
  60. }
  61. /**
  62. *
  63. * <pre>
  64. * SignerAttribute ::= SEQUENCE OF CHOICE {
  65. * claimedAttributes [0] ClaimedAttributes,
  66. * certifiedAttributes [1] CertifiedAttributes }
  67. *
  68. * ClaimedAttributes ::= SEQUENCE OF Attribute
  69. * CertifiedAttributes ::= AttributeCertificate -- as defined in RFC 3281: see clause 4.1.
  70. * </pre>
  71. */
  72. public override Asn1Object ToAsn1Object()
  73. {
  74. Asn1EncodableVector v = new Asn1EncodableVector();
  75. if (claimedAttributes != null)
  76. {
  77. v.Add(new DerTaggedObject(0, claimedAttributes));
  78. }
  79. else
  80. {
  81. v.Add(new DerTaggedObject(1, certifiedAttributes));
  82. }
  83. return new DerSequence(v);
  84. }
  85. }
  86. }
  87. #pragma warning restore
  88. #endif