diff options
Diffstat (limited to 'crypto/src/asn1/pkcs/PBES2Parameters.cs')
-rw-r--r-- | crypto/src/asn1/pkcs/PBES2Parameters.cs | 66 |
1 files changed, 35 insertions, 31 deletions
diff --git a/crypto/src/asn1/pkcs/PBES2Parameters.cs b/crypto/src/asn1/pkcs/PBES2Parameters.cs index 645bb867c..fc6904eed 100644 --- a/crypto/src/asn1/pkcs/PBES2Parameters.cs +++ b/crypto/src/asn1/pkcs/PBES2Parameters.cs @@ -1,5 +1,4 @@ using System; -using System.Collections; namespace Org.BouncyCastle.Asn1.Pkcs { @@ -9,53 +8,58 @@ namespace Org.BouncyCastle.Asn1.Pkcs private readonly KeyDerivationFunc func; private readonly EncryptionScheme scheme; - public static PbeS2Parameters GetInstance( - object obj) - { - if (obj == null || obj is PbeS2Parameters) - return (PbeS2Parameters) obj; - - if (obj is Asn1Sequence) - return new PbeS2Parameters((Asn1Sequence) obj); + public static PbeS2Parameters GetInstance(object obj) + { + if (obj == null) + return null; + PbeS2Parameters existing = obj as PbeS2Parameters; + if (existing != null) + return existing; + return new PbeS2Parameters(Asn1Sequence.GetInstance(obj)); + } - throw new ArgumentException("Unknown object in factory: " + obj.GetType().FullName, "obj"); - } + public PbeS2Parameters(KeyDerivationFunc keyDevFunc, EncryptionScheme encScheme) + { + this.func = keyDevFunc; + this.scheme = encScheme; + } - public PbeS2Parameters( + [Obsolete("Use GetInstance() instead")] + public PbeS2Parameters( Asn1Sequence seq) { - if (seq.Count != 2) - throw new ArgumentException("Wrong number of elements in sequence", "seq"); + if (seq.Count != 2) + throw new ArgumentException("Wrong number of elements in sequence", "seq"); - Asn1Sequence funcSeq = (Asn1Sequence)seq[0].ToAsn1Object(); + Asn1Sequence funcSeq = (Asn1Sequence)seq[0].ToAsn1Object(); - // TODO Not sure if this special case is really necessary/appropriate - if (funcSeq[0].Equals(PkcsObjectIdentifiers.IdPbkdf2)) + // TODO Not sure if this special case is really necessary/appropriate + if (funcSeq[0].Equals(PkcsObjectIdentifiers.IdPbkdf2)) { - func = new KeyDerivationFunc(PkcsObjectIdentifiers.IdPbkdf2, - Pbkdf2Params.GetInstance(funcSeq[1])); - } + func = new KeyDerivationFunc(PkcsObjectIdentifiers.IdPbkdf2, + Pbkdf2Params.GetInstance(funcSeq[1])); + } else { func = new KeyDerivationFunc(funcSeq); } - scheme = EncryptionScheme.GetInstance(seq[1].ToAsn1Object()); + scheme = EncryptionScheme.GetInstance(seq[1].ToAsn1Object()); } - public KeyDerivationFunc KeyDerivationFunc - { - get { return func; } - } + public KeyDerivationFunc KeyDerivationFunc + { + get { return func; } + } - public EncryptionScheme EncryptionScheme - { - get { return scheme; } - } + public EncryptionScheme EncryptionScheme + { + get { return scheme; } + } - public override Asn1Object ToAsn1Object() + public override Asn1Object ToAsn1Object() { - return new DerSequence(func, scheme); + return new DerSequence(func, scheme); } } } |