vdk bitstring testing
This commit is contained in:
+4
-4
@@ -60,7 +60,7 @@ strong_rand_bytes
|
||||
: Uint8Array
|
||||
{
|
||||
let arr = new Uint8Array(how_many);
|
||||
Crypto.getRandomValues(arr);
|
||||
(new Crypto()).getRandomValues(arr);
|
||||
return arr;
|
||||
}
|
||||
|
||||
@@ -243,8 +243,8 @@ bits_concat
|
||||
: bits
|
||||
{
|
||||
let result_bit_length : number = bits1.bit_length + bits2.bit_length;
|
||||
let bytes1 : number = bits1.bytes;
|
||||
let bytes2 : number = bits2.bytes;
|
||||
let bytes1 : Uint8Array = bits1.bytes;
|
||||
let bytes2 : Uint8Array = bits2.bytes;
|
||||
// using zeros here because of our xor trick in a minute
|
||||
let result_bits : bits = bits_zeros(result_bit_length);
|
||||
let result_bytes : Uint8Array = result_bits.bytes;
|
||||
@@ -261,7 +261,7 @@ bits_concat
|
||||
// next
|
||||
// we need to calculate the left-shift offset
|
||||
// this will be 8 - (bytes1.bit_length % 8)
|
||||
let num_trailing_zeros_in_first_array : number = 8 - (bytes1.bit_length % 8);
|
||||
let num_trailing_zeros_in_first_array : number = 8 - (bits1.bit_length % 8);
|
||||
// so
|
||||
// bytes1: ABCD_EF00
|
||||
// bytes2: GH12_3000
|
||||
|
||||
@@ -79,12 +79,13 @@ decode
|
||||
|
||||
// at this point, we can assume we correctly decoded all words
|
||||
// compute the check byte
|
||||
let computed_check_word : string = check_word(computed_bytes);
|
||||
let computed_bytes_u8s : Uint8Array = new Uint8Array(computed_bytes);
|
||||
let computed_check_word : string = check_word(computed_bytes_u8s);
|
||||
|
||||
// check if it is correct
|
||||
// if so, return the computed bytes
|
||||
if (computed_check_word === input_check_word)
|
||||
return safe.ok(new Uint8Array(computed_bytes));
|
||||
return safe.ok(computed_bytes_u8s);
|
||||
// otherwise, return an error
|
||||
else
|
||||
return safe.error('checksum failure! computed check word: ' + computed_check_word + '; input check word: ' + input_check_word);
|
||||
@@ -100,7 +101,7 @@ byte_of_word
|
||||
(word: string)
|
||||
: safe.Safe<number, string>
|
||||
{
|
||||
for (let i=0; i<=255, i++)
|
||||
for (let i=0; i<=255; i++)
|
||||
{
|
||||
if (word === words[i])
|
||||
return safe.ok(i);
|
||||
@@ -138,7 +139,7 @@ check_byte
|
||||
|
||||
|
||||
|
||||
words = [
|
||||
let words = [
|
||||
"able",
|
||||
"abuse",
|
||||
"acquire",
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
-module(bits).
|
||||
|
||||
-compile([export_all, nowarn_export_all]).
|
||||
|
||||
|
||||
empty() ->
|
||||
<<>>.
|
||||
|
||||
rand_bit() ->
|
||||
case rand:uniform(2) of
|
||||
1 -> <<0:1>>;
|
||||
2 -> <<1:1>>
|
||||
end.
|
||||
|
||||
rand_bits(N) when N =< 8 ->
|
||||
<<Foo:N, _/bits>> = rand:bytes(1),
|
||||
<<Foo:N>>.
|
||||
rand_bits(N) when N > 8 ->
|
||||
Num_Bytes = N div 8,
|
||||
Num_Trailing_Bits = N rem 8,
|
||||
<<( rand_bits(Num_Trailing_Bits) )/bits,
|
||||
( rand:bytes(Num_Bytes) )/binary>>.
|
||||
|
||||
@@ -27,10 +27,6 @@
|
||||
<h5>Failed case log:</h5>
|
||||
<pre id="rlp-assershins"></pre>
|
||||
|
||||
<h1>Tx Decoding</h1>
|
||||
<input style="width: 800px;" type="text" id="tx-stuff" value="tx_+FgMAaEByWN+RgDnqzvC5n/GQOgjdkRE9DBV2l1VeKSaN1r6GNyhAXtm5sMFBwg25Ol5IFI9w+pZy7/YbFi6BwPqi80KuKdsCoYPJvVhyAAACYdoYWluYW5hA7ZC1w=="></input>
|
||||
<button id="tx-go">Go!</button>
|
||||
|
||||
|
||||
<script type="module" src="dist/test.js"></script>
|
||||
</body>
|
||||
|
||||
@@ -5,7 +5,6 @@ import * as cases from './jex_include/local-vanillae_test_cases-0.1.0/dist/cases
|
||||
import * as b64 from './jex_include/local-vanillae-0.1.0/dist/b64.js';
|
||||
import * as b58 from './jex_include/local-vanillae-0.1.0/dist/b58.js';
|
||||
import * as rlp from './jex_include/local-vanillae-0.1.0/dist/rlp.js';
|
||||
import * as ser from './jex_include/local-vanillae-0.1.0/dist/ser.js';
|
||||
|
||||
|
||||
// TODO: move this to rlp library
|
||||
@@ -201,12 +200,6 @@ function rlp_tests(): void {
|
||||
}
|
||||
|
||||
|
||||
function tx_tests(): void {
|
||||
// @ts-ignore value exists
|
||||
let tx_stuff = document.getElementById('tx-stuff')!.value;
|
||||
console.log(ser.decode_tx(tx_stuff));
|
||||
}
|
||||
|
||||
|
||||
function main(): void {
|
||||
document.getElementById('b64-total-cases')!.innerHTML = '' + cases.base64.length;
|
||||
@@ -217,8 +210,6 @@ function main(): void {
|
||||
|
||||
document.getElementById('rlp-total-cases')!.innerHTML = '' + cases.rlp.length;
|
||||
document.getElementById('rlp-go')!.onclick = rlp_tests;
|
||||
|
||||
document.getElementById('tx-go')!.onclick = tx_tests;
|
||||
}
|
||||
|
||||
main();
|
||||
|
||||
Reference in New Issue
Block a user