Pfx.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. using BestHTTP.SecureProtocol.Org.BouncyCastle.Math;
  6. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs
  7. {
  8. /**
  9. * the infamous Pfx from Pkcs12
  10. */
  11. public class Pfx
  12. : Asn1Encodable
  13. {
  14. public static Pfx GetInstance(object obj)
  15. {
  16. if (obj is Pfx)
  17. return (Pfx)obj;
  18. if (obj == null)
  19. return null;
  20. return new Pfx(Asn1Sequence.GetInstance(obj));
  21. }
  22. private readonly ContentInfo contentInfo;
  23. private readonly MacData macData;
  24. private Pfx(Asn1Sequence seq)
  25. {
  26. DerInteger version = DerInteger.GetInstance(seq[0]);
  27. if (!version.HasValue(3))
  28. throw new ArgumentException("wrong version for PFX PDU");
  29. this.contentInfo = ContentInfo.GetInstance(seq[1]);
  30. if (seq.Count == 3)
  31. {
  32. this.macData = MacData.GetInstance(seq[2]);
  33. }
  34. }
  35. public Pfx(ContentInfo contentInfo, MacData macData)
  36. {
  37. this.contentInfo = contentInfo;
  38. this.macData = macData;
  39. }
  40. public ContentInfo AuthSafe
  41. {
  42. get { return contentInfo; }
  43. }
  44. public MacData MacData
  45. {
  46. get { return macData; }
  47. }
  48. public override Asn1Object ToAsn1Object()
  49. {
  50. Asn1EncodableVector v = new Asn1EncodableVector(new DerInteger(3), contentInfo);
  51. v.AddOptional(macData);
  52. return new BerSequence(v);
  53. }
  54. }
  55. }
  56. #pragma warning restore
  57. #endif