xml-fiesta

Electronic signed document XML Protocol for Node & Browser

Usage no npm install needed!

<script type="module">
  import xmlFiesta from 'https://cdn.skypack.dev/xml-fiesta';
</script>

README

XMLFiesta

npm version Bower version Build Status Coverage Status

Version: 1.3.4

Electronic signed document XML Protocol reader and validator for Node & Browser.

Install

Browser - Bower

bower install xml-fiesta --save

NodeJS - NPM

npm install xml-fiesta --save

Usage

var fs        = require('fs');
var XMLFiesta = require('xml-fiesta');
var xml = "#{__dirname}/spec/fixtures/example_signed_cr-v1.0.0.xml";

fs.readFile(xml, function(err, data) {
  // Document.fromXml returns a promise
  doc = XMLFiesta.Document.fromXml(data)
  doc.then(function () {
    doc.file() // ASCII File
    doc.file('hex') // HEX File
    doc.file('base64') // Base64 File
    signatures = doc.signatures()
    signature = signatures[0]
    signature.certificate()
    signature.sig() // HEX signature
    signature.sig('base64') // Base64 signature
    signature.signedAt() // ~ 2016-05-03T00:51:05+00:00
    signature.valid() // true
    signature.signer
    // {
    //   id: 'AAA010101AAA',
    //   name: 'ACCEM SERVICIOS EMPRESARIALES SC',
    //   email: 'some@email.com'
    // }

    doc.validSignatures() // true

    doc.record // -> XMLFiesta::ConservancyRecord
    // validates that the record is valid
    doc.record.valid()
    // validates that the record timestamp is the same as the xml
    doc.record.equalTimestamps()
    // validates that the archive of the record was signed with the user certificate
    doc.record.validArchiveHash()
  });
});

OpenSSL validations

Please read this gist to see how to Validate a Certificate against a Certificate authority using OpenSSL.

Development

Just run grunt in the root of this project and start developing, the terminal will run the tests on each change.

Test

Run npm test or grunt test. The coverage info is still pending.

Build and publish

  • Run grunt build to generate the files to bower.
  • Run grunt bump to bump versions in bower and npm.