From 87be38faa6bd343155eba30523e657ac8b3e600d Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:16:45 +0100 Subject: [PATCH 01/17] Fix clippy + .gitignore update --- .gitignore | 3 +++ mla/src/layers/compress.rs | 3 +-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 13969af1..8525d342 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,6 @@ debug/ debugs/ target/ + +# cargo lock file +Cargo.lock \ No newline at end of file diff --git a/mla/src/layers/compress.rs b/mla/src/layers/compress.rs index efd7cea4..09b0eb9f 100644 --- a/mla/src/layers/compress.rs +++ b/mla/src/layers/compress.rs @@ -478,9 +478,8 @@ impl WriterWithCount { impl Write for WriterWithCount { fn write(&mut self, buf: &[u8]) -> io::Result { - self.inner.write(buf).map(|i| { + self.inner.write(buf).inspect(|&i| { self.pos += i as u32; - i }) } From 6bc137463a64ece52564d3299079a05f3ee18f2d Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:30:26 +0100 Subject: [PATCH 02/17] CI: launch tests on all PR --- .github/workflows/py-bindings.yml | 2 +- .github/workflows/sanitize.yml | 2 +- .github/workflows/test.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/py-bindings.yml b/.github/workflows/py-bindings.yml index 8db03785..3bc0a324 100644 --- a/.github/workflows/py-bindings.yml +++ b/.github/workflows/py-bindings.yml @@ -9,7 +9,7 @@ on: push: branches: [ master ] pull_request: - branches: [ master ] + permissions: contents: read diff --git a/.github/workflows/sanitize.yml b/.github/workflows/sanitize.yml index 20700d18..c93e5d90 100644 --- a/.github/workflows/sanitize.yml +++ b/.github/workflows/sanitize.yml @@ -7,7 +7,7 @@ on: push: branches: [ master ] pull_request: - branches: [ master ] + env: CARGO_TERM_COLOR: always diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 025c9ff7..1060b559 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -7,7 +7,7 @@ on: push: branches: [ master ] pull_request: - branches: [ master ] + env: CARGO_TERM_COLOR: always From 950813a13906f350631b360e2b392e461399e53f Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:47:41 +0100 Subject: [PATCH 03/17] Update to latest pyO3 release --- bindings/python/Cargo.toml | 2 +- bindings/python/src/lib.rs | 64 ++++++++++++++++++++------------------ 2 files changed, 34 insertions(+), 32 deletions(-) diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml index a21f1908..7451456e 100644 --- a/bindings/python/Cargo.toml +++ b/bindings/python/Cargo.toml @@ -19,7 +19,7 @@ name = "pymla" crate-type = ["cdylib"] [dependencies] -pyo3 = "0" +pyo3 = {version = "0", features = ["gil-refs"]} mla = { version = "1", features = ["send"], path = "../../mla"} x25519-dalek = "2" curve25519-parser = { path = "../../curve25519-parser", version = "0.4" } diff --git a/bindings/python/src/lib.rs b/bindings/python/src/lib.rs index 1b3525c1..3d6a71ce 100644 --- a/bindings/python/src/lib.rs +++ b/bindings/python/src/lib.rs @@ -639,7 +639,7 @@ macro_rules! check_mode { impl MLAFile { #[new] #[pyo3(signature = (path, mode="r", config=None))] - fn new(path: &str, mode: &str, config: Option<&PyAny>) -> Result { + fn new(path: &str, mode: &str, config: Option<&Bound<'_, PyAny>>) -> Result { match mode { "r" => { let rconfig = match config { @@ -807,11 +807,13 @@ impl MLAFile { slf } + // cf. https://pyo3.rs/v0.22.5/function/signature + #[pyo3(signature = (exc_type=None, _exc_value=None, _traceback=None))] fn __exit__( &mut self, - exc_type: Option<&PyAny>, - _exc_value: Option<&PyAny>, - _traceback: Option<&PyAny>, + exc_type: Option<&Bound<'_, PyAny>>, + _exc_value: Option<&Bound<'_, PyAny>>, + _traceback: Option<&Bound<'_, PyAny>>, ) -> Result { if exc_type.is_some() { // An exception occured, let it be raised again @@ -834,7 +836,7 @@ impl MLAFile { // Purpose: only one import #[classattr] fn _buffered_type(py: Python) -> Result<&PyType, WrappedError> { - Ok(py.import("io")?.getattr("BufferedIOBase")?.extract()?) + Ok(py.import_bound("io")?.getattr("BufferedIOBase")?.extract()?) } /// Write an archive file to @dest, which can be: @@ -857,7 +859,7 @@ impl MLAFile { &mut self, py: Python, key: &str, - dest: &PyAny, + dest: &Bound<'_, PyAny>, chunk_size: usize, ) -> Result<(), WrappedError> { let reader = check_mode!(mut self, Read); @@ -871,7 +873,7 @@ impl MLAFile { // `/path/to/dest` let mut output = std::fs::File::create(dest.to_string())?; io::copy(&mut archive_file.unwrap().data, &mut output)?; - } else if dest.is_instance(py.get_type::().getattr("_buffered_type")?)? { + } else if dest.is_instance(&py.get_type_bound::().getattr("_buffered_type")?)? { // isinstance(dest, io.BufferedIOBase) // offer `.write` (`.close` must be called from the caller) @@ -912,7 +914,7 @@ impl MLAFile { &mut self, py: Python, key: &str, - src: &PyAny, + src: &Bound<'_, PyAny>, chunk_size: usize, ) -> Result<(), WrappedError> { let writer = check_mode!(mut self, Write); @@ -922,7 +924,7 @@ impl MLAFile { // `/path/to/src` let mut input = std::fs::File::open(src.to_string())?; writer.add_file(key, input.metadata()?.len(), &mut input)?; - } else if src.is_instance(py.get_type::().getattr("_buffered_type")?)? { + } else if src.is_instance(&py.get_type_bound::().getattr("_buffered_type")?)? { // isinstance(src, io.BufferedIOBase) // offer `.read` (`.close` must be called from the caller) @@ -953,7 +955,7 @@ impl MLAFile { /// Instanciate the Python module #[pymodule] #[pyo3(name = "mla")] -fn pymla(py: Python, m: &PyModule) -> PyResult<()> { +fn pymla(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { // Classes m.add_class::()?; m.add_class::()?; @@ -963,41 +965,41 @@ fn pymla(py: Python, m: &PyModule) -> PyResult<()> { m.add_class::()?; // Exceptions - m.add("MLAError", py.get_type::())?; - m.add("WrongMagic", py.get_type::())?; - m.add("UnsupportedVersion", py.get_type::())?; - m.add("InvalidECCKeyFormat", py.get_type::())?; + m.add("MLAError", py.get_type_bound::())?; + m.add("WrongMagic", py.get_type_bound::())?; + m.add("UnsupportedVersion", py.get_type_bound::())?; + m.add("InvalidECCKeyFormat", py.get_type_bound::())?; m.add( "WrongBlockSubFileType", - py.get_type::(), + py.get_type_bound::(), )?; - m.add("UTF8ConversionError", py.get_type::())?; - m.add("FilenameTooLong", py.get_type::())?; + m.add("UTF8ConversionError", py.get_type_bound::())?; + m.add("FilenameTooLong", py.get_type_bound::())?; m.add( "WrongArchiveWriterState", - py.get_type::(), + py.get_type_bound::(), )?; - m.add("WrongReaderState", py.get_type::())?; - m.add("WrongWriterState", py.get_type::())?; - m.add("RandError", py.get_type::())?; - m.add("PrivateKeyNeeded", py.get_type::())?; + m.add("WrongReaderState", py.get_type_bound::())?; + m.add("WrongWriterState", py.get_type_bound::())?; + m.add("RandError", py.get_type_bound::())?; + m.add("PrivateKeyNeeded", py.get_type_bound::())?; m.add( "DeserializationError", - py.get_type::(), + py.get_type_bound::(), )?; - m.add("SerializationError", py.get_type::())?; - m.add("MissingMetadata", py.get_type::())?; - m.add("BadAPIArgument", py.get_type::())?; - m.add("EndOfStream", py.get_type::())?; - m.add("ConfigError", py.get_type::())?; - m.add("DuplicateFilename", py.get_type::())?; + m.add("SerializationError", py.get_type_bound::())?; + m.add("MissingMetadata", py.get_type_bound::())?; + m.add("BadAPIArgument", py.get_type_bound::())?; + m.add("EndOfStream", py.get_type_bound::())?; + m.add("ConfigError", py.get_type_bound::())?; + m.add("DuplicateFilename", py.get_type_bound::())?; m.add( "AuthenticatedDecryptionWrongTag", - py.get_type::(), + py.get_type_bound::(), )?; m.add( "HKDFInvalidKeyLength", - py.get_type::(), + py.get_type_bound::(), )?; // Add constants From d38c9a242cc93b38932021b609d8d79853960782 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:52:35 +0100 Subject: [PATCH 04/17] Update dependencies in workflows and improve completeness --- .github/workflows/mla_release.yml | 26 ++++---- .github/workflows/mlar_release.yml | 14 ++-- .github/workflows/py-bindings.yml | 101 ++++++++++++++++++++--------- .github/workflows/test.yml | 7 +- 4 files changed, 93 insertions(+), 55 deletions(-) diff --git a/.github/workflows/mla_release.yml b/.github/workflows/mla_release.yml index e02087c1..572e69ed 100644 --- a/.github/workflows/mla_release.yml +++ b/.github/workflows/mla_release.yml @@ -80,7 +80,7 @@ jobs: command: build args: ${{ matrix.cargo_arg }} --manifest-path=bindings/C/Cargo.toml --target=${{ matrix.target }} - name: Upload resulting 'mla' - uses: actions/upload-artifact@v2 + uses: actions/upload-artifact@v3.2.1 with: name: mla-${{ matrix.build }} path: ${{ matrix.path }} @@ -116,32 +116,32 @@ jobs: draft: true - name: Download linux-x86_64 artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mla-linux-x86_64 - name: Download windows-i686 artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mla-windows-i686 - name: Download windows-x86_64 artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mla-windows-x86_64 - name: Download windows-i686-debug artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mla-windows-i686-debug - name: Download windows-x86_64-debug artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mla-windows-x86_64-debug - name: Release Linux artifact - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -158,7 +158,7 @@ jobs: zip --junk-paths windows-x86_64-debug mla-windows-x86_64-debug/mla.dll mla-windows-x86_64-debug/mla.lib mla-windows-x86_64-debug/mla.dll.lib mla-windows-x86_64-debug/mla.pdb - name: Release windows-i686 - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -168,7 +168,7 @@ jobs: asset_name: libmla-windows-i686-${{ steps.get_version.outputs.VERSION }}.zip - name: Release windows-x86_64 - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -178,7 +178,7 @@ jobs: asset_name: libmla-windows-x86_64-${{ steps.get_version.outputs.VERSION }}.zip - name: Release windows-i686-debug - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -188,7 +188,7 @@ jobs: asset_name: libmla-windows-i686-debug-${{ steps.get_version.outputs.VERSION }}.zip - name: Release windows-x86_64-debug - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -199,7 +199,7 @@ jobs: - uses: actions/checkout@v2 - name: Release C Header file - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -209,7 +209,7 @@ jobs: asset_name: mla.h - name: Release CPP Header file - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/mlar_release.yml b/.github/workflows/mlar_release.yml index 568221f9..2f41b4c0 100644 --- a/.github/workflows/mlar_release.yml +++ b/.github/workflows/mlar_release.yml @@ -46,7 +46,7 @@ jobs: if: matrix.build == 'linux' run: strip ./target/${{ matrix.target }}/release/mlar${{ matrix.extension }} - name: Upload resulting 'mlar' - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3.2.1 with: name: mlar-${{ matrix.build }} path: ./target/${{ matrix.target }}/release/mlar${{ matrix.extension }} @@ -82,22 +82,22 @@ jobs: draft: true - name: Download Linux artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mlar-linux - name: Download Windows artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mlar-windows - name: Download MacOS artifact - uses: actions/download-artifact@v1 + uses: actions/download-artifact@v4.1.8 with: name: mlar-macos - name: Release Linux artifact - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -107,7 +107,7 @@ jobs: asset_name: mlar-linux-static-${{ steps.get_version.outputs.VERSION }} - name: Release Windows artifact - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -117,7 +117,7 @@ jobs: asset_name: mlar-windows-${{ steps.get_version.outputs.VERSION }}.exe - name: Release MacOS artifact - uses: actions/upload-release-asset@v1 + uses: actions/upload-release-asset@v1.0.2 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/py-bindings.yml b/.github/workflows/py-bindings.yml index 3bc0a324..57b9c785 100644 --- a/.github/workflows/py-bindings.yml +++ b/.github/workflows/py-bindings.yml @@ -2,107 +2,146 @@ # # maturin generate-ci github --pytest -m bindings/python/Cargo.toml # -# Using maturin v1.4.0 +# Using maturin v1.7.1 name: Py-bindings on: push: - branches: [ master ] + branches: + - master pull_request: - permissions: contents: read jobs: linux: - runs-on: ubuntu-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, x86, aarch64, armv7, s390x, ppc64le] + platform: + - runner: ubuntu-latest + target: x86_64 + - runner: ubuntu-latest + target: x86 + - runner: ubuntu-latest + target: aarch64 + - runner: ubuntu-latest + target: armv7 + - runner: ubuntu-latest + target: s390x + - runner: ubuntu-latest + target: ppc64le steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.11' - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.target }} + target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter --manifest-path bindings/python/Cargo.toml sccache: 'true' manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-linux-${{ matrix.platform.target }} path: dist - name: pytest - if: ${{ startsWith(matrix.target, 'x86_64') }} + if: ${{ startsWith(matrix.platform.target, 'x86_64') }} shell: bash run: | set -e + python3 -m venv .venv + source .venv/bin/activate pip install mla-archive --find-links dist --force-reinstall pip install pytest cd bindings/python && pytest windows: - runs-on: windows-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x64, x86] + platform: + - runner: windows-latest + target: x64 + - runner: windows-latest + target: x86 steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - python-version: '3.10' - architecture: ${{ matrix.target }} + python-version: '3.11' + architecture: ${{ matrix.platform.target }} - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.target }} + target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter --manifest-path bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-windows-${{ matrix.platform.target }} path: dist - name: pytest + if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} shell: bash run: | set -e + python3 -m venv .venv + source .venv/Scripts/activate pip install mla-archive --find-links dist --force-reinstall pip install pytest cd bindings/python && pytest macos: - runs-on: macos-latest + runs-on: ${{ matrix.platform.runner }} strategy: matrix: - target: [x86_64, aarch64] + platform: + - runner: macos-12 + target: x86_64 + - runner: macos-14 + target: aarch64 steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 with: - python-version: '3.10' + python-version: '3.11' - name: Build wheels uses: PyO3/maturin-action@v1 with: - target: ${{ matrix.target }} + target: ${{ matrix.platform.target }} args: --release --out dist --find-interpreter --manifest-path bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: - name: wheels + name: wheels-macos-${{ matrix.platform.target }} path: dist - name: pytest - if: ${{ !startsWith(matrix.target, 'aarch64') }} - shell: bash run: | set -e + python3 -m venv .venv + source .venv/bin/activate pip install mla-archive --find-links dist --force-reinstall pip install pytest cd bindings/python && pytest + sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Build sdist + uses: PyO3/maturin-action@v1 + with: + command: sdist + args: --out dist --manifest-path bindings/python/Cargo.toml + - name: Upload sdist + uses: actions/upload-artifact@v4 + with: + name: wheels-sdist + path: dist \ No newline at end of file diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1060b559..2eb3f59b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -8,7 +8,6 @@ on: branches: [ master ] pull_request: - env: CARGO_TERM_COLOR: always @@ -43,7 +42,7 @@ jobs: - name: Run tests run: cargo test --all --exclude mla-fuzz-afl --release --verbose - name: Upload resulting 'mlar' - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3.2.1 with: name: ${{ matrix.build }} path: ./target/release/mlar${{ matrix.extension }} @@ -187,8 +186,8 @@ jobs: - uses: actions-rs/toolchain@v1 with: toolchain: stable - - name: Dry-run publish curve25519-parser - run: cd curve25519-parser && cargo publish --dry-run + - name: Dry-run publish mlakey-parser + run: cd mlakey-parser && cargo publish --dry-run - name: Dry-run publish mla run: cd mla && cargo publish --dry-run - name: Dry-run publish mlar From fbd72c19fd287f2cb0719657e835bd70f01f1405 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 18:00:30 +0100 Subject: [PATCH 05/17] Fix test workflow name for key parser --- .github/workflows/test.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2eb3f59b..91be73eb 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -186,8 +186,8 @@ jobs: - uses: actions-rs/toolchain@v1 with: toolchain: stable - - name: Dry-run publish mlakey-parser - run: cd mlakey-parser && cargo publish --dry-run + - name: Dry-run publish curve25519-parser + run: cd curve25519-parser && cargo publish --dry-run - name: Dry-run publish mla run: cd mla && cargo publish --dry-run - name: Dry-run publish mlar From 37cb67fa345370e7c23e09173371e85539df6890 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Sat, 9 Nov 2024 18:01:40 +0100 Subject: [PATCH 06/17] Fix cbindgen for C++ header change --- bindings/C/mla.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/C/mla.hpp b/bindings/C/mla.hpp index b2eeb933..10c9c196 100644 --- a/bindings/C/mla.hpp +++ b/bindings/C/mla.hpp @@ -172,4 +172,4 @@ MLAStatus mla_roarchive_extract(MLAConfigHandle *config, /// Get info on an existing MLA archive MLAStatus mla_roarchive_info(MlaReadCallback read_callback, void *context, ArchiveInfo *info_out); -} // extern "C" +} // extern "C" From f0e9078c10d98862bb22cbb947e9d81f3686ce17 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Mon, 11 Nov 2024 02:28:28 +0100 Subject: [PATCH 07/17] Add all Cargo.lock --- .gitignore | 3 - Cargo.lock | 1527 ++++++++++++++++++++++++++++++++++++ bindings/python/Cargo.lock | 766 ++++++++++++++++++ 3 files changed, 2293 insertions(+), 3 deletions(-) create mode 100644 Cargo.lock create mode 100644 bindings/python/Cargo.lock diff --git a/.gitignore b/.gitignore index 8525d342..13969af1 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,3 @@ debug/ debugs/ target/ - -# cargo lock file -Cargo.lock \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock new file mode 100644 index 00000000..1df465c0 --- /dev/null +++ b/Cargo.lock @@ -0,0 +1,1527 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aead" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" +dependencies = [ + "crypto-common", + "generic-array", +] + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "aes-gcm" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "831010a0f742e1209b3bcea8fab6a8e149051ba6099432c8cb2cc117dec3ead1" +dependencies = [ + "aead", + "aes", + "cipher", + "ctr", + "ghash", + "subtle", +] + +[[package]] +name = "afl" +version = "0.15.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80bb240a3b9ff18002142c1a736e98046461d51a694d687c3e7329b456ab0fe4" +dependencies = [ + "home", + "libc", + "rustc_version", + "xdg", +] + +[[package]] +name = "aho-corasick" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" +dependencies = [ + "memchr", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "allocator-api2" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "611cc2ae7d2e242c457e4be7f97036b8ad9ca152b499f53faf99b1ed8fc2553f" + +[[package]] +name = "anes" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" + +[[package]] +name = "anstream" +version = "0.6.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "is_terminal_polyfill", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" + +[[package]] +name = "anstyle-parse" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" +dependencies = [ + "anstyle", + "windows-sys 0.59.0", +] + +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "assert_cmd" +version = "2.0.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d" +dependencies = [ + "anstyle", + "bstr", + "doc-comment", + "libc", + "predicates", + "predicates-core", + "predicates-tree", + "wait-timeout", +] + +[[package]] +name = "assert_fs" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7efdb1fdb47602827a342857666feb372712cbc64b414172bd6b167a02927674" +dependencies = [ + "anstyle", + "doc-comment", + "globwalk", + "predicates", + "predicates-core", + "predicates-tree", + "tempfile", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "bstr" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +dependencies = [ + "memchr", + "regex-automata", + "serde", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "ciborium" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" +dependencies = [ + "ciborium-io", + "ciborium-ll", + "serde", +] + +[[package]] +name = "ciborium-io" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" + +[[package]] +name = "ciborium-ll" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" +dependencies = [ + "ciborium-io", + "half", +] + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "clap" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +dependencies = [ + "clap_builder", +] + +[[package]] +name = "clap_builder" +version = "4.5.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", + "terminal_size", +] + +[[package]] +name = "clap_lex" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" + +[[package]] +name = "colorchoice" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "criterion" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" +dependencies = [ + "anes", + "cast", + "ciborium", + "clap", + "criterion-plot", + "is-terminal", + "itertools", + "num-traits", + "once_cell", + "oorandom", + "regex", + "serde", + "serde_derive", + "serde_json", + "tinytemplate", + "walkdir", +] + +[[package]] +name = "criterion-plot" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +dependencies = [ + "cast", + "itertools", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +dependencies = [ + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" +dependencies = [ + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" + +[[package]] +name = "crunchy" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "curve25519-parser" +version = "0.4.0" +dependencies = [ + "curve25519-dalek", + "der-parser", + "pem", + "rand", + "rand_core", + "sha2", + "x25519-dalek", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "difflib" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "either" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "equivalent" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" + +[[package]] +name = "errno" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "fastrand" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "filetime" +version = "0.2.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +dependencies = [ + "cfg-if", + "libc", + "libredox", + "windows-sys 0.59.0", +] + +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "glob" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" + +[[package]] +name = "globset" +version = "0.4.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" +dependencies = [ + "aho-corasick", + "bstr", + "log", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "globwalk" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf760ebf69878d9fd8f110c89703d90ce35095324d1f1edcb595c63945ee757" +dependencies = [ + "bitflags", + "ignore", + "walkdir", +] + +[[package]] +name = "half" +version = "2.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +dependencies = [ + "cfg-if", + "crunchy", +] + +[[package]] +name = "hashbrown" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", +] + +[[package]] +name = "hermit-abi" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + +[[package]] +name = "hex-literal" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + +[[package]] +name = "humansize" +version = "2.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7" +dependencies = [ + "libm", +] + +[[package]] +name = "ignore" +version = "0.4.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" +dependencies = [ + "crossbeam-deque", + "globset", + "log", + "memchr", + "regex-automata", + "same-file", + "walkdir", + "winapi-util", +] + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "is-terminal" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.52.0", +] + +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" + +[[package]] +name = "libc" +version = "0.2.162" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" + +[[package]] +name = "libm" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" + +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", + "redox_syscall", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "log" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" + +[[package]] +name = "lru" +version = "0.12.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +dependencies = [ + "hashbrown", +] + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mla" +version = "1.4.0" +dependencies = [ + "aead", + "aes", + "aes-gcm", + "bincode", + "bitflags", + "brotli", + "byteorder", + "criterion", + "ctr", + "curve25519-parser", + "digest", + "generic-array", + "ghash", + "hex", + "hex-literal", + "hkdf", + "rand", + "rand_chacha", + "serde", + "sha2", + "static_assertions", + "subtle", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "mla-bindings-c" +version = "1.0.0" +dependencies = [ + "curve25519-parser", + "mla", +] + +[[package]] +name = "mla-fuzz-afl" +version = "0.1.0" +dependencies = [ + "afl", + "bincode", + "curve25519-parser", + "mla", + "serde", +] + +[[package]] +name = "mlar" +version = "1.3.0" +dependencies = [ + "assert_cmd", + "assert_fs", + "clap", + "curve25519-parser", + "glob", + "hex", + "hkdf", + "humansize", + "lru", + "mla", + "permutate", + "rand", + "rand_chacha", + "sha2", + "tar", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "oorandom" +version = "11.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64", +] + +[[package]] +name = "permutate" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53b7d5b19a715ffab38693a9dd44b067fdfa2b18eef65bd93562dfe507022fae" + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "predicates" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e9086cc7640c29a356d1a29fd134380bee9d8f79a17410aa76e7ad295f42c97" +dependencies = [ + "anstyle", + "difflib", + "predicates-core", +] + +[[package]] +name = "predicates-core" +version = "1.0.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" + +[[package]] +name = "predicates-tree" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +dependencies = [ + "predicates-core", + "termtree", +] + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "redox_syscall" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +dependencies = [ + "aho-corasick", + "memchr", + "regex-automata", + "regex-syntax", +] + +[[package]] +name = "regex-automata" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "rustix" +version = "0.38.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "ryu" +version = "1.0.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" + +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.132" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +dependencies = [ + "itoa", + "memchr", + "ryu", + "serde", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "static_assertions" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tar" +version = "0.4.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +dependencies = [ + "filetime", + "libc", + "xattr", +] + +[[package]] +name = "tempfile" +version = "3.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +dependencies = [ + "cfg-if", + "fastrand", + "once_cell", + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "terminal_size" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +dependencies = [ + "rustix", + "windows-sys 0.59.0", +] + +[[package]] +name = "termtree" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tinytemplate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "utf8parse" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wait-timeout" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6" +dependencies = [ + "libc", +] + +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + +[[package]] +name = "xattr" +version = "1.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +dependencies = [ + "libc", + "linux-raw-sys", + "rustix", +] + +[[package]] +name = "xdg" +version = "2.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213b7324336b53d2414b2db8537e56544d981803139155afa84f76eeebb7a546" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] diff --git a/bindings/python/Cargo.lock b/bindings/python/Cargo.lock new file mode 100644 index 00000000..596f5962 --- /dev/null +++ b/bindings/python/Cargo.lock @@ -0,0 +1,766 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + +[[package]] +name = "alloc-no-stdlib" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" + +[[package]] +name = "alloc-stdlib" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +dependencies = [ + "alloc-no-stdlib", +] + +[[package]] +name = "asn1-rs" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5493c3bedbacf7fd7382c6346bbd66687d12bbaad3a89a2d2c303ee6cf20b048" +dependencies = [ + "asn1-rs-derive", + "asn1-rs-impl", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", + "thiserror", +] + +[[package]] +name = "asn1-rs-derive" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "965c2d33e53cb6b267e148a4cb0760bc01f4904c1cd4bb4002a085bb016d1490" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "asn1-rs-impl" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b18050c2cd6fe86c3a76584ef5e0baf286d038cda203eb6223df2cc413565f7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "base64" +version = "0.22.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" + +[[package]] +name = "bincode" +version = "1.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" +dependencies = [ + "serde", +] + +[[package]] +name = "bitflags" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +dependencies = [ + "serde", +] + +[[package]] +name = "block-buffer" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" +dependencies = [ + "generic-array", +] + +[[package]] +name = "brotli" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor", +] + +[[package]] +name = "brotli-decompressor" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + +[[package]] +name = "cpufeatures" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +dependencies = [ + "libc", +] + +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array", + "typenum", +] + +[[package]] +name = "ctr" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0369ee1ad671834580515889b80f2ea915f23b8be8d0daa4bbaf2ac5c7590835" +dependencies = [ + "cipher", +] + +[[package]] +name = "curve25519-dalek" +version = "4.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" +dependencies = [ + "cfg-if", + "cpufeatures", + "curve25519-dalek-derive", + "fiat-crypto", + "rustc_version", + "subtle", + "zeroize", +] + +[[package]] +name = "curve25519-dalek-derive" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "curve25519-parser" +version = "0.4.0" +dependencies = [ + "curve25519-dalek", + "der-parser", + "pem", + "rand_core", + "sha2", + "x25519-dalek", +] + +[[package]] +name = "der-parser" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cd0a5c643689626bec213c4d8bd4d96acc8ffdb4ad4bb6bc16abf27d5f4b553" +dependencies = [ + "asn1-rs", + "displaydoc", + "nom", + "num-traits", + "rusticata-macros", +] + +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "fiat-crypto" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" + +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + +[[package]] +name = "getrandom" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +dependencies = [ + "cfg-if", + "libc", + "wasi", +] + +[[package]] +name = "ghash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0d8a4362ccb29cb0b265253fb0a2728f592895ee6854fd9bc13f2ffda266ff1" +dependencies = [ + "opaque-debug", + "polyval", +] + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hkdf" +version = "0.12.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b5f8eb2ad728638ea2c7d47a21db23b7b58a72ed6a38256b8a1849f15fbbdf7" +dependencies = [ + "hmac", +] + +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[package]] +name = "indoc" +version = "2.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" + +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array", +] + +[[package]] +name = "libc" +version = "0.2.162" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" + +[[package]] +name = "memchr" +version = "2.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" + +[[package]] +name = "memoffset" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +dependencies = [ + "autocfg", +] + +[[package]] +name = "minimal-lexical" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" + +[[package]] +name = "mla" +version = "1.4.0" +dependencies = [ + "aes", + "bincode", + "bitflags", + "brotli", + "byteorder", + "ctr", + "digest", + "generic-array", + "ghash", + "hkdf", + "rand", + "rand_chacha", + "serde", + "sha2", + "subtle", + "x25519-dalek", + "zeroize", +] + +[[package]] +name = "nom" +version = "7.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" +dependencies = [ + "memchr", + "minimal-lexical", +] + +[[package]] +name = "num-traits" +version = "0.2.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" +dependencies = [ + "autocfg", +] + +[[package]] +name = "once_cell" +version = "1.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" + +[[package]] +name = "opaque-debug" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" + +[[package]] +name = "pem" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +dependencies = [ + "base64", +] + +[[package]] +name = "polyval" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d1fe60d06143b2430aa532c94cfe9e29783047f06c0d7fd359a9a51b729fa25" +dependencies = [ + "cfg-if", + "cpufeatures", + "opaque-debug", + "universal-hash", +] + +[[package]] +name = "portable-atomic" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" + +[[package]] +name = "ppv-lite86" +version = "0.2.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] + +[[package]] +name = "proc-macro2" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "pymla" +version = "0.1.0" +dependencies = [ + "curve25519-parser", + "mla", + "pyo3", + "x25519-dalek", +] + +[[package]] +name = "pyo3" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" +dependencies = [ + "cfg-if", + "indoc", + "libc", + "memoffset", + "once_cell", + "portable-atomic", + "pyo3-build-config", + "pyo3-ffi", + "pyo3-macros", + "unindent", +] + +[[package]] +name = "pyo3-build-config" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" +dependencies = [ + "once_cell", + "target-lexicon", +] + +[[package]] +name = "pyo3-ffi" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" +dependencies = [ + "libc", + "pyo3-build-config", +] + +[[package]] +name = "pyo3-macros" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" +dependencies = [ + "proc-macro2", + "pyo3-macros-backend", + "quote", + "syn", +] + +[[package]] +name = "pyo3-macros-backend" +version = "0.22.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" +dependencies = [ + "heck", + "proc-macro2", + "pyo3-build-config", + "quote", + "syn", +] + +[[package]] +name = "quote" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha", + "rand_core", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom", +] + +[[package]] +name = "rustc_version" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" +dependencies = [ + "semver", +] + +[[package]] +name = "rusticata-macros" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faf0c4a6ece9950b9abdb62b1cfcf2a68b3b67a10ba445b3bb85be2a293d0632" +dependencies = [ + "nom", +] + +[[package]] +name = "semver" +version = "1.0.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" + +[[package]] +name = "serde" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.214" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "syn" +version = "2.0.87" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "target-lexicon" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "thiserror" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "typenum" +version = "1.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" + +[[package]] +name = "unicode-ident" +version = "1.0.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" + +[[package]] +name = "unindent" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" + +[[package]] +name = "universal-hash" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc1de2c688dc15305988b563c3854064043356019f97a4b46276fe734c4f07ea" +dependencies = [ + "crypto-common", + "subtle", +] + +[[package]] +name = "version_check" +version = "0.9.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "x25519-dalek" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277" +dependencies = [ + "curve25519-dalek", + "rand_core", + "serde", + "zeroize", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" +dependencies = [ + "zeroize_derive", +] + +[[package]] +name = "zeroize_derive" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] From d6ce3033c8e785f597d66cb49f7adcc1036917c4 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:49:07 +0100 Subject: [PATCH 08/17] Add codeunits optimization for release + update eluded lifetimes according to new standard + clippy fixes --- Cargo.lock | 94 +++++++++++++++++++------------------- Cargo.toml | 1 + mla/src/config.rs | 2 +- mla/src/crypto/hash.rs | 2 +- mla/src/helpers.rs | 2 +- mla/src/layers/compress.rs | 2 +- mla/src/layers/encrypt.rs | 4 +- mla/src/lib.rs | 14 +++--- mlar/src/main.rs | 4 +- 9 files changed, 63 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 1df465c0..1d69f5ea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "aead" @@ -39,9 +39,9 @@ dependencies = [ [[package]] name = "afl" -version = "0.15.11" +version = "0.15.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80bb240a3b9ff18002142c1a736e98046461d51a694d687c3e7329b456ab0fe4" +checksum = "b784d6332a6978dd29861676de9df37aa37ed8852341db6340bd75eb82bc7a69" dependencies = [ "home", "libc", @@ -75,9 +75,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.19" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "611cc2ae7d2e242c457e4be7f97036b8ad9ca152b499f53faf99b1ed8fc2553f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "anes" @@ -265,9 +265,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "1a68f1f47cdf0ec8ee4b941b2eee2a80cb796db73118c0dd09ac63fbe405be22" dependencies = [ "memchr", "regex-automata", @@ -331,18 +331,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" +checksum = "3135e7ec2ef7b10c6ed8950f0f792ed96ee093fa088608f1c76e569722700c84" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.20" +version = "4.5.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" +checksum = "30582fc632330df2bd26877bde0c1f4470d57c582bbc070376afcd04d8cb4838" dependencies = [ "anstream", "anstyle", @@ -353,9 +353,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "f46ad14479a25103f283c0f10005961cf086d8dc42205bb44c46ac563475dca6" [[package]] name = "colorchoice" @@ -365,9 +365,9 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -556,19 +556,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "fastrand" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "fiat-crypto" @@ -667,9 +667,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.1" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a9bfc1af68b1726ea47d3d5109de126281def866b33970e10fbab11b5dafab3" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ "allocator-api2", "equivalent", @@ -783,15 +783,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "libc" -version = "0.2.162" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "libm" @@ -1017,9 +1017,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -1065,9 +1065,9 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags", ] @@ -1086,9 +1086,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1121,15 +1121,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.40" +version = "0.38.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99e4ea3e1cdc4b559b8e5650f9c8e5998e3e5c1343b4eaf034565f32318d63c0" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -1155,18 +1155,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", @@ -1175,9 +1175,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.132" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -1216,9 +1216,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.87" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -1262,9 +1262,9 @@ dependencies = [ [[package]] name = "terminal_size" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f599bd7ca042cfdf8f4512b277c02ba102247820f9d9d4a9f521f496751a6ef" +checksum = "5352447f921fda68cf61b4101566c0bdb5104eff6804d0678e5227580ab6a4e9" dependencies = [ "rustix", "windows-sys 0.59.0", @@ -1314,9 +1314,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "universal-hash" diff --git a/Cargo.toml b/Cargo.toml index 9f2a7f12..4853ff83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,5 +9,6 @@ members = [ ] [profile.release] +codegen-units = 1 opt-level = 'z' # Optimize for size. lto = true # Enable Link Time Optimization diff --git a/mla/src/config.rs b/mla/src/config.rs index bb76ea07..3862c202 100644 --- a/mla/src/config.rs +++ b/mla/src/config.rs @@ -7,7 +7,7 @@ use crate::Layers; use serde::{Deserialize, Serialize}; /// This module implements the configuration capabilities of MLA Archive - +/// /// User's configuration used to prepare an archive pub struct ArchiveWriterConfig { layers_enabled: Layers, diff --git a/mla/src/crypto/hash.rs b/mla/src/crypto/hash.rs index 16ada8ba..f13392cf 100644 --- a/mla/src/crypto/hash.rs +++ b/mla/src/crypto/hash.rs @@ -16,7 +16,7 @@ impl<'a, R: Read> HashWrapperReader<'a, R> { } } -impl<'a, R: Read> Read for HashWrapperReader<'a, R> { +impl Read for HashWrapperReader<'_, R> { /// Wrapper on inner with hash update fn read(&mut self, into: &mut [u8]) -> io::Result { let read = self.inner.read(into)?; diff --git a/mla/src/helpers.rs b/mla/src/helpers.rs index 99cebfcd..4277cf15 100644 --- a/mla/src/helpers.rs +++ b/mla/src/helpers.rs @@ -91,7 +91,7 @@ impl<'a, 'b, W: InnerWriterTrait> StreamWriter<'a, 'b, W> { } } -impl<'a, 'b, W: InnerWriterTrait> Write for StreamWriter<'a, 'b, W> { +impl Write for StreamWriter<'_, '_, W> { fn write(&mut self, buf: &[u8]) -> io::Result { self.archive .append_file_content(self.file_id, buf.len() as u64, buf)?; diff --git a/mla/src/layers/compress.rs b/mla/src/layers/compress.rs index 09b0eb9f..b84198b6 100644 --- a/mla/src/layers/compress.rs +++ b/mla/src/layers/compress.rs @@ -396,7 +396,7 @@ impl<'a, R: 'a + Read + Seek> Read for CompressionLayerReader<'a, R> { } } -impl<'a, R: Read + Seek> Seek for CompressionLayerReader<'a, R> { +impl Seek for CompressionLayerReader<'_, R> { /// Seek to the position `pos` in the uncompressed stream fn seek(&mut self, pos: SeekFrom) -> io::Result { // Seeking may instantiate a decompressor, and therefore position the diff --git a/mla/src/layers/encrypt.rs b/mla/src/layers/encrypt.rs index d1bb2b73..1cf06c2a 100644 --- a/mla/src/layers/encrypt.rs +++ b/mla/src/layers/encrypt.rs @@ -260,7 +260,7 @@ impl<'a, W: 'a + InnerWriterTrait> LayerWriter<'a, W> for EncryptionLayerWriter< } } -impl<'a, W: InnerWriterTrait> Write for EncryptionLayerWriter<'a, W> { +impl Write for EncryptionLayerWriter<'_, W> { #[allow(clippy::comparison_chain)] fn write(&mut self, buf: &[u8]) -> io::Result { if self.current_chunk_offset > CHUNK_SIZE { @@ -603,7 +603,7 @@ impl<'a, R: 'a + Read> LayerFailSafeReader<'a, R> for EncryptionLayerFailSafeRea } } -impl<'a, R: Read> Read for EncryptionLayerFailSafeReader<'a, R> { +impl Read for EncryptionLayerFailSafeReader<'_, R> { /// Behavior changes depending on config.FailSafeReaderDecryptionMode /// - OnlyAuthenticatedData: only authenticated data is returned /// - DataEvenUnauthenticated: all data is returned, even if not authenticated diff --git a/mla/src/lib.rs b/mla/src/lib.rs index bb7a3eb8..21d2e3b2 100644 --- a/mla/src/lib.rs +++ b/mla/src/lib.rs @@ -136,7 +136,7 @@ impl ArchiveFooter { /// ```ascii-art /// [files_info][files_info length] /// ``` - + /// /// Performs zero-copy serialization of a footer fn serialize_into( mut dest: W, @@ -468,7 +468,7 @@ pub fn vec_remove_item(vec: &mut Vec, item: &T) -> Op Some(vec.remove(pos)) } -impl<'a, W: InnerWriterTrait> ArchiveWriter<'a, W> { +impl ArchiveWriter<'_, W> { pub fn from_config(dest: W, config: ArchiveWriterConfig) -> Result { // Ensure config is correct config.check()?; @@ -772,7 +772,7 @@ impl<'a, R: Read + Seek> BlocksToFileReader<'a, R> { } } -impl<'a, T: Read + Seek> Read for BlocksToFileReader<'a, T> { +impl Read for BlocksToFileReader<'_, T> { fn read(&mut self, into: &mut [u8]) -> io::Result { let (remaining, count) = match self.state { BlocksToFileReaderState::Ready => { @@ -849,7 +849,7 @@ pub struct FileInfo { pub struct ArchiveReader<'a, R: 'a + InnerReaderTrait> { /// MLA Archive format Reader - + /// /// User's reading configuration pub config: ArchiveReaderConfig, /// Source @@ -930,8 +930,8 @@ impl<'b, R: 'b + InnerReaderTrait> ArchiveReader<'b, R> { } #[allow(clippy::type_complexity)] - pub fn get_file<'a>( - &'a mut self, + pub fn get_file( + &mut self, filename: String, ) -> Result>>>>, Error> { @@ -964,7 +964,7 @@ impl<'b, R: 'b + InnerReaderTrait> ArchiveReader<'b, R> { pub struct ArchiveFailSafeReader<'a, R: 'a + Read> { /// MLA Archive format Reader (fail-safe) - + /// /// User's reading configuration // config is not used for now after reader creation, // but it could in the future diff --git a/mlar/src/main.rs b/mlar/src/main.rs index 00f057ac..523b75e6 100644 --- a/mlar/src/main.rs +++ b/mlar/src/main.rs @@ -469,7 +469,7 @@ struct FileWriter<'a> { /// Max number of fd simultaneously opened pub const FILE_WRITER_POOL_SIZE: usize = 1000; -impl<'a> Write for FileWriter<'a> { +impl Write for FileWriter<'_> { fn write(&mut self, buf: &[u8]) -> io::Result { // Only one thread is using the FileWriter, safe to `.unwrap()` let mut cache = self.cache.lock().unwrap(); @@ -912,7 +912,7 @@ fn keyderive(matches: &ArgMatches) -> Result<(), MlarError> { pub struct ArchiveInfoReader { /// MLA Archive format Reader - + /// /// User's reading configuration pub config: ArchiveReaderConfig, /// Compressed sizes from CompressionLayer From ebd23aa145b181ac16c73fa3974ac0a3062a1da2 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Wed, 11 Dec 2024 17:08:21 +0100 Subject: [PATCH 09/17] format fix --- mla/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mla/src/lib.rs b/mla/src/lib.rs index 21d2e3b2..19679c66 100644 --- a/mla/src/lib.rs +++ b/mla/src/lib.rs @@ -136,7 +136,7 @@ impl ArchiveFooter { /// ```ascii-art /// [files_info][files_info length] /// ``` - /// + /// /// Performs zero-copy serialization of a footer fn serialize_into( mut dest: W, From 34e6e964ca57d56c19230a6914dad061dcaf68e1 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Wed, 11 Dec 2024 17:46:58 +0100 Subject: [PATCH 10/17] pyO3 update requirement to python 3.11 --- bindings/python/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bindings/python/pyproject.toml b/bindings/python/pyproject.toml index b69ad5d3..1531df23 100644 --- a/bindings/python/pyproject.toml +++ b/bindings/python/pyproject.toml @@ -8,7 +8,7 @@ description = "Bindings for MLA Archive manipulation" authors = [ { name="Mougey Camille", email="camille.mougey@ssi.gouv.fr" }, ] -requires-python = ">=3.8" +requires-python = ">=3.11" keywords = ["archive", "mla"] license = {file = "LICENSE.md"} classifiers = [ From 6728e1975b42ff1facdf55fb943724be55d56c9c Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Thu, 12 Dec 2024 02:39:09 +0100 Subject: [PATCH 11/17] py-bindings: pyO3 WIP for latest API changes --- bindings/python/Cargo.lock | 52 +++++++++++++++--------------- bindings/python/Cargo.toml | 2 +- bindings/python/src/lib.rs | 66 +++++++++++++++++++++----------------- 3 files changed, 63 insertions(+), 57 deletions(-) diff --git a/bindings/python/Cargo.lock b/bindings/python/Cargo.lock index 596f5962..74bd733f 100644 --- a/bindings/python/Cargo.lock +++ b/bindings/python/Cargo.lock @@ -150,9 +150,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -327,9 +327,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.162" +version = "0.2.168" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18d287de67fe55fd7e1581fe933d965a5a9477b38e949cfa9f8574ef01506398" +checksum = "5aaeb2981e0606ca11d79718f8bb01164f1d6ed75080182d3abf017e6d244b6d" [[package]] name = "memchr" @@ -429,9 +429,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[package]] name = "ppv-lite86" @@ -444,9 +444,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.89" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -463,9 +463,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.22.6" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" +checksum = "e484fd2c8b4cb67ab05a318f1fd6fa8f199fcc30819f08f07d200809dba26c15" dependencies = [ "cfg-if", "indoc", @@ -481,9 +481,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.22.6" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" +checksum = "dc0e0469a84f208e20044b98965e1561028180219e35352a2afaf2b942beff3b" dependencies = [ "once_cell", "target-lexicon", @@ -491,9 +491,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.22.6" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" +checksum = "eb1547a7f9966f6f1a0f0227564a9945fe36b90da5a93b3933fc3dc03fae372d" dependencies = [ "libc", "pyo3-build-config", @@ -501,9 +501,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.22.6" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" +checksum = "fdb6da8ec6fa5cedd1626c886fc8749bdcbb09424a86461eb8cdf096b7c33257" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -513,9 +513,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.22.6" +version = "0.23.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" +checksum = "38a385202ff5a92791168b1136afae5059d3ac118457bb7bc304c197c2d33e7d" dependencies = [ "heck", "proc-macro2", @@ -589,18 +589,18 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" +checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.214" +version = "1.0.216" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" +checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" dependencies = [ "proc-macro2", "quote", @@ -626,9 +626,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.87" +version = "2.0.90" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "919d3b74a5dd0ccd15aeb8f93e7006bd9e14c295087c9896a110f490752bcf31" dependencies = [ "proc-macro2", "quote", @@ -680,9 +680,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-ident" -version = "1.0.13" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unindent" diff --git a/bindings/python/Cargo.toml b/bindings/python/Cargo.toml index 7451456e..a21f1908 100644 --- a/bindings/python/Cargo.toml +++ b/bindings/python/Cargo.toml @@ -19,7 +19,7 @@ name = "pymla" crate-type = ["cdylib"] [dependencies] -pyo3 = {version = "0", features = ["gil-refs"]} +pyo3 = "0" mla = { version = "1", features = ["send"], path = "../../mla"} x25519-dalek = "2" curve25519-parser = { path = "../../curve25519-parser", version = "0.4" } diff --git a/bindings/python/src/lib.rs b/bindings/python/src/lib.rs index 3d6a71ce..ed222e49 100644 --- a/bindings/python/src/lib.rs +++ b/bindings/python/src/lib.rs @@ -603,6 +603,9 @@ pub struct MLAFile { path: String, } +/// Thread safety is assured by Send and Sync traits (marker traits, hence unsafe) +unsafe impl Sync for MLAFile {} + /// Used to check whether the opening mode is the expected one, and unwrap it /// return a BadAPI argument error if not /// ```text @@ -836,7 +839,7 @@ impl MLAFile { // Purpose: only one import #[classattr] fn _buffered_type(py: Python) -> Result<&PyType, WrappedError> { - Ok(py.import_bound("io")?.getattr("BufferedIOBase")?.extract()?) + Ok(py.import("io")?.getattr("BufferedIOBase")?.extract()?) } /// Write an archive file to @dest, which can be: @@ -873,7 +876,7 @@ impl MLAFile { // `/path/to/dest` let mut output = std::fs::File::create(dest.to_string())?; io::copy(&mut archive_file.unwrap().data, &mut output)?; - } else if dest.is_instance(&py.get_type_bound::().getattr("_buffered_type")?)? { + } else if dest.is_instance(&py.get_type::().getattr("_buffered_type")?)? { // isinstance(dest, io.BufferedIOBase) // offer `.write` (`.close` must be called from the caller) @@ -924,20 +927,23 @@ impl MLAFile { // `/path/to/src` let mut input = std::fs::File::open(src.to_string())?; writer.add_file(key, input.metadata()?.len(), &mut input)?; - } else if src.is_instance(&py.get_type_bound::().getattr("_buffered_type")?)? { + } else if src.is_instance(&py.get_type::().getattr("_buffered_type")?)? { // isinstance(src, io.BufferedIOBase) // offer `.read` (`.close` must be called from the caller) let id = writer.start_file(key)?; loop { - let data = src + match Some(PyBytesMethods::as_bytes(&src .call_method1("read", (chunk_size,))? - .extract::<&PyBytes>()? - .as_bytes(); - if data.is_empty() { - break; + .extract::>()?)) { + Some(data) => { + if data.is_empty() { + break; + } + writer.append_file_content(id, data.len(), data)?; + } + _ => break, } - writer.append_file_content(id, data.len(), data)?; } writer.end_file(id)?; } else { @@ -965,41 +971,41 @@ fn pymla(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; // Exceptions - m.add("MLAError", py.get_type_bound::())?; - m.add("WrongMagic", py.get_type_bound::())?; - m.add("UnsupportedVersion", py.get_type_bound::())?; - m.add("InvalidECCKeyFormat", py.get_type_bound::())?; + m.add("MLAError", py.get_type::())?; + m.add("WrongMagic", py.get_type::())?; + m.add("UnsupportedVersion", py.get_type::())?; + m.add("InvalidECCKeyFormat", py.get_type::())?; m.add( "WrongBlockSubFileType", - py.get_type_bound::(), + py.get_type::(), )?; - m.add("UTF8ConversionError", py.get_type_bound::())?; - m.add("FilenameTooLong", py.get_type_bound::())?; + m.add("UTF8ConversionError", py.get_type::())?; + m.add("FilenameTooLong", py.get_type::())?; m.add( "WrongArchiveWriterState", - py.get_type_bound::(), + py.get_type::(), )?; - m.add("WrongReaderState", py.get_type_bound::())?; - m.add("WrongWriterState", py.get_type_bound::())?; - m.add("RandError", py.get_type_bound::())?; - m.add("PrivateKeyNeeded", py.get_type_bound::())?; + m.add("WrongReaderState", py.get_type::())?; + m.add("WrongWriterState", py.get_type::())?; + m.add("RandError", py.get_type::())?; + m.add("PrivateKeyNeeded", py.get_type::())?; m.add( "DeserializationError", - py.get_type_bound::(), + py.get_type::(), )?; - m.add("SerializationError", py.get_type_bound::())?; - m.add("MissingMetadata", py.get_type_bound::())?; - m.add("BadAPIArgument", py.get_type_bound::())?; - m.add("EndOfStream", py.get_type_bound::())?; - m.add("ConfigError", py.get_type_bound::())?; - m.add("DuplicateFilename", py.get_type_bound::())?; + m.add("SerializationError", py.get_type::())?; + m.add("MissingMetadata", py.get_type::())?; + m.add("BadAPIArgument", py.get_type::())?; + m.add("EndOfStream", py.get_type::())?; + m.add("ConfigError", py.get_type::())?; + m.add("DuplicateFilename", py.get_type::())?; m.add( "AuthenticatedDecryptionWrongTag", - py.get_type_bound::(), + py.get_type::(), )?; m.add( "HKDFInvalidKeyLength", - py.get_type_bound::(), + py.get_type::(), )?; // Add constants From 2ebdb56a897d4ed2e248e41d6e4e49fb9204d44d Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:18:32 +0100 Subject: [PATCH 12/17] py-bindings: pyO3 latest API changes --- bindings/python/src/lib.rs | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/bindings/python/src/lib.rs b/bindings/python/src/lib.rs index ed222e49..546e8eca 100644 --- a/bindings/python/src/lib.rs +++ b/bindings/python/src/lib.rs @@ -242,7 +242,7 @@ struct PublicKeys { impl PublicKeys { #[new] #[pyo3(signature = (*args))] - fn new(args: &PyTuple) -> Result { + fn new(args: Bound) -> Result { let mut keys = Vec::new(); for element in args { @@ -306,7 +306,7 @@ struct PrivateKeys { impl PrivateKeys { #[new] #[pyo3(signature = (*args))] - fn new(args: &PyTuple) -> Result { + fn new(args: Bound) -> Result { let mut keys = Vec::new(); for element in args { @@ -838,7 +838,7 @@ impl MLAFile { /// alias for io.BufferedIOBase // Purpose: only one import #[classattr] - fn _buffered_type(py: Python) -> Result<&PyType, WrappedError> { + fn _buffered_type(py: Python) -> Result, WrappedError> { Ok(py.import("io")?.getattr("BufferedIOBase")?.extract()?) } @@ -932,19 +932,14 @@ impl MLAFile { // offer `.read` (`.close` must be called from the caller) let id = writer.start_file(key)?; - loop { - match Some(PyBytesMethods::as_bytes(&src - .call_method1("read", (chunk_size,))? - .extract::>()?)) { - Some(data) => { - if data.is_empty() { - break; - } - writer.append_file_content(id, data.len(), data)?; + while let Some(data) = Some(PyBytesMethods::as_bytes(&src + .call_method1("read", (chunk_size,))? + .extract::>()?)) { + if data.is_empty() { + break; } - _ => break, + writer.append_file_content(id, data.len(), data)?; } - } writer.end_file(id)?; } else { return Err(PyTypeError::new_err( From 3a2a2bd6cc984e3e0d956b4ef2910b98e8bab256 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:05:01 +0100 Subject: [PATCH 13/17] debug C/C++ linkage for bindings --- .github/workflows/test.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91be73eb..f5a66022 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -111,7 +111,8 @@ jobs: - uses: microsoft/setup-msbuild@v1.0.2 - name: Compile C/CPP bindings test program for Windows working-directory: bindings/C/tests/windows-msvc/ - run: msbuild mla-bindings-test.sln /p:Platform=${{ matrix.msvc_platform }} /p:Configuration=${{ matrix.version }} + run: cargo rustc -- --print=native-static-libs + # run: msbuild mla-bindings-test.sln /p:Platform=${{ matrix.msvc_platform }} /p:Configuration=${{ matrix.version }} - name: Run C/CPP bindings test program on Windows working-directory: bindings/C/tests/windows-msvc/ run: ./${{ matrix.msvc_platform }}/${{ matrix.version }}/mla-bindings-test.exe From bdba30dea84dabc92b16c773c7eb8e921df160ad Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Mon, 16 Dec 2024 16:23:52 +0100 Subject: [PATCH 14/17] CI: pin 1.82 rustc for msvc builds --- .github/workflows/test.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f5a66022..817de516 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -106,13 +106,14 @@ jobs: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: - toolchain: stable + # pin to 1.82 cf. https://github.com/ANSSI-FR/MLA/pull/227#issuecomment-2545916785 + toolchain: 1.82 + default: true target: ${{ matrix.target }} - uses: microsoft/setup-msbuild@v1.0.2 - name: Compile C/CPP bindings test program for Windows working-directory: bindings/C/tests/windows-msvc/ - run: cargo rustc -- --print=native-static-libs - # run: msbuild mla-bindings-test.sln /p:Platform=${{ matrix.msvc_platform }} /p:Configuration=${{ matrix.version }} + run: msbuild mla-bindings-test.sln /p:Platform=${{ matrix.msvc_platform }} /p:Configuration=${{ matrix.version }} - name: Run C/CPP bindings test program on Windows working-directory: bindings/C/tests/windows-msvc/ run: ./${{ matrix.msvc_platform }}/${{ matrix.version }}/mla-bindings-test.exe From 59d00f7aa0d80f324bcc445d0c57de4e6a3de9e3 Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Tue, 17 Dec 2024 01:13:02 +0100 Subject: [PATCH 15/17] Bump all github actions as possible --- .github/workflows/bench.yml | 4 ++-- .github/workflows/mla_release.yml | 10 +++++----- .github/workflows/mlar_release.yml | 8 ++++---- .github/workflows/py-bindings.yml | 22 +++++++++++----------- .github/workflows/sanitize.yml | 4 ++-- .github/workflows/test.yml | 22 +++++++++++----------- 6 files changed, 35 insertions(+), 35 deletions(-) diff --git a/.github/workflows/bench.yml b/.github/workflows/bench.yml index 1dba97e4..edcfb2a8 100644 --- a/.github/workflows/bench.yml +++ b/.github/workflows/bench.yml @@ -11,8 +11,8 @@ jobs: name: Criterion benchmark runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - uses: boa-dev/criterion-compare-action@v3 + - uses: actions/checkout@v4.2.2 + - uses: boa-dev/criterion-compare-action@v3.2.4 with: branchName: ${{ github.base_ref }} benchName: "bench_archive" diff --git a/.github/workflows/mla_release.yml b/.github/workflows/mla_release.yml index 572e69ed..2049681a 100644 --- a/.github/workflows/mla_release.yml +++ b/.github/workflows/mla_release.yml @@ -67,7 +67,7 @@ jobs: runs-on: ${{ matrix.os }} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -80,7 +80,7 @@ jobs: command: build args: ${{ matrix.cargo_arg }} --manifest-path=bindings/C/Cargo.toml --target=${{ matrix.target }} - name: Upload resulting 'mla' - uses: actions/upload-artifact@v3.2.1 + uses: actions/upload-artifact@v4.4.3 with: name: mla-${{ matrix.build }} path: ${{ matrix.path }} @@ -98,7 +98,7 @@ jobs: echo "using version tag ${GITHUB_REF:15}" echo "version=${GITHUB_REF:15}" >> $GITHUB_OUTPUT - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4.2.2 - name: Get Changelog Entry id: changelog_reader uses: mindsers/changelog-reader-action@v2 @@ -106,7 +106,7 @@ jobs: path: ./mla/CHANGELOG.md - name: Create Release id: create_release - uses: actions/create-release@v1 + uses: actions/create-release@v1.1.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: @@ -197,7 +197,7 @@ jobs: asset_content_type: application/zip asset_name: libmla-windows-x86_64-debug-${{ steps.get_version.outputs.VERSION }}.zip - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - name: Release C Header file uses: actions/upload-release-asset@v1.0.2 env: diff --git a/.github/workflows/mlar_release.yml b/.github/workflows/mlar_release.yml index 2f41b4c0..5eb96dfc 100644 --- a/.github/workflows/mlar_release.yml +++ b/.github/workflows/mlar_release.yml @@ -30,7 +30,7 @@ jobs: runs-on: ${{matrix.os}} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -46,7 +46,7 @@ jobs: if: matrix.build == 'linux' run: strip ./target/${{ matrix.target }}/release/mlar${{ matrix.extension }} - name: Upload resulting 'mlar' - uses: actions/upload-artifact@v3.2.1 + uses: actions/upload-artifact@v4.4.3 with: name: mlar-${{ matrix.build }} path: ./target/${{ matrix.target }}/release/mlar${{ matrix.extension }} @@ -64,7 +64,7 @@ jobs: echo "using version tag ${GITHUB_REF:15}" echo "version=${GITHUB_REF:15}" >> $GITHUB_OUTPUT - name: Checkout code - uses: actions/checkout@v2 + uses: actions/checkout@v4.2.2 - name: Get Changelog Entry id: changelog_reader uses: mindsers/changelog-reader-action@v2 @@ -72,7 +72,7 @@ jobs: path: ./mlar/CHANGELOG.md - name: Create Release id: create_release - uses: actions/create-release@v1 + uses: actions/create-release@v1.1.4 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/py-bindings.yml b/.github/workflows/py-bindings.yml index 57b9c785..1c1f4515 100644 --- a/.github/workflows/py-bindings.yml +++ b/.github/workflows/py-bindings.yml @@ -33,8 +33,8 @@ jobs: - runner: ubuntu-latest target: ppc64le steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v4.2.2 + - uses: actions/setup-python@v5.3.0 with: python-version: '3.11' - name: Build wheels @@ -45,7 +45,7 @@ jobs: sccache: 'true' manylinux: auto - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.4.3 with: name: wheels-linux-${{ matrix.platform.target }} path: dist @@ -70,8 +70,8 @@ jobs: - runner: windows-latest target: x86 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v4.2.2 + - uses: actions/setup-python@v5.3.0 with: python-version: '3.11' architecture: ${{ matrix.platform.target }} @@ -82,7 +82,7 @@ jobs: args: --release --out dist --find-interpreter --manifest-path bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.4.3 with: name: wheels-windows-${{ matrix.platform.target }} path: dist @@ -107,8 +107,8 @@ jobs: - runner: macos-14 target: aarch64 steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v4.2.2 + - uses: actions/setup-python@v5.3.0 with: python-version: '3.11' - name: Build wheels @@ -118,7 +118,7 @@ jobs: args: --release --out dist --find-interpreter --manifest-path bindings/python/Cargo.toml sccache: 'true' - name: Upload wheels - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.4.3 with: name: wheels-macos-${{ matrix.platform.target }} path: dist @@ -134,14 +134,14 @@ jobs: sdist: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v4.2.2 - name: Build sdist uses: PyO3/maturin-action@v1 with: command: sdist args: --out dist --manifest-path bindings/python/Cargo.toml - name: Upload sdist - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v4.4.3 with: name: wheels-sdist path: dist \ No newline at end of file diff --git a/.github/workflows/sanitize.yml b/.github/workflows/sanitize.yml index c93e5d90..e7aa01f3 100644 --- a/.github/workflows/sanitize.yml +++ b/.github/workflows/sanitize.yml @@ -17,7 +17,7 @@ jobs: # Assert .h and .hpp bindings files are the ones generated runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -47,7 +47,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - name: Get ${{ matrix.changelog }} Changelog Entry uses: mindsers/changelog-reader-action@v2 id: changelog_reader diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 817de516..0f44deb2 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,7 +28,7 @@ jobs: runs-on: ${{matrix.os}} steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -42,7 +42,7 @@ jobs: - name: Run tests run: cargo test --all --exclude mla-fuzz-afl --release --verbose - name: Upload resulting 'mlar' - uses: actions/upload-artifact@v3.2.1 + uses: actions/upload-artifact@v4.4.3 with: name: ${{ matrix.build }} path: ./target/release/mlar${{ matrix.extension }} @@ -51,7 +51,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -62,7 +62,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -72,7 +72,7 @@ jobs: test-bindings-c-cpp-linux: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -103,7 +103,7 @@ jobs: msvc_platform: x64 runs-on: windows-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: # pin to 1.82 cf. https://github.com/ANSSI-FR/MLA/pull/227#issuecomment-2545916785 @@ -122,7 +122,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -142,7 +142,7 @@ jobs: fmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -153,7 +153,7 @@ jobs: audit: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - name: Security audit uses: actions-rs/audit-check@v1 with: @@ -162,7 +162,7 @@ jobs: clippy: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable @@ -184,7 +184,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4.2.2 - uses: actions-rs/toolchain@v1 with: toolchain: stable From 1cef91d561e4d5b44c876f3888ee64097e6c7b6e Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Tue, 17 Dec 2024 18:54:55 +0100 Subject: [PATCH 16/17] Release profile compilation settings updated for checksec compliance --- Cargo.toml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 4853ff83..53955422 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,6 +9,7 @@ members = [ ] [profile.release] -codegen-units = 1 -opt-level = 'z' # Optimize for size. +codegen-units = 1 # Use minimum codegen units for best size and runtime performances +opt-level = 'z' # Size optimization lto = true # Enable Link Time Optimization +strip = true # Removes symbols, reducing size \ No newline at end of file From d80c83d95474c021255bddef73336382ae0f9bfc Mon Sep 17 00:00:00 2001 From: extiop <29679238+extiop@users.noreply.github.com> Date: Wed, 18 Dec 2024 15:16:20 +0100 Subject: [PATCH 17/17] CI: Update to macos-latest py-bindings workflow --- .github/workflows/py-bindings.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/py-bindings.yml b/.github/workflows/py-bindings.yml index 1c1f4515..e2e21025 100644 --- a/.github/workflows/py-bindings.yml +++ b/.github/workflows/py-bindings.yml @@ -102,9 +102,9 @@ jobs: strategy: matrix: platform: - - runner: macos-12 + - runner: macos-latest target: x86_64 - - runner: macos-14 + - runner: macos-latest target: aarch64 steps: - uses: actions/checkout@v4.2.2