SymmetricKeyEncSessionPacket.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
  2. #pragma warning disable
  3. using System;
  4. using System.IO;
  5. namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Bcpg
  6. {
  7. /**
  8. * Basic type for a symmetric encrypted session key packet
  9. */
  10. public class SymmetricKeyEncSessionPacket
  11. : ContainedPacket
  12. {
  13. private int version;
  14. private SymmetricKeyAlgorithmTag encAlgorithm;
  15. private S2k s2k;
  16. private readonly byte[] secKeyData;
  17. public SymmetricKeyEncSessionPacket(
  18. BcpgInputStream bcpgIn)
  19. {
  20. version = bcpgIn.ReadByte();
  21. encAlgorithm = (SymmetricKeyAlgorithmTag) bcpgIn.ReadByte();
  22. s2k = new S2k(bcpgIn);
  23. secKeyData = bcpgIn.ReadAll();
  24. }
  25. public SymmetricKeyEncSessionPacket(
  26. SymmetricKeyAlgorithmTag encAlgorithm,
  27. S2k s2k,
  28. byte[] secKeyData)
  29. {
  30. this.version = 4;
  31. this.encAlgorithm = encAlgorithm;
  32. this.s2k = s2k;
  33. this.secKeyData = secKeyData;
  34. }
  35. /**
  36. * @return int
  37. */
  38. public SymmetricKeyAlgorithmTag EncAlgorithm
  39. {
  40. get { return encAlgorithm; }
  41. }
  42. /**
  43. * @return S2k
  44. */
  45. public S2k S2k
  46. {
  47. get { return s2k; }
  48. }
  49. /**
  50. * @return byte[]
  51. */
  52. public byte[] GetSecKeyData()
  53. {
  54. return secKeyData;
  55. }
  56. /**
  57. * @return int
  58. */
  59. public int Version
  60. {
  61. get { return version; }
  62. }
  63. public override void Encode(
  64. BcpgOutputStream bcpgOut)
  65. {
  66. MemoryStream bOut = new MemoryStream();
  67. BcpgOutputStream pOut = new BcpgOutputStream(bOut);
  68. pOut.Write(
  69. (byte) version,
  70. (byte) encAlgorithm);
  71. pOut.WriteObject(s2k);
  72. if (secKeyData != null && secKeyData.Length > 0)
  73. {
  74. pOut.Write(secKeyData);
  75. }
  76. bcpgOut.WritePacket(PacketTag.SymmetricKeyEncryptedSessionKey, bOut.ToArray(), true);
  77. }
  78. }
  79. }
  80. #pragma warning restore
  81. #endif