50 lines
1.8 KiB
C#
50 lines
1.8 KiB
C#
using System.Collections;
|
|
using Org.BouncyCastle.Asn1;
|
|
using Org.BouncyCastle.Asn1.Nist;
|
|
using Org.BouncyCastle.Asn1.Pkcs;
|
|
using Org.BouncyCastle.Asn1.X509;
|
|
using Org.BouncyCastle.Crypto;
|
|
using Org.BouncyCastle.Crypto.Parameters;
|
|
using Org.BouncyCastle.Crypto.Utilities;
|
|
using Org.BouncyCastle.Security;
|
|
using Org.BouncyCastle.Utilities;
|
|
|
|
namespace Org.BouncyCastle.Cms;
|
|
|
|
internal class EnvelopedDataHelper
|
|
{
|
|
private static readonly IDictionary BaseCipherNames;
|
|
|
|
private static readonly IDictionary MacAlgNames;
|
|
|
|
static EnvelopedDataHelper()
|
|
{
|
|
BaseCipherNames = Platform.CreateHashtable();
|
|
MacAlgNames = Platform.CreateHashtable();
|
|
BaseCipherNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDE");
|
|
BaseCipherNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AES");
|
|
BaseCipherNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AES");
|
|
BaseCipherNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AES");
|
|
MacAlgNames.Add(PkcsObjectIdentifiers.DesEde3Cbc, "DESEDEMac");
|
|
MacAlgNames.Add(NistObjectIdentifiers.IdAes128Cbc, "AESMac");
|
|
MacAlgNames.Add(NistObjectIdentifiers.IdAes192Cbc, "AESMac");
|
|
MacAlgNames.Add(NistObjectIdentifiers.IdAes256Cbc, "AESMac");
|
|
MacAlgNames.Add(PkcsObjectIdentifiers.RC2Cbc, "RC2Mac");
|
|
}
|
|
|
|
public static object CreateContentCipher(bool forEncryption, ICipherParameters encKey, AlgorithmIdentifier encryptionAlgID)
|
|
{
|
|
return CipherFactory.CreateContentCipher(forEncryption, encKey, encryptionAlgID);
|
|
}
|
|
|
|
public AlgorithmIdentifier GenerateEncryptionAlgID(DerObjectIdentifier encryptionOID, KeyParameter encKey, SecureRandom random)
|
|
{
|
|
return AlgorithmIdentifierFactory.GenerateEncryptionAlgID(encryptionOID, encKey.GetKey().Length * 8, random);
|
|
}
|
|
|
|
public CipherKeyGenerator CreateKeyGenerator(DerObjectIdentifier algorithm, SecureRandom random)
|
|
{
|
|
return CipherKeyGeneratorFactory.CreateKeyGenerator(algorithm, random);
|
|
}
|
|
}
|