30 lines
No EOL
866 B
C#
30 lines
No EOL
866 B
C#
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<RealmSigningKey> 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;
|
|
}
|
|
} |