PHP WebShell

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

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

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

tape('crypto_sign_ed25519_sk_to_pk', function (t) {
  var pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var pke = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)

  sodium.crypto_sign_keypair(pk, sk)
  sodium.crypto_sign_ed25519_sk_to_pk(pke, sk)

  t.ok(pk.equals(pke))
  t.end()
})

tape('crypto_sign_seed_keypair', function (t) {
  var pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)
  var seed = Buffer.alloc(sodium.crypto_sign_SEEDBYTES, 'lo')

  t.throws(function () {
    sodium.crypto_sign_seed_keypair()
  }, 'should validate input')

  t.throws(function () {
    sodium.crypto_sign_seed_keypair(Buffer.alloc(0), Buffer.alloc(0), Buffer.alloc(0))
  }, 'should validate input length')

  sodium.crypto_sign_seed_keypair(pk, sk, seed)

  var eSk = '6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f6c6f41eb5b4dba29b19e391d9a4d1a4a879b27958ff3734e10cfbf1f46d68f4d3038'
  var ePk = '41eb5b4dba29b19e391d9a4d1a4a879b27958ff3734e10cfbf1f46d68f4d3038'

  t.same(pk.toString('hex'), ePk, 'seeded public key')
  t.same(sk.toString('hex'), eSk, 'seeded secret key')
  t.end()
})

tape('crypto_sign_keypair', function (t) {
  var pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)

  sodium.crypto_sign_keypair(pk, sk)

  t.notEqual(pk, Buffer.alloc(pk.length), 'made public key')
  t.notEqual(sk, Buffer.alloc(sk.length), 'made secret key')

  t.throws(function () {
    sodium.crypto_sign_keypair()
  }, 'should validate input')

  t.throws(function () {
    sodium.crypto_sign_keypair(Buffer.alloc(0), Buffer.alloc(0))
  }, 'should validate input length')

  t.end()
})

tape('crypto_sign', function (t) {
  var pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)

  sodium.crypto_sign_keypair(pk, sk)

  var message = Buffer.from('Hello, World!')
  var signedMessage = Buffer.alloc(message.length + sodium.crypto_sign_BYTES)

  sodium.crypto_sign(signedMessage, message, sk)

  t.same(signedMessage.slice(-message.length), message, 'contains message')

  var output = Buffer.alloc(message.length)

  t.notOk(sodium.crypto_sign_open(output, Buffer.alloc(signedMessage.length), pk), 'was not signed')
  t.ok(sodium.crypto_sign_open(output, signedMessage, pk), 'was signed')

  t.same(output, message, 'same message')
  t.end()
})

tape('crypto_sign_detached', function (t) {
  var pk = Buffer.alloc(sodium.crypto_sign_PUBLICKEYBYTES)
  var sk = Buffer.alloc(sodium.crypto_sign_SECRETKEYBYTES)

  sodium.crypto_sign_keypair(pk, sk)

  var message = Buffer.from('Hello, World!')
  var signature = Buffer.alloc(sodium.crypto_sign_BYTES)

  sodium.crypto_sign_detached(signature, message, sk)

  t.notOk(sodium.crypto_sign_verify_detached(Buffer.concat([Buffer.alloc(1), signature]), message, pk), 'was not signed')
  t.ok(sodium.crypto_sign_verify_detached(signature, message, pk), 'was signed')

  t.end()
})

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


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