Ich benutze Javascript, um CAPICOM Speicher zu öffnen, um Zertifikat zu wählen. Danach exportiere ich das ausgewählte Zertifikat, den öffentlichen Schlüssel und den privaten Schlüssel dieses Zertifikats und lege sie in drei versteckte Felder.Überprüfen Sie den privaten Schlüssel in signierten XML mit öffentlichen Schlüssel
var privateKey = certificates.Item(1).PrivateKey;
var cert = certificates.Item(1);
var publicKey = cert.PublicKey().EncodedKey.Value
Wenn xml Unterzeichnung verwendet I:
Zertifikat nehmen
Dim hideCertCapicom As String = Replace(HiddenCert.Value, " ", "+")
Dim certificate As New X509Certificate2(Convert.FromBase64String(hideCertCapicom))
Für den privaten Schlüssel definieren ich
verwendetDim keyC As String = hideKey
Dim cspp As New CspParameters()
cspp.KeyContainerName = keyC
Dim tmpRsa As New RSACryptoServiceProvider(cspp)
tmpRsa.PersistKeyInCsp = True
Das wird mein xml erfolgreich abgeschlossen.
Für xml Verifizieren ich verwendet:
Dim hidePublicKey As String = HiddenPublicKey.Value
Dim keyC As String = hidePublicKey
Dim cspp As New CspParameters()
cspp.KeyContainerName = keyC
Dim tmpRsa As New RSACryptoServiceProvider(cspp)
tmpRsa.PersistKeyInCsp = True
Aber das funktioniert nicht. Es funktioniert nur, wenn ich den privaten Schlüssel erneut verwende.
Ist es eine gute Vorgehensweise, mit demselben privaten Schlüssel zu signieren und zu verifizieren oder beides mit einem öffentlichen Schlüssel zu tun?