test_key_all_keypair.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /**
  2. * Created by bmf on 11/2/13.
  3. */
  4. var assert = require('assert');
  5. var sodium = require('../build/Release/sodium');
  6. // Test all KeyPair classes
  7. testKey('box-key',sodium.crypto_box_PUBLICKEYBYTES, sodium.crypto_box_SECRETKEYBYTES);
  8. testKey('sign-key',sodium.crypto_sign_PUBLICKEYBYTES, sodium.crypto_sign_SECRETKEYBYTES);
  9. testKey('dh-key',sodium.crypto_scalarmult_BYTES, sodium.crypto_scalarmult_BYTES);
  10. function testKey(modName,sizePkBuffer, sizeSkBuffer) {
  11. var KeyPair = require('../lib/keys/' + modName);
  12. if (process.env.COVERAGE) {
  13. KeyPair = require('../lib-cov/keys/' + modName);
  14. }
  15. describe(modName, function () {
  16. it("generate a valid key", function (done) {
  17. var key = new KeyPair();
  18. key.generate();
  19. var k = key.get();
  20. assert.ok(key.isValid(k));
  21. done();
  22. });
  23. it("key size should match that of sodium", function (done) {
  24. var key = new KeyPair();
  25. assert.equal(key.getPublicKey().size(), sizePkBuffer);
  26. assert.equal(key.getSecretKey().size(), sizeSkBuffer);
  27. done();
  28. });
  29. it("key bytes should match that of sodium", function (done) {
  30. var key = new KeyPair();
  31. assert.equal(key.pkBytes(), sizePkBuffer);
  32. assert.equal(key.skBytes(), sizeSkBuffer);
  33. done();
  34. });
  35. it("isValid should return false on bad key", function (done) {
  36. var key = new KeyPair();
  37. var k = {
  38. publicKey: Buffer.allocUnsafe(2),
  39. secretKey: Buffer.allocUnsafe(2)
  40. };
  41. assert.ok(!key.isValid(k));
  42. done();
  43. });
  44. it("toString should return a string!", function (done) {
  45. var key = new KeyPair();
  46. assert.equal(typeof key.toString(), 'string');
  47. done();
  48. });
  49. it("toString should return a string!", function (done) {
  50. var key = new KeyPair();
  51. var k = key.get();
  52. assert.ok(key.toString('hex').match(/[0-9a-f]+,[0-9A-F]+/i));
  53. done();
  54. });
  55. it("toString should throw with bad encoding!", function (done) {
  56. var key = new KeyPair();
  57. assert.throws(function() {
  58. key.toString('utf8');
  59. });
  60. done();
  61. });
  62. it("key test string encoding utf8 should throw", function (done) {
  63. var key = new KeyPair();
  64. assert.throws(function() {
  65. var n = key.toString('utf8');
  66. key.set(n, 'utf8');
  67. });
  68. done();
  69. });
  70. it("key test string encoding base64 should throw", function (done) {
  71. var key = new KeyPair();
  72. assert.throws(function() {
  73. var n = key.toString('base64');
  74. key.set(n, 'base64');
  75. });
  76. done();
  77. });
  78. });
  79. }