12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.IO;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Cms;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.IO;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Parameters;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Utilities;
- using Best.HTTP.SecureProtocol.Org.BouncyCastle.Security;
- namespace Best.HTTP.SecureProtocol.Org.BouncyCastle.Crypto.Operators
- {
- public class Asn1CipherBuilderWithKey : ICipherBuilderWithKey
- {
- private readonly KeyParameter encKey;
- private AlgorithmIdentifier algorithmIdentifier;
- public Asn1CipherBuilderWithKey(DerObjectIdentifier encryptionOID, int keySize, SecureRandom random)
- {
- random = CryptoServicesRegistrar.GetSecureRandom(random);
- CipherKeyGenerator keyGen = CipherKeyGeneratorFactory.CreateKeyGenerator(encryptionOID, random);
- encKey = new KeyParameter(keyGen.GenerateKey());
- algorithmIdentifier = AlgorithmIdentifierFactory.GenerateEncryptionAlgID(encryptionOID, encKey.GetKey().Length * 8, random);
- }
- public object AlgorithmDetails
- {
- get { return algorithmIdentifier; }
- }
- public int GetMaxOutputSize(int inputLen)
- {
- throw new NotImplementedException();
- }
- public ICipher BuildCipher(Stream stream)
- {
- object cipher = EnvelopedDataHelper.CreateContentCipher(true, encKey, algorithmIdentifier);
- //
- // BufferedBlockCipher
- // IStreamCipher
- //
- if (cipher is IStreamCipher)
- {
- cipher = new BufferedStreamCipher((IStreamCipher)cipher);
- }
- if (stream == null)
- {
- stream = new MemoryStream();
- }
- return new BufferedCipherWrapper((IBufferedCipher)cipher, stream);
- }
- public ICipherParameters Key
- {
- get { return encKey; }
- }
- }
- public class BufferedCipherWrapper : ICipher
- {
- private readonly IBufferedCipher bufferedCipher;
- private readonly CipherStream stream;
- public BufferedCipherWrapper(IBufferedCipher bufferedCipher, Stream source)
- {
- this.bufferedCipher = bufferedCipher;
- stream = new CipherStream(source, bufferedCipher, bufferedCipher);
- }
- public int GetMaxOutputSize(int inputLen)
- {
- return bufferedCipher.GetOutputSize(inputLen);
- }
- public int GetUpdateOutputSize(int inputLen)
- {
- return bufferedCipher.GetUpdateOutputSize(inputLen);
- }
- public Stream Stream
- {
- get { return stream; }
- }
- }
- }
- #pragma warning restore
- #endif
|