PHP WebShell

Текущая директория: /usr/lib/node_modules/bitgo/node_modules/sodium-native/test

Просмотр файла: padding.js

var test = require('tape')
var sodium = require('../')

test('sodium_pad / sodium_unpad', function (assert) {
  for (var i = 0; i < 2000; i++) {
    var binLen = sodium.randombytes_uniform(200)
    var blocksize = 1 + sodium.randombytes_uniform(100)
    var binPaddedMaxlen = binLen + (blocksize - (binLen % blocksize))
    var bingPaddedLong = Buffer.alloc(binPaddedMaxlen + 1)
    var binPaddedLen = bingPaddedLong.slice(0, binPaddedMaxlen)
    sodium.randombytes_buf(binPaddedLen)

    var smallThrow = didThrow(function () {
      sodium.sodium_pad(binPaddedLen.slice(0, binPaddedMaxlen - 1), binLen, blocksize)
    })
    if (smallThrow === false) assert.fail('did not throw')

    var zeroThrow = didThrow(function () {
      sodium.sodium_pad(binPaddedLen, binLen, 0)
    })
    if (zeroThrow === false) assert.fail('did not throw')

    sodium.sodium_pad(bingPaddedLong, binLen, blocksize)
    var binUnpaddedLen = sodium.sodium_pad(binPaddedLen, binLen, blocksize)
    if (binUnpaddedLen !== binPaddedMaxlen) assert.fail('binUnpaddedLen was not same')

    var largeThrow = didThrow(function () {
      sodium.sodium_unpad(binPaddedLen, binUnpaddedLen, binPaddedMaxlen + 1)
    })
    if (largeThrow === false) assert.fail('did not throw')

    var emptyThrow = didThrow(function () {
      sodium.sodium_unpad(binPaddedLen, binUnpaddedLen, 0)
    })
    if (emptyThrow === false) assert.fail('did not throw')

    var len2 = sodium.sodium_unpad(binPaddedLen, binUnpaddedLen, blocksize)
    if (len2 !== binLen) assert.fail('len2 was not same')
  }

  assert.pass()
  assert.end()
})

function didThrow (fn) {
  try {
    fn()
    return false
  } catch (ex) {
    return true
  }
}

Выполнить команду


Для локальной разработки. Не используйте в интернете!