bolt8

Encrypted and authenticated transport, per BOLT #8 (docs.ppad.tech/bolt8).
git clone git://git.ppad.tech/bolt8.git
Log | Files | Refs | README | LICENSE

CHANGELOG (1857B)


      1 # Changelog
      2 
      3 - 0.1.1 (2026-10-31)
      4   * Bumps the ppad-aead and ppad-secp256k1 dependencies, to 0.3.7
      5     and 0.5.9, which (along with ppad-fixed) under the llvm flag on
      6     x86_64 are compiled with LLVM's x86 cmov converter off
      7     (-optlc=-x86-cmov-converter=false). This library is compiled
      8     likewise, as ppad-fixed's constant-time arithmetic can be inlined
      9     into it.
     10 
     11 - 0.1.0 (2026-10-10)
     12   * Breaking: splits the post-handshake session into separate Sender
     13     and Receiver states, so one state can't serve both directions and
     14     a reader thread and a writer thread can each own one. Every
     15     operation returns the next state; the docs now stress that reusing
     16     an old state reuses a nonce (or accepts replays).
     17 
     18   * Breaking: the local static key is a Keypair, so its secret and
     19     public halves can't be mismatched, and the handshake states are
     20     distinct Initiator and Responder types.
     21 
     22   * Breaking: frames are decrypted whole with 'decrypt', or on a
     23     stream with 'decrypt_header' (exactly 18 bytes) followed by
     24     'decrypt_body'. 'decrypt_frame', 'decrypt_frame_partial' and
     25     FrameResult are removed.
     26 
     27   * Breaking: removes unused API (Key32, SessionNonce, MessagePayload,
     28     HandshakeState, the public Sec type, the DecryptionFailed error)
     29     and the exposed Internal module, renames the InvalidKey error to
     30     InvalidEntropy, and drops the Generic, Show and Eq instances of
     31     secret-bearing types. All public types have NFData instances.
     32 
     33   * Fixes the key rotation docs (keys rotate every 500 messages in each
     34     direction), rotates keys whenever a nonce reaches 1000 or more, and
     35     requires ppad-aead >= 0.3.6 for constant-time MAC comparison.
     36 
     37   * Tests now cover every BOLT #8 Appendix A vector, including all
     38     handshake failure cases and the final keys on both sides.
     39 
     40 - 0.0.1 (2026-04-18)
     41   * Initial release.