Commit graph

4 commits

Author SHA1 Message Date
Zachery Aaron Shores-Chmielewski
cc39f8a0a8 Initital Sender state machine logic implemented
Implemented and tested the state machine model for the `Sender`. Tested against the rust bindings for libsodium using
the `crypto_box` api.
2026-01-19 11:09:17 +07:00
Zachery Aaron Shores-Chmielewski
f3ab842cc2 Update specification with implementation insights
Add comprehensive implementation notes based on sender client development:
- Detailed cryptographic primitive specifications (Curve25519, XSalsa20-Poly1305)
- Memory safety patterns (move semantics for plaintext)
- State machine enforcement strategies
- Unicode and character counting considerations
- Cryptographic property documentation (randomness, overhead)
- Design decisions with rationales
- Additional open questions discovered during implementation
- Updated constraints with actual size calculations
2026-01-19 08:50:50 +07:00
Zachery Aaron Shores-Chmielewski
f0f33e0934 Implement sender client state machine with comprehensive tests
- Add SenderClient state machine with states: Idle, Ready, Composing, Encrypting, Submitted, Error
- Implement all state transitions according to specification
- Use sodiumoxide for sealed box encryption
- Add validation for sender name (max 200 chars) and message body (max 10,000 chars)
- Implement complete test suite covering:
  - State transitions and invalid transitions
  - Input validation (empty, max length, over max)
  - Encryption (ciphertext randomness, different messages)
  - Unicode and special characters support
  - Multiple messages in sequence
  - Error handling and recovery
2026-01-19 08:49:30 +07:00
Zachery Aaron Shores-Chmielewski
184702057b Add initial protocol specification
Documents the messagebox protocol with implementation-agnostic state
machines for sender, store, and reader components.
2026-01-19 08:45:16 +07:00