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

RsaesOaepParameters

using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.X509; using System; namespace Org.BouncyCastle.Asn1.Pkcs { public class RsaesOaepParameters : 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 AlgorithmIdentifier DefaultPSourceAlgorithm = new AlgorithmIdentifier(PkcsObjectIdentifiers.IdPSpecified, DerOctetString.Empty); private readonly AlgorithmIdentifier m_hashAlgorithm; private readonly AlgorithmIdentifier m_maskGenAlgorithm; private readonly AlgorithmIdentifier m_pSourceAlgorithm; public AlgorithmIdentifier HashAlgorithm => m_hashAlgorithm; public AlgorithmIdentifier MaskGenAlgorithm => m_maskGenAlgorithm; public AlgorithmIdentifier PSourceAlgorithm => m_pSourceAlgorithm; public static RsaesOaepParameters GetInstance(object obj) { if (obj == null) return null; RsaesOaepParameters rsaesOaepParameters = obj as RsaesOaepParameters; if (rsaesOaepParameters != null) return rsaesOaepParameters; return new RsaesOaepParameters(Asn1Sequence.GetInstance(obj)); } public static RsaesOaepParameters GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RsaesOaepParameters(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); } public static RsaesOaepParameters GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) { return new RsaesOaepParameters(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); } [Obsolete("Use 'GetInstance' instead")] public RsaesOaepParameters(Asn1Sequence seq) { int count = seq.Count; int sequencePosition = 0; if (count < 0 || count > 3) 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_pSourceAlgorithm = (Asn1Utilities.ReadOptionalContextTagged(seq, ref sequencePosition, 2, true, AlgorithmIdentifier.GetTagged) ?? DefaultPSourceAlgorithm); if (sequencePosition != count) throw new ArgumentException("Unexpected elements in sequence", "seq"); } public RsaesOaepParameters() : this(DefaultHashAlgorithm, DefaultMaskGenAlgorithm, DefaultPSourceAlgorithm) { } public RsaesOaepParameters(AlgorithmIdentifier hashAlgorithm, AlgorithmIdentifier maskGenAlgorithm) : this(hashAlgorithm, maskGenAlgorithm, DefaultPSourceAlgorithm) { } public RsaesOaepParameters(AlgorithmIdentifier hashAlgorithm, AlgorithmIdentifier maskGenAlgorithm, AlgorithmIdentifier pSourceAlgorithm) { m_hashAlgorithm = hashAlgorithm; m_maskGenAlgorithm = maskGenAlgorithm; m_pSourceAlgorithm = pSourceAlgorithm; } public override Asn1Object ToAsn1Object() { Asn1EncodableVector asn1EncodableVector = new Asn1EncodableVector(3); 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 (!DefaultPSourceAlgorithm.Equals(m_pSourceAlgorithm)) asn1EncodableVector.Add(new DerTaggedObject(true, 2, m_pSourceAlgorithm)); return new DerSequence(asn1EncodableVector); } } }