mirror of
https://github.com/S2-/securerandomstring.git
synced 2025-08-02 10:20:05 +02:00
Add support for 'sync' API. Updates code, tests and docs.
This commit is contained in:
47
README.md
47
README.md
@@ -1,33 +1,52 @@
|
|||||||
# secure-random-string
|
# secure-random-string
|
||||||
a node module that generates a secure random string with a given length
|
|
||||||
|
Node.js module that generates a cryptographically secure random string with a given length
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
`require` it
|
|
||||||
|
|
||||||
```
|
```javascript
|
||||||
var srs = require('secure-random-string');
|
var srs = require('secure-random-string');
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Default behavior: Generate a random string 32 characters long.
|
||||||
|
|
||||||
generate a random string that is 32 chars long (the default)
|
```javascript
|
||||||
```
|
// Sync
|
||||||
|
var result = srs();
|
||||||
|
|
||||||
|
// Async
|
||||||
srs(function(sr) {
|
srs(function(sr) {
|
||||||
console.log(sr);
|
console.log(sr);
|
||||||
});
|
});
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Options: length, urlsafe
|
||||||
|
|
||||||
generate a random string that is 256 chars long
|
Optionally, you can specify a 'length' option to specify a length.
|
||||||
```
|
|
||||||
srs({length: 256}, function(sr) {
|
The 'urlsafe' option replaces a potential `+` character with `-` and the `/` character
|
||||||
|
with `_`, created a valid [base64url](https://en.wikipedia.org/wiki/Base64) format string.
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// sync
|
||||||
|
var result = srs({length: 256, urlsafe:true});
|
||||||
|
|
||||||
|
// async
|
||||||
|
srs({length: 256, urlsafe:true}, function(sr) {
|
||||||
console.log(sr);
|
console.log(sr);
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Author
|
||||||
|
|
||||||
|
[Simon Santoro](https://github.com/S2-)
|
||||||
|
|
||||||
|
## Contributors
|
||||||
|
|
||||||
|
[Mark Stosberg](https://github.com/markstos)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
[MIT](https://github.com/aheckmann/node-ses/blob/master/LICENSE)
|
||||||
|
|
||||||
generate a random string that is 20 chars long and is url safe (can be used as a url token)
|
|
||||||
```
|
|
||||||
srs({length: 20, urlsafe: true}, function(sr) {
|
|
||||||
console.log(sr);
|
|
||||||
});
|
|
||||||
```
|
|
||||||
|
@@ -9,11 +9,17 @@ function srs(options, cb) {
|
|||||||
}
|
}
|
||||||
var length = options['length'] || 32;
|
var length = options['length'] || 32;
|
||||||
|
|
||||||
crypto.randomBytes(length, function(ex, buf) {
|
// async path
|
||||||
if (ex) throw ex;
|
if (cb) {
|
||||||
|
crypto.randomBytes(length, function(ex, buf) {
|
||||||
cb(_finish(buf));
|
if (ex) throw ex;
|
||||||
});
|
return cb(_finish(buf));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
// sync path
|
||||||
|
else {
|
||||||
|
return _finish(crypto.randomBytes(length));
|
||||||
|
}
|
||||||
|
|
||||||
function _finish (buf) {
|
function _finish (buf) {
|
||||||
var string = buf.toString('base64');
|
var string = buf.toString('base64');
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "secure-random-string",
|
"name": "secure-random-string",
|
||||||
"version": "0.0.2",
|
"version": "0.1.0",
|
||||||
"description": "Generates a secure random string with a given length",
|
"description": "Generates a secure random string with a given length",
|
||||||
"main": "lib/secure-random-string.js",
|
"main": "lib/secure-random-string.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
"string"
|
"string"
|
||||||
],
|
],
|
||||||
"author": "Simon Santoro",
|
"author": "Simon Santoro",
|
||||||
|
"contributors": ["Mark Stosberg <mark@rideamigos.com>"],
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"bugs": {
|
"bugs": {
|
||||||
"url": "https://github.com/S2-/securerandomstring/issues"
|
"url": "https://github.com/S2-/securerandomstring/issues"
|
||||||
|
7
tests.js
7
tests.js
@@ -28,7 +28,7 @@ var test = function(name, what, ref, c) {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
//the actual tests
|
// async tests
|
||||||
srs(function(sr) {
|
srs(function(sr) {
|
||||||
test('generate a random string 32 chars long',
|
test('generate a random string 32 chars long',
|
||||||
sr.length,
|
sr.length,
|
||||||
@@ -58,3 +58,8 @@ srs({length: 256, urlsafe: true}, function(sr) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// sync tests
|
||||||
|
test('generate a random string 32 chars long (sync)', srs().length, 32);
|
||||||
|
test('generate a random string 1 chars long (sync)', srs({length:1}).length, 1);
|
||||||
|
test('generate a random string 256 chars long (sync)', srs({length:256}).length, 256);
|
||||||
|
test('generate a urlsafe random string 256 chars long (sync)', srs({length:256, urlsafe:true}).length, 256);
|
||||||
|
Reference in New Issue
Block a user