@govtechsg/oa-verify

Library to verify any OpenAttestation document. This library implements the verifier ADR.
Installation
npm install @govtechsg/oa-verify
Usage
import { documentRopstenValidWithToken } from "./test/fixtures/v2/documentRopstenValidWithToken";
import { verify, isValid } from "@govtechsg/oa-verify";
verify(documentRopstenValidWithToken, { network: "ropsten" }).then(console.log);
console.log(isValid(results));
[
{
"data": true,
"status": "VALID",
"name": "OpenAttestationHash",
"type": "DOCUMENT_INTEGRITY"
},
{
"message": "Document issuers doesn't have \"documentStore\" or \"certificateStore\" property or DOCUMENT_STORE method",
"name": "OpenAttestationEthereumDocumentStoreIssued",
"status": "SKIPPED",
"type": "DOCUMENT_STATUS"
},
{
"data": {
"details": [
{
"address": "0xe59877ac86c0310e9ddaeb627f42fdee5f793fbe",
"minted": true
}
],
"mintedOnAll": true
},
"status": "VALID",
"name": "OpenAttestationEthereumTokenRegistryMinted",
"type": "DOCUMENT_STATUS"
},
{
"message": "Document issuers doesn't have \"documentStore\" or \"certificateStore\" property or DOCUMENT_STORE method",
"name": "OpenAttestationEthereumDocumentStoreRevoked",
"status": "SKIPPED",
"type": "DOCUMENT_STATUS"
},
{
"data": [
{
"dns": "example.tradetrust.io",
"identified": true,
"smartContract": "0xe59877ac86c0310e9ddaeb627f42fdee5f793fbe"
}
],
"status": "VALID",
"name": "OpenAttestationDnsTxt",
"type": "ISSUER_IDENTITY"
}
]
Advanced usage
Verify
By default the provided verify
method performs multiple checks on a document
- for the type
DOCUMENT_STATUS
: it runs OpenAttestationEthereumDocumentStoreIssued
, OpenAttestationEthereumDocumentStoreRevoked
and OpenAttestationEthereumTokenRegistryIssued
verifiers
- for the type
DOCUMENT_INTEGRITY
: it runs OpenAttestationHash
verifier
- for the type
ISSUER_IDENTITY
: it runs OpenAttestationDnsTxt
verifier
All those verifiers are exported as openAttestationVerifiers
You can build your own verify method or you own verifiers:
import { verificationBuilder, openAttestationVerifiers } from "@govtechsg/oa-verify";
const verify = verificationBuilder(openAttestationVerifiers);
const verify = verificationBuilder([openAttestationVerifiers[0], openAttestationVerifiers[1]]);
import { verificationBuilder, openAttestationVerifiers, Verifier } from "@govtechsg/oa-verify";
const customVerifier: Verifier = {
skip: () => {
},
test: () => {
},
verify: async document => {
}
};
const verify = verificationBuilder([...openAttestationVerifiers, customVerifier]);
isValid
By default, isValid
perform checks on every types that exists for a fragment:
DOCUMENT_STATUS
DOCUMENT_INTEGRITY
ISSUER_IDENTITY
it ensures that for every types, there is at least one VALID
fragment and no INVALID
or ERROR
fragment.
The function allow to specify as a second parameters the list of types on which to perform the checks
import { documentRopstenValidWithCertificateStore } from "./test/fixtures/v2/documentRopstenValidWithCertificateStore";
import { verify, isValid } from "@govtechsg/oa-verify";
const fragments = verify(documentRopstenValidWithCertificateStore, { network: "ropsten" });
isValid(fragments);
isValid(fragments, ["DOCUMENT_INTEGRITY", "DOCUMENT_STATUS"]);
License
GPL-3.0