<feed xmlns='http://www.w3.org/2005/Atom'>
<title>axon.git/js, branch main</title>
<subtitle>[no description]</subtitle>
<id>https://code.northwest.io/axon.git/atom?h=main</id>
<link rel='self' href='https://code.northwest.io/axon.git/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/'/>
<updated>2026-03-10T00:36:21+00:00</updated>
<entry>
<title>fix: harden DM crypto — HKDF key derivation, AEAD associated data, ModInverse nil check</title>
<updated>2026-03-10T00:36:21+00:00</updated>
<author>
<name>bndw</name>
<email>ben@bdw.to</email>
</author>
<published>2026-03-10T00:36:21+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/commit/?id=eca962d7c26bbea57801576935b98f3540e43da6'/>
<id>urn:sha1:eca962d7c26bbea57801576935b98f3540e43da6</id>
<content type='text'>
- Derive symmetric key via HKDF-SHA256 instead of using raw X25519 shared secret
- Bind sender + recipient pubkeys as ChaCha20-Poly1305 associated data to prevent key-confusion attacks
- Guard against ModInverse panic on degenerate public keys (y=1)
- Wrap DecryptDM error instead of swallowing it
- Update JS client to match Go implementation
- Document encryption details in PROTOCOL.md
</content>
</entry>
<entry>
<title>feat: phase 3 CLI + phase 4 JS client library</title>
<updated>2026-03-10T00:26:53+00:00</updated>
<author>
<name>bndw</name>
<email>ben@bdw.to</email>
</author>
<published>2026-03-10T00:26:53+00:00</published>
<link rel='alternate' type='text/html' href='https://code.northwest.io/axon.git/commit/?id=4ee6da5fd54a2e40b537ed4126e907342c06d54d'/>
<id>urn:sha1:4ee6da5fd54a2e40b537ed4126e907342c06d54d</id>
<content type='text'>
CLI (cmd/axon):
- Add explicit Unsubscribe on req exit (after EOSE and on Ctrl-C)
- Add reconnect with exponential backoff (1s→30s) for req --stream

JS library (js/axon.js):
- Canonical tag encoding and payload construction matching Go byte-for-byte
- Ed25519 sign/verify, keypair generation, challenge signing
- AxonClient: WebSocket connect with auth handshake, publish, subscribe,
  unsubscribe, reconnect-ready callback API
- encryptDM/decryptDM: X25519 ECDH (Ed25519 key conversion) + ChaCha20-Poly1305
- runVectors: validates all 6 Phase 1 test vectors against Go ground truth
</content>
</entry>
</feed>
