123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- //import javax.crypto.interfaces.PBEKey;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Cms
- {
- public abstract class CmsPbeKey
- // TODO Create an equivalent interface somewhere?
- // : PBEKey
- : ICipherParameters
- {
- internal readonly char[] password;
- internal readonly byte[] salt;
- internal readonly int iterationCount;
- public CmsPbeKey(
- string password,
- byte[] salt,
- int iterationCount)
- : this(password.ToCharArray(), salt, iterationCount)
- {
- }
- public CmsPbeKey(
- string password,
- AlgorithmIdentifier keyDerivationAlgorithm)
- : this(password.ToCharArray(), keyDerivationAlgorithm)
- {
- }
-
- public CmsPbeKey(
- char[] password,
- byte[] salt,
- int iterationCount)
- {
- this.password = (char[])password.Clone();
- this.salt = Arrays.Clone(salt);
- this.iterationCount = iterationCount;
- }
- public CmsPbeKey(
- char[] password,
- AlgorithmIdentifier keyDerivationAlgorithm)
- {
- if (!keyDerivationAlgorithm.Algorithm.Equals(PkcsObjectIdentifiers.IdPbkdf2))
- throw new ArgumentException("Unsupported key derivation algorithm: "
- + keyDerivationAlgorithm.Algorithm);
- Pbkdf2Params kdfParams = Pbkdf2Params.GetInstance(
- keyDerivationAlgorithm.Parameters.ToAsn1Object());
- this.password = (char[])password.Clone();
- this.salt = kdfParams.GetSalt();
- this.iterationCount = kdfParams.IterationCount.IntValue;
- }
- ~CmsPbeKey()
- {
- Array.Clear(this.password, 0, this.password.Length);
- }
- public string Password
- {
- get { return new string(password); }
- }
- public byte[] Salt
- {
- get { return Arrays.Clone(salt); }
- }
- public byte[] GetSalt()
- {
- return Salt;
- }
- public int IterationCount
- {
- get { return iterationCount; }
- }
- public string Algorithm
- {
- get { return "PKCS5S2"; }
- }
- public string Format
- {
- get { return "RAW"; }
- }
- public byte[] GetEncoded()
- {
- return null;
- }
- internal abstract KeyParameter GetEncoded(string algorithmOid);
- }
- }
- #pragma warning restore
- #endif
|