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

KyberPrivateKey

public sealed class KyberPrivateKey : Asn1Encodable
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Pqc.Asn1 { public sealed class KyberPrivateKey : Asn1Encodable { private int version; private byte[] s; private KyberPublicKey publicKey; private byte[] hpk; private byte[] nonce; public int Version => version; public KyberPublicKey PublicKey => publicKey; public static KyberPrivateKey GetInstance(object obj) { if (obj == null) return null; KyberPrivateKey kyberPrivateKey = obj as KyberPrivateKey; if (kyberPrivateKey != null) return kyberPrivateKey; return new KyberPrivateKey(Asn1Sequence.GetInstance(obj)); } public static KyberPrivateKey GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return GetInstance(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public KyberPrivateKey(int version, byte[] s, byte[] hpk, byte[] nonce, KyberPublicKey publicKey) { this.version = version; this.s = s; this.publicKey = publicKey; this.hpk = hpk; this.nonce = nonce; } public KyberPrivateKey(int version, byte[] s, byte[] hpk, byte[] nonce) : this(version, s, hpk, nonce, null) { } private KyberPrivateKey(Asn1Sequence seq) { version = DerInteger.GetInstance(seq[0]).IntValueExact; if (version != 0) throw new ArgumentException("unrecognized version"); s = Arrays.Clone(Asn1OctetString.GetInstance(seq[1]).GetOctets()); int num = 1; if (seq.Count == 5) { num = 0; publicKey = KyberPublicKey.GetInstance(seq[2]); } hpk = Arrays.Clone(Asn1OctetString.GetInstance(seq[3 - num]).GetOctets()); nonce = Arrays.Clone(Asn1OctetString.GetInstance(seq[4 - num]).GetOctets()); } public byte[] GetS() { return Arrays.Clone(s); } public byte[] GetHpk() { return Arrays.Clone(hpk); } public byte[] GetNonce() { return Arrays.Clone(nonce); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(5); asn1EncodableVector.Add(new DerInteger(version)); asn1EncodableVector.Add(new DerOctetString(s)); if (publicKey != null) asn1EncodableVector.Add(new KyberPublicKey(publicKey.T, publicKey.Rho)); asn1EncodableVector.Add(new DerOctetString(hpk)); asn1EncodableVector.Add(new DerOctetString(nonce)); return new DerSequence(asn1EncodableVector); } } }