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());
}
}
}