test_crypto_onetimeauth.js 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /**
  2. * Created by bmf on 10/31/13.
  3. */
  4. "use strict";
  5. var assert = require('assert');
  6. var crypto = require('crypto');
  7. var sodium = require('../build/Release/sodium');
  8. describe('OneTimeAuth', function() {
  9. it('should validate', function(done) {
  10. var buf = crypto.randomBytes(256);
  11. var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
  12. var token = sodium.crypto_onetimeauth(buf, key);
  13. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  14. assert.equal(r, 0);
  15. done();
  16. });
  17. });
  18. describe('crypto_onetimeauth verify parameters', function() {
  19. var buf = crypto.randomBytes(256);
  20. var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
  21. it('bad param 1 string', function(done) {
  22. buf = "123";
  23. assert.throws(function() {
  24. var token = sodium.crypto_onetimeauth(buf, key);
  25. });
  26. done();
  27. });
  28. it('bad param 1 number', function(done) {
  29. buf = 123;
  30. assert.throws(function() {
  31. var token = sodium.crypto_onetimeauth(buf, key);
  32. });
  33. done();
  34. });
  35. it('bad param 2 string', function(done) {
  36. key = "123";
  37. assert.throws(function() {
  38. var token = sodium.crypto_onetimeauth(buf, key);
  39. });
  40. done();
  41. });
  42. it('bad param 2 buffer', function(done) {
  43. key = Buffer.allocUnsafe(2);
  44. assert.throws(function() {
  45. var token = sodium.crypto_onetimeauth(buf, key);
  46. });
  47. done();
  48. });
  49. it('bad param 2 number', function(done) {
  50. key = 123;
  51. assert.throws(function() {
  52. var token = sodium.crypto_onetimeauth(buf, key);
  53. });
  54. done();
  55. });
  56. });
  57. describe('crypto_onetimeauth_verify verify parameters', function() {
  58. var buf = crypto.randomBytes(256);
  59. var key = crypto.randomBytes(sodium.crypto_auth_KEYBYTES);
  60. var token = sodium.crypto_onetimeauth(buf, key);
  61. it('bad param 1 string', function(done) {
  62. token = "token";
  63. assert.throws(function() {
  64. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  65. });
  66. done();
  67. });
  68. it('bad param 1 small buffer', function(done) {
  69. token = Buffer.allocUnsafe(2);
  70. assert.throws(function() {
  71. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  72. });
  73. done();
  74. });
  75. it('bad param 1 small number', function(done) {
  76. token = 2;
  77. assert.throws(function() {
  78. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  79. });
  80. done();
  81. });
  82. it('bad param 2 string', function(done) {
  83. buf = "qweqw";
  84. assert.throws(function() {
  85. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  86. });
  87. done();
  88. });
  89. it('bad param 2 small number', function(done) {
  90. buf = 1;
  91. assert.throws(function() {
  92. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  93. });
  94. done();
  95. });
  96. it('bad param 3 string', function(done) {
  97. key = "qweqw";
  98. assert.throws(function() {
  99. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  100. });
  101. done();
  102. });
  103. it('bad param 3 buffer', function(done) {
  104. key = Buffer.allocUnsafe(2);
  105. assert.throws(function() {
  106. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  107. });
  108. done();
  109. });
  110. it('bad param 3 small number', function(done) {
  111. key = 1;
  112. assert.throws(function() {
  113. var r = sodium.crypto_onetimeauth_verify(token, buf, key);
  114. });
  115. done();
  116. });
  117. });