2025-03-27 14:50:16 +01:00
2025-03-12 12:04:58 -04:00
2023-11-14 09:41:01 +03:00
2023-12-19 21:11:10 -08:00
2025-03-12 12:04:58 -04:00
2023-11-14 09:19:56 +03:00

MIT licensed Apache licensed

tlsn-js

NPM Modules for proving and verifying using TLSNotary in the browser.

The prover requires a notary-server and a websocket proxy.

Important

The primary purpose of tlsn-js is to support the development of the TLSNotary browser extension.
Please do not treat this as a public API (yet).

Important

tlsn-js is developed for the usage of TLSNotary in the Browser. This module does not work in nodejs.

License

This repository is licensed under either of

at your option.

Examples

tlsn-js can be used in many different modes, depending on your use case.

The ./demo folder contains three demos of tlsn-js:

  • react-ts-webpack: create an attestation with a Notary and render the result.
  • interactive-demo: prove data interactively to a Verifier.
  • web-to-web-p2p: prove data between two peers, in the browser.

Running a local websocket proxy

In the demos, we attest data from the https://swapi.dev website. Because the browser does not allow for TCP connections, you need to set up a websocket proxy:

  1. Install websocat:

    Tool Command
    cargo cargo install websocat
    brew brew install websocat
    source https://github.com/vi/websocat
  2. Run a websocket proxy for https://swapi.dev:

websocat --binary -v ws-l:0.0.0.0:55688 tcp:swapi.dev:443

Install as NPM Package

npm install tlsn-js

Development

This library is a JS wrapper for tlsn-wasm.

To work on tlsn-wasm and tlsn-js at the same time, replace the "tlsn-wasm" dependency in package.json with:

    "tlsn-wasm": "./tlsn-wasm/pkg"

and run npm run build:wasm to build tlsn-wasm locally.

Next, run:

npm install
npm run test

Note: if you want to switch back to a build with the version from npm, make sure to reset/remove package-lock.json, or it will keep using the local link.

Build for NPM

npm install
npm run build

Adding a new test

  1. Create a new new-test.spec.ts file in the test/ directory.
  2. Add your spec file to the entry object in webpack.web.dev.config.js.
  3. Add a new div block to test/test.ejs like this: <div>Testing "new-test":<div id="new-test"></div></div>. The div id must be the same as the filename.
Description
No description provided
Readme 11 MiB
Latest
2025-06-19 15:23:49 -04:00
Languages
TypeScript 87.2%
JavaScript 9.8%
Shell 1.6%
EJS 1.4%