An open API service indexing awesome lists of open source software.

https://github.com/jhermsmeier/node-json-web-algorithms

JSON Web Algorithms (JWA)
https://github.com/jhermsmeier/node-json-web-algorithms

ecdsa-signature json-web-algorithms json-web-key jwa jwk rsa-signature

Last synced: 6 months ago
JSON representation

JSON Web Algorithms (JWA)

Awesome Lists containing this project

README

          

# JSON Web Algorithms (JWA)
[![npm](https://img.shields.io/npm/v/json-web-algorithms.svg?style=flat-square)](https://npmjs.com/package/json-web-algorithms)
[![npm license](https://img.shields.io/npm/l/json-web-algorithms.svg?style=flat-square)](https://npmjs.com/package/json-web-algorithms)
[![npm downloads](https://img.shields.io/npm/dm/json-web-algorithms.svg?style=flat-square)](https://npmjs.com/package/json-web-algorithms)
[![build status](https://img.shields.io/travis/jhermsmeier/node-json-web-algorithms.svg?style=flat-square)](https://travis-ci.org/jhermsmeier/node-json-web-algorithms)

JSON Web Algorithms (JWA) for JSON Object Signing and Encryption (JOSE)

## Install via [npm](https://npmjs.com)

```sh
$ npm install --save json-web-algorithms
```

## Signature Algorithms

### HMAC (Hash-based Message Authentication Code)

| Type | Signature / MAC & Hash algorithm |
|:-----:|:----------------------------------|
| HS256 | HMAC using SHA-256 hash algorithm |
| HS384 | HMAC using SHA-384 hash algorithm |
| HS512 | HMAC using SHA-512 hash algorithm |

### RSASSA (RSA Signature Scheme with Appendix)

| Type | Signature / MAC & Hash algorithm |
|:-----:|:------------------------------------|
| RS256 | RSASSA using SHA-256 hash algorithm |
| RS384 | RSASSA using SHA-384 hash algorithm |
| RS512 | RSASSA using SHA-512 hash algorithm |

### ECDSA (Elliptic Curve Digital Signature Algorithm)

| Type | Signature / MAC & Hash algorithm |
|:-----:|:---------------------------------------------------|
| ES256 | ECDSA using P-256 curve and SHA-256 hash algorithm |
| ES384 | ECDSA using P-384 curve and SHA-384 hash algorithm |
| ES512 | ECDSA using P-521 curve and SHA-512 hash algorithm |

### PLAIN

| Type | Signature / MAC & Hash algorithm |
|:-----:|:-------------------------------------------|
| PLAIN | No digital signature or MAC value included |

# Usage

```js
var JOSE = require( 'jose' )
```

```js
// Sign something
var signature = JOSE.sign( 'HS256' input, key )
// Verify a signature
var isValid = JOSE.verify( 'HS256', signature, input, key )
```

# API Reference

## JWA : Object
JSON Web Algorithms

**Kind**: global variable

* [JWA](#JWA) : Object
* [.SignatureAlgorithm](#JWA.SignatureAlgorithm) : function
* [new JWA.SignatureAlgorithm()](#new_JWA.SignatureAlgorithm_new)
* [.sign(algorithm, input, key)](#JWA.sign) ⇒ Buffer
* [.verify(algorithm, signature, input, key)](#JWA.verify) ⇒ Boolean

### JWA.SignatureAlgorithm : function
**Kind**: static class of [JWA](#JWA)

#### new JWA.SignatureAlgorithm()
JWA SignatureAlgorithm

### JWA.sign(algorithm, input, key) ⇒ Buffer
Sign an input with a given algorithm

**Kind**: static method of [JWA](#JWA)
**Returns**: Buffer - signature

| Param | Type |
| --- | --- |
| algorithm | String |
| input | Buffer |
| key | Buffer |

### JWA.verify(algorithm, signature, input, key) ⇒ Boolean
Verify a signature with a given algorithm

**Kind**: static method of [JWA](#JWA)

| Param | Type |
| --- | --- |
| algorithm | String |
| signature | Buffer |
| input | Buffer |
| key | Buffer |

## SignatureAlgorithm
**Kind**: global class

* [SignatureAlgorithm](#SignatureAlgorithm)
* [new SignatureAlgorithm(type, bits)](#new_SignatureAlgorithm_new)
* _instance_
* [._signECDSA(digest)](#SignatureAlgorithm+_signECDSA) ⇒ Buffer
* [.sign(input, key)](#SignatureAlgorithm+sign) ⇒ Buffer
* [._verifyHMAC(signature, input, key)](#SignatureAlgorithm+_verifyHMAC) ⇒ Boolean
* [._verifyRSA(signature, input, key)](#SignatureAlgorithm+_verifyRSA) ⇒ Boolean
* [._verifyECDSA(signature, input, key)](#SignatureAlgorithm+_verifyECDSA) ⇒ Boolean
* [.verify(signature, input, key)](#SignatureAlgorithm+verify) ⇒ Boolean
* _static_
* [.type](#SignatureAlgorithm.type) : Object

### new SignatureAlgorithm(type, bits)
SignatureAlgorithm

| Param | Type |
| --- | --- |
| type | String |
| bits | Number |

### signatureAlgorithm._signECDSA(digest) ⇒ Buffer
Create a ECDSA signature for a given digest

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)
**Internal**: used by `.sign()`

| Param | Type |
| --- | --- |
| digest | Buffer |

### signatureAlgorithm.sign(input, key) ⇒ Buffer
Sign an input with a given key

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)

| Param | Type |
| --- | --- |
| input | Buffer |
| key | Buffer |

### signatureAlgorithm._verifyHMAC(signature, input, key) ⇒ Boolean
Verify an HMAC signature

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)
**Internal**: used by `.verify()`

| Param | Type |
| --- | --- |
| signature | Buffer |
| input | Buffer |
| key | Buffer |

### signatureAlgorithm._verifyRSA(signature, input, key) ⇒ Boolean
Verify an RSA signature

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)
**Internal**: used by `.verify()`

| Param | Type |
| --- | --- |
| signature | Buffer |
| input | Buffer |
| key | Buffer |

### signatureAlgorithm._verifyECDSA(signature, input, key) ⇒ Boolean
Verify an ECDSA signature

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)
**Internal**: used by `.verify()`

| Param | Type |
| --- | --- |
| signature | Buffer |
| input | Buffer |
| key | Buffer |

### signatureAlgorithm.verify(signature, input, key) ⇒ Boolean
Verify a signature against an input & key

**Kind**: instance method of [SignatureAlgorithm](#SignatureAlgorithm)

| Param | Type |
| --- | --- |
| signature | Buffer |
| input | Buffer |
| key | Buffer |

### SignatureAlgorithm.type : Object
SignatureAlgorithm type algorithms
NOTE: OpenSSL only signs EC with SHA2
when specifying RSA and using an EC key

**Kind**: static property of [SignatureAlgorithm](#SignatureAlgorithm)