I noticed that many Ascon implementations here work on little-endian systems, but not on big-endian systems. I looked into crypto_aead and crypto_hash to add some Ascon cryptography to the test suite of the Small Device C Compiler (SDCC). Unsurprisingly, I got failures (fine, after all the point of that was to improve SDCC). But after a while I noticed that apparently nearly everything fails for big-endian targets. To check if that is due to SDCC bugs specific to the endianness-handling code, I also tested on a big-endian Debian GNU/Linux host, and found that both my tests, and the self-test from this repository fail there.
Thus I assume that the endianness handling in many implementations here is broken. In particular, the implementation "ref" works fine (for both Ascon-AEAD128 and Ascon-Hash256, while apparently implementations that use a lendian.h fail.
I've attached LastTest.log from a Debian GNU/Linux on ppc64 machine. We can see that the test failed for bi32, bi32_lowsize, bi32_lowreg, opt8, opt8_lowsize, bi8. LastTest.log
Using SDCC I had tried ref, opt32_lowsize, opt8, bi8, opt8_lowsize, and I see all of them except for ref fail my test (just your test vector 333 for Ascon-AEAD128 and your test vector 42 for Ascon-Hash256) on big-endian targets.
I noticed that many Ascon implementations here work on little-endian systems, but not on big-endian systems. I looked into crypto_aead and crypto_hash to add some Ascon cryptography to the test suite of the Small Device C Compiler (SDCC). Unsurprisingly, I got failures (fine, after all the point of that was to improve SDCC). But after a while I noticed that apparently nearly everything fails for big-endian targets. To check if that is due to SDCC bugs specific to the endianness-handling code, I also tested on a big-endian Debian GNU/Linux host, and found that both my tests, and the self-test from this repository fail there.
Thus I assume that the endianness handling in many implementations here is broken. In particular, the implementation "ref" works fine (for both Ascon-AEAD128 and Ascon-Hash256, while apparently implementations that use a lendian.h fail.
I've attached LastTest.log from a Debian GNU/Linux on ppc64 machine. We can see that the test failed for bi32, bi32_lowsize, bi32_lowreg, opt8, opt8_lowsize, bi8. LastTest.log
Using SDCC I had tried ref, opt32_lowsize, opt8, bi8, opt8_lowsize, and I see all of them except for ref fail my test (just your test vector 333 for Ascon-AEAD128 and your test vector 42 for Ascon-Hash256) on big-endian targets.