public KrabouilleStream(Stream inner, KrabouilleMode mode, string password)
        {
            if (inner == null)
            {
                throw new ArgumentNullException(nameof(inner));
            }
            if (String.IsNullOrEmpty(password))
            {
                throw new ArgumentNullException(nameof(password));
            }
            if (!inner.CanWrite && mode == KrabouilleMode.Krabouille)
            {
                throw new ArgumentException("inner must be writable for Krabouille mode.", nameof(inner));
            }
            if (!inner.CanRead && mode == KrabouilleMode.Unkrabouille)
            {
                throw new ArgumentException("inner must be readable for Unkrabouille mode.", nameof(inner));
            }
            if (_mode == KrabouilleMode.Krabouille)
            {
                _workingBuffer = new byte[256];
                _seed          = Environment.TickCount * inner.GetHashCode();
            }
            _secretKey = Encoding.UTF8.GetBytes(password);

            _inner = inner;
            _mode  = mode;
        }
Exemple #2
0
 public KrabouilleStream(Stream innerStream, string passPhrase, KrabouilleMode mode)
 {
     _inner = innerStream;
     using (var d = new System.Security.Cryptography.Rfc2898DeriveBytes(passPhrase, _salt))
     {
         _secret = d.GetBytes(111);
         var fourBytes = d.GetBytes(4);
         int seed      = fourBytes[0];
         seed |= fourBytes[1] << 8;
         seed |= fourBytes[2] << 16;
         seed |= fourBytes[3] << 24;
         _rnd  = new Random(seed);
     }
 }
 public KrabouilleStream(Stream inner, KrabouilleMode mode, string password)
 {
     if (inner == null)
     {
         throw new ArgumentNullException(nameof(inner));
     }
     if (String.IsNullOrEmpty(password))
     {
         throw new ArgumentNullException(nameof(password));
     }
     if (!inner.CanWrite && mode == KrabouilleMode.Krabouille)
     {
         throw new ArgumentException("inner must be writable for Krabouille mode.", nameof(inner));
     }
     if (!inner.CanRead && mode == KrabouilleMode.Unkrabouille)
     {
         throw new ArgumentException("inner must be readable for Unkrabouille mode.", nameof(inner));
     }
     _inner = inner;
     _mode  = mode;
 }