Пример #1
0
        /// <inheritdoc/>
        public async Task <SigningCredentials> GetSigningCredentialsAsync(IEnumerable <string> allowedAlgorithms = null)
        {
            if (allowedAlgorithms.IsNullOrEmpty())
            {
                var automaticKey = await _keyManagerKeyStore.GetSigningCredentialsAsync();

                if (automaticKey != null)
                {
                    return(automaticKey);
                }

                var list = _signingCredentialStores.ToList();
                for (var i = 0; i < list.Count; i++)
                {
                    var key = await list[i].GetSigningCredentialsAsync();
                    if (key != null)
                    {
                        return(key);
                    }
                }

                throw new InvalidOperationException($"No signing credential registered.");
            }

            var credential =
                (await GetAllSigningCredentialsAsync()).FirstOrDefault(c => allowedAlgorithms.Contains(c.Algorithm));

            if (credential is null)
            {
                throw new InvalidOperationException(
                          $"No signing credential for algorithms ({allowedAlgorithms.ToSpaceSeparatedString()}) registered.");
            }

            return(credential);
        }