| ||||
| ||||
Доброго времени суток. Заранее прошу прощения, может не в том месте задаю свои вопросы, но к кому еще можно обратиться я не знаю... Ситуация такова: Имеется CSP 3.0 (Trial) + форма в InfoPath 2003, XML с которой должен подписываться и отсылаться на сервер. Вот собственно код посылки: function XDocument::OnSubmitRequest(eventObj) { var strUrl = "http://localhost/"; var CAPICOM_CERTIFICATE_FIND_SHA1_HASH = 0; var CAPICOM_CURRENT_USER_STORE = 1; var CAPICOM_STORE_OPEN_READ_ONLY = 0; var CAPICOM_INFO_SUBJECT_SIMPLE_NAME = 0; var CAPICOM_INFO_ISSUER_SIMPLE_NAME = 1; var CAPICOM_INFO_SUBJECT_EMAIL_NAME = 2; var CAPICOM_INFO_ISSUER_EMAIL_NAME = 3; var CAPICOM_ENCODE_BASE64 = 0; try { var objXmlHttp = new ActiveXObject("MSXML2.XMLHTTP"); } catch(ex) { XDocument.UI.Alert("Could not create MSXML2.XMLHTTP object.\r\n" + ex.number + " - " + ex.description); return; } var formXML = XDocument.DOM.xml; var signedXML; var MyStore = new ActiveXObject("CAPICOM.Store"); MyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); var Certificates = MyStore.Certificates.Select("Спискок сертификатов", "Выберите сертификат для подписи документа:"); var SigData = new ActiveXObject("CAPICOM.SignedData"); var Signer = new ActiveXObject("CAPICOM.Signer"); Signer.Certificate = Certificates.Item(1); SigData.Content = formXML; signedXML = SigData.Sign(Signer, false, CAPICOM_ENCODE_BASE64); //передаем objXmlHttp.open("POST", strUrl, false); try { objXmlHttp.send(signedXML); } catch(ex) { XDocument.UI.Alert("Could not post (ASP) document to " + strUrl + "\r\n" + ex.number + " - " + ex.description); return; } eventObj.ReturnStatus = true; } При попытке отправить InfoPath сообщает об ошибке: Произошла следующая ошибка: No such interface supported Файл:script.js Строка:72 No such interface supported Строка 72: ЬyStore.Open(CAPICOM_CURRENT_USER_STORE, "My", CAPICOM_STORE_OPEN_READ_ONLY); А я тут посмотрел, люди говорят что InfoPath 2003 поддерживается. 1. Подскажите, плиз, в чем может быть проблема. 2. При получении подписи на сервере, для ее проверки нужен исходный текст... Т.е. плюс ко всему, к подписи нужно будет присоединить исходный XML? 3. Посоветуйте какое-нить подробное руководство по CAPICOM (со всеми ф-циями и константами и, если можно, с примерами), ибо я только начинаю знакомиться с данной технологией. | ||||
Ответы: | ||||
| ||||
Поддержка CSP 3.0 тут непричем, до CSP вообще дело не доходит. Если Вы подписываете xml мб Вам лучше воспользоваться xmldsig? Документация по CAPICOM и xmldsig есть в MSDN (msdn.microsoft.com). | ||||
| ||||
Понятно, значит это капризы InfoPath. Тогда еще вопрос. Возможно ли каким-либо образом организовать ассиметричное шифрование с использованием CAPICOM и вашего криптопровайдера? Если да, то где можно найти информацию/литературу по этой теме. | ||||
| ||||
Доброго времени суток! Господа, может какой-нибудь добрый человек не сочтет за труд запостить кусок кода зашифровывающего/расшифровывающего на ассиметричном алгоритме с помощью CAPICOM? Буду очень признателен! Или на почту sobakaev@ivelum.com. | ||||