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)
- Host: GitHub
- URL: https://github.com/jhermsmeier/node-json-web-algorithms
- Owner: jhermsmeier
- License: mit
- Created: 2016-07-12T11:04:00.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2018-11-07T19:24:56.000Z (almost 7 years ago)
- Last Synced: 2025-01-15T13:04:24.538Z (9 months ago)
- Topics: ecdsa-signature, json-web-algorithms, json-web-key, jwa, jwk, rsa-signature
- Language: JavaScript
- Size: 13.7 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.md
Awesome Lists containing this project
README
# JSON Web Algorithms (JWA)
[](https://npmjs.com/package/json-web-algorithms)
[](https://npmjs.com/package/json-web-algorithms)
[](https://npmjs.com/package/json-web-algorithms)
[](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)