Helpful data structures for testing FIDO 2.0 / WebAuthn / CTAP
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.gitignore
LICENSE.md
README.md
fido2-helpers.js
package.json

README.md

A set of helper functions and data sets for testing FIDO 2.0, WebAuthn, and CTAP.

Installation

node.js

npm install fido2-helpers

html

<script src="https://cdn.rawgit.com/apowers313/fido2-helpers/69af3a4e/fido2-helpers.js"></script>

Usage

fido2-helpers.js is a Universal Module Definition (UMD) that should work under browser and node. It has been used extensively with node projects such as fido2-lib and webauthn-simple-app.

The UMD returns a structure that looks like:

{
    functions: {
        printHex,
        arrayBufferEquals,
        hex2ab,
        str2ab,
        b64decode,
        b64encode,
        ab2str,
        bufEqual,
        abEqual,
        cloneObject,
        coerceToArrayBuffer
    },
    server: {
        creationOptionsRequest,
        basicCreationOptions,
        completeCreationOptions,
        getOptionsRequest,
        challengeResponseAttestationNoneMsgB64Url,
        challengeResponseAttestationU2fMsgB64Url,
        challengeResponseAttestationU2fHypersecuB64UrlMsg,
        challengeResponseAttestationPackedB64UrlMsg,
        challengeResponseAttestationTpmB64UrlMsg,
        basicGetOptions,
        completeGetOptions,
        assertionResponseMsgB64Url,
        successServerResponse,
        errorServerResponse
    },
    lib: {
        makeCredentialAttestationNoneResponse,
        makeCredentialAttestationU2fResponse,
        makeCredentialAttestationHypersecuU2fResponse,
        makeCredentialAttestationPackedResponse,
        makeCredentialAttestationTpmResponse,
        assertionResponse,
        assertionResponseWindowsHello,
        assnPublicKey,
        assnPublicKeyWindowsHello,
    },
    certs: {
        yubiKeyAttestation,
        yubicoRoot,
        feitianFido2,
        tpmAttestation
    },
    mds: {
        mds1TocJwt,
        mds2TocJwt,
        mds2Entry,
        mdsRootCert,
        mdsRootCrl,
        ca1Crl,
        mdsIntermediateCert,
        mdsSigningCert
    }
}

Here is a quick description of each section:

  • functions: helper functions that may be useful in transforming, checking, or printing values for testing
  • server: raw messages that are sent to or from the server in JSON format with base64url encoding
  • lib: mostly the same messages as server, but have been decoded into ArrayBuffers where applicable
  • certs: useful x.509 certificates for testing ASN.1 parsing and x.509 functionality
  • mds: example messages and certificates for the FIDO Metadata Service (MDS)