104 lines
3.1 KiB
JavaScript
104 lines
3.1 KiB
JavaScript
|
/* eslint-disable camelcase */
|
||
|
const test = require('brittle')
|
||
|
const sodium = require('..')
|
||
|
|
||
|
test('sodium_memcmp', function (t) {
|
||
|
const b1 = Buffer.from([0, 1, 2, 3])
|
||
|
const b2 = Buffer.from([3, 2, 1, 0])
|
||
|
|
||
|
t.exception.all(_ => sodium.sodium_memcmp(), 'no args')
|
||
|
t.exception.all(_ => sodium.sodium_memcmp(b1), 'arg mismatch')
|
||
|
t.exception.all(_ => sodium.sodium_memcmp(b1, b2.slice(1)), 'length mismatch')
|
||
|
t.ok(sodium.sodium_memcmp(Buffer.alloc(0), Buffer.alloc(0)))
|
||
|
t.ok(sodium.sodium_memcmp(Buffer.alloc(5), Buffer.alloc(5)))
|
||
|
t.ok(sodium.sodium_memcmp(b1, b1))
|
||
|
t.absent(sodium.sodium_memcmp(b2, b1))
|
||
|
t.absent(sodium.sodium_memcmp(b1, b2))
|
||
|
})
|
||
|
|
||
|
test.skip('sodium_compare', function (t) {
|
||
|
const one = Buffer.from([1])
|
||
|
const two = Buffer.from([2])
|
||
|
const three = Buffer.from([3])
|
||
|
|
||
|
t.is(sodium.sodium_compare(Buffer.alloc(0), Buffer.alloc(0)), 0)
|
||
|
t.is(sodium.sodium_compare(one, one), 0)
|
||
|
t.is(sodium.sodium_compare(two, two), 0)
|
||
|
t.is(sodium.sodium_compare(three, three), 0)
|
||
|
|
||
|
t.is(sodium.sodium_compare(one, two), -1)
|
||
|
t.is(sodium.sodium_compare(one, three), -1)
|
||
|
t.is(sodium.sodium_compare(two, one), 1)
|
||
|
t.is(sodium.sodium_compare(three, one), 1)
|
||
|
|
||
|
t.is(sodium.sodium_compare(two, three), -1)
|
||
|
t.is(sodium.sodium_compare(three, two), 1)
|
||
|
})
|
||
|
|
||
|
test.skip('sodium_add', function (t) {
|
||
|
const large = Buffer.alloc(32)
|
||
|
large[23] = 0b00000011
|
||
|
const largeLessOne = Buffer.alloc(32)
|
||
|
largeLessOne[23] = 0b00000001
|
||
|
|
||
|
const c = Buffer.from(large)
|
||
|
|
||
|
sodium.sodium_add(c, largeLessOne)
|
||
|
t.ok(large[23], 4)
|
||
|
|
||
|
const overflow = Buffer.alloc(56, 0xff)
|
||
|
const one = Buffer.alloc(56)
|
||
|
one[0] = 1
|
||
|
sodium.sodium_add(overflow, one)
|
||
|
|
||
|
t.ok(sodium.sodium_is_zero(overflow))
|
||
|
})
|
||
|
|
||
|
test.skip('sub', function (t) {
|
||
|
const large = Buffer.alloc(32)
|
||
|
large[23] = 0b00000011
|
||
|
const largeLessOne = Buffer.alloc(32)
|
||
|
largeLessOne[23] = 0b00000001
|
||
|
|
||
|
const c = Buffer.from(large)
|
||
|
|
||
|
sodium.sodium_sub(c, largeLessOne)
|
||
|
t.ok(large[23], 2)
|
||
|
|
||
|
const overflow = Buffer.alloc(56, 0x00)
|
||
|
const one = Buffer.alloc(56)
|
||
|
one[0] = 1
|
||
|
sodium.sodium_sub(overflow, one)
|
||
|
|
||
|
t.ok(sodium.sodium_memcmp(overflow, Buffer.alloc(56, 0xff)))
|
||
|
})
|
||
|
|
||
|
test('sodium_increment', function (t) {
|
||
|
const zero = Buffer.alloc(4)
|
||
|
sodium.sodium_increment(zero)
|
||
|
|
||
|
t.ok(zero[0], 1)
|
||
|
|
||
|
const overflow = Buffer.alloc(56, 0xff)
|
||
|
sodium.sodium_increment(overflow)
|
||
|
|
||
|
t.ok(sodium.sodium_is_zero(overflow))
|
||
|
})
|
||
|
|
||
|
test('sodium_is_zero', function (t) {
|
||
|
const buf = Buffer.from([0, 0, 0, 1])
|
||
|
|
||
|
t.exception.all(_ => sodium.sodium_is_zero(), 'no args')
|
||
|
t.exception.all(_ => sodium.sodium_is_zero(null), 'missing buf')
|
||
|
|
||
|
t.ok(sodium.sodium_is_zero(Buffer.alloc(0)), 'empty buffer')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(0, 0)), 'zero bytes')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(0, 1)), 'one byte')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(0, 2)), 'two bytes')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(0, 3)), '3 bytes')
|
||
|
t.absent(sodium.sodium_is_zero(buf), 'first non-zero byte')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(1, 2)), 'view')
|
||
|
t.ok(sodium.sodium_is_zero(buf.subarray(1, 2)), 'view')
|
||
|
t.absent(sodium.sodium_is_zero(buf.subarray(3)), 'view')
|
||
|
})
|