1.1.12 • Published 7 years ago

u2f-host v1.1.12

Weekly downloads
2
License
LGPL-2.0+
Repository
github
Last release
7 years ago

npm version

libu2f-host for NodeJS

Introduction

This is a native addon for NodeJS that wraps Yubico's libu2f-host convenience functions. It can be used to register and authenticate with remote services using U2F hardware tokens directly from NodeJS without a browser.

License

The library is licensed under the LGPLv2+ license.

Usage

/**
 * Discover U2F tokens.
 * @return instance of U2fHost with hardware tokens discovered.
 * @throws Error description.
 */
U2fHost.discover = function() {};

/**
 * Register U2F token.
 * @param registerRequest JSON String of the request received from remote service.
 * @param origin URL String producing registerRequest.
 * @return JSON String of signature response data received from U2F token.
 * @throws Error description.
 */
U2fHost.prototype.register = function(registerRequest, origin) {};

/**
 * Authenticate U2F token.
 * @param authRequest JSON String of the request received from remote service.
 * @param origin URL String of service that generated authRequest.
 * @return JSON String of signature response data received from U2F token.
 * @throws Error description.
 */
U2fHost.prototype.authenticate = function(authRequest, origin) {};

module.exports = U2fHost;

Register

const assert = require('assert');
const devices = require('u2f-host').discover();

/* Get register request somehow */
const u2f = require('u2f');
const appId = 'https://example.com';
const registerRequest = JSON.stringify(u2f.request(appId));

/* Sign request with U2F token */
const registerResponse = JSON.parse(devices.register(registerRequest, appId));

/* Verify response somehow */
const registerStatus = u2f.checkRegistration(registerRequest, registerResponse);
assert(registerStatus.successful);

/* Store registration data for authentication later */
//require('fs').writeFileSync(JSON.stringify(registerStatus), 'registerStatus.json');

Authenticate

const assert = require('assert');
const devices = require('u2f-host').discover();

/* Load registration data for authentication */
//const registerStatus = require('./registerStatus.json');

/* Get auth request somehow */
const u2f = require('u2f');
const appId = 'https://example.com';
const authRequest = JSON.stringify(u2f.request(appId, registerStatus.keyHandle));

/* Sign request with U2F token */
const authResponse = JSON.parse(devices.authenticate(authRequest, appId));

/* Verify response somehow */
const authStatus = u2f.checkAuthentication(authRequest, authResponse);
assert(authStatus.successful);

Building

Dependencies

Instructions

$ npm i
1.1.12

7 years ago

1.1.11

7 years ago

1.1.10

7 years ago

1.1.9

7 years ago

1.1.8

7 years ago

1.1.7

7 years ago

1.1.6

7 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago