Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- cPro.signCreateXMLTemplate = function(oCertificate, dataToSign) {
- return new Promise(function(resolve, reject) {
- cadesplugin.async_spawn(function *(args) {
- try {
- // Создаем объект CAdESCOM.CPSigner
- var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
- yield oSigner.propset_Certificate(oCertificate);
- // Создаем объект CAdESCOM.SignedXML
- var oSignedXML = yield cadesplugin.CreateObjectAsync("CAdESCOM.SignedXML");
- var signMethod = "";
- var digestMethod = "";
- var pubKey = yield oCertificate.PublicKey();
- var algo = yield pubKey.Algorithm;
- var algoOid = yield algo.Value;
- if (algoOid == "1.2.643.7.1.1.1.1") { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит
- signMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
- digestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
- }
- else if (algoOid == "1.2.643.7.1.1.1.2") { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит
- signMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512";
- digestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512";
- } else {
- errormes = "Данная страница поддерживает подпись сертификатами с алгоритмом ГОСТ Р 34.10-2012. Поддержка ГОСТ Р 34.10-2001 прекращена";
- throw errormes;
- }
- if (dataToSign) {
- yield oSignedXML.propset_Content(dataToSign);
- // Указываем тип подписи - в данном случае шаблон
- yield oSignedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE);
- yield oSignedXML.propset_SignatureMethod(signMethod);
- yield oSignedXML.propset_DigestMethod(digestMethod);
- var sSignedMessage;
- sSignedMessage = yield oSignedXML.Sign(oSigner);
- resolve(sSignedMessage);
- }
- } catch (err) {
- reject("Failed to create signature. Error: " + cPro.getErrorMessage(err));
- }
- }, oCertificate, dataToSign, resolve, reject);
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement