classicfm-discord-bot/node_modules/sodium/lib/keys/sign-key.js
2024-05-09 14:45:10 -04:00

47 lines
1.2 KiB
JavaScript
Executable file

/**
* Created by bmf on 11/2/13.
*/
var util = require('util');
var binding = require('../../build/Release/sodium');
var KeyPair = require('./keypair');
var toBuffer = require('../toBuffer');
var Sign = function SignKey(publicKey, secretKey, encoding) {
var self = this;
KeyPair.call(this);
self.init({
publicKeySize: binding.crypto_sign_PUBLICKEYBYTES,
secretKeySize: binding.crypto_sign_SECRETKEYBYTES,
publicKey: publicKey,
secretKey: secretKey,
encoding: encoding,
type: 'SignKey'
});
self.generate = function() {
var keys = binding.crypto_sign_keypair();
self.secretKey.set(keys.secretKey);
self.publicKey.set(keys.publicKey);
};
if( !publicKey || !secretKey ||
!self.isValid({ 'publicKey': publicKey, 'secretKey': secretKey }) ) {
// Generate the keys
self.generate();
}
};
util.inherits(Sign, KeyPair);
Sign.fromSeed = function(seed, encoding) {
encoding = String(encoding) || 'utf8';
var buf = toBuffer(seed, encoding);
var keys = binding.crypto_sign_seed_keypair(buf);
return new Sign(keys.publicKey, keys.secretKey, undefined);
};
module.exports = Sign;