/opencap-js

A library for interacting with an OpenCap server.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

opencap-js

A javascript library for interacting with an OpenCAP server.

Caution:

This package uses DNS lookups and will not work in browsers. In case you need OpenCAP in your browser app you have two options:

  1. Use a DNS service that provides SRV lookups through an API (Google DNS HTTPS API, Cloudflare DNS HTTPS API)

  2. Use this package in your backend and provide the functionality through your own api endpoints.

Known Issues:

'UNABLE_TO_VERIFY_LEAF_SIGNATURE'

NodeJS by default blocks requests to servers signed by intermediary Certification Authorities, even trusted, commonly known ones. This means that any alias hosted at a server with said certificate will not be resolved properly. To fix this there is a package that will inject intermediary certificates. Chrome for an example trusts these certificates by default.

Install the following package: 'ssl-root-cas'

Then do as follows:

const sslRootCAs = require('ssl-root-cas/latest')

sslRootCAs.inject()

Once the certificates were downloaded and installed once, you may remove those lines from your application.

Your client can now perfectly resolve any OpenCAP alias.

Installation

npm i --save opencap

Usage

First: Import library

const opencap = require("opencap")

Fetch all addresses for a given alias

const addresses = await opencap.getAddresses("example$domain.tld")

Fetch specific address for a given alias

const address = await opencap.getAddress("example$domain.tld", 100 /* Bitcoin */)

Add/Update an address

const authenticationResult = await opencap.authenticate("example$domain.tld", "examplepassword")
    
await opencap.putAddress("example$domain.tld", 100, "example_address", authenticationResult.jwt)        

Remove an address

const authenticationResult = await opencap.authenticate("example$domain.tld", "examplepassword")
    
await opencap.deleteAddress("example$domain.tld", 100, authenticationResult.jwt)        

Remove all addresses

const authenticationResult = await opencap.authenticate("example$domain.tld", "examplepassword")
    
await opencap.deleteAllAddress("example$domain.tld", authenticationResult.jwt)