Я использую javascript для открытия магазина CAPICOM для выбора сертификата. После этого я экспортирую выбранный сертификат, открытый ключ и закрытый ключ этого сертификата и помещаю их в три скрытых поля.Проверить закрытый ключ в подписанном XML с открытым ключом
var privateKey = certificates.Item(1).PrivateKey;
var cert = certificates.Item(1);
var publicKey = cert.PublicKey().EncodedKey.Value
При подписании XML я использовал:
Принять сертификату
Dim hideCertCapicom As String = Replace(HiddenCert.Value, " ", "+")
Dim certificate As New X509Certificate2(Convert.FromBase64String(hideCertCapicom))
Для определения секретного ключа я использовал
Dim keyC As String = hideKey
Dim cspp As New CspParameters()
cspp.KeyContainerName = keyC
Dim tmpRsa As New RSACryptoServiceProvider(cspp)
tmpRsa.PersistKeyInCsp = True
Это успешно подписал мой XML.
Для проверки XML я использовал:
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
Но это не работает. Он работает, только если я снова использую закрытый ключ.
Хорошая практика - подписывать и проверять с помощью того же закрытого ключа или делать как с открытым ключом?