v0.24.0 — configurable per-transport announce interval #104
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: verify | |
| on: | |
| push: | |
| branches: [master] | |
| pull_request: | |
| branches: [master] | |
| # Allow manual triggering from the Actions tab so we can re-run | |
| # against a freshly released rns version without pushing a commit. | |
| workflow_dispatch: | |
| jobs: | |
| verify-lrproof-selftest: | |
| name: RNS crypto primitives self-test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install rns umsgpack | |
| - name: Run verify_lrproof.py phase-1 self test | |
| run: python tools/verify_lrproof.py | |
| - name: Run rns_responder.py smoke test | |
| # Exercise the RNS link responder path end-to-end with a | |
| # synthesized LINKREQUEST so we'd notice if Link.validate_request | |
| # or Packet.pack change shape on a future rns release. A | |
| # temporary identity file is generated via RNS and fed in. | |
| run: | | |
| python - <<'PY' | |
| import json, os, tempfile | |
| from RNS.Cryptography import Ed25519PrivateKey, X25519PrivateKey | |
| enc = X25519PrivateKey.generate() | |
| sig = Ed25519PrivateKey.generate() | |
| payload = { | |
| "encPrivKey": list(enc.private_bytes()), | |
| "sigPrivKey": list(sig.private_bytes()), | |
| } | |
| path = os.path.join(tempfile.gettempdir(), "ci_identity.json") | |
| with open(path, "w") as f: | |
| json.dump(payload, f) | |
| print("wrote", path) | |
| PY | |
| python tools/rns_responder.py "${TMPDIR:-/tmp}/ci_identity.json" | |
| - name: Run verify_announce.py smoke test | |
| # Same idea, different path: builds an lxmf.delivery announce | |
| # through RNS with the CI identity and confirms | |
| # Identity.validate_announce still accepts our packed form. | |
| run: python tools/verify_announce.py "${TMPDIR:-/tmp}/ci_identity.json" --name CIWebClient | |
| roundtrip-js-vs-rns: | |
| name: JS-vs-RNS round-trip (Level 2) | |
| runs-on: ubuntu-latest | |
| # Independent of the RNS self-test job: failing one does not | |
| # cancel the other. That way an RNS upstream regression and a | |
| # web-client regression show up as two distinct red Xs and we | |
| # can tell them apart without reading logs. | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Set up Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: '20' | |
| - name: Install JS dependencies | |
| run: npm install | |
| - name: Set up Python | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.12' | |
| - name: Install Python dependencies | |
| run: | | |
| python -m pip install --upgrade pip | |
| python -m pip install rns umsgpack | |
| - name: Run tests/roundtrip.mjs end-to-end via tests/run_tests.py | |
| # Boots Node, runs the harness, captures its test vectors, | |
| # and validates each one against RNS's own reference | |
| # implementation. Covers announces (Identity.validate_announce), | |
| # opportunistic LXMF (token decrypt + Ed25519 signature), | |
| # and LRPROOFs (Ed25519 signature against reconstructed | |
| # signed_data). Any regression in js/identity.js, | |
| # js/announce.js, js/crypto.js, js/lxmf.js, or js/link.js | |
| # that changes the wire format will show up here. | |
| run: python tests/run_tests.py |