Ejemplo n.º 1
0
 public void TestWrapWithBadArgument()
 {
     KeyWrap keyWrap = new KeyWrap(100, KeyWrapMode.Specification);
     {
         byte[] nullKeyMaterial = null;
         Assert.Throws <ArgumentNullException>(() => keyWrap.Wrap(new V2AesCrypto(SymmetricKey.Zero256, SymmetricIV.Zero128, 0), nullKeyMaterial));
     }
 }
Ejemplo n.º 2
0
        public void RewrapMasterKey(AesKey masterKey, AesKey keyEncryptingKey)
        {
            KeyWrapSalt salt = new KeyWrapSalt(keyEncryptingKey.Length);

            using (KeyWrap keyWrap = new KeyWrap(keyEncryptingKey, salt, Iterations, KeyWrapMode.AxCrypt))
            {
                byte[] wrappedKeyData = keyWrap.Wrap(masterKey);
                Set(wrappedKeyData, salt, Iterations);
            }
        }
Ejemplo n.º 3
0
        private void Initialize(AesKey keyEncryptingKey)
        {
            AesKey      masterKey  = new AesKey();
            long        iterations = OS.Current.KeyWrapIterations;
            KeyWrapSalt salt       = new KeyWrapSalt(keyEncryptingKey.Length);

            using (KeyWrap keyWrap = new KeyWrap(keyEncryptingKey, salt, iterations, KeyWrapMode.AxCrypt))
            {
                byte[] wrappedKeyData = keyWrap.Wrap(masterKey);
                Set(wrappedKeyData, salt, iterations);
            }
        }
Ejemplo n.º 4
0
        private void Initialize(long keyWrapIterations)
        {
            DerivationSalt       = _keyEncryptingKey.DerivationSalt;
            DerivationIterations = _keyEncryptingKey.DerivationIterations;

            Salt    salt    = new Salt(_keyEncryptingKey.DerivedKey.Size);
            KeyWrap keyWrap = new KeyWrap(salt, keyWrapIterations, KeyWrapMode.Specification);
            ICrypto crypto  = _cryptoFactory.CreateCrypto(_keyEncryptingKey.DerivedKey, null, 0);

            _unwrappedKeyData = Resolve.RandomGenerator.Generate(_keyEncryptingKey.DerivedKey.Size / 8 + crypto.BlockLength);
            byte[] wrappedKeyData = keyWrap.Wrap(crypto, _unwrappedKeyData);
            Set(wrappedKeyData, salt, keyWrapIterations);
        }
        public void RewrapMasterKey(SymmetricKey masterKey, SymmetricKey keyEncryptingKey, long keyWrapIterations)
        {
            if (masterKey == null)
            {
                throw new ArgumentNullException("masterKey");
            }

            Salt    salt    = new Salt(masterKey.Size);
            KeyWrap keyWrap = new KeyWrap(salt, keyWrapIterations, KeyWrapMode.AxCrypt);

            byte[] wrappedKeyData = keyWrap.Wrap(Resolve.CryptoFactory.Legacy.CreateCrypto(keyEncryptingKey, null, 0), masterKey);
            Set(wrappedKeyData, salt, keyWrapIterations);
        }
Ejemplo n.º 6
0
        public void TestWrap()
        {
            byte[]  wrapped;
            KeyWrap keyWrap = new KeyWrap(6, KeyWrapMode.Specification);

            wrapped = keyWrap.Wrap(new V1AesCrypto(new V1Aes128CryptoFactory(), _keyEncryptingKey, SymmetricIV.Zero128), _keyData);

            Assert.That(wrapped, Is.EquivalentTo(_wrapped), "The wrapped data is not correct according to specification.");

            keyWrap = new KeyWrap(6, KeyWrapMode.Specification);
            Assert.Throws <ArgumentNullException>(() =>
            {
                wrapped = keyWrap.Wrap(new V1AesCrypto(new V1Aes128CryptoFactory(), _keyEncryptingKey, SymmetricIV.Zero128), (SymmetricKey)null);
            });
        }
Ejemplo n.º 7
0
        public void TestWrapAndUnwrapAxCryptMode()
        {
            SymmetricKey keyToWrap         = new SymmetricKey(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 });
            Salt         salt              = new Salt(new byte[] { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 });
            long         keyWrapIterations = 12345;

            byte[]  wrapped;
            KeyWrap keyWrap = new KeyWrap(salt, keyWrapIterations, KeyWrapMode.AxCrypt);

            wrapped = keyWrap.Wrap(new V1AesCrypto(new V1Aes128CryptoFactory(), _keyEncryptingKey, SymmetricIV.Zero128), keyToWrap);
            byte[] unwrapped;
            keyWrap   = new KeyWrap(salt, keyWrapIterations, KeyWrapMode.AxCrypt);
            unwrapped = keyWrap.Unwrap(new V1AesCrypto(new V1Aes128CryptoFactory(), _keyEncryptingKey, SymmetricIV.Zero128), wrapped);

            Assert.That(unwrapped, Is.EquivalentTo(keyToWrap.GetBytes()), "The unwrapped data should be equal to original.");
        }
Ejemplo n.º 8
0
        public void TestWrap()
        {
            byte[] wrapped;
            using (KeyWrap keyWrap = new KeyWrap(_keyEncryptingKey, 6, KeyWrapMode.Specification))
            {
                wrapped = keyWrap.Wrap(_keyData);
            }

            Assert.That(wrapped, Is.EquivalentTo(_wrapped), "The wrapped data is not correct according to specification.");

            using (KeyWrap keyWrap = new KeyWrap(_keyEncryptingKey, 6, KeyWrapMode.Specification))
            {
                Assert.Throws <ArgumentNullException>(() =>
                {
                    wrapped = keyWrap.Wrap(null);
                });
            }
        }
Ejemplo n.º 9
0
        public void TestWrapAndUnwrapAxCryptMode()
        {
            AesKey      keyToWrap        = new AesKey(new byte[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 });
            AesKey      keyEncryptingKey = new AesKey(new byte[] { 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0 });
            KeyWrapSalt salt             = new KeyWrapSalt(new byte[] { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31 });
            long        iterations       = 12345;

            byte[] wrapped;
            using (KeyWrap keyWrap = new KeyWrap(keyEncryptingKey, salt, iterations, KeyWrapMode.AxCrypt))
            {
                wrapped = keyWrap.Wrap(keyToWrap);
            }
            byte[] unwrapped;
            using (KeyWrap keyWrap = new KeyWrap(keyEncryptingKey, salt, iterations, KeyWrapMode.AxCrypt))
            {
                unwrapped = keyWrap.Unwrap(wrapped);
            }

            Assert.That(unwrapped, Is.EquivalentTo(keyToWrap.GetBytes()), "The unwrapped data should be equal to original.");
        }
Ejemplo n.º 10
0
        public static void TestDispose()
        {
            KeyWrap keyWrap = new KeyWrap(_keyEncryptingKey, 6, KeyWrapMode.Specification);

            keyWrap.Dispose();
            Assert.Throws <ObjectDisposedException>(() =>
            {
                keyWrap.Wrap(new AesKey());
            });

            Assert.Throws <ObjectDisposedException>(() =>
            {
                keyWrap.Unwrap(new byte[16 + 8]);
            });

            Assert.DoesNotThrow(() =>
            {
                keyWrap.Dispose();
            });
        }