| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Pkcs;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.X509;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Crypto;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Security;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Pkcs
- {
- public sealed class EncryptedPrivateKeyInfoFactory
- {
- private EncryptedPrivateKeyInfoFactory()
- {
- }
- public static EncryptedPrivateKeyInfo CreateEncryptedPrivateKeyInfo(
- DerObjectIdentifier algorithm,
- char[] passPhrase,
- byte[] salt,
- int iterationCount,
- AsymmetricKeyParameter key)
- {
- return CreateEncryptedPrivateKeyInfo(
- algorithm.Id, passPhrase, salt, iterationCount,
- PrivateKeyInfoFactory.CreatePrivateKeyInfo(key));
- }
- public static EncryptedPrivateKeyInfo CreateEncryptedPrivateKeyInfo(
- string algorithm,
- char[] passPhrase,
- byte[] salt,
- int iterationCount,
- AsymmetricKeyParameter key)
- {
- return CreateEncryptedPrivateKeyInfo(
- algorithm, passPhrase, salt, iterationCount,
- PrivateKeyInfoFactory.CreatePrivateKeyInfo(key));
- }
- public static EncryptedPrivateKeyInfo CreateEncryptedPrivateKeyInfo(
- string algorithm,
- char[] passPhrase,
- byte[] salt,
- int iterationCount,
- PrivateKeyInfo keyInfo)
- {
- IBufferedCipher cipher = PbeUtilities.CreateEngine(algorithm) as IBufferedCipher;
- if (cipher == null)
- throw new Exception("Unknown encryption algorithm: " + algorithm);
- Asn1Encodable pbeParameters = PbeUtilities.GenerateAlgorithmParameters(
- algorithm, salt, iterationCount);
- ICipherParameters cipherParameters = PbeUtilities.GenerateCipherParameters(
- algorithm, passPhrase, pbeParameters);
- cipher.Init(true, cipherParameters);
- byte[] encoding = cipher.DoFinal(keyInfo.GetEncoded());
- DerObjectIdentifier oid = PbeUtilities.GetObjectIdentifier(algorithm);
- AlgorithmIdentifier algID = new AlgorithmIdentifier(oid, pbeParameters);
- return new EncryptedPrivateKeyInfo(algID, encoding);
- }
- }
- }
- #pragma warning restore
- #endif
|