コード例 #1
0
        public void AcceptEncryptionAlgorithmRegardlessOfCase(string algorithm)
        {
            var provider = new SqlColumnEncryptionCngProvider();

            byte[] ciphertext = provider.EncryptColumnEncryptionKey(MASTER_KEY_PATH, algorithm, new byte[] { 1, 2, 3, 4, 5 });
            Assert.NotNull(ciphertext);
        }
コード例 #2
0
        public void ThrowExceptionWithInvalidParameterWhileEncryptingColumnEncryptionKey(string errorMsg, Type exceptionType, string masterKeyPath, string encryptionAlgorithm, byte[] bytes)
        {
            var       provider = new SqlColumnEncryptionCngProvider();
            Exception ex       = Assert.Throws(exceptionType, () => provider.EncryptColumnEncryptionKey(masterKeyPath, encryptionAlgorithm, bytes));

            Assert.Equal(errorMsg, ex.Message);
        }
コード例 #3
0
        public void ThrowPlatformNotSupportedExceptionInUnix()
        {
            var provider = new SqlColumnEncryptionCngProvider();

            Assert.Throws <PlatformNotSupportedException>(() => provider.EncryptColumnEncryptionKey("", "", new byte[] { }));
            Assert.Throws <PlatformNotSupportedException>(() => provider.DecryptColumnEncryptionKey("", "", new byte[] { }));
            Assert.Throws <PlatformNotSupportedException>(() => provider.SignColumnMasterKeyMetadata("", false));
            Assert.Throws <PlatformNotSupportedException>(() => provider.VerifyColumnMasterKeyMetadata("", false, new byte[] { }));
        }
コード例 #4
0
        public void EncryptKeyAndThenDecryptItSuccessfully(int dataSize)
        {
            var provider              = new SqlColumnEncryptionCngProvider();
            var columnEncryptionKey   = new byte[dataSize];
            var randomNumberGenerator = new Random();

            randomNumberGenerator.NextBytes(columnEncryptionKey);
            byte[] encryptedData = provider.EncryptColumnEncryptionKey(MASTER_KEY_PATH, ENCRYPTION_ALGORITHM, columnEncryptionKey);
            byte[] decryptedData = provider.DecryptColumnEncryptionKey(MASTER_KEY_PATH, ENCRYPTION_ALGORITHM, encryptedData);
            Assert.Equal(columnEncryptionKey, decryptedData);
        }
コード例 #5
0
        internal static byte[] CreateEncryptedCekUsingCsp(string providerName, string keyContainerName)
        {
            try
            {
                // Create a random column encryption key of size 256 bits
                byte[] columnEncryptionKey = GenerateRandomBytes(32);
                Console.WriteLine(@"Plaintext CEK: {0}", ConvertBytesToHexString(columnEncryptionKey, true));

                // Encrypt CEK with CMK stored in EKM
                string keyPath = String.Format(@"{0}/{1}", providerName, keyContainerName);
                SqlColumnEncryptionCngProvider cspProvider = new SqlColumnEncryptionCngProvider();

                return(cspProvider.EncryptColumnEncryptionKey(keyPath, @"RSA_OAEP", columnEncryptionKey));
            }
            catch (Exception e)
            {
                Console.WriteLine("\tFAILURE: Creating the encrypted column encryption key failed");
                Console.WriteLine(@"    {0}", e.Message);
                return(null);
            }
        }
コード例 #6
0
        public void ThrowNotSupportedExceptionWhenCallingVerifyColumnMasterKeyMetadata()
        {
            var provider = new SqlColumnEncryptionCngProvider();

            Assert.Throws <NotSupportedException>(() => provider.VerifyColumnMasterKeyMetadata(MASTER_KEY_PATH, true, GenerateTestEncryptedBytes(1, 0, 256, 256)));
        }
コード例 #7
0
        public void ThrowNotSupportedExceptionWhenCallingSignColumnMasterKeyMetadata()
        {
            var provider = new SqlColumnEncryptionCngProvider();

            Assert.Throws <NotSupportedException>(() => provider.SignColumnMasterKeyMetadata(MASTER_KEY_PATH, true));
        }