문제

SignedXML 클래스를 사용하여 RSA-SHA256 XML 서명을하고 있습니다.그러나 문제는 SHA256을 지원하기 위해 CSP를 변경해야합니다.

이는 내가 인증서를 선택하는 방법,

public X509Certificate2 GetCertificateFromStore()
        {
            X509Store st = new X509Store(StoreName.My, StoreLocation.CurrentUser);
            st.Open(OpenFlags.ReadOnly);
            X509Certificate2Collection col = st.Certificates.Find(X509FindType.FindByTimeValid, (object)DateTime.Now, false);

            X509Certificate2 x509Certificate =null;
            X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(col, "Certificate", "Select single certificate to sign", X509SelectionFlag.SingleSelection);
            if (sel.Count > 0)
            {
                X509Certificate2Enumerator en = sel.GetEnumerator();
                en.MoveNext();
                x509Certificate = en.Current;
            }
            st.Close();
            //x509Certificate.s
            return x509Certificate;
        }
.

이것은 내가 CSP 매개 변수를 변경하려고하는 방법입니다.

byte[] privateKeyBlob;
            RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
            rsa = cert.PrivateKey as RSACryptoServiceProvider;
            try
            {
                privateKeyBlob = rsa.ExportCspBlob(true);
            }
            catch
            {
                throw new ApplicationException("Private key fails to export");
            }
            // To use the RSA-SHA256 the CryptoAPI needs to select a special CSP: Microsoft Enhanced RSA and AES Cryptographic Provider
            // By reinstantiating a CSP of type 24 we ensure that we get the right CSP.
            CspParameters cp = new CspParameters(24);
            rsa = new RSACryptoServiceProvider(cp);
            rsa.ImportCspBlob(privateKeyBlob);


            signer.SigningKey = rsa;
            signer.KeyInfo = getKeyInfo(signer, cert);
.

문제는 USB 장치 토큰을 사용하고 있으며 개인 키가 내보낼 수 없습니다.' 키를 사용하여 지정된 상태에서 사용할 수 없습니다. '오류를 내보낼 때.

아무도이 작업을 수행하는 방법을 도울 수 있습니까?

도움이 되었습니까?

해결책

여기에 관심이있는 사람이 내 해결책이면 제 3 자 CSP의 다른 새로운 버전을 사용하여 끝났습니다.내가 사용하고있는 CSP 버전은 오래되었고 새로운 버전으로 전환되었습니다.이제 서명이 작동 중입니다.당신의 도움을 주셔서 감사합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top