Skip to content

Many implementations don't work on big-endian systems #25

Description

@spth

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions