mirror of
				https://kkgithub.com/actions/setup-python.git
				synced 2025-11-04 04:31:51 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# 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>.
 |