/// <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); }