private void TestCloseWithClosedSecretShouldNoop() { Debug.WriteLine("TestCloseWithClosedSecretShouldNoop"); byte[] secretBytes = { 0, 1 }; // TODO : Need to determine if we can stub out the protectedMemoryAllocatorMock. if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { Mock <MacOSProtectedMemoryAllocatorLP64> protectedMemoryAllocatorMacOSMock = new Mock <MacOSProtectedMemoryAllocatorLP64> { CallBase = true }; ProtectedMemorySecret secret = new ProtectedMemorySecret(secretBytes, protectedMemoryAllocatorMacOSMock.Object, configuration); secret.Close(); secret.Close(); protectedMemoryAllocatorMacOSMock.Verify( x => x.Free(It.IsAny <IntPtr>(), It.IsAny <ulong>()), Times.Exactly(1)); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { Mock <LinuxProtectedMemoryAllocatorLP64> protectedMemoryAllocatorLinuxMock = new Mock <LinuxProtectedMemoryAllocatorLP64> { CallBase = true }; ProtectedMemorySecret secret = new ProtectedMemorySecret(secretBytes, protectedMemoryAllocatorLinuxMock.Object, configuration); secret.Close(); secret.Close(); protectedMemoryAllocatorLinuxMock.Verify( x => x.Free(It.IsAny <IntPtr>(), It.IsAny <ulong>()), Times.Exactly(1)); } }
private void TestWithSecretBytesWithClosedSecretShouldFail() { byte[] secretBytes = { 0, 1 }; ProtectedMemorySecret secret = new ProtectedMemorySecret((byte[])secretBytes.Clone(), protectedMemoryAllocatorController); secret.Close(); Assert.Throws <InvalidOperationException>(() => { secret.WithSecretBytes(decryptedBytes => true); }); }
private void TestWithSecretUtf8CharsWithClosedSecretShouldFail() { char[] secretChars = { 'a', 'b' }; ProtectedMemorySecret secret = ProtectedMemorySecret.FromCharArray(secretChars, protectedMemoryAllocatorController); secret.Close(); Assert.Throws <InvalidOperationException>(() => { secret.WithSecretUtf8Chars(decryptedChars => true); }); }
private void TestWithSecretUtf8CharsWithClosedSecretShouldFail(IProtectedMemoryAllocator protectedMemoryAllocator) { Debug.WriteLine("TestWithSecretUtf8CharsWithClosedSecretShouldFail"); char[] secretChars = { 'a', 'b' }; ProtectedMemorySecret secret = ProtectedMemorySecret.FromCharArray(secretChars, protectedMemoryAllocator, configuration); secret.Close(); Assert.Throws <InvalidOperationException>(() => { secret.WithSecretUtf8Chars(decryptedChars => true); }); }
private void TestWithSecretBytesWithClosedSecretShouldFail(IProtectedMemoryAllocator protectedMemoryAllocator) { Debug.WriteLine("TestWithSecretBytesWithClosedSecretShouldFail"); byte[] secretBytes = { 0, 1 }; ProtectedMemorySecret secret = new ProtectedMemorySecret((byte[])secretBytes.Clone(), protectedMemoryAllocator, configuration); secret.Close(); Assert.Throws <InvalidOperationException>(() => { secret.WithSecretBytes(decryptedBytes => true); }); }
private void TestAllocatorSetNoDumpFailure() { Debug.WriteLine("TestAllocatorSetNoDumpFailure"); byte[] secretBytes = { 0, 1 }; IProtectedMemoryAllocator allocator = null; // TODO : Need to determine if we can stub out the protectedMemoryAllocatorMock. if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { Mock <MacOSProtectedMemoryAllocatorLP64> protectedMemoryAllocatorMacOSMock = new Mock <MacOSProtectedMemoryAllocatorLP64> { CallBase = true }; protectedMemoryAllocatorMacOSMock.Setup(x => x.SetNoDump(It.IsAny <IntPtr>(), It.IsAny <ulong>())) .Throws(new Exception()); allocator = protectedMemoryAllocatorMacOSMock.Object; } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { Mock <LinuxOpenSSL11ProtectedMemoryAllocatorLP64> protectedMemoryAllocatorLinuxMock = new Mock <LinuxOpenSSL11ProtectedMemoryAllocatorLP64>(configuration) { CallBase = true }; protectedMemoryAllocatorLinuxMock.Setup(x => x.SetNoDump(It.IsAny <IntPtr>(), It.IsAny <ulong>())) .Throws(new Exception()); allocator = protectedMemoryAllocatorLinuxMock.Object; } else { return; } Assert.Throws <Exception>(() => { ProtectedMemorySecret secret = new ProtectedMemorySecret(secretBytes, allocator, configuration); secret.Close(); }); }