2017-06-11 00:32:51 +02:00
|
|
|
const fs = require('fs');
|
|
|
|
const signer = require('pkcs15-smartcard-sign');
|
|
|
|
const keychain = require('keychain');
|
|
|
|
|
|
|
|
const verifyKey = fs.readFileSync('keys/public-key.pem');
|
2017-06-11 09:08:29 +02:00
|
|
|
const key = '02';
|
2017-06-11 00:32:51 +02:00
|
|
|
|
|
|
|
function getPin() {
|
|
|
|
if (getPin.pin) {
|
|
|
|
return Promise.resolve(getPin.pin);
|
|
|
|
}
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
keychain.getPassword({ account: 'keeweb', service: 'keeweb.pin', type: 'generic' }, (err, pass) => {
|
|
|
|
if (err) {
|
|
|
|
reject(err);
|
|
|
|
} else {
|
|
|
|
getPin.pin = pass;
|
|
|
|
resolve(pass);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = function sign(data) {
|
2017-06-11 09:08:29 +02:00
|
|
|
return getPin().then(pin => signer.sign({ data, verifyKey, pin, key }).then(data => data.toString('base64')));
|
2017-06-11 00:32:51 +02:00
|
|
|
};
|