Ejemplo n.º 1
0
        public void ProtectedKey_ProtectKeyWithSpecificLength()
        {
            var originalKey  = KeyGeneration.GenerateRandomKey(20);
            var originalCopy = new byte[32];

            Array.Copy(originalKey, originalCopy, 20);

            ProtectedMemory.Protect(originalCopy, MemoryProtectionScope.SameProcess);
            CollectionAssert.AreNotEqual(originalKey, originalCopy);

            var pk = InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(originalCopy, 20, MemoryProtectionScope.SameProcess);

            CollectionAssert.AreEqual(originalKey, pk.GetCopyOfKey(), "The unprotected plain key and the original key don't match");
        }
Ejemplo n.º 2
0
        public void ProtectedKey_ProtectKey_SameLogon()
        {
            var originalKey  = KeyGeneration.GenerateRandomKey(16);
            var originalCopy = new byte[16];

            Array.Copy(originalKey, originalCopy, 16);
            CollectionAssert.AreEqual(originalKey, originalCopy);

            ProtectedMemory.Protect(originalCopy, MemoryProtectionScope.SameLogon);
            CollectionAssert.AreNotEqual(originalKey, originalCopy);

            var pk = InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(originalCopy, 16, MemoryProtectionScope.SameLogon);

            CollectionAssert.AreEqual(originalKey, pk.GetCopyOfKey());
        }
Ejemplo n.º 3
0
        public void ProtectedKey_MultipleUse()
        {
            var originalKey  = KeyGeneration.GenerateRandomKey(16);
            var originalCopy = new byte[16];

            Array.Copy(originalKey, originalCopy, 16);
            CollectionAssert.AreEqual(originalKey, originalCopy);

            ProtectedMemory.Protect(originalCopy, MemoryProtectionScope.SameProcess);
            CollectionAssert.AreNotEqual(originalKey, originalCopy);

            var pk = InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(originalCopy, 16, MemoryProtectionScope.SameProcess);

            // The key is protected and un-protected several times.
            // Make sure that the key can be used multiple times.
            for (int i = 0; i < 10; i++)
            {
                CollectionAssert.AreEqual(originalKey, pk.GetCopyOfKey());
            }
        }
Ejemplo n.º 4
0
 public void ProtectedKey_ProtectKeyNull()
 {
     new Action(() => InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(null, 16, MemoryProtectionScope.SameProcess))
     .ShouldThrow <ArgumentNullException>()
     .WithMessage("Value cannot be null.\r\nParameter name: preProtectedKey");
 }
Ejemplo n.º 5
0
 public void ProtectedKey_ProtectKeyZeroLength()
 {
     new Action(() => InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(OtpCalculationTests.RfcTestKey, 0, MemoryProtectionScope.SameProcess))
     .ShouldThrow <ArgumentException>()
     .WithMessage("The key must not be empty");
 }
Ejemplo n.º 6
0
 public void ProtectedKey_ProtectKeyEmpty()
 {
     new Action(() => InMemoryKey.CreateProtectedKeyFromPreProtectedMemory(new byte[] { }, 16, MemoryProtectionScope.SameProcess))
     .ShouldThrow <ArgumentException>()
     .WithMessage("The key must not be empty");
 }