Compare commits

...

9 Commits
v0.9.1 ... main

6 changed files with 87 additions and 11 deletions

6
.jshintrc Normal file
View File

@ -0,0 +1,6 @@
{
"esversion": 11,
"node": true,
"unused": true,
"curly": true
}

View File

@ -1,4 +1,4 @@
# @root/keypairs # [@root/keypairs](https://git.rootprojects.org/root/keypairs.js)
Lightweight JavaScript RSA and ECDSA utils that work on Windows, Mac, and Linux Lightweight JavaScript RSA and ECDSA utils that work on Windows, Mac, and Linux
using modern node.js APIs (no need for C compiler). using modern node.js APIs (no need for C compiler).
@ -20,6 +20,8 @@ and [Rasha.js (RSA)](https://git.coolaj86.com/coolaj86/rasha.js/).
- [ ] Auth0 - [ ] Auth0
- [ ] CLI - [ ] CLI
- See [keypairs-cli](https://npmjs.com/packages/keypairs-cli/) - See [keypairs-cli](https://npmjs.com/packages/keypairs-cli/)
- [x] Node
- [x] Browsers (Webpack >=5)
<!-- <!--
@ -86,6 +88,72 @@ return Keypairs.signJwt({
By default ECDSA keys will be used since they've had native support in node By default ECDSA keys will be used since they've had native support in node
_much_ longer than RSA has, and they're smaller, and faster to generate. _much_ longer than RSA has, and they're smaller, and faster to generate.
## Webpack 5+ (for Browsers)
This package includes native browser versions of all special functions.
Since Webpack 5 now fully supports vanilla JavaScript and exclusive browser builds out-of-the-box,
it's pretty easy to create a minimal config to use Keypairs in your browser projects:
`webpack.config.js`:
```js
'use strict';
var path = require('path');
module.exports = {
entry: './main.js',
mode: 'development',
devServer: {
contentBase: path.join(__dirname, 'dist'),
port: 3001
},
output: {
publicPath: 'http://localhost:3001/'
},
module: {
rules: [{}]
},
plugins: []
};
```
`main.js`:
```js
'use strict';
var Keypairs = require('./keypairs.js');
Keypairs.generate().then(function (pair) {
console.log(pair.private);
console.log(pair.public);
});
```
`index.html`:
```html
<!DOCTYPE html>
<html>
<body>
<script src="./dist/main.js"></script>
</body>
</html>
```
```bash
npm install --save-dev webpack@5
# Or, if webpack 5 is still in beta: npm install --save-dev webpack@next
npm install --save-dev webpack-cli
npx webpack --mode=production
ls dist/main.js
```
## API Overview ## API Overview
- generate (JWK) - generate (JWK)

View File

@ -9,5 +9,7 @@ sha2.sum = function (alg, str) {
data = encoder.encode(str); data = encoder.encode(str);
} }
var sha = 'SHA-' + String(alg).replace(/^sha-?/i, ''); var sha = 'SHA-' + String(alg).replace(/^sha-?/i, '');
return window.crypto.subtle.digest(sha, data); return window.crypto.subtle.digest(sha, data).then(function (buf) {
return new Uint8Array(buf);
});
}; };

2
package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "@root/keypairs", "name": "@root/keypairs",
"version": "0.9.1", "version": "0.10.2",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {

View File

@ -1,6 +1,6 @@
{ {
"name": "@root/keypairs", "name": "@root/keypairs",
"version": "0.9.1", "version": "0.10.2",
"description": "Lightweight, Zero-Dependency RSA and EC/ECDSA crypto for Node.js and Browsers", "description": "Lightweight, Zero-Dependency RSA and EC/ECDSA crypto for Node.js and Browsers",
"main": "keypairs.js", "main": "keypairs.js",
"browser": { "browser": {
@ -20,7 +20,7 @@
], ],
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://git.rootprojects.org/root/csr.js.git" "url": "https://github.com/therootcompany/keypairs.js.git"
}, },
"keywords": [ "keywords": [
"ASN.1", "ASN.1",