diff options
Diffstat (limited to '')
-rw-r--r-- | crypto/src/asn1/smime/SMIMECapabilities.cs | 65 |
1 files changed, 25 insertions, 40 deletions
diff --git a/crypto/src/asn1/smime/SMIMECapabilities.cs b/crypto/src/asn1/smime/SMIMECapabilities.cs index 47710d9cb..e69dc8db4 100644 --- a/crypto/src/asn1/smime/SMIMECapabilities.cs +++ b/crypto/src/asn1/smime/SMIMECapabilities.cs @@ -7,8 +7,6 @@ using Org.BouncyCastle.Asn1.Oiw; using Org.BouncyCastle.Asn1.Pkcs; using Org.BouncyCastle.Asn1.X509; -using Org.BouncyCastle.Utilities; - namespace Org.BouncyCastle.Asn1.Smime { /** @@ -36,40 +34,31 @@ namespace Org.BouncyCastle.Asn1.Smime public static readonly DerObjectIdentifier DesEde3Cbc = PkcsObjectIdentifiers.DesEde3Cbc; public static readonly DerObjectIdentifier RC2Cbc = PkcsObjectIdentifiers.RC2Cbc; - private Asn1Sequence capabilities; - - /** - * return an Attr object from the given object. - * - * @param o the object we want converted. - * @exception ArgumentException if the object cannot be converted. - */ - public static SmimeCapabilities GetInstance( - object obj) + public static SmimeCapabilities GetInstance(object obj) { - if (obj == null || obj is SmimeCapabilities) - { - return (SmimeCapabilities) obj; - } + if (obj == null) + return null; + if (obj is SmimeCapabilities smimeCapabilities) + return smimeCapabilities; - if (obj is Asn1Sequence) - { - return new SmimeCapabilities((Asn1Sequence) obj); - } + // TODO[api] Remove this handler + if (obj is AttributeX509 attributeX509) + return new SmimeCapabilities((Asn1Sequence)attributeX509.AttrValues[0]); - if (obj is AttributeX509) - { - return new SmimeCapabilities( - (Asn1Sequence)(((AttributeX509) obj).AttrValues[0])); - } - - throw new ArgumentException("unknown object in factory: " + Platform.GetTypeName(obj), "obj"); + return new SmimeCapabilities(Asn1Sequence.GetInstance(obj)); } - public SmimeCapabilities( - Asn1Sequence seq) + public static SmimeCapabilities GetInstance(Asn1TaggedObject taggedObject, bool declaredExplicit) => + new SmimeCapabilities(Asn1Sequence.GetInstance(taggedObject, declaredExplicit)); + + public static SmimeCapabilities GetTagged(Asn1TaggedObject taggedObject, bool declaredExplicit) => + new SmimeCapabilities(Asn1Sequence.GetTagged(taggedObject, declaredExplicit)); + + private readonly Asn1Sequence m_capabilities; + + public SmimeCapabilities(Asn1Sequence seq) { - capabilities = seq; + m_capabilities = seq ?? throw new ArgumentNullException(nameof(seq)); } /** @@ -84,15 +73,14 @@ namespace Org.BouncyCastle.Asn1.Smime return list; } - private void DoGetCapabilitiesForOid(DerObjectIdentifier capability, IList<SmimeCapability> list) + private void DoGetCapabilitiesForOid(DerObjectIdentifier capability, List<SmimeCapability> list) { - foreach (object o in capabilities) + foreach (var element in m_capabilities) { - SmimeCapability cap = SmimeCapability.GetInstance(o); - - if (capability == null || capability.Equals(cap.CapabilityID)) + SmimeCapability smimeCapability = SmimeCapability.GetInstance(element); + if (smimeCapability.CapabilityID.Equals(capability)) { - list.Add(cap); + list.Add(smimeCapability); } } } @@ -103,9 +91,6 @@ namespace Org.BouncyCastle.Asn1.Smime * SMIMECapabilities ::= Sequence OF SMIMECapability * </pre> */ - public override Asn1Object ToAsn1Object() - { - return capabilities; - } + public override Asn1Object ToAsn1Object() => m_capabilities; } } |