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

Gost3410KeyParameters

using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.CryptoPro; using System; namespace Org.BouncyCastle.Crypto.Parameters { public abstract class Gost3410KeyParameters : AsymmetricKeyParameter { private readonly Gost3410Parameters parameters; private readonly DerObjectIdentifier publicKeyParamSet; public Gost3410Parameters Parameters => parameters; public DerObjectIdentifier PublicKeyParamSet => publicKeyParamSet; protected Gost3410KeyParameters(bool isPrivate, Gost3410Parameters parameters) : base(isPrivate) { this.parameters = parameters; } protected Gost3410KeyParameters(bool isPrivate, DerObjectIdentifier publicKeyParamSet) : base(isPrivate) { parameters = LookupParameters(publicKeyParamSet); this.publicKeyParamSet = publicKeyParamSet; } private static Gost3410Parameters LookupParameters(DerObjectIdentifier publicKeyParamSet) { if (publicKeyParamSet == null) throw new ArgumentNullException("publicKeyParamSet"); Gost3410ParamSetParameters byOid = Gost3410NamedParameters.GetByOid(publicKeyParamSet); if (byOid == null) throw new ArgumentException("OID is not a valid CryptoPro public key parameter set", "publicKeyParamSet"); return new Gost3410Parameters(byOid.P, byOid.Q, byOid.A); } } }