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

BcTlsMLDsaSigner

public class BcTlsMLDsaSigner : BcTlsSigner
using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; using System; namespace Org.BouncyCastle.Tls.Crypto.Impl.BC { public class BcTlsMLDsaSigner : BcTlsSigner { private readonly int m_signatureScheme; public static BcTlsMLDsaSigner Create(BcTlsCrypto crypto, MLDsaPrivateKeyParameters privateKey, int signatureScheme) { if (signatureScheme != PqcUtilities.GetMLDsaSignatureScheme(privateKey.Parameters)) return null; return new BcTlsMLDsaSigner(crypto, privateKey, signatureScheme); } private BcTlsMLDsaSigner(BcTlsCrypto crypto, MLDsaPrivateKeyParameters privateKey, int signatureScheme) : base(crypto, privateKey) { m_signatureScheme = signatureScheme; } public override TlsStreamSigner GetStreamSigner(SignatureAndHashAlgorithm algorithm) { if (algorithm == null || SignatureScheme.From(algorithm) != m_signatureScheme) throw new InvalidOperationException("Invalid algorithm: " + algorithm?.ToString()); return new BcTlsStreamSigner(SignerUtilities.InitSigner(PqcUtilities.GetMLDsaObjectidentifier(m_signatureScheme), true, m_privateKey, m_crypto.SecureRandom)); } } }