diff --git a/DigitalData.Core.Security.Extensions/RSAExtensions.cs b/DigitalData.Core.Security.Extensions/RSAExtensions.cs index cd6d68a..2e70062 100644 --- a/DigitalData.Core.Security.Extensions/RSAExtensions.cs +++ b/DigitalData.Core.Security.Extensions/RSAExtensions.cs @@ -17,5 +17,28 @@ namespace DigitalData.Core.Security.Extensions public static IRSAEncryptor? GetEncryptor(this IDictionary pairs, string issuer, string audience) => pairs.TryGetEncryptor(issuer: issuer, audience: audience, out var encryptor) ? encryptor : null; + + public static IRSADecryptor GetRSADecryptor(this ICryptFactory factory, string issuer, string audience) + => factory[$"{issuer}:{audience}"]; + + public static bool TryGetRSADecryptor(this ICryptFactory factory, string issuer, string audience, out IRSADecryptor? decryptor) + => factory.TryGetRSADecryptor($"{issuer}:{audience}", out decryptor); + + public static IRSAEncryptor GetRSAEncryptor(this ICryptFactory factory, string issuer, string audience) + => factory[$"{issuer}:{audience}"].Encryptor; + + public static bool TryGetRSADecryptor(this ICryptFactory factory, string issuer, string audience, out IRSAEncryptor? encryptor) + { + if(factory.TryGetRSADecryptor($"{issuer}:{audience}", out var decryptor) && decryptor is not null) + { + encryptor = decryptor.Encryptor; + return true; + } + else + { + encryptor = null; + return false; + } + } } } \ No newline at end of file