keeweb-plugins/scripts/sign.js

29 lines
774 B
JavaScript
Raw Normal View History

2017-06-11 00:32:51 +02:00
const fs = require('fs');
2020-03-19 20:47:41 +01:00
const signer = require('pkcs11-smartcard-sign');
2017-06-11 09:38:52 +02:00
const keytar = require('keytar');
2017-06-11 00:32:51 +02:00
const verifyKey = fs.readFileSync('keys/public-key.pem');
2020-03-19 20:47:41 +01:00
const signerOptions = JSON.parse(fs.readFileSync('keys/keeweb-sign.json', 'utf8'));
2017-06-11 00:32:51 +02:00
function getPin() {
if (getPin.pin) {
return Promise.resolve(getPin.pin);
}
2017-06-11 09:38:52 +02:00
return keytar.getPassword('keeweb.pin', 'keeweb').then(pass => {
if (pass) {
getPin.pin = pass;
return pass;
} else {
throw 'Cannot find PIN';
}
2017-06-11 00:32:51 +02:00
});
}
module.exports = function sign(data) {
2020-05-24 18:57:17 +02:00
return getPin().then(pin =>
signer
.sign({ data, verifyKey, pin, ...signerOptions })
.then(data => data.toString('base64'))
);
2017-06-11 00:32:51 +02:00
};