@govtechsg/open-certificate

**This CLI has been deprecated in favor of open-attestation CLI. Please read [OpenCerts documentation](https://docs.opencerts.io/docs/) to find out more.**

Stats

stars 🌟issues ⚠️updated 🛠created 🐣size 🏋️‍♀️
268Jun 15, 2021Mar 19, 2018Minified + gzip package size for @govtechsg/open-certificate in KB

Readme

[DEPRECATED]

This CLI has been deprecated in favor of open-attestation CLI. Please read OpenCerts documentation to find out more.

Open Certificate

This library supplies the schemas used for OpenCerts standards, in the form of json schemas

Installation

Using npm:

npm install @govtechsg/open-certificate

Usage

If you are writing a certificate issuer: you probably want to issue a certificate or issue multiple certificates

If you are writing a certificate verifier or viewer: you probably want to

  1. validate that a certificate is well-formed
  2. verify that a certificate has not been tampered with
  3. retrieve certificate contents
  4. obfuscate fields

Using OpenCerts

const openCert = require("@govtechsg/open-certificate")

const exampleCert = require("exampleCert.json") // reading an example certificate file
openCert.verify(exampleCert)

Validate Schema

This library comes with the schemas in the ./schema folder, all of them are loaded as valid schemas upon initialization.

openCert.validateSchema(exampleCert)

Verifying Certificate Signature

Certificates are considered untampered-with if they have a valid signature field. Refer to the Open Attestation library for more details on this.

openCert.verifySignature(exampleCert)

Issue a Certificate

A single Certificate can be issued using the .issueCertificate(certificate) method. Issuing a certificate in this manner will append a signature field to the certificate.

The return value of the method will be the signed certificate.

const issuedCert = openCert.issueCertificate(exampleCert)

Issue Multiple Certificates

Multiple Certificates can be issued at once with the .issueCertificates(certificate[]) method.

The return value of the method will be an array of signed certificates.

const exampleCerts = [cert1, cert2, cert3, ...]
const issuedCerts = openCert.issueCertificates(exampleCerts)

Retrieving Certificate contents

The raw certificate has salt in the fields to prevent enumeration, we provide a convenience method to retrieve the unsalted contents of the certificate using the method .certificateData(certificate)

const data = openCert.certificateData(exampleCert)

Obfuscating Fields in a Certificate

To obfuscate fields in a cert, the method .obfuscateFields(certificate, paths[]) is provided. The paths[] parameter is simply the JSON path for the fields to be obfuscated.

The method returns the obfuscated certificate.

const obfuscatedCert = openCert.obfuscateFields(exampleCert, [
    "recipient.email",
    "recipient.phone"
]);

Developers

The code is written to ES6 specs with stage-3 presets and is compiled by Babel.

Test

npm run test

Build

npm run build

Related Projects

Open Attestation Certificate Contract OpenCert Web UI

If you find any bugs or have a feature request, please open an issue on github!

The npm package download data comes from npm's download counts api and package details come from npms.io.