docs: mark crypto checklist items resolved

Update the AES-CCMP investigation checklist and quick reference to
reflect the completed crypto backend choice, on-chip CCMP, and validated
P-256 ECDH.

Co-Authored-By: deepseek (deepseek/deepseek-v4-pro-0813): updated crypto docs
This commit is contained in:
portersky
2026-08-17 15:05:08 +02:00
parent 0f85b59237
commit 5a102bb511
+9 -7
View File
@@ -62,12 +62,14 @@ Strike through or check off as each is resolved.
### 5. AES-CCMP Encryption ### 5. AES-CCMP Encryption
- [ ] **Crypto backend choice**Decide between: - [x] **Crypto backend choice**CommonCrypto (SHA-256/HMAC), Security.framework
- **CommonCrypto** (system, zero deps) — `CCryptorCreate()` for AES-CTR/CBC (RSA PKCS#1), and a self-contained P-256 ECDH (no public macOS C API for EC
- **Security.framework** (system) — `SecKeyRef` for ECDH key exchange key agreement). Implemented in `src/auth/crypto.cpp`.
- **libcrypto/OpenSSL** (Homebrew) — `EVP_*` APIs, more familiar but external dep - [x] **CCMP mode implementation** — Not needed on the host: AES-CCMP runs on the
- [ ] **CCMP mode implementation** — AES-CCMP = AES-CTR encryption + AES-CBC-MAC authentication. Neither CommonCrypto nor OpenSSL has a direct CCMP API. Need to implement the mode manually (encrypt then MIC, or verify MIC then decrypt). MT76 chip; the host only installs keys via WCID registers
- [ ] **ECDH key exchange** — The authentication handshake uses ECDH (P-256 curve). Test `SecKeyCreateWithData()` + `SecKeyCopyKeyExchangeResult()` on macOS for key agreement. (`xone_mt76_set_client_key`).
- [x] **ECDH key exchange** — P-256 implemented and validated against
OpenSSL-derived test vectors (`tests/test_crypto.cpp`).
### 6. Virtual HID Gamepad ### 6. Virtual HID Gamepad
@@ -112,7 +114,7 @@ Strike through or check off as each is resolved.
| `kzalloc` / `kfree` | `malloc` / `free` | ✅ Straightforward | | `kzalloc` / `kfree` | `malloc` / `free` | ✅ Straightforward |
| `spin_lock_irqsave` | `pthread_mutex_t` or lock-free | ☐ Design | | `spin_lock_irqsave` | `pthread_mutex_t` or lock-free | ☐ Design |
| `msleep` / `mdelay` | `usleep()` / `clock_nanosleep()` | ☐ Test timing | | `msleep` / `mdelay` | `usleep()` / `clock_nanosleep()` | ☐ Test timing |
| `crypto_shash_*` | CommonCrypto / Security.framework | ☐ Choose backend | | `crypto_shash_*` | CommonCrypto / Security.framework | ✅ Done (`auth/crypto.cpp`) |
| `input_register_device()` | HID Proxy Driver / IOHIDSystem | ☐ Investigate | | `input_register_device()` | HID Proxy Driver / IOHIDSystem | ☐ Investigate |
| `snd_pcm_*` | Core Audio (Audio Units) | ☐ Investigate | | `snd_pcm_*` | Core Audio (Audio Units) | ☐ Investigate |
| `request_firmware()` | File I/O (`fopen`/`fread`) | ✅ Straightforward | | `request_firmware()` | File I/O (`fopen`/`fread`) | ✅ Straightforward |