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

CmcePrivateKey

public class CmcePrivateKey : Asn1Object
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Utilities; using System; namespace Org.BouncyCastle.Pqc.Asn1 { public class CmcePrivateKey : Asn1Object { private readonly Asn1OctetString m_delta; private readonly Asn1OctetString m_c; private readonly Asn1OctetString m_g; private readonly Asn1OctetString m_alpha; private readonly Asn1OctetString m_s; private readonly CmcePublicKey m_publicKey; public int Version => 0; public byte[] Delta => Arrays.Clone(m_delta.GetOctets()); public byte[] C => Arrays.Clone(m_c.GetOctets()); public byte[] G => Arrays.Clone(m_g.GetOctets()); public byte[] Alpha => Arrays.Clone(m_alpha.GetOctets()); public byte[] S => Arrays.Clone(m_s.GetOctets()); public CmcePublicKey PublicKey => m_publicKey; public static CmcePrivateKey GetInstance(object o) { if (o == null) return null; CmcePrivateKey cmcePrivateKey = o as CmcePrivateKey; if (cmcePrivateKey != null) return cmcePrivateKey; return new CmcePrivateKey(Asn1Sequence.GetInstance(o)); } public static CmcePrivateKey GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new CmcePrivateKey(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static CmcePrivateKey GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new CmcePrivateKey(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } public CmcePrivateKey(int version, byte[] delta, byte[] c, byte[] g, byte[] alpha, byte[] s, CmcePublicKey pubKey = null) { if (version != 0) throw new Exception("unrecognized version"); m_delta = DerOctetString.FromContents(delta); m_c = DerOctetString.FromContents(c); m_g = DerOctetString.FromContents(g); m_alpha = DerOctetString.FromContents(alpha); m_s = DerOctetString.FromContents(s); m_publicKey = pubKey; } private CmcePrivateKey(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 6 || count > 7) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); DerInteger instance = DerInteger.GetInstance(seq[sequencePosition++]); m_delta = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_c = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_g = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_alpha = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_s = Asn1OctetString.GetInstance(seq[sequencePosition++]); m_publicKey = Asn1Utilities.ReadOptional(seq, ref sequencePosition, CmcePublicKey.GetOptional); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); if (!instance.HasValue(0)) throw new Exception("unrecognized version"); } public Asn1Object ToAsn1Primitive() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(7); asn1EncodableVector.Add(DerInteger.Zero, m_delta, m_c, m_g, m_alpha, m_s); asn1EncodableVector.AddOptional(m_publicKey); return new DerSequence(asn1EncodableVector); } internal override IAsn1Encoding GetEncoding(int encoding) { return ToAsn1Primitive().GetEncoding(encoding); } internal override IAsn1Encoding GetEncodingImplicit(int encoding, int tagClass, int tagNo) { return ToAsn1Primitive().GetEncodingImplicit(encoding, tagClass, tagNo); } internal sealed override DerEncoding GetEncodingDer() { return ToAsn1Primitive().GetEncodingDer(); } internal sealed override DerEncoding GetEncodingDerImplicit(int tagClass, int tagNo) { return ToAsn1Primitive().GetEncodingDerImplicit(tagClass, tagNo); } protected override bool Asn1Equals(Asn1Object asn1Object) { return ToAsn1Primitive().CallAsn1Equals(asn1Object); } protected override int Asn1GetHashCode() { return ToAsn1Primitive().CallAsn1GetHashCode(); } } }