You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.6 KiB
79 lines
1.6 KiB
# node-http-signature |
|
|
|
node-http-signature is a node.js library that has client and server components |
|
for Joyent's [HTTP Signature Scheme](http_signing.md). |
|
|
|
## Usage |
|
|
|
Note the example below signs a request with the same key/cert used to start an |
|
HTTP server. This is almost certainly not what you actually want, but is just |
|
used to illustrate the API calls; you will need to provide your own key |
|
management in addition to this library. |
|
|
|
### Client |
|
|
|
```js |
|
var fs = require('fs'); |
|
var https = require('https'); |
|
var httpSignature = require('http-signature'); |
|
|
|
var key = fs.readFileSync('./key.pem', 'ascii'); |
|
|
|
var options = { |
|
host: 'localhost', |
|
port: 8443, |
|
path: '/', |
|
method: 'GET', |
|
headers: {} |
|
}; |
|
|
|
// Adds a 'Date' header in, signs it, and adds the |
|
// 'Authorization' header in. |
|
var req = https.request(options, function(res) { |
|
console.log(res.statusCode); |
|
}); |
|
|
|
|
|
httpSignature.sign(req, { |
|
key: key, |
|
keyId: './cert.pem' |
|
}); |
|
|
|
req.end(); |
|
``` |
|
|
|
### Server |
|
|
|
```js |
|
var fs = require('fs'); |
|
var https = require('https'); |
|
var httpSignature = require('http-signature'); |
|
|
|
var options = { |
|
key: fs.readFileSync('./key.pem'), |
|
cert: fs.readFileSync('./cert.pem') |
|
}; |
|
|
|
https.createServer(options, function (req, res) { |
|
var rc = 200; |
|
var parsed = httpSignature.parseRequest(req); |
|
var pub = fs.readFileSync(parsed.keyId, 'ascii'); |
|
if (!httpSignature.verifySignature(parsed, pub)) |
|
rc = 401; |
|
|
|
res.writeHead(rc); |
|
res.end(); |
|
}).listen(8443); |
|
``` |
|
|
|
## Installation |
|
|
|
npm install http-signature |
|
|
|
## License |
|
|
|
MIT. |
|
|
|
## Bugs |
|
|
|
See <https://github.com/joyent/node-http-signature/issues>.
|
|
|