10 lines
675 B
JavaScript
10 lines
675 B
JavaScript
// Test key is held in memory only; the production app uses Android Keystore.
|
|
const crypto = require('node:crypto');
|
|
const readline = require('node:readline');
|
|
const key = crypto.generateKeyPairSync('ec', {namedCurve: 'prime256v1'});
|
|
const publicKey = key.publicKey.export({type: 'spki', format: 'der'});
|
|
console.log(JSON.stringify({installationId: crypto.createHash('sha256').update(publicKey).digest('hex').slice(0,32), devicePublicKey: publicKey.toString('base64')}));
|
|
readline.createInterface({input: process.stdin}).on('line', line => {
|
|
console.log(crypto.sign('sha256', Buffer.from(line, 'base64'), {key: key.privateKey, dsaEncoding: 'der'}).toString('base64'));
|
|
});
|