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

RsassaPssParameters

using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Pkcs { public class RsassaPssParameters : Asn1Encodable { public static readonly AlgorithmIdentifier DefaultHashAlgorithm = new AlgorithmIdentifier(OiwObjectIdentifiers.IdSha1, DerNull.Instance); public static readonly AlgorithmIdentifier DefaultMaskGenAlgorithm = new AlgorithmIdentifier(PkcsObjectIdentifiers.IdMgf1, DefaultHashAlgorithm); [Obsolete("Use 'DefaultMaskGenAlgorithm' instead")] public static readonly AlgorithmIdentifier DefaultMaskGenFunction = DefaultMaskGenAlgorithm; public static readonly DerInteger DefaultSaltLength = new DerInteger(20); public static readonly DerInteger DefaultTrailerField = DerInteger.One; private readonly AlgorithmIdentifier m_hashAlgorithm; private readonly AlgorithmIdentifier m_maskGenAlgorithm; private readonly DerInteger m_saltLength; private readonly DerInteger m_trailerField; public AlgorithmIdentifier HashAlgorithm => m_hashAlgorithm; public AlgorithmIdentifier MaskGenAlgorithm => m_maskGenAlgorithm; public DerInteger SaltLength => m_saltLength; public DerInteger TrailerField => m_trailerField; public static RsassaPssParameters GetInstance(object obj) { if (obj == null) return null; RsassaPssParameters rsassaPssParameters = obj as RsassaPssParameters; if (rsassaPssParameters != null) return rsassaPssParameters; return new RsassaPssParameters(Asn1Sequence.GetInstance(obj)); } public static RsassaPssParameters GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RsassaPssParameters(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static RsassaPssParameters GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RsassaPssParameters(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public RsassaPssParameters(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 0 || count > 4) throw new ArgumentException("Bad sequence size: " + count.ToString(), "seq"); m_hashAlgorithm = (Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 0, true, AlgorithmIdentifier.GetTagged) ?? DefaultHashAlgorithm); m_maskGenAlgorithm = (Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 1, true, AlgorithmIdentifier.GetTagged) ?? DefaultMaskGenAlgorithm); m_saltLength = (Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 2, true, DerInteger.GetTagged) ?? DefaultSaltLength); m_trailerField = (Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 3, true, DerInteger.GetTagged) ?? DefaultTrailerField); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public RsassaPssParameters() { m_hashAlgorithm = DefaultHashAlgorithm; m_maskGenAlgorithm = DefaultMaskGenAlgorithm; m_saltLength = DefaultSaltLength; m_trailerField = DefaultTrailerField; } public RsassaPssParameters(AlgorithmIdentifier hashAlgorithm, AlgorithmIdentifier maskGenAlgorithm, DerInteger saltLength, DerInteger trailerField) { m_hashAlgorithm = (hashAlgorithm ?? DefaultHashAlgorithm); m_maskGenAlgorithm = (maskGenAlgorithm ?? DefaultMaskGenAlgorithm); m_saltLength = (saltLength ?? DefaultSaltLength); m_trailerField = (trailerField ?? DefaultTrailerField); } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(4); if (!DefaultHashAlgorithm.Equals(m_hashAlgorithm)) asn1EncodableVector.Add(new DerTaggedObject(true, 0, m_hashAlgorithm)); if (!DefaultMaskGenAlgorithm.Equals(m_maskGenAlgorithm)) asn1EncodableVector.Add(new DerTaggedObject(true, 1, m_maskGenAlgorithm)); if (!DefaultSaltLength.Equals(m_saltLength)) asn1EncodableVector.Add(new DerTaggedObject(true, 2, m_saltLength)); if (!DefaultTrailerField.Equals(m_trailerField)) asn1EncodableVector.Add(new DerTaggedObject(true, 3, m_trailerField)); return new DerSequence(asn1EncodableVector); } } }