@@ -356,8 +356,8 @@ fn test_consistency_between_mult_and_square() {
356356
357357// to_big_integer returns v as a big.Integer.
358358fn (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