@samouraiwallet/auth47
Version:
A JS implementation of the Auth47 protocol
50 lines (36 loc) • 1.21 kB
Markdown
# @samouraiwallet/auth47
A JS implementation of the Auth47 protocol.
This library uses ES Modules. Node.js v20 or later is required.
Source code was written in Typescript. Type definitions are included in the published bundle.
## Usage
### Initialize a new instance for a Verifier using a HTTPS callback URI
```js
import crypto from 'crypto'
import { Auth47Verifier } from '@samouraiwallet/auth47';
const verifier = new Auth47Verifier('https://samourai.io/auth');
```
### Generate an Auth47URI for a given nonce
```js
// Generate random nonce
const nonce = crypto.randomBytes(12).toString('hex');
const uri = verifier.generateURI({'nonce': nonce});
console.log('URI generated:', uri);
```
### Verify a proof
```js
const proof_received = {
'auth47_response': '1.0',
'challenge': 'auth47://aerezerzerze23131d?r=https://samourai.io/auth',
'nym': 'PM8TJTLJbPRGxSbc8EJ...TzFcwQRya4GA',
'signature': 'Hyn9En/w5I2LHR...ct8mbFD86o='
};
// Verify the proof (use bitcoin network defined as default)
const verifiedProof = verifier.verifyProof(proof_received);
if (verifiedProof.result === 'ok') {
console.log('Proof is valid');
}
else {
// log given error
console.log(verifiedProof.error);
}
```