Initial commit
[yaffs-website] / node_modules / http-signature / README.md
1 # node-http-signature
2
3 node-http-signature is a node.js library that has client and server components
4 for Joyent's [HTTP Signature Scheme](http_signing.md).
5
6 ## Usage
7
8 Note the example below signs a request with the same key/cert used to start an
9 HTTP server. This is almost certainly not what you actually want, but is just
10 used to illustrate the API calls; you will need to provide your own key
11 management in addition to this library.
12
13 ### Client
14
15 ```js
16 var fs = require('fs');
17 var https = require('https');
18 var httpSignature = require('http-signature');
19
20 var key = fs.readFileSync('./key.pem', 'ascii');
21
22 var options = {
23   host: 'localhost',
24   port: 8443,
25   path: '/',
26   method: 'GET',
27   headers: {}
28 };
29
30 // Adds a 'Date' header in, signs it, and adds the
31 // 'Authorization' header in.
32 var req = https.request(options, function(res) {
33   console.log(res.statusCode);
34 });
35
36
37 httpSignature.sign(req, {
38   key: key,
39   keyId: './cert.pem'
40 });
41
42 req.end();
43 ```
44
45 ### Server
46
47 ```js
48 var fs = require('fs');
49 var https = require('https');
50 var httpSignature = require('http-signature');
51
52 var options = {
53   key: fs.readFileSync('./key.pem'),
54   cert: fs.readFileSync('./cert.pem')
55 };
56
57 https.createServer(options, function (req, res) {
58   var rc = 200;
59   var parsed = httpSignature.parseRequest(req);
60   var pub = fs.readFileSync(parsed.keyId, 'ascii');
61   if (!httpSignature.verifySignature(parsed, pub))
62     rc = 401;
63
64   res.writeHead(rc);
65   res.end();
66 }).listen(8443);
67 ```
68
69 ## Installation
70
71     npm install http-signature
72
73 ## License
74
75 MIT.
76
77 ## Bugs
78
79 See <https://github.com/joyent/node-http-signature/issues>.