<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.2" />

HqcKemExtractor

using Org.BouncyCastle.Crypto; namespace Org.BouncyCastle.Pqc.Crypto.Hqc { public class HqcKemExtractor : IEncapsulatedSecretExtractor { private readonly HqcPrivateKeyParameters m_privateKey; private HqcEngine m_engine; public int EncapsulationLength => Parameters.NBytes + Parameters.N1n2Bytes + 16; private HqcParameters Parameters => m_privateKey.Parameters; public HqcKemExtractor(HqcPrivateKeyParameters privParams) { m_privateKey = privParams; InitCipher(m_privateKey.Parameters); } private void InitCipher(HqcParameters param) { m_engine = param.Engine; } public byte[] ExtractSecret(byte[] encapsulation) { byte[] array = new byte[m_engine.GetSessionKeySize()]; m_engine.Decaps(array, encapsulation, m_privateKey.PrivateKey); return array; } } }