2026-02-15 19:06:09 +01:00
|
|
|
using IdentityShroud.Core.Messages;
|
|
|
|
|
using IdentityShroud.Core.Model;
|
2026-03-16 19:15:04 +01:00
|
|
|
using IdentityShroud.Core.Security.Keys;
|
2026-02-15 19:06:09 +01:00
|
|
|
|
|
|
|
|
namespace IdentityShroud.Api.Mappers;
|
|
|
|
|
|
2026-03-16 19:15:04 +01:00
|
|
|
public class KeyMapper(IKeyProviderFactory keyProviderFactory)
|
2026-02-15 19:06:09 +01:00
|
|
|
{
|
2026-03-16 19:15:04 +01:00
|
|
|
public JsonWebKeySet KeyListToJsonWebKeySet(IEnumerable<RealmSigningKey> keys)
|
2026-02-15 19:06:09 +01:00
|
|
|
{
|
2026-02-27 17:57:42 +00:00
|
|
|
JsonWebKeySet wks = new();
|
|
|
|
|
foreach (var k in keys)
|
2026-02-15 19:06:09 +01:00
|
|
|
{
|
2026-03-16 19:15:04 +01:00
|
|
|
IKeyProvider provider = keyProviderFactory.CreateProvider(k.KeyType);
|
|
|
|
|
if (provider.IsPublic)
|
2026-02-27 17:57:42 +00:00
|
|
|
{
|
2026-03-16 19:15:04 +01:00
|
|
|
JsonWebKey jwk = new()
|
|
|
|
|
{
|
|
|
|
|
KeyId = k.Id.ToString(),
|
|
|
|
|
KeyType = k.KeyType,
|
|
|
|
|
Use = "sig",
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
provider.SetJwkParameters(k.PublicKeyParameters!, jwk);
|
|
|
|
|
wks.Keys.Add(jwk);
|
2026-02-27 17:57:42 +00:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return wks;
|
2026-02-15 19:06:09 +01:00
|
|
|
}
|
|
|
|
|
}
|