Skip to content

Commit 1d6c465

Browse files
committed
ci,crypto.ed25519: fix flakyness (~0.1% failure rate) for vlib/crypto/ed25519/internal/edwards25519/element_test.v
1 parent 97f5b89 commit 1d6c465

1 file changed

Lines changed: 8 additions & 5 deletions

File tree

vlib/crypto/ed25519/internal/edwards25519/element_test.v

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -356,8 +356,8 @@ fn test_consistency_between_mult_and_square() {
356356

357357
// to_big_integer returns v as a big.Integer.
358358
fn (mut v Element) to_big_integer() big.Integer {
359-
buf := v.bytes()
360-
return big.integer_from_bytes(buf)
359+
mut buf := v.bytes()
360+
return big.integer_from_bytes(swap_endianness(mut buf))
361361
}
362362

363363
// from_big_integer sets v = n, and returns v. The bit length of n must not exceed 256.
@@ -366,8 +366,10 @@ fn (mut v Element) from_big_integer(n big.Integer) !Element {
366366
return error('invalid edwards25519 element input size')
367367
}
368368
mut bytes, _ := n.bytes()
369-
swap_endianness(mut bytes) // SHOULD I SWAP IT?
370-
v.set_bytes(bytes)!
369+
mut padded := []u8{len: 32}
370+
copy(mut padded[32 - bytes.len..], bytes)
371+
swap_endianness(mut padded) // convert big-endian integer bytes to little-endian element bytes
372+
v.set_bytes(padded)!
371373

372374
return v
373375
}
@@ -396,7 +398,8 @@ fn test_bytes_big_equivalence() {
396398
mut buf := []u8{len: 32} // pad with zeroes
397399
fedtobig := fe1.to_big_integer()
398400
mut fedbig_bytes, _ := fedtobig.bytes()
399-
copy(mut buf, fedbig_bytes) // does not need to do swap_endianness
401+
copy(mut buf[32 - fedbig_bytes.len..], fedbig_bytes)
402+
swap_endianness(mut buf)
400403

401404
assert fe.bytes() == buf && is_in_bounds(fe) && is_in_bounds(fe1)
402405
// assert big_equivalence(inp, fe, fe1) == true

0 commit comments

Comments
 (0)