Здравствуйте. Такой вопрос (возможно он уже был задан и решен, но при просмотре тем форума мною не был замечен). Требуется релизовать подпись на Электронной торговой площадке, используются (CAPICOM + javascript) - на стороне клиента и .NET на стороне сервера.
Используется такой JS-код:
<script>
$(document).ready(function () {
var result = "bm9u";
var CAPICOM_STORE_OPEN_READ_ONLY = 0;
var CAPICOM_CURRENT_USER_STORE = 2;
var CAPICOM_ENCODE_BASE64 = 0;
if (window.ActiveXObject) {
try {
var CertStore = new ActiveXObject("CAPICOM.Store");
var Signer = new ActiveXObject("CAPICOM.Signer");
var SignedAuth = new ActiveXObject("CAPICOM.SignedData");
var ep = new ActiveXObject("CAPICOM.EnvelopedData");
CertStore.Open(CAPICOM_CURRENT_USER_STORE, "MY", CAPICOM_STORE_OPEN_READ_ONLY);
try {
var certificate = CertStore.Certificates.Select(
"Выберите сертификат для подписи документа."
, "Выберите один из сертификатов", false);
}
catch (e) {
return false;
}
SignedAuth.Content = result;
Signer.Certificate = certificate.Item(1);
var sig = SignedAuth.Sign(Signer, false, CAPICOM_ENCODE_BASE64);
$("input[name='signature']").val(sig);
} catch (e) {
return false;
}
return true;
}
else {
return false;
}
})
</script>
Собственно с обычными сертификатами (алгоритм sha1RSA)все работает, но с сертификатами, использующими алгоритм 1.2.643.2.2.3(ГОСТ Р 34.11 / 34.10-2001), такое не проходит. Собственно, как разрешить данную задачу?
Где-то находил варианты, что вместо SignedData использовать EnvelopedData, но с эти не разобрался.