box-key.js 942 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /**
  2. * Created by bmf on 11/2/13.
  3. */
  4. /* jslint node: true */
  5. 'use strict';
  6. var util = require('util');
  7. var binding = require('../../build/Release/sodium');
  8. var KeyPair = require('./keypair');
  9. var Box = function BoxKey(publicKey, secretKey, encoding) {
  10. var self = this;
  11. KeyPair.call(this);
  12. self.init({
  13. publicKeySize : binding.crypto_box_PUBLICKEYBYTES,
  14. secretKeySize : binding.crypto_box_SECRETKEYBYTES,
  15. publicKey : publicKey,
  16. secretKey : secretKey,
  17. type: 'BoxKey'
  18. });
  19. self.generate = function() {
  20. var keys = binding.crypto_box_keypair();
  21. self.secretKey.set(keys.secretKey);
  22. self.publicKey.set(keys.publicKey);
  23. };
  24. if( !publicKey || !secretKey ||
  25. !self.isValid({ 'publicKey': publicKey, 'secretKey': secretKey }) ) {
  26. // Generate the keys
  27. self.generate();
  28. }
  29. };
  30. util.inherits(Box, KeyPair);
  31. module.exports = Box;