Skip to content

First stable version with all ciphers

Compare
Choose a tag to compare
@TheMatjaz TheMatjaz released this 21 May 17:31
· 169 commits to master since this release

Modified

  • Breaking change from previous versions: removed total_output_len
    parameters from the functions

    • ascon_aead*_encrypt()
    • ascon_aead*_decrypt()
    • ascon_aead*_encrypt_final()
    • ascon_aead*_decrypt_final()
      and from the ascon_bufstate_t struct, making it 8 B smaller.
      Why? TL;DR it's redundant.

    The reasoning is that the user of the first two (offline processing)
    already knows the length of the plaintext/ciphertext; the user of the second
    two obtains the length of the processed chunks as return values so they
    can simply sum the up - and anyhow the user known the length of all the
    chunks provided to the cipher; those could be summed up to. In most of the
    cases the argument was NULL in the function usage. For details on how to
    obtain the total length, the example in the Readme should suffice.

  • Renamed all files in src so they start with ascon_.

Fixed

  • Added more tests to cover more branching cases of the online-buffering
    algorithm.
  • Removal of some minor warnings after inspection with static analyser
    (scan-build) and CLion code inspection tool.
  • Typos
  • Added missing Known limitations paragraphs to the previous releases
    in this Changelog.

Known limitations

  • Because LibAscon is implemented with reuse of existing functions in mind,
    in order to spare on code size and with the Init-Update-Digest paradigm,
    which has some internal buffering, the cipher is about 4x slower than the
    reference implementation (ref).
  • There is no architecture-specific optimisation, only a generic portable
    implementation using mostly uint64_t data types.