npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

trust-center

v0.4.0

Published

Multifactor Trust Center (trust.multifactor.com): Verify Enclave Attestations & Generate Enclave Secrets

Downloads

32

Readme

trust-center

Multifactor Trust Center

GitHub issues GitHub tag GitHub release NPM release

Site | Docs | Contributing | Security | Multifactor | Author

The Multifactor Trust Center provides tools for interacting with trusted computing devices such as Intel SGX and AWS Nitro enclaves. Validate attestation documents, verify cryptographic proofs, and encrypt secrets for use in enclaves using PGP, either manually via the online portal (trust.multifactor.com) or programmatically via the trust-center SDK. The trust center is entirely open source, requires no network connectivity, and is hosted on GitHub pages to ensure public auditability.

Demo

Try using the link below to validate this AWS Nitro attestation document using the online portal, which will check that its signatures are valid and that the PCR0 value matches the value passed in the URL:

https://trust.multifactor.com/?pcr0=1595770e76cea659a5650a88b965b053eb66a0ce5a60a460223d50ff1d16b394d2651b130a38af4ccd818ad8cf42c963#/nitro

Download

GitHub

Download Latest Release

Installation

In a browser:

Get the latest tag with SRI from jsDelivr (recommended), or include the latest version automatically like so:

<script src="https://cdn.jsdelivr.net/gh/multifactor/trust-center/index.min.js"></script>

Using npm:

npm install trust-center

In Node.js:

const trust-center = require('trust-center');

Note: The SDK uses crypto.X509Certificate for certificate validation and thus requires Node.js v15.6.0 or later.

Usage

The following code snippet uses the trust-center SDK to verify an AWS Nitro attestation document and then encrypt a secret for use within the enclave.

// add required dependencies
const trust = require('trust-center')
const fs = require('fs')
const path = require('path')

// load attestation document in CBOR format
const attestationDocument = fs.readFileSync(path.join(__dirname, 'attestation.cbor'))
// parse and validate attestation document
const attestationResult = await trust.enclaves.nitro.verifyAttestation(attestationDocument)

// verify attestation document validity
if (!attestationResult.valid) throw new Error('Failed to validate enclave attestation: ' + attestationResult.reason)
// check that pcr0 matches desired enclave image file hash
if (attestationResult.attr.pcr0 !== '1595770e76cea659a5650a88b965b053eb66a0ce5a60a460223d50ff1d16b394d2651b130a38af4ccd818ad8cf42c963') throw new Error('Failed to validate enclave attestation')

// encrypt secret for enclave using PGP
const encrypted = await trust.secrets.encryptForEnclave(attestationResult, 'my secret')
console.log(encrypted) // -> '-----BEGIN PGP MESSAGE ... END PGP MESSAGE-----'