test
This commit is contained in:
parent
7a8626bfe0
commit
fac94c9aaf
@ -1,6 +1,7 @@
|
|||||||
/* eslint-disable camelcase */
|
/* eslint-disable camelcase */
|
||||||
const { assert } = require('nanoassert')
|
const { assert } = require('nanoassert')
|
||||||
const { randombytes_buf } = require('./randombytes')
|
const crypto = require('crypto')
|
||||||
|
const { randombytes_buf, randombytes } = require('./randombytes')
|
||||||
const {
|
const {
|
||||||
crypto_stream_chacha20_ietf,
|
crypto_stream_chacha20_ietf,
|
||||||
crypto_stream_chacha20_ietf_xor,
|
crypto_stream_chacha20_ietf_xor,
|
||||||
@ -160,7 +161,7 @@ function crypto_secretstream_xchacha20poly1305_push (state, out, m, ad, tag) {
|
|||||||
sodium_is_zero(state.nonce, crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
|
sodium_is_zero(state.nonce, crypto_secretstream_xchacha20poly1305_COUNTERBYTES)) {
|
||||||
crypto_secretstream_xchacha20poly1305_rekey(state)
|
crypto_secretstream_xchacha20poly1305_rekey(state)
|
||||||
}
|
}
|
||||||
// if (outlen_p != NULL) {
|
// if (outlen_p != NULL) {
|
||||||
// *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
|
// *outlen_p = crypto_secretstream_xchacha20poly1305_ABYTES + mlen;
|
||||||
// }
|
// }
|
||||||
return 0
|
return 0
|
||||||
@ -268,8 +269,8 @@ function xor_buf (out, _in, n) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
crypto_aead_xchacha20poly1305_ietf_ABYTES,
|
// crypto_aead_xchacha20poly1305_ietf_ABYTES,
|
||||||
crypto_secretstream_xchacha20poly1305_ABYTES,
|
// crypto_secretstream_xchacha20poly1305_ABYTES,
|
||||||
crypto_secretstream_xchacha20poly1305_keygen,
|
crypto_secretstream_xchacha20poly1305_keygen,
|
||||||
crypto_secretstream_xchacha20poly1305_init_push,
|
crypto_secretstream_xchacha20poly1305_init_push,
|
||||||
crypto_secretstream_xchacha20poly1305_init_pull,
|
crypto_secretstream_xchacha20poly1305_init_pull,
|
||||||
@ -286,3 +287,73 @@ module.exports = {
|
|||||||
crypto_secretstream_xchacha20poly1305_tag_rekey,
|
crypto_secretstream_xchacha20poly1305_tag_rekey,
|
||||||
crypto_secretstream_xchacha20poly1305_tag_final
|
crypto_secretstream_xchacha20poly1305_tag_final
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// test
|
||||||
|
|
||||||
|
function memcpy (dest, src, n) {
|
||||||
|
assert(dest.length >= n && src.length >= n, 'n longer than source or destination')
|
||||||
|
for (let i = 0; i < n; i++) {
|
||||||
|
dest[i] = src[i]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function test_secretstream () {
|
||||||
|
const state = new crypto_secretstream_xchacha20poly1305_state()
|
||||||
|
const statesave = new crypto_secretstream_xchacha20poly1305_state()
|
||||||
|
// const state_copy = new crypto_secretstream_xchacha20poly1305_state()
|
||||||
|
const header = new Uint8Array(crypto_secretstream_xchacha20poly1305_HEADERBYTES)
|
||||||
|
|
||||||
|
const ad_len = crypto.randomInt(100)
|
||||||
|
const m1_len = crypto.randomInt(1000)
|
||||||
|
const m2_len = crypto.randomInt(1000)
|
||||||
|
const m3_len = crypto.randomInt(1000)
|
||||||
|
|
||||||
|
const c1 = new Uint8Array(m1_len + crypto_secretstream_xchacha20poly1305_ABYTES)
|
||||||
|
const c2 = new Uint8Array(m2_len + crypto_secretstream_xchacha20poly1305_ABYTES)
|
||||||
|
const c3 = new Uint8Array(m3_len + crypto_secretstream_xchacha20poly1305_ABYTES)
|
||||||
|
const csave = new Uint8Array((m1_len | m2_len | m3_len) + crypto_secretstream_xchacha20poly1305_ABYTES)
|
||||||
|
|
||||||
|
const ad = new Uint8Array(ad_len)
|
||||||
|
const m1 = new Uint8Array(m1_len)
|
||||||
|
const m2 = new Uint8Array(m2_len)
|
||||||
|
const m3 = new Uint8Array(m3_len)
|
||||||
|
const m1_ = new Uint8Array(m1_len)
|
||||||
|
const m2_ = new Uint8Array(m2_len)
|
||||||
|
const m3_ = new Uint8Array(m3_len)
|
||||||
|
|
||||||
|
randombytes_buf(ad, ad_len)
|
||||||
|
|
||||||
|
randombytes_buf(m1, m1_len)
|
||||||
|
memcpy(m1_, m1, m1_len)
|
||||||
|
randombytes_buf(m2, m2_len)
|
||||||
|
memcpy(m2_, m2, m2_len)
|
||||||
|
randombytes_buf(m3, m3_len)
|
||||||
|
memcpy(m3_, m3, m3_len)
|
||||||
|
|
||||||
|
const k = new Uint8Array(crypto_secretstream_xchacha20poly1305_KEYBYTES)
|
||||||
|
crypto_secretstream_xchacha20poly1305_keygen(k)
|
||||||
|
|
||||||
|
/* push */
|
||||||
|
|
||||||
|
let ret = crypto_secretstream_xchacha20poly1305_init_push(state, header, k)
|
||||||
|
assert(ret === 0, 'init_push failed')
|
||||||
|
|
||||||
|
ret = crypto_secretstream_xchacha20poly1305_push(state, c1, m1, null, 0) // how can ad be null here?
|
||||||
|
assert(ret === 0, 'push failed')
|
||||||
|
// assert(res_len == m1_len + crypto_secretstream_xchacha20poly1305_ABYTES);
|
||||||
|
|
||||||
|
ret = crypto_secretstream_xchacha20poly1305_push(state, c2, m2, ad, 0)
|
||||||
|
assert(ret === 0, 'second push failed')
|
||||||
|
|
||||||
|
ret = crypto_secretstream_xchacha20poly1305_push(state, c3, null, m3, ad, crypto_secretstream_xchacha20poly1305_TAG_FINAL)
|
||||||
|
assert(ret === 0, 'third push failed')
|
||||||
|
|
||||||
|
/* pull */
|
||||||
|
|
||||||
|
ret = crypto_secretstream_xchacha20poly1305_init_pull(state, header, k)
|
||||||
|
assert(ret === 0)
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
test_secretstream()
|
||||||
|
Loading…
Reference in New Issue
Block a user