示例#1
0
        public void DecryptFromOtherSdkTest()
        {
            var secret = new EncryptionKey(1, s_passwordAsKey);

            using var cipher = new AesGcmPbkdf10KBase64Cipher(Encoding.UTF8);
            var decryptedMessage = cipher.Decrypt(CipherMessageV2, secret);

            Assert.AreEqual("SomeSecretBody!234567=!@#$%^&**()_+|\"{}'", decryptedMessage);
        }
示例#2
0
        public void AesGcmDecryptNegativeTest()
        {
            var secret = new EncryptionSecret(1, Encoding.UTF8.GetBytes("password"));

            using var cipher = new AesGcmPbkdf10KBase64Cipher(Encoding.UTF8);
            const string wrongCipheredText = "Nw5G/Ut36NVnt8+6EHg9iOYWX194";
            var          exception         = Assert.Throws <StorageCryptoException>(() => cipher.Decrypt(wrongCipheredText, secret));

            Assert.AreEqual("Encrypted text is incorrect", exception.Message);

            Assert.Throws <FormatException>(() => cipher.Decrypt("123", secret));
        }
示例#3
0
        public void AesGcmBase64CipherTest()
        {
            var text   = Guid.NewGuid().ToString();
            var secret = new EncryptionKey(1, s_passwordAsKey);

            using var cipher = new AesGcmPbkdf10KBase64Cipher(Encoding.UTF8);
            var cipherMessage = cipher.Encrypt(text, secret);

            Assert.NotNull(cipherMessage);
            var decryptedMessage = cipher.Decrypt(cipherMessage.Data.Substring(2), secret);

            Assert.AreEqual(text, decryptedMessage);
        }
示例#4
0
        public void AesGcmBase64CipherNegativeTest()
        {
            var wrongKey = new EncryptionSecret(1, Encoding.UTF8.GetBytes(Guid.NewGuid().ToString()));

            using var cipher = new AesGcmPbkdf10KBase64Cipher(Encoding.UTF8);
            var exception =
                Assert.Throws <StorageCryptoException>(() => cipher.Decrypt(CipherMessageV2, wrongKey));

            Assert.AreEqual("Invalid cipher for decryption", exception.Message);

            exception = Assert.Throws <StorageCryptoException>(() => cipher.Decrypt(CipherMessageV2));
            Assert.AreEqual("No secret provided", exception.Message);

            exception = Assert.Throws <StorageCryptoException>(() => cipher.Decrypt(null, wrongKey));
            Assert.AreEqual("Encrypted text is incorrect", exception.Message);
        }
示例#5
0
        public void DefaultCurrentCipherTest()
        {
            const int secretVersion = 7;
            var       secret        = new EncryptionSecret(secretVersion, Encoding.UTF8.GetBytes("password"));

            using var cipher         = new AesGcmPbkdf10KBase64Cipher(Encoding.UTF8);
            using var cryptoProvider = new CryptoProvider();
            var text          = Guid.NewGuid().ToString();
            var encryptResult =
                cryptoProvider.Encrypt(text, new SecretsData(new List <Secret> {
                secret
            }, secret));

            Assert.NotNull(encryptResult);
            Assert.AreEqual(secretVersion, encryptResult.KeyVersion);
            var decrypted = cipher.Decrypt(encryptResult.Data.Substring(2), secret);

            Assert.AreEqual(text, decrypted);
        }