0.0.4 • Published 3 years ago

@signauth/crypto v0.0.4

Weekly downloads
4
License
MIT
Repository
github
Last release
3 years ago

@signauth/crypto

SignAuth is a protocol for web authentication using challenges signed with a private key derivated from a password.

The signature is performed via ed25519. For more info loot at TweetNaCl.js

It exposes

  • Crypto

Usage

Install it using

npm install @signauth/crypto

or yarn or pnpm or whatever.

Use it with

const Crypto = require('@signauth/crypto')

API

Static methods

Crypto.toBase32(data)

Converts the data in base32 format. See human-oriented base-32 encoding

Crypto.fromBase32(base32String)

Converts from base32 to a buffer

Crypto.getRandomBase32String(size)

Generates a random base32 string

Crypto.getRandomString(length = 12, encode = 'hex')

Generates a random string encoded, by default, as hexadecimal string

Crypto.SHA3(data)

Hashes the data in format Keccak256

Crypto.b32Hash(data, size)

Returns a sha3 hash in base32 format. size can limit the size of the final string

Crypto.isValidB32Hash(base32Hash)

Checks if base32Hash is a valid base32 hash

Crypto.hexToUint8Array(hexStr)

Converts an hexadecimal string to uint8Array

Crypto.uint8ArrayToHex(uint8)

Convert a uint8Array to a hexadecimal string

Crypto.isBase32String(str)

Checks if the string looks like a base32 string

Crypto.isUint8Array(data)

Checks is data is a uint8Array

Crypto.seedFromPassphrase(password)

Derives a password to generate a seed as an uint8Array

Crypto.generateSignatureKeyPair(seed) {

Uses a seed to generate a pair of ed25519 keys

Crypto.isValidPublicKey(key)

Verifies if key is a valid publicKey

Crypto.isValidSecretKey(key)

Verifies if key is a valid secretKey

Crypto.getSignature(message, secretKey)

Signes message using secretKey

Crypto.verifySignature(message, signature, publicKey)

Verifies the message

History

0.0.3

  • Improving README

0.0.2

  • completing methods and testing

0.0.1

  • first version of the Crypto class is a simplified version of @secrez/core:Crypto

Test coverage

  12 passing (64ms)

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |     100 |       85 |     100 |     100 |                   
 index.js |     100 |       85 |     100 |     100 | 22,49-60          
----------|---------|----------|---------|---------|-------------------

Copyright

(c) 2020-present Francesco Sullo (francesco@sullo.co)

Licence

MIT