zig/lib/std/crypto
Frank Denis ea05223b63
std.crypto.auth: add AEGIS MAC (#13607)
* Update the AEGIS specification URL to the current draft

* std.crypto.auth: add AEGIS MAC

The Pelican-based authentication function of the AEGIS construction
can be used independently from authenticated encryption, as a faster
and more secure alternative to GHASH/POLYVAL/Poly1305.

We already expose GHASH, POLYVAL and Poly1305 for use outside AES-GCM
and ChaChaPoly, so there are no reasons not to expose the MAC from AEGIS
as well.

Like other 128-bit hash functions, finding a collision only requires
~2^64 attempts or inputs, which may still be acceptable for many
practical applications.

Benchmark (Apple M1):

    siphash128-1-3:       3222 MiB/s
             ghash:       8682 MiB/s
    aegis-128l mac:      12544 MiB/s

Benchmark (Zen 2):

    siphash128-1-3:       4732 MiB/s
             ghash:       5563 MiB/s
    aegis-128l mac:      19270 MiB/s
2022-11-22 18:16:04 +01:00
..
25519 ed25519: recommend using the seed to recover a key pair 2022-11-01 07:26:32 +01:00
aes crypto.core.aes: process 6 block in parallel instead of 8 on aarch64 (#13473) 2022-11-07 12:28:37 +01:00
pcurves std.crypto.ecc: add support for the secp256k1 curve (#11880) 2022-06-29 15:11:33 +02:00
aegis.zig std.crypto.auth: add AEGIS MAC (#13607) 2022-11-22 18:16:04 +01:00
aes.zig std: break up some long lines 2022-01-28 16:23:47 -07:00
aes_gcm.zig crypto.AesGcm: provision ghash for the final block 2022-11-11 18:04:22 +01:00
aes_ocb.zig stage2+stage1: remove type parameter from bit builtins 2022-08-22 11:19:20 +03:00
argon2.zig std.crypto: fix invalid pass by value 2022-06-20 15:11:22 +03:00
bcrypt.zig crypto.bcrypt: fix massive speed regression when using stage2 (#13518) 2022-11-14 16:37:19 +01:00
benchmark.zig std.crypto.auth: add AEGIS MAC (#13607) 2022-11-22 18:16:04 +01:00
blake2.zig
blake3.zig std: avoid vector usage with the C backend 2022-11-01 20:38:37 -04:00
chacha20.zig replace other uses of std.meta.Vector with @Vector (#11346) 2022-03-30 14:12:14 -04:00
ecdsa.zig std.sign.ecdsa: add support for incremental signatures (#13332) 2022-10-28 16:25:37 +02:00
errors.zig
ghash_polyval.zig Add the POLYVAL universal hash function 2022-11-20 18:13:19 -05:00
gimli.zig std: avoid vector usage with the C backend 2022-11-01 20:38:37 -04:00
hash_composition.zig std.crypto.hash: allow creating hash functions from compositions (#11965) 2022-07-01 11:37:41 +02:00
hkdf.zig
hmac.zig
isap.zig
md5.zig
modes.zig
pbkdf2.zig
phc_encoding.zig std.fmt: require specifier for unwrapping ?T and E!T 2022-07-26 11:25:49 -07:00
poly1305.zig
salsa20.zig crypto.salsa20: make the number of rounds a comptime parameter (#13442) 2022-11-06 23:52:41 +01:00
scrypt.zig std.mem: add first method to SplitIterator and SplitBackwardsIterator 2022-07-25 22:04:30 +03:00
sha1.zig
sha2.zig std.crypto: Use featureSetHas to gate intrinsics 2022-10-28 17:17:08 -07:00
sha3.zig std: update tests to stage2 semantics 2022-06-03 20:21:20 +03:00
siphash.zig Fixes comptime 'error: cannot assign to constant' error in siphash. 2022-05-16 22:31:09 -04:00
test.zig
tlcsprng.zig stage1, stage2: rename c_void to anyopaque (#10316) 2021-12-19 00:24:45 -05:00
utils.zig replace other uses of std.meta.Vector with @Vector (#11346) 2022-03-30 14:12:14 -04:00
xoodoo.zig crypto: add the Xoodoo permutation, prepare for Gimli deprecation (#11866) 2022-07-01 13:18:08 +02:00