1

これはC#言語の質問です。

1つのクラスA(sslCertと呼びます)でX509証明書への参照があります。つまり、X509証明書に関連付けられているさまざまなメンバーにアクセスできます。

また、次の2つの暗号キーメンバーを持つクラスBがあります-> KeyInfo publicKey; KeyInfo privateKey;

問題は、これら2つの値(公開鍵と秘密鍵)をX509の公開鍵と秘密鍵の値で設定する方法が見つからないことです。直接割り当ては機能せず、データ型の不一致について不平を言います。

B.publicKey = A.sslcertificate.Certificate.PublicKey;
B.privateKey = A.sslcertificate.Certificate.PrivateKey;

私はたくさん試しましたが、それを達成するための正確な割り当て方法が何であるかわかりません。誰でもこれに光を当てることができますか?

ありがとう !!!

4

2 に答える 2

0

それはあなたがやろうとしていることですか?申し訳ありませんが、まだアイデアを得ようとしています。

    using System.Net;
    using System.Security.Cryptography.Xml;
    using System.Security.Cryptography.X509Certificates;

    namespace ConsoleApplication1
    {
        public class A
        {
            private string website = "https://www.chase.com/";
            private X509Certificate m_certificate;

            public X509Certificate Certificate
            {
                get
                {
                    if (m_certificate == null)
                    {
                        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(website);
                        HttpWebResponse response = (HttpWebResponse) request.GetResponse();
                        response.Close();
                        X509Certificate cert = request.ServicePoint.Certificate;
                        m_certificate = cert;
                    }
                    return m_certificate;
                }
            }
            public X509Certificate2 Certificate2
            {
                get
                {
                    return new X509Certificate2(Certificate);
                }
            }
        }

        public class B
        {
            public KeyInfo publicKey { get; set; }
            public KeyInfo privateKey { get; set; }
        }

        class Program
        {
            private static void Main(string[] args)
            {
                A tempA = new A();
                B tempB = new B();

                tempB.privateKey = tempA.Certificate.GetPublicKey(); // fails
            }
        }
    }
于 2012-12-31T22:16:42.063 に答える
0

あなたが証明書を持っていると仮定します:

X509Certificate2 certificate;

あなただけ

KeyInfo ki = new KeyInfo();
KeyInfoX509Data keyInfoData = new KeyInfoX509Data( certificate );
ki.AddClause( keyInfoData );

これにより、証明書全体がキー情報に保存されます。プライベート部分とパブリック部分の両方を別々に保存できます。KeyInfoを他のタイプの句で初期化する必要があります。サポートされている句の完全なリスト:

http://msdn.microsoft.com/en-us/library/system.security.cryptography.xml.keyinfoclause.aspx

于 2012-12-31T22:39:36.703 に答える