satitm-sso-node/node_modules/passport-saml/docs/xml-signing-example.js
2024-05-03 16:11:08 +07:00

41 lines
962 B
JavaScript

// This will help generate signing info for test cases.
// Simply fill in the data and run it to get <DigestValue /> and <SignatureValue />.
const crypto = require('crypto')
const private_key = `-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
`
const cert = `-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
`
const saml_message = ``
const signed_info = `<SignedInfo...</SignedInfo>`
const signer = crypto.createSign('RSA-SHA1');
signer.update(signed_info);
signer.end();
const signature = signer.sign(private_key)
const signature_b64 = signature.toString('base64')
const verifier = crypto.createVerify('RSA-SHA1')
verifier.update(signed_info)
verifier.end()
const verified = verifier.verify(cert, signature)
const hash = crypto.createHash('RSA-SHA1')
hash.update(saml_message, 'utf8')
const digest_b64 = hash.digest('base64')
console.log(JSON.stringify({
signature: signature_b64,
digest: digest_b64,
verified: verified,
}, null, 2))