You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: nebula-cert PQ support, PKI integration, and e2e handshake test
Complete the PQ integration across the full Nebula stack:
CLI (nebula-cert):
- ca.go: -curve PQ generates ML-DSA-87 CA keypair (V2 only)
- sign.go: PQ host certs use ML-KEM-1024 key agreement keys
- keygen.go: -curve PQ generates ML-KEM-1024 keypair
PKI integration:
- pki.go: PQ certs marshal with full public key (not stripped)
because MarshalForHandshakes assumes pubkey == Noise PeerStatic
- cert.go: UnmarshalCertificateFromBytes for PQ cert reconstruction
- cert_v2.go: fix VerifyPrivateKey to use Unpack for ML-KEM-1024
Handshake fixes:
- handshake_ix.go: PQ path uses direct unmarshal instead of Recombine
(cert pubkey is ML-KEM, not the X25519 PeerStatic)
- Skip pubkey==PeerStatic check for PQ (different key types)
Test infrastructure:
- cert_test/cert.go: PQ cases for NewTestCaCert and NewTestCert
- e2e/helpers_test.go: derive curve from CA cert (not hardcoded)
- e2e/handshakes_test.go: TestGoodHandshakePQ -- full tunnel test
TestGoodHandshakePQ proves: PQ CA signs host cert, two nodes establish
tunnel via hybrid X25519+ML-KEM-1024 handshake, bidirectional encrypted
data transfer works. 0.41s handshake time. Zero regressions in
classical handshake tests.
0 commit comments