1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- /**
- * 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;
|