Advertisement
Guest User

Untitled

a guest
Sep 15th, 2019
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.26 KB | None | 0 0
  1. cPro.signCreateXMLTemplate = function(oCertificate, dataToSign) {
  2. return new Promise(function(resolve, reject) {
  3. cadesplugin.async_spawn(function *(args) {
  4. try {
  5. // Создаем объект CAdESCOM.CPSigner
  6. var oSigner = yield cadesplugin.CreateObjectAsync("CAdESCOM.CPSigner");
  7. yield oSigner.propset_Certificate(oCertificate);
  8.  
  9. // Создаем объект CAdESCOM.SignedXML
  10. var oSignedXML = yield cadesplugin.CreateObjectAsync("CAdESCOM.SignedXML");
  11.  
  12. var signMethod = "";
  13. var digestMethod = "";
  14.  
  15. var pubKey = yield oCertificate.PublicKey();
  16. var algo = yield pubKey.Algorithm;
  17. var algoOid = yield algo.Value;
  18. if (algoOid == "1.2.643.7.1.1.1.1") { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 256 бит
  19. signMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-256";
  20. digestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-256";
  21. }
  22. else if (algoOid == "1.2.643.7.1.1.1.2") { // алгоритм подписи ГОСТ Р 34.10-2012 с ключом 512 бит
  23. signMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34102012-gostr34112012-512";
  24. digestMethod = "urn:ietf:params:xml:ns:cpxmlsec:algorithms:gostr34112012-512";
  25. } else {
  26. errormes = "Данная страница поддерживает подпись сертификатами с алгоритмом ГОСТ Р 34.10-2012. Поддержка ГОСТ Р 34.10-2001 прекращена";
  27. throw errormes;
  28. }
  29.  
  30. if (dataToSign) {
  31. yield oSignedXML.propset_Content(dataToSign);
  32. // Указываем тип подписи - в данном случае шаблон
  33. yield oSignedXML.propset_SignatureType(CADESCOM_XML_SIGNATURE_TYPE_TEMPLATE);
  34. yield oSignedXML.propset_SignatureMethod(signMethod);
  35. yield oSignedXML.propset_DigestMethod(digestMethod);
  36. var sSignedMessage;
  37. sSignedMessage = yield oSignedXML.Sign(oSigner);
  38. resolve(sSignedMessage);
  39. }
  40. } catch (err) {
  41. reject("Failed to create signature. Error: " + cPro.getErrorMessage(err));
  42. }
  43. }, oCertificate, dataToSign, resolve, reject);
  44. });
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement