Merge pull request #6 from vitalyster/crypot

Drop unnecessary native module
This commit is contained in:
Darius Kazemi 2020-09-28 09:04:48 -07:00 committed by GitHub
commit e21a5e0ca1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 15 deletions

View file

@ -9,11 +9,10 @@
"cors": "^2.8.4", "cors": "^2.8.4",
"express": "^4.16.3", "express": "^4.16.3",
"express-basic-auth": "^1.1.5", "express-basic-auth": "^1.1.5",
"generate-rsa-keypair": "^0.1.2",
"request": "^2.87.0" "request": "^2.87.0"
}, },
"engines": { "engines": {
"node": ">=10.10.0" "node": ">=10.12.0"
}, },
"devDependencies": {}, "devDependencies": {},
"scripts": { "scripts": {

View file

@ -1,8 +1,7 @@
'use strict'; 'use strict';
const express = require('express'), const express = require('express'),
router = express.Router(), router = express.Router(),
crypto = require('crypto'), crypto = require('crypto');
generateRSAKeypair = require('generate-rsa-keypair');
function createActor(name, domain, pubkey) { function createActor(name, domain, pubkey) {
return { return {
@ -48,17 +47,27 @@ router.post('/create', function (req, res) {
let db = req.app.get('db'); let db = req.app.get('db');
let domain = req.app.get('domain'); let domain = req.app.get('domain');
// create keypair // create keypair
var pair = generateRSAKeypair(); crypto.generateKeyPair('rsa', {
let actorRecord = createActor(account, domain, pair.public); modulusLength: 4096,
let webfingerRecord = createWebfinger(account, domain); publicKeyEncoding: {
const apikey = crypto.randomBytes(16).toString('hex'); type: 'spki',
try { format: 'pem'
db.prepare('insert or replace into accounts(name, actor, apikey, pubkey, privkey, webfinger) values(?, ?, ?, ?, ?, ?)').run(`${account}@${domain}`, JSON.stringify(actorRecord), apikey, pair.public, pair.private, JSON.stringify(webfingerRecord)); },
res.status(200).json({msg: 'ok', apikey}); privateKeyEncoding: {
} type: 'pkcs8',
catch(e) { format: 'pem'
res.status(200).json({error: e}); }
} }, (err, publicKey, privateKey) => {
let actorRecord = createActor(account, domain, publicKey);
let webfingerRecord = createWebfinger(account, domain);
const apikey = crypto.randomBytes(16).toString('hex');
try {
db.prepare('insert or replace into accounts(name, actor, apikey, pubkey, privkey, webfinger) values(?, ?, ?, ?, ?, ?)').run(`${account}@${domain}`, JSON.stringify(actorRecord), apikey, publicKey, privateKey, JSON.stringify(webfingerRecord));
res.status(200).json({msg: 'ok', apikey});
}
catch(e) {
res.status(200).json({error: e});
}
}); });
module.exports = router; module.exports = router;