2014-08-20 8 views
1

У меня есть один файл сертификата и назначить X509Certificate2 класса,Keyset не существует

cert = New X509Certificate2("mycertificate.cer") 

Это cert только открытый ключ, который я буду использовать, чтобы подписать мой xml файл.

И тогда я это сделать,

dim doc as New XmlDocument 
doc.PreserveWhitespace = True 
doc.Load("myxmlfile.xml") 
signedXml = New SignedXml(doc) 
signedXml.SigningKey = cert.publickey.key 
dim reference as New Reference 
reference.Uri = "" 
dim trns as New XmlDsigC14NTransform 
reference.AddTransform(trns) 
signedXml.AddReference(reference) 
keyInfo = New KeyInfo() 
keyInfo.AddClause(New KeyInfoX509Data(cert)) 
signedXml.KeyInfo = keyInfo 
signedXml.ComputeSignature() 
xmlDigitalSignature = signedXml.GetXml() 

В строке signedXml.ComputeSignature() есть что-то не так.

"набор ключей не существует".

Я понятия не имею об этом случае. Как я могу это решить?

+0

Вам удалось решить эту проблему? – AlexCode

ответ

0

Это, возможно, уже были покрыты - Проверьте ответ здесь:

https://stackoverflow.com/a/6799315/2319909

Очевидно, что вы, вероятно, не использовать IIS, но разрешения все еще может быть проблемой.

+0

Я уже зарегистрировал сертификат ключа на своем компьютере. но он все еще не работает. –

0

Чтобы сделать подпись, вам нужен секретный ключ, соответствующий сертификату. Вы загрузили только сертификат, поэтому получили это исключение.

Как загрузить сертификат, так и закрытый ключ из файла p12 или выбрать сертификат из магазина Windows. В любом случае свойство PrivateKey должно быть установлено.

+0

, но у меня есть только открытый ключ с другой стороны. и я должен подписывать с использованием открытого ключа, и они читают в их закрытом ключе. –

+0

Тогда вам не нужно делать подпись, но вы, вероятно, хотите зашифровать xml. Тогда только владелец частного ключа может его прочитать. – pepo

+0

это асимметричный сэр. Я думаю, что это неважно, что частные пользователи enc и public расшифровывают или публично шифруют и закрывают для дешифрования. Основная проблема заключается в том, что я хочу шифровать открытым ключом, но он не работает. –

 Смежные вопросы

  • Нет связанных вопросов^_^