using IdentityShroud.Core.Messages; using IdentityShroud.Core.Model; using IdentityShroud.Core.Security.Keys; namespace IdentityShroud.Api.Mappers; public class KeyMapper(IKeyProviderFactory keyProviderFactory) { public JsonWebKeySet KeyListToJsonWebKeySet(IEnumerable keys) { JsonWebKeySet wks = new(); foreach (var k in keys) { IKeyProvider provider = keyProviderFactory.CreateProvider(k.KeyType); if (provider.IsPublic) { JsonWebKey jwk = new() { KeyId = k.Id.ToString(), KeyType = k.KeyType, Use = "sig", }; provider.SetJwkParameters(k.PublicKeyParameters!, jwk); wks.Keys.Add(jwk); } } return wks; } }