Step 14: SSH key auth for gRPC.
Server: AuthInterceptor parses authorized_keys, extracts SSH signature from gRPC metadata (nonce + timestamp signed by client's SSH key), verifies against authorized public keys with 5-minute timestamp window. Client: SSHCredentials implements PerRPCCredentials, signs nonce+timestamp per request. LoadSigner resolves key from flag, ssh-agent, or default paths. 8 tests: valid auth, reject unauthenticated, reject unauthorized key, reject expired timestamp, metadata generation, plus 2 integration tests (authenticated succeeds, unauthenticated rejected). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -7,7 +7,7 @@ ARCHITECTURE.md for design details.
|
||||
|
||||
## Current Status
|
||||
|
||||
**Phase:** Phase 2 in progress. Steps 9–13 complete, ready for Step 14.
|
||||
**Phase:** Phase 2 in progress. Steps 9–14 complete, ready for Step 15.
|
||||
|
||||
**Last updated:** 2026-03-23
|
||||
|
||||
@@ -42,7 +42,7 @@ Phase 2: gRPC Remote Sync.
|
||||
|
||||
## Up Next
|
||||
|
||||
Step 14: SSH Key Auth.
|
||||
Step 15: CLI Wiring + Prune.
|
||||
|
||||
## Known Issues / Decisions Deferred
|
||||
|
||||
@@ -74,3 +74,4 @@ Step 14: SSH Key Auth.
|
||||
| 2026-03-23 | 12 | gRPC server: 5 RPC handlers (push/pull manifest+blobs, prune), bufconn tests, store.List. |
|
||||
| 2026-03-23 | 12b | Directory recursion in Add, mirror up/down commands, 7 tests. |
|
||||
| 2026-03-23 | 13 | Client library: Push, Pull, Prune with chunked blob streaming. 6 integration tests. |
|
||||
| 2026-03-23 | 14 | SSH key auth: server interceptor (authorized_keys, signature verification), client PerRPCCredentials (ssh-agent/key file). 8 tests including auth integration. |
|
||||
|
||||
Reference in New Issue
Block a user