diff --git a/vlib/crypto/rand/rand_test.v b/vlib/crypto/rand/rand_test.v index d4913f38b9..b1edad268d 100644 --- a/vlib/crypto/rand/rand_test.v +++ b/vlib/crypto/rand/rand_test.v @@ -29,13 +29,13 @@ fn test_crypto_rand_read() { assert diff_percentage <= max_percentage_diff } -fn test_crypto_rand_read_u64() { +fn test_crypto_rand_int_u64() { max := u64(200) - r1 := rand.read_u64(max) or { + r1 := rand.int_u64(max) or { assert false return } - r2 := rand.read_u64(max) or { + r2 := rand.int_u64(max) or { assert false return } diff --git a/vlib/crypto/rand/utils.v b/vlib/crypto/rand/utils.v index 7e7be7c36b..1f20f272ea 100644 --- a/vlib/crypto/rand/utils.v +++ b/vlib/crypto/rand/utils.v @@ -9,10 +9,7 @@ import( encoding.binary ) -pub fn read_u64(max u64) u64? { - if max <= u64(0) { - return error('crypto.rand: argument to read_u64 is <= 0') - } +pub fn int_u64(max u64) u64? { // bitlen := int(math.floor(math.log2(f64(max))+1)) bitlen := int(math.floor(math.log(f64(max))/math.log(2)) + 1) if bitlen == 0 { @@ -31,12 +28,10 @@ pub fn read_u64(max u64) u64? { bytes[0] &= byte(int(u64(1)< 1 { - n = u64(u32(x[1])< 1 { + // n = u64(u32(x[1])<= 8; k++ { - z[k] = binary.big_endian_u64(b.slice(i-8, i)) - i -= 8 + for k := 0; i >= ws; k++ { + z[k] = binary.big_endian_u64(b.slice(i-ws, i)) + i -= ws } if i > 0 { mut d := u64(0)