From 5ed456996101cf7dc95a5941f11596825728a1c8 Mon Sep 17 00:00:00 2001 From: "Kevin P. Dyer" Date: Wed, 7 Jan 2026 18:44:49 -0800 Subject: [PATCH 1/2] Add GitHub Actions CI workflow - Run tests on Python 3.9, 3.10, 3.11, 3.12, 3.13 - Trigger on push/PR to master/main - Add CI status badge to README --- .github/workflows/tests.yml | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 .github/workflows/tests.yml diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..12bfe78 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,34 @@ +name: Tests + +on: + push: + branches: [master, main] + pull_request: + branches: [master, main] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] + + steps: + - uses: actions/checkout@v4 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -e ".[dev]" + + - name: Run tests + run: pytest -v + + - name: Run example + run: python example.py From ad62d0d9db0f1a5258183f9c2d4ecf9cbf7c0c19 Mon Sep 17 00:00:00 2001 From: "Kevin P. Dyer" Date: Thu, 8 Jan 2026 16:48:25 -0800 Subject: [PATCH 2/2] Fix indentation in example.py --- example.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/example.py b/example.py index 3fb9ffd..301860d 100644 --- a/example.py +++ b/example.py @@ -6,20 +6,20 @@ def main(): # Set up parameters -radix = 2 + radix = 2 blocksize = 2 ** 10 # 1024 bits # Create key, tweak, and message -K = ffx.FFXInteger('0' * 128, radix=radix, blocksize=128) -T = ffx.FFXInteger('0' * blocksize, radix=radix, blocksize=blocksize) -X = ffx.FFXInteger('0' * blocksize, radix=radix, blocksize=blocksize) + K = ffx.FFXInteger('0' * 128, radix=radix, blocksize=128) + T = ffx.FFXInteger('0' * blocksize, radix=radix, blocksize=blocksize) + X = ffx.FFXInteger('0' * blocksize, radix=radix, blocksize=blocksize) # Create FFX encrypter -ffx_obj = ffx.new(K.to_bytes(16), radix=radix) + ffx_obj = ffx.new(K.to_bytes(16), radix=radix) # Encrypt and decrypt -C = ffx_obj.encrypt(T, X) -Y = ffx_obj.decrypt(T, C) + C = ffx_obj.encrypt(T, X) + Y = ffx_obj.decrypt(T, C) print(f"Plaintext: {X}") print(f"Ciphertext: {C}")