public void Should_upgrade_the_secret_with_the_new_hash()
            {
                var config = _configProvider.GetHashConfiguration();

                A.CallTo(() => _securePackedHashProvider.ComputePackedHashString(Secret,
                                                                                 config.GetAlgorithmHashCode(), config.Iterations, config.GetSaltSizeInBytes())).MustHaveHappened();
            }
Exemple #2
0
            public void Should_upgrade_the_secret_with_the_new_hash()
            {
                var config = _configProvider.GetHashConfiguration();

                _securePackedHashProvider.AssertWasCalled(x => x.ComputePackedHashString(Secret,
                                                                                         config.GetAlgorithmHashCode(), config.Iterations, config.GetSaltSizeInBytes()));
            }
Exemple #3
0
 public AutoUpgradingHashedSecretVerifierDecorator(
     IApiClientSecretProvider apiClientSecretProvider,
     ISecretVerifier next,
     IPackedHashConverter packedHashConverter,
     ISecurePackedHashProvider securePackedHashProvider,
     IHashConfigurationProvider hashConfigurationProvider)
 {
     _apiClientSecretProvider = apiClientSecretProvider;
     _next = next;
     _packedHashConverter      = packedHashConverter;
     _securePackedHashProvider = securePackedHashProvider;
     _hashConfiguration        = hashConfigurationProvider.GetHashConfiguration();
 }
        /// <summary>
        /// Generates a new Secret for the given ApiClient object; the new Secret is hashed, and the pre-hash plain text is returned
        /// </summary>
        /// <param name="apiClient">ApiClient entity for which a new secure secret should be generated</param>
        /// <param name="securePackedHashProvider">Hash provider service</param>
        /// <param name="hashConfigurationProvider">Hash configuration settings provider</param>
        /// <returns>Plain text value of Secret, before hasing algorithm has been applied</returns>
        public static string GenerateSecureClientSecret(this ApiClient apiClient, ISecurePackedHashProvider securePackedHashProvider, IHashConfigurationProvider hashConfigurationProvider)
        {
            var hashConfiguration = hashConfigurationProvider.GetHashConfiguration();
            var plainTextSecret   = apiClient.GenerateSecret();

            var hashedSecret = securePackedHashProvider.ComputePackedHashString(
                plainTextSecret,
                hashConfiguration.GetAlgorithmHashCode(),
                hashConfiguration.Iterations,
                hashConfiguration.GetSaltSizeInBytes());

            apiClient.Secret         = hashedSecret;
            apiClient.SecretIsHashed = true;

            return(plainTextSecret);
        }