UNPKG

undersign

Version:

Create eIDAS compatible XAdES digital signatures with certificate OCSP responses and timestamps. Works with the Estonian Id-card and Mobile-Id to create BDOCs, but isn't limited to Estonia.

48 lines (39 loc) 1.25 kB
var X509Asn = require("../lib/x509_asn") var OCSP_URL_OID = require("../lib/x509_asn").OCSP_URL var EMPTY_BUFFER = Buffer.alloc(0) var nextSerialNumber = Math.floor(10000 * Math.random()) exports.newCertificate = function(opts) { var extensions = [] if (opts && opts.ocspUrl) extensions.push(serializeOcspUrl(opts.ocspUrl)) return X509Asn.Certificate.encode({ tbsCertificate: { serialNumber: nextSerialNumber++, signature: {algorithm: X509Asn.RSA_SHA256, parameters: EMPTY_BUFFER}, subject: {type: "rdnSequence", value: []}, issuer: {type: "rdnSequence", value: []}, validity: { notBefore: {type: "utcTime", value: new Date}, notAfter: {type: "utcTime", value: new Date} }, subjectPublicKeyInfo: { algorithm: {algorithm: X509Asn.RSA, parameters: EMPTY_BUFFER}, subjectPublicKey: {unused: 0, data: EMPTY_BUFFER} }, extensions: extensions }, signatureAlgorithm: { algorithm: X509Asn.RSA_SHA256, parameters: EMPTY_BUFFER }, signature: {unused: 0, data: EMPTY_BUFFER} }) } function serializeOcspUrl(url) { return { extnID: "authorityInformationAccess", extnValue: [{ accessMethod: OCSP_URL_OID, accessLocation: {type: "uniformResourceIdentifier", value: url} }] } }