Skip to content
Martin Paljak edited this page Jan 25, 2017 · 59 revisions

hwcrypto.js developer portal

Library integrator: using hwcrypto.js

  • The library provides the hwcrypto object with a set of functions, as described in the API doc
  • There is also a small FAQ and BestPractices document

Dependencies

Library developer: releasing & publishing

  • The main publishing point is Github
  • Releasing is manual, released (generated) files are also version controlled in the same repository (for Bower to work from the same repo)
  • Released files are published in the tagged commit and by Travis in the Github release
  • Versioning follows semantic versioning
  • Release tags are signed

History

Relates to WebCryptoAPI and WebCrypto.Next but is meant for use with existing credentials and existing browsers and due to the nature of centrally issued credentials, ignoring SOP (Same Origin Policy). Only use of pre-issued credentials, no provisioning like with <keygen>. The abstraction level exposed to application developer is WebCrytoAPI level, not APDU level.

The purpose is to demonstrate the feasibility of a single unified API via different "browser-penetration" components.

Todo and notes

On-host components

  • Some "native" code needs to be present on the host platform for talking to the hardware, be it a browser plugin or local web service or browser itself or something else. The implementation details are left to component developers but generic implementation suggestions are given and the adapter framework described. The purpose of the API is to provide for "portable web code".
  • Essentially all the relevant on-host components have a "NAT-traversal" nature, meaning that they enable to connect endpoints (web applications and pre-issued keys on a smart card) which browser vendors would not like to allow.
  • The de facto standard for extending browser capabilities has been NPAPI which is showing its age and is being actively abandoned by browser vendors (together with other relicts like Java applets).

Background reading: