/// <summary>Constructor</summary>
 /// <param name="algorithm">EnumASymmetricAlgorithm</param>
 /// <param name="certificateFilePath">X.509証明書(*.pfx, *.cer)へのパス</param>
 /// <param name="password">パスワード</param>
 /// <param name="flag">X509KeyStorageFlags</param>
 public ASymmetricCryptography(EnumASymmetricAlgorithm algorithm,
                               string certificateFilePath = "", string password = "",
                               X509KeyStorageFlags flag   = X509KeyStorageFlags.DefaultKeySet)
 {
     this._asa = AsymmetricAlgorithmCmnFunc.CreateCryptographySP(
         algorithm, certificateFilePath, password, flag);
 }
        /// <summary>対称アルゴリズム暗号化サービスプロバイダ生成</summary>
        /// <param name="easa">EnumASymmetricAlgorithm</param>
        /// <param name="certificateFilePath">X.509証明書(*.pfx, *.cer)へのパス</param>
        /// <param name="password">パスワード</param>
        /// <param name="flag">X509KeyStorageFlags</param>
        /// <returns>AsymmetricAlgorithm</returns>
        public static AsymmetricAlgorithm CreateCryptographySP(EnumASymmetricAlgorithm easa,
                                                               string certificateFilePath = "", string password = "",
                                                               X509KeyStorageFlags flag   = X509KeyStorageFlags.DefaultKeySet)
        {
            AsymmetricAlgorithm asa = null;

            if (easa == EnumASymmetricAlgorithm.X509)
            {
                // X.509対応
                X509Certificate2 x509Key = new X509Certificate2(certificateFilePath, password, flag);

                if (string.IsNullOrEmpty(password))
                {
                    asa = x509Key.PublicKey.Key;
                }
                else
                {
                    asa = x509Key.PrivateKey;
                }
            }
            else
            {
                if (easa == EnumASymmetricAlgorithm.RsaCsp)
                {
                    // RSACryptoServiceProviderサービスプロバイダ
                    asa = RSACryptoServiceProvider.Create(); // devps(1703)
                }

#if !NET45
                else if (easa == EnumASymmetricAlgorithm.RsaCng)
                {
                    // RSACngサービスプロバイダ
                    asa = RSACng.Create(); // devps(1703)
                }
#endif
#if NETSTD
                else if (easa == EnumASymmetricAlgorithm.RsaOpenSsl)
                {
                    // RSAOpenSslサービスプロバイダ
                    asa = RSAOpenSsl.Create(); // devps(1703)
                }
#endif
            }
            return(asa);
        }
Example #3
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">EnumASymmetricAlgorithm</param>
 /// <param name="param">RSAParameters</param>
 public JWE_RsaOaepAesGcm_Param(EnumASymmetricAlgorithm algorithm, RSAParameters param)
 {
     this.ASymmetricCryptography = new ASymmetricCryptography(algorithm);
     ((RSA)ASymmetricCryptography.AsymmetricAlgorithm).ImportParameters(param);
 }
Example #4
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">EnumASymmetricAlgorithm</param>
 public JWE_RsaOaepAesGcm_Param(EnumASymmetricAlgorithm algorithm)
 {
     this.ASymmetricCryptography = new ASymmetricCryptography(algorithm);
 }
Example #5
0
 /// <summary>Constructor</summary>
 /// <param name="algorithm">EnumASymmetricAlgorithm</param>
 public JWE_Rsa15A128CbcHS256_Param(EnumASymmetricAlgorithm algorithm)
 {
     this.ASymmetricCryptography = new ASymmetricCryptography(algorithm);
 }