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

Org.BouncyCastle.Crypto.Signers.PssSigner

public class PssSigner : ISigner
RSA-PSS as described in Pkcs# 1 v 2.1. Note: the usual value for the salt length is the number of bytes in the hash function.
namespace Org.BouncyCastle.Crypto.Signers { public class PssSigner : ISigner { public const byte TrailerImplicit = 188; public virtual string AlgorithmName { get; } public static PssSigner CreateRawSigner(IAsymmetricBlockCipher cipher, IDigest digest); public static PssSigner CreateRawSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen, byte trailer); public static PssSigner CreateRawSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, byte[] salt, byte trailer); public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest); public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen); public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, byte[] salt); public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen); public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, byte[] salt); public PssSigner(IAsymmetricBlockCipher cipher, IDigest digest, int saltLen, byte trailer); public PssSigner(IAsymmetricBlockCipher cipher, IDigest contentDigest, IDigest mgfDigest, int saltLen, byte trailer); public virtual void Init(bool forSigning, ICipherParameters parameters); public virtual void Update(byte input); public virtual void BlockUpdate(byte[] input, int inOff, int inLen); public virtual int GetMaxSignatureSize(); public virtual byte[] GenerateSignature(); public virtual bool VerifySignature(byte[] signature); public virtual void Reset(); } }