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

HqcKemExtractor

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