OtherInfo.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X9
  4. {
  5. /**
  6. * ANS.1 def for Diffie-Hellman key exchange OtherInfo structure. See
  7. * RFC 2631, or X9.42, for further details.
  8. */
  9. public class OtherInfo
  10. : Asn1Encodable
  11. {
  12. private KeySpecificInfo keyInfo;
  13. private Asn1OctetString partyAInfo;
  14. private Asn1OctetString suppPubInfo;
  15. public OtherInfo(
  16. KeySpecificInfo keyInfo,
  17. Asn1OctetString partyAInfo,
  18. Asn1OctetString suppPubInfo)
  19. {
  20. this.keyInfo = keyInfo;
  21. this.partyAInfo = partyAInfo;
  22. this.suppPubInfo = suppPubInfo;
  23. }
  24. public OtherInfo(Asn1Sequence seq)
  25. {
  26. var e = seq.GetEnumerator();
  27. e.MoveNext();
  28. keyInfo = new KeySpecificInfo((Asn1Sequence)e.Current);
  29. while (e.MoveNext())
  30. {
  31. Asn1TaggedObject o = (Asn1TaggedObject)e.Current;
  32. if (o.TagNo == 0)
  33. {
  34. partyAInfo = (Asn1OctetString)o.GetObject();
  35. }
  36. else if ((int) o.TagNo == 2)
  37. {
  38. suppPubInfo = (Asn1OctetString)o.GetObject();
  39. }
  40. }
  41. }
  42. public KeySpecificInfo KeyInfo
  43. {
  44. get { return keyInfo; }
  45. }
  46. public Asn1OctetString PartyAInfo
  47. {
  48. get { return partyAInfo; }
  49. }
  50. public Asn1OctetString SuppPubInfo
  51. {
  52. get { return suppPubInfo; }
  53. }
  54. /**
  55. * Produce an object suitable for an Asn1OutputStream.
  56. * <pre>
  57. * OtherInfo ::= Sequence {
  58. * keyInfo KeySpecificInfo,
  59. * partyAInfo [0] OCTET STRING OPTIONAL,
  60. * suppPubInfo [2] OCTET STRING
  61. * }
  62. * </pre>
  63. */
  64. public override Asn1Object ToAsn1Object()
  65. {
  66. Asn1EncodableVector v = new Asn1EncodableVector(keyInfo);
  67. v.AddOptionalTagged(true, 0, partyAInfo);
  68. v.Add(new DerTaggedObject(2, suppPubInfo));
  69. return new DerSequence(v);
  70. }
  71. }
  72. }
  73. #pragma warning restore
  74. #endif