コード例 #1
0
        public string Create(string plainText)
        {
            if (string.IsNullOrEmpty(plainText))
            {
                throw new ArgumentException("Value cannot be null or empty.", nameof(plainText));
            }

            var tokenStorageItem = new TokenStorageItem();

            var salt      = SaltUtil.GenerateSecureRandomSalt();
            var encrypted = EncryptionProvider.Encrypt(plainText, KeyVaultUtil.GetSecureSecretFromVault(), salt);

            if (encrypted != null)
            {
                tokenStorageItem = new TokenStorageItem
                {
                    Token           = CreateTokenGuid(),
                    SaltValue       = salt,
                    EcnryptedValue  = encrypted,
                    CreateDateTime  = DateTime.UtcNow,
                    UpdatedDateTime = DateTime.UtcNow
                };
            }

            //write or append to json file
            WriteAppendDataItem(tokenStorageItem);

            return(tokenStorageItem.Token);
        }
コード例 #2
0
        public void EncryptDecrypt_WithSpecialChars_Test()
        {
            var passPhrase = KeyVaultUtil.GetSecureSecretFromVault();
            var data       = "Some secret user's data¡";
            var salt       = SaltUtil.GenerateSecureRandomSalt();

            AesManagedProvider crypto    = new AesManagedProvider();
            string             encrypted = crypto.Encrypt(data, passPhrase, salt);
            string             decrypted = crypto.Decrypt(encrypted, passPhrase, salt);

            Assert.AreEqual(data, decrypted);
        }
コード例 #3
0
        public void Decrypt_FailSalt_Test()
        {
            var passPhrase = KeyVaultUtil.GetSecureSecretFromVault();
            var data       = "4111111111111111";
            var salt       = SaltUtil.GenerateSecureRandomSalt();

            AesManagedProvider crypto    = new AesManagedProvider();
            string             encrypted = crypto.Encrypt(data, passPhrase, salt);
            string             decrypted = crypto.Decrypt(encrypted, passPhrase, "sldfjsdlksld");

            Assert.IsNull(decrypted);
        }
コード例 #4
0
        public void EncryptDecrypt_CC_Number_Test()
        {
            var passPhrase = KeyVaultUtil.GetSecureSecretFromVault();
            var data       = "4111111111111111";
            var salt       = SaltUtil.GenerateSecureRandomSalt();

            AesManagedProvider crypto    = new AesManagedProvider();
            string             encrypted = crypto.Encrypt(data, passPhrase, salt);
            string             decrypted = crypto.Decrypt(encrypted, passPhrase, salt);

            Assert.AreEqual(data, decrypted);
        }
コード例 #5
0
        public void Hash_does_not_matches_the_text()
        {
            // Arrange
            var message = "passw0rd";
            var salt    = SaltUtil.Create();
            var hash    = "blahblahblah";

            // Act
            var match = HashUtil.Validate(message, salt, hash);

            // Assert
            Assert.False(match);
        }
コード例 #6
0
        public void HashMatchesText()
        {
            // Arrange
            var message = "passw0rd";
            var salt    = SaltUtil.Create();
            var hash    = HashUtil.Create(message, salt);

            // Act
            var match = HashUtil.Validate(message, salt, hash);

            // Assert
            Assert.True(match);
        }
コード例 #7
0
        public void Hash_of_two_different_messages_dont_match()
        {
            // Arrange
            var message1 = "passw0rd";
            var message2 = "password";
            var salt     = SaltUtil.Create();

            // Act
            var hash1 = HashUtil.Create(message1, salt);
            var hash2 = HashUtil.Create(message2, salt);

            // Assert
            Assert.AreNotEqual(hash1, hash2);
        }
コード例 #8
0
        public void EncryptDecrypt_LargeText__Test()
        {
            var passPhrase = KeyVaultUtil.GetSecureSecretFromVault();
            var data       = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " +
                             "Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure " +
                             "dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. " +
                             "Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.";

            var salt = SaltUtil.GenerateSecureRandomSalt();

            AesManagedProvider crypto    = new AesManagedProvider();
            string             encrypted = crypto.Encrypt(data, passPhrase, salt);
            string             decrypted = crypto.Decrypt(encrypted, passPhrase, salt);

            Assert.AreEqual(data, decrypted);
        }
コード例 #9
0
 public UserService(IConnectionService connectionService)
 {
     _salt = SaltUtil.Create();
     _connectionService = connectionService;
 }