/
diev
/
node-saml-xml-crypto
Обзор
Документация
Войти
/
diev
/
node-saml-xml-crypto
Код
Запросы
0
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
V1
example/example.js
49 строк
1 KB
Yaron Naveh
use xpath.js
15 июн 2013, 13:02
15 июн 2013, 13:02
6b56947
Код
Авторство
О чём код?
var select = require('xml-crypto').xpath , dom = require('xmldom').DOMParser , SignedXml = require('xml-crypto').SignedXml , FileKeyInfo = require('xml-crypto').FileKeyInfo , fs = require('fs') function signXml(xml, xpath, key, dest) { var sig = new SignedXml() sig.signingKey = fs.readFileSync(key) sig.addReference(xpath) sig.computeSignature(xml) fs.writeFileSync(dest, sig.getSignedXml()) } function validateXml(xml, key) { var doc = new dom().parseFromString(xml) var signature = select(doc, "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']")[0] var sig = new SignedXml() sig.keyInfoProvider = new FileKeyInfo(key) sig.loadSignature(signature.toString()) var res = sig.checkSignature(xml) if (!res) console.log(sig.validationErrors) return res; } var 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 succesfully") var 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")