diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-02-14 20:25:34 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-02-14 20:25:34 +0700 |
commit | ee97cb9053cced3ccfedd7ddf210579827859b6a (patch) | |
tree | 6c2c429ef86ff67a1926242e2bb15ac845fdf3bd /crypto/src/cms/CMSEnvelopedHelper.cs | |
parent | Avoid unnecessary recoding (diff) | |
download | BouncyCastle.NET-ed25519-ee97cb9053cced3ccfedd7ddf210579827859b6a.tar.xz |
Refactoring in Cms
Diffstat (limited to 'crypto/src/cms/CMSEnvelopedHelper.cs')
-rw-r--r-- | crypto/src/cms/CMSEnvelopedHelper.cs | 123 |
1 files changed, 45 insertions, 78 deletions
diff --git a/crypto/src/cms/CMSEnvelopedHelper.cs b/crypto/src/cms/CMSEnvelopedHelper.cs index 888aba817..40c5e6868 100644 --- a/crypto/src/cms/CMSEnvelopedHelper.cs +++ b/crypto/src/cms/CMSEnvelopedHelper.cs @@ -13,91 +13,36 @@ using Org.BouncyCastle.Utilities.IO; namespace Org.BouncyCastle.Cms { - class CmsEnvelopedHelper + // TODO[api] Make static + internal class CmsEnvelopedHelper { internal static readonly CmsEnvelopedHelper Instance = new CmsEnvelopedHelper(); - private static readonly IDictionary<string, int> KeySizes = new Dictionary<string, int>(); - private static readonly IDictionary<string, string> BaseCipherNames = new Dictionary<string, string>(); + private static readonly Dictionary<string, int> KeySizes = new Dictionary<string, int>(); + private static readonly Dictionary<string, string> Rfc3211WrapperNames = new Dictionary<string, string>(); static CmsEnvelopedHelper() { - KeySizes.Add(CmsEnvelopedGenerator.DesEde3Cbc, 192); KeySizes.Add(CmsEnvelopedGenerator.Aes128Cbc, 128); KeySizes.Add(CmsEnvelopedGenerator.Aes192Cbc, 192); KeySizes.Add(CmsEnvelopedGenerator.Aes256Cbc, 256); - - BaseCipherNames.Add(CmsEnvelopedGenerator.DesEde3Cbc, "DESEDE"); - BaseCipherNames.Add(CmsEnvelopedGenerator.Aes128Cbc, "AES"); - BaseCipherNames.Add(CmsEnvelopedGenerator.Aes192Cbc, "AES"); - BaseCipherNames.Add(CmsEnvelopedGenerator.Aes256Cbc, "AES"); - } - - private string GetAsymmetricEncryptionAlgName( - string encryptionAlgOid) - { - if (Asn1.Pkcs.PkcsObjectIdentifiers.RsaEncryption.Id.Equals(encryptionAlgOid)) - { - return "RSA/ECB/PKCS1Padding"; - } - - return encryptionAlgOid; - } - - internal IBufferedCipher CreateAsymmetricCipher( - string encryptionOid) - { - string asymName = GetAsymmetricEncryptionAlgName(encryptionOid); - if (!asymName.Equals(encryptionOid)) - { - try - { - return CipherUtilities.GetCipher(asymName); - } - catch (SecurityUtilityException) - { - // Ignore - } - } - return CipherUtilities.GetCipher(encryptionOid); - } - - internal IWrapper CreateWrapper( - string encryptionOid) - { - try - { - return WrapperUtilities.GetWrapper(encryptionOid); - } - catch (SecurityUtilityException) - { - return WrapperUtilities.GetWrapper(GetAsymmetricEncryptionAlgName(encryptionOid)); - } - } - - internal string GetRfc3211WrapperName(string oid) - { - if (oid == null) - throw new ArgumentNullException(nameof(oid)); - - if (!BaseCipherNames.TryGetValue(oid, out var alg)) - throw new ArgumentException("no name for " + oid, nameof(oid)); - - return alg + "RFC3211Wrap"; - } - - internal int GetKeySize(string oid) - { - if (oid == null) - throw new ArgumentNullException(nameof(oid)); - - if (!KeySizes.TryGetValue(oid, out var keySize)) - throw new ArgumentException("no keysize for " + oid, "oid"); - - return keySize; - } - - internal static RecipientInformationStore BuildRecipientInformationStore( + KeySizes.Add(CmsEnvelopedGenerator.Camellia128Cbc, 128); + KeySizes.Add(CmsEnvelopedGenerator.Camellia192Cbc, 192); + KeySizes.Add(CmsEnvelopedGenerator.Camellia256Cbc, 256); + KeySizes.Add(CmsEnvelopedGenerator.DesCbc, 64); + KeySizes.Add(CmsEnvelopedGenerator.DesEde3Cbc, 192); + + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Aes128Cbc, "AESRFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Aes192Cbc, "AESRFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Aes256Cbc, "AESRFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Camellia128Cbc, "CAMELLIARFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Camellia192Cbc, "CAMELLIARFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.Camellia256Cbc, "CAMELLIARFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.DesCbc, "DESRFC3211WRAP"); + Rfc3211WrapperNames.Add(CmsEnvelopedGenerator.DesEde3Cbc, "DESEDERFC3211WRAP"); + } + + internal static RecipientInformationStore BuildRecipientInformationStore( Asn1Set recipientInfos, CmsSecureReadable secureReadable) { var infos = new List<RecipientInformation>(); @@ -110,7 +55,29 @@ namespace Org.BouncyCastle.Cms return new RecipientInformationStore(infos); } - private static void ReadRecipientInfo(IList<RecipientInformation> infos, RecipientInfo info, + internal int GetKeySize(string oid) + { + if (oid == null) + throw new ArgumentNullException(nameof(oid)); + + if (!KeySizes.TryGetValue(oid, out var keySize)) + throw new ArgumentException("no key size for " + oid, nameof(oid)); + + return keySize; + } + + internal string GetRfc3211WrapperName(string oid) + { + if (oid == null) + throw new ArgumentNullException(nameof(oid)); + + if (!Rfc3211WrapperNames.TryGetValue(oid, out var name)) + throw new ArgumentException("no name for " + oid, nameof(oid)); + + return name; + } + + private static void ReadRecipientInfo(IList<RecipientInformation> infos, RecipientInfo info, CmsSecureReadable secureReadable) { Asn1Encodable recipInfo = info.Info; @@ -304,4 +271,4 @@ namespace Org.BouncyCastle.Cms } } } -} \ No newline at end of file +} |