/// <summary>Constructor</summary> /// <param name="eaa">EnumDigitalSignAlgorithm</param> public DigitalSignParam(EnumDigitalSignAlgorithm eaa) { AsymmetricAlgorithm aa = null; HashAlgorithm ha = null; RsaAndDsaCmnFunc.CreateDigitalSignServiceProvider(eaa, out aa, out ha); this.AsymmetricAlgorithm = aa; this.HashAlgorithm = ha; }
/// <summary>Constructor</summary> /// <param name="eaa">EnumDigitalSignAlgorithm</param> public DigitalSignXML(EnumDigitalSignAlgorithm eaa) { AsymmetricAlgorithm aa = null; HashAlgorithm ha = null; RsaAndDsaCmnFunc.CreateDigitalSignServiceProvider(eaa, out aa, out ha); this.AsymmetricAlgorithm = aa; this.HashAlgorithm = ha; // 秘密鍵をXML形式で取得 this.XMLPrivateKey = this.AsymmetricAlgorithm.ToXmlString(true); // 公開鍵をXML形式で取得 this.XMLPublicKey = this.AsymmetricAlgorithm.ToXmlString(false); }
/// <summary>Constructor</summary> /// <param name="eaa">EnumDigitalSignAlgorithm</param> /// <param name="xmlKey">string</param> public DigitalSignXML(EnumDigitalSignAlgorithm eaa, string xmlKey) { AsymmetricAlgorithm aa = null; HashAlgorithm ha = null; RsaAndDsaCmnFunc.CreateDigitalSignServiceProvider(eaa, out aa, out ha); if (aa is RSACryptoServiceProvider) { RSACryptoServiceProvider rsaCryptoServiceProvider = (RSACryptoServiceProvider)aa; rsaCryptoServiceProvider.FromXmlString(xmlKey); this.AsymmetricAlgorithm = rsaCryptoServiceProvider; } else if (aa is DSACryptoServiceProvider) { DSACryptoServiceProvider dsaCryptoServiceProvider = (DSACryptoServiceProvider)aa; dsaCryptoServiceProvider.FromXmlString(xmlKey); this.AsymmetricAlgorithm = dsaCryptoServiceProvider; } this.HashAlgorithm = ha; // 秘密鍵をXML形式で取得 try { this.XMLPrivateKey = this.AsymmetricAlgorithm.ToXmlString(true); } catch (CryptographicException cex) { cex.GetType(); // 潰す(xmlKeyが公開鍵のケース) } // 公開鍵をXML形式で取得 this.XMLPublicKey = this.AsymmetricAlgorithm.ToXmlString(false); }