123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- /**
- * Created by bmf on 10/31/13.
- */
- "use strict";
- var assert = require('assert');
- var crypto = require('crypto');
- var sodium = require('../build/Release/sodium');
- describe('Sign', function() {
- it('crypto_sign_keypair should return a pair of keys', function(done) {
- var keys = sodium.crypto_sign_keypair();
- assert.equal(typeof keys, 'object');
- assert.notEqual(typeof keys.publicKey, 'undefined');
- assert.notEqual(typeof keys.secretKey, 'undefined');
- assert.equal(keys.publicKey.length, sodium.crypto_sign_PUBLICKEYBYTES);
- assert.equal(keys.secretKey.length, sodium.crypto_sign_SECRETKEYBYTES);
- done();
- });
- it('a signed message should verify correctly', function(done) {
- var keys = sodium.crypto_sign_keypair();
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var signedMsg = sodium.crypto_sign(message, keys.secretKey);
- var message2 = sodium.crypto_sign_open(signedMsg, keys.publicKey);
- assert.equal(message2.toString('utf8'), message.toString('utf8'));
- done();
- });
- it('should accept a zero length message', function(done) {
- var keys = sodium.crypto_sign_ed25519_keypair();
- var signedMsg = sodium.crypto_sign_ed25519_detached(Buffer.allocUnsafe(0), keys.secretKey)
- done();
- });
- it('a detached message signature should verify correctly', function(done) {
- var keys = sodium.crypto_sign_keypair();
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var signature = sodium.crypto_sign_detached(message, keys.secretKey);
- var verified = sodium.crypto_sign_verify_detached(signature, message, keys.publicKey);
- assert.strictEqual(verified, true);
- done();
- });
- it('a modified detached message signature should not verify correctly', function(done) {
- var keys = sodium.crypto_sign_keypair();
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var signature = sodium.crypto_sign_detached(message, keys.secretKey);
- signature.writeFloatLE(Math.random(), 0);
- var verified = sodium.crypto_sign_verify_detached(signature, message, keys.publicKey);
- assert.strictEqual(verified, false);
- done();
- });
- it('should throw with less than 2 arguments', function(done) {
- var keys = sodium.crypto_sign_keypair();
- var message = Buffer.from("Libsodium is cool", 'utf8');
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign(message);
- });
- done();
- });
- it('should throw with no params', function(done) {
- var keys = sodium.crypto_sign_keypair();
- var message = Buffer.from("Libsodium is cool", 'utf8');
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign();
- });
- done();
- });
- it('should throw with a small key', function(done) {
- var message = Buffer.from("Libsodium is cool", 'utf8');
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign(message, Buffer.allocUnsafe(12));
- });
- done();
- });
- it('should test bad arg 1', function(done) {
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var keys = sodium.crypto_sign_keypair();
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign(1, keys.secretKey);
- });
- done();
- });
- it('should test bad arg 2', function(done) {
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var keys = sodium.crypto_sign_keypair();
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign(message, 1);
- });
- done();
- });
- it('should test bad arg 2', function(done) {
- var message = Buffer.from("Libsodium is cool", 'utf8');
- var keys = sodium.crypto_sign_keypair();
- assert.throws(function() {
- var signedMsg = sodium.crypto_sign(message, "123");
- });
- done();
- });
- });
|