Adds a type alias for Ascon nonces, set to `[u8; 16]`.
From the Ascon paper section 2.4:
https://link.springer.com/article/10.1007/s00145-021-09398-9
> The 320-bit initial state of Ascon is formed by the secret key K of
> k bits and nonce N of 128 bits
- Adds a type alias for Ascon keys (16-byte)
- Stores key internally in `struct Ascon` so it doesn't need to be
passed separately to `Ascon::finalize`.
The build is failing because `keccak` has a very old MSRV of 1.41, which
after merging #40 (which bumped the `ascon` edition to 2021) broke the
build because it can't handle the `edition` key.
As a workaround, this excludes `keccak` from the toplevel workspace so
it doesn't try to read the `ascon` edition key.
Separately, we should probably bump the `keccak` edition to 2021 as well
and release `keccak` v0.2.0, but that is left for future work.
Adds a struct which wraps the permutation state, using const generics as
well as `feature(const_generics_defaults)` to express the `A`/`B`
parameters for `Ascon(a,b)`.
The permutation does not have any `std`/`alloc` dependency.
The current AEAD interface requires `alloc` (though we should migrate it
to use the `aead` crate anyway).
- Bumps the crate's edition to 2018, which is MSRV-compatible
- Adds a more expansive set of lints
- Adds the `missing_docs` lint, and adds docs where missing
- Bumps the crate's edition to 2018, which is MSRV-compatible.
- Adds a more expansive set of lints
- Adds the `missing_docs` lint, and adds docs where missing
- Fixes tests on ARMv8
Imports the source code of the `ascon` crate originally from:
https://github.com/quininer/ascon
Code is imported as of this commit:
commit 997e51ff0cad48510ad31934f9c361d25bf5f938
Author: quininer kel <quininer@live.com>
Date: Mon Feb 20 09:52:28 2017 +0800
refactor: remove no_std
- Formatted code using rustfmt 1.5.1-stable (d5a82bbd 2023-02-07)
- Fixed clippy nits from clippy 0.1.67 (d5a82bbd 2023-02-07)
Dual licensed as Apache 2.0 + MIT
Permission given here:
https://github.com/RustCrypto/sponges/pull/30#discussion_r1103554334
Co-authored-by: quininer kel <quininer@live.com>
Gates `asm` support under a crate feature.
Uses the `cpufeatures` crate to detect the presence of the `sha3`
extension for ARMv8 CPUs, automatically falling back to a software
implementation if it isn't available.
When the `asm` feature is enabled on `aarch64` targets, exposes
`f1600_asm` that relies on ARMv8 `sha3` hardware intrinsics.
`packed_simd_2` no longer builds on nightly:
https://github.com/rust-lang/packed_simd/issues/343
This commit pins the nightly version for now, and disables the
`minimal-versions` check since it's not customizable and requires the
latest nightly.