<PackageReference Include="BouncyCastle.Cryptography" Version="2.3.0" />

KeyWrapperUtil

using Org.BouncyCastle.Asn1.Nist; using Org.BouncyCastle.Asn1.Oiw; using System; using System.Collections.Generic; namespace Org.BouncyCastle.Crypto.Operators { internal class KeyWrapperUtil { private static readonly Dictionary<string, WrapperProvider> m_providerMap; static KeyWrapperUtil() { m_providerMap = new Dictionary<string, WrapperProvider>(StringComparer.OrdinalIgnoreCase); m_providerMap.Add("RSA/ECB/PKCS1PADDING", new RsaOaepWrapperProvider(OiwObjectIdentifiers.IdSha1)); m_providerMap.Add("RSA/NONE/PKCS1PADDING", new RsaOaepWrapperProvider(OiwObjectIdentifiers.IdSha1)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA1ANDMGF1PADDING", new RsaOaepWrapperProvider(OiwObjectIdentifiers.IdSha1)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA224ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha224)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA256ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha256)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA384ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha384)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA512ANDMGF1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha512)); m_providerMap.Add("RSA/NONE/OAEPWITHSHA256ANDMGF1WITHSHA1PADDING", new RsaOaepWrapperProvider(NistObjectIdentifiers.IdSha256, OiwObjectIdentifiers.IdSha1)); } public static IKeyWrapper WrapperForName(string algorithm, ICipherParameters parameters) { if (!m_providerMap.TryGetValue(algorithm, out WrapperProvider value)) throw new ArgumentException("could not resolve " + algorithm + " to a KeyWrapper"); return (IKeyWrapper)value.CreateWrapper(true, parameters); } public static IKeyUnwrapper UnwrapperForName(string algorithm, ICipherParameters parameters) { if (!m_providerMap.TryGetValue(algorithm, out WrapperProvider value)) throw new ArgumentException("could not resolve " + algorithm + " to a KeyUnwrapper"); return (IKeyUnwrapper)value.CreateWrapper(false, parameters); } } }