/
diev
/
node-saml-xml-crypto
Обзор
Документация
Войти
/
diev
/
node-saml-xml-crypto
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
example/example.js
47 строк
1 KB
dependabot[bot]
Bump prettier from 2.8.8 to 3.0.0 (#350)
21 июл 2023, 14:26
Не верифицирован
21 июл 2023, 14:26
66594ee
Код
Авторство
О чём код?
/* eslint-disable no-console */ const select = require("xml-crypto").xpath; const dom = require("@xmldom/xmldom").DOMParser; const SignedXml = require("xml-crypto").SignedXml; const fs = require("fs"); function signXml(xml, xpath, key, dest) { const sig = new SignedXml(); sig.privateKey = fs.readFileSync(key); sig.addReference(xpath); sig.computeSignature(xml); fs.writeFileSync(dest, sig.getSignedXml()); } function validateXml(xml, key) { const doc = new dom().parseFromString(xml); const signature = select( "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']", doc, )[0]; const sig = new SignedXml(); sig.publicCert = key; sig.loadSignature(signature.toString()); const res = sig.checkSignature(xml); if (!res) { console.log(sig.validationErrors); } return res; } const xml = "<library>" + "<book>" + "<name>Harry Potter</name>" + "</book>" + "</library>"; //sign an xml document signXml(xml, "//*[local-name(.)='book']", "client.pem", "result.xml"); console.log("xml signed successfully"); const signedXml = fs.readFileSync("result.xml").toString(); console.log("validating signature..."); //validate an xml document if (validateXml(signedXml, "client_public.pem")) { console.log("signature is valid"); } else { console.log("signature not valid"); }