<PackageReference Include="BouncyCastle.Cryptography" Version="2.7.0-beta.98" />

SymmetricKeyEncSessionPacket

Basic type for a symmetric encrypted session key packet.
using System.IO; namespace Org.BouncyCastle.Bcpg { public class SymmetricKeyEncSessionPacket : ContainedPacket { private readonly int m_version; private readonly SymmetricKeyAlgorithmTag m_encAlgorithm; private readonly S2k m_s2k; private readonly byte[] m_secKeyData; public SymmetricKeyAlgorithmTag EncAlgorithm => m_encAlgorithm; public S2k S2k => m_s2k; public int Version => m_version; public SymmetricKeyEncSessionPacket(BcpgInputStream bcpgIn) { m_version = bcpgIn.RequireByte(); m_encAlgorithm = (SymmetricKeyAlgorithmTag)bcpgIn.RequireByte(); m_s2k = new S2k(bcpgIn); m_secKeyData = bcpgIn.ReadAll(); } public SymmetricKeyEncSessionPacket(SymmetricKeyAlgorithmTag encAlgorithm, S2k s2k, byte[] secKeyData) { m_version = 4; m_encAlgorithm = encAlgorithm; m_s2k = s2k; m_secKeyData = secKeyData; } public byte[] GetSecKeyData() { return m_secKeyData; } public override void Encode(BcpgOutputStream bcpgOut) { MemoryStream memoryStream = new MemoryStream(); using (BcpgOutputStream bcpgOutputStream = new BcpgOutputStream(memoryStream)) { bcpgOutputStream.Write((byte)m_version, (byte)m_encAlgorithm); m_s2k.Encode(bcpgOutputStream); if (m_secKeyData != null && m_secKeyData.Length != 0) bcpgOutputStream.Write(m_secKeyData); } bcpgOut.WritePacket(PacketTag.SymmetricKeyEncryptedSessionKey, memoryStream.ToArray()); } } }