Skip to content

v0.24.0 — configurable per-transport announce interval #104

v0.24.0 — configurable per-transport announce interval

v0.24.0 — configurable per-transport announce interval #104

Workflow file for this run

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