49 Commits

Author SHA1 Message Date
Leo Vasanko
88efc4cabc Update pyproject, bump version. v0.3.1 2025-11-09 20:41:40 -06:00
Leo Vasanko
04b11e9925 README tuning. New benchmark results (a bit slower than initial versions were). 2025-11-09 20:40:04 -06:00
Leo Vasanko
d8a9a7ee9d Use a much faster method to wipe buffers. 2025-11-09 20:38:28 -06:00
Leo Vasanko
f5430a6ad4 Cleanup. 2025-11-09 20:00:12 -06:00
Leo Vasanko
f84ef727d3 Bump version v0.3.0 2025-11-09 09:47:08 -06:00
Leo Vasanko
bb9d11842a Convert all input buffers to memoryview before use and use .nbytes, because len() doesn't work correctly with some buffers. Update docs with a Numpy example. 2025-11-09 09:46:21 -06:00
Leo Vasanko
20e0ed8c5f Cleanup benchmark 2025-11-09 08:59:53 -06:00
Leo Vasanko
62fc8fa855 Make Mac class prevent further updates or final after finalisation. Keep cached values for hashlib API. 2025-11-09 08:53:50 -06:00
Leo Vasanko
67c2958384 Cleanup 2025-11-08 20:39:41 -06:00
Leo Vasanko
a6faaf9f62 Simplify implementation: remove bytes_in and bytes_out counters from all classes. 2025-11-08 20:09:26 -06:00
Leo Vasanko
75cbc76845 Wipe state structs automatically after use. Simplified aligned allocator and its use via a single handle. 2025-11-08 20:04:39 -06:00
Leo Vasanko
95563a43d1 API updates:
- Mac class follows hashlib API: digest functions added and finalization no longer modifies state.
- Encryptor and Decryptor now raise RuntimeError if still used after final.

Documentation updated with the changes and  further examples.

Tests updated with the changes, new test module for error cases (test_raises).

Docstrings improved.
2025-11-08 18:53:27 -06:00
Leo Vasanko
e58990a1c2 Add human-readable algorithm name as NAME constant. 2025-11-08 16:01:05 -06:00
Leo Vasanko
13445887e9 Constants renamed and values extracted from C code rather than function call at runtime. Documentation update. 2025-11-08 15:43:01 -06:00
Leo Vasanko
751a929836 Combine the two generator scripts into one that also reads ALIGNMENT and RATE from C sources. 2025-11-08 13:20:15 -06:00
Leo Vasanko
d4f8be69ed Bump version v0.2.0 2025-11-07 12:51:40 -06:00
Leo Vasanko
77601d7f57 README 2025-11-07 10:30:23 -06:00
Leo Vasanko
4356e57ace Move the build_backend script to tools folder. 2025-11-07 10:26:03 -06:00
Leo Vasanko
5e19bd980e Documentation updates, added BUILD.md 2025-11-07 10:20:27 -06:00
Leo Vasanko
63ccef577d Use uv in the commands. 2025-11-07 10:00:36 -06:00
Leo Vasanko
555bbcf2a5 README formatting 2025-11-07 09:59:20 -06:00
Leo Vasanko
1dcdafa008 util.nonce_increment and util.wipe functions, also exported by each module for convenience. 2025-11-07 09:53:39 -06:00
Leo Vasanko
96ce7867de README updated 2025-11-07 09:52:28 -06:00
Leo Vasanko
b15174af8b Make random_key and random_nonce return bytearray, and add a nonce_increment utility function. 2025-11-07 07:43:33 -06:00
Leo Vasanko
02eb4d7718 README 2025-11-06 21:11:38 -06:00
Leo Vasanko
1b4d43a448 Do not return True from MAC verify function on success. 2025-11-06 21:11:24 -06:00
Leo Vasanko
a8947c23b3 Add random_key and random_nonce functions to each submodule. Update docstrings to show the correct lengths for keys and nonces. 2025-11-06 20:03:56 -06:00
Leo Vasanko
2677df3bde Remove examples folder, keep benchmark as pyaegis.benchmark that becomes part of the install. 2025-11-06 19:55:51 -06:00
Leo Vasanko
7175654b27 API cleanup for simplified update/final. Returns bytearrays when into is not used. Allows into buffers larger than needed. Misc other changes. 2025-11-06 19:38:18 -06:00
Leo Vasanko
46dff56e28 Cleanup. 2025-11-06 19:36:43 -06:00
Leo Vasanko
fc76bc4280 More informative build error message when Zig is not installed. 2025-11-06 17:04:03 -06:00
Leo Vasanko
9f2b931a0b Another approach to use zig build with setuptools. 2025-11-06 16:56:39 -06:00
Leo Vasanko
fbf9c944e6 Include zig build in the build process. 2025-11-06 16:43:54 -06:00
Leo Vasanko
f8cc02eb41 Switch from hatch to setuptools/CFFI build to produce wheels correctly. 2025-11-06 16:34:32 -06:00
Leo Vasanko
fd24bb02f8 Test cleanup, remove debug. 2025-11-06 16:33:51 -06:00
Leo Vasanko
285f11299e Remove Encryptor.final_detached(), as final() handles both cases identically (only returns MAC). 2025-11-06 16:33:04 -06:00
Leo Vasanko
3248fccbac The update functions of libaegis now return the same number of bytes that went in. Update the binding accordingly. 2025-11-06 16:27:48 -06:00
Leo Vasanko
17a5f45394 Add comments to generated files saying how they are generated. 2025-11-06 15:31:29 -06:00
Leo Vasanko
d43a22bc6c Build cleanup, pathname reorganisation, cdef to repository (although generated with gen_cdef.py). 2025-11-06 15:23:30 -06:00
Leo Vasanko
c8fe16d21f Add .gitignore 2025-11-06 10:52:23 -06:00
Leo Vasanko
ea066e101d Add libaegis submodule 2025-11-06 10:51:32 -06:00
Leo Vasanko
42ddaac6bc Rename module to pyaegis, implement build with zig. 2025-11-06 10:47:54 -06:00
Leo Vasanko
8898cec50f Add pytest dev dependency. 2025-11-06 08:20:23 -06:00
Leo Vasanko
3579b94e83 Add tests for all functions of each algorithm against AEGIS test vectors (JSON). Incremental updates are tested with randomized splits to catch a variety of errors. 2025-11-06 07:56:12 -06:00
Leo Vasanko
bcf4655f64 Precise update output length calculation to allocate exactly sized buffers. 2025-11-06 07:45:15 -06:00
Leo Vasanko
438627e0db Add helper function for calculating the incremental update output buffer size. Add bytes_in and bytes_out counters on the incremental classes. Avoid ERANGE errors caused by too small output buffer. 2025-11-05 15:13:46 -06:00
Leo Vasanko
02310675b7 Make key, nonce the first arguments (in this order), require kwargs past the initial few positional arguments. Add ALIGNMENT constant to each module. Add a script to generate all other modules from aegis256x4.py. 2025-11-04 21:02:29 -06:00
Leo Vasanko
6ceb2971fa Cleanup 2025-11-04 18:40:22 -06:00
Leo Vasanko
7541d9d837 Initial commit 2025-11-04 18:14:07 -06:00