Conversation
- Updated Dockerfile for transport testing - Modified ping_test.py with new test specifications - Updated pyproject.toml configuration - Added newsfragment for issue #1148
|
Verifying this hypothesis: The spec (line 66) says:
So:
The issue could be:
Found the root cause! AnalysisRust's certificate generation (lines 107-114): let mut params = rcgen::CertificateParams::default();
params.custom_extensions.push(make_libp2p_extension(...)?);
params.self_signed(&certificate_keypair)?Rust only adds the libp2p extension - no BasicConstraints or KeyUsage. Rust's certificate validation (lines 219-223): if ext.critical {
// Endpoints MUST abort the connection attempt if the certificate
// contains critical extensions that the endpoint does not understand.
return Err(webpki::Error::UnsupportedCriticalExtension);
}Rust only understands the libp2p extension. Any OTHER critical extension causes the error. Python's certificate includes:
The ProblemPython marks The FixIn Python's # Line 184: Change critical=True to critical=False
builder = builder.add_extension(
x509.BasicConstraints(ca=False, path_length=None), critical=False
)
# Line 200: Change critical=True to critical=False
builder = builder.add_extension(
x509.KeyUsage(...), critical=False
)This is valid per the spec:
|
|
Hi @seetadev and @yashksaini-coder About TLS - rust failing test, the python for TLS has default options enabled that are not enforced by specs ############# Commit: The relevant code added in # Add Basic Constraints extension - not a CA
builder = builder.add_extension(
x509.BasicConstraints(ca=False, path_length=None), critical=True
)
# Add Key Usage - digital signature only
builder = builder.add_extension(
x509.KeyUsage(
digital_signature=True,
...
),
critical=True,
)This is the cause of Rust interop failures - Rust's libp2p-tls rejects certificates with critical extensions it doesn't understand (it only recognizes the libp2p extension). These should be ############## Note: @yashksaini-coder About WSS Do we have a Here's the key evidence from line 66 of the spec:
This explains exactly what happened:
Bottom line: The spec doesn't require or forbid BasicConstraints/KeyUsage - it just says if you include extra extensions, they should be ################################################ What are the two cases of certificates present in ping_demo.py ? These are two different cases, not duplicated code:
Key difference:
Note: The WSS cert doesn't even add
|
╲ Running tests... (32 workers)
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
→ [21/131] rust-v0.56 x js-v1.x (tcp, noise, mplex)...[SUCCESS]
→ [8/131] rust-v0.56 x rust-v0.56 (ws, tls, mplex)...[SUCCESS]
→ [10/131] rust-v0.56 x rust-v0.56 (webrtc-direct)...[SUCCESS]
→ [29/131] rust-v0.56 x js-v3.x (tcp, noise, mplex)...[SUCCESS]
→ [5/131] rust-v0.56 x rust-v0.56 (ws, noise, yamux)...[SUCCESS]
→ [3/131] rust-v0.56 x rust-v0.56 (tcp, tls, yamux)...[SUCCESS]
→ [7/131] rust-v0.56 x rust-v0.56 (ws, tls, yamux)...[SUCCESS]
→ [4/131] rust-v0.56 x rust-v0.56 (tcp, tls, mplex)...[SUCCESS]
→ [6/131] rust-v0.56 x rust-v0.56 (ws, noise, mplex)...[SUCCESS]
→ [30/131] rust-v0.56 x js-v3.x (ws, noise, yamux)...[SUCCESS]
→ [28/131] rust-v0.56 x js-v3.x (tcp, noise, yamux)...[SUCCESS]
→ [31/131] rust-v0.56 x js-v3.x (ws, noise, mplex)...[SUCCESS]
→ [9/131] rust-v0.56 x rust-v0.56 (quic-v1)...[SUCCESS]
→ [25/131] rust-v0.56 x js-v2.x (tcp, noise, mplex)...[SUCCESS]
→ [2/131] rust-v0.56 x rust-v0.56 (tcp, noise, mplex)...[SUCCESS]
→ [26/131] rust-v0.56 x js-v2.x (ws, noise, yamux)...[SUCCESS]
→ [20/131] rust-v0.56 x js-v1.x (tcp, noise, yamux)...[SUCCESS]
→ [24/131] rust-v0.56 x js-v2.x (tcp, noise, yamux)...[SUCCESS]
→ [1/131] rust-v0.56 x rust-v0.56 (tcp, noise, yamux)...[SUCCESS]
→ [18/131] rust-v0.56 x python-v0.x (ws, tls, mplex)...[SUCCESS]
→ [23/131] rust-v0.56 x js-v1.x (ws, noise, mplex)...[SUCCESS]
→ [22/131] rust-v0.56 x js-v1.x (ws, noise, yamux)...[SUCCESS]
→ [27/131] rust-v0.56 x js-v2.x (ws, noise, mplex)...[SUCCESS]
→ [13/131] rust-v0.56 x python-v0.x (tcp, tls, yamux)...[SUCCESS]
→ [17/131] rust-v0.56 x python-v0.x (ws, tls, yamux)...[SUCCESS]
→ [16/131] rust-v0.56 x python-v0.x (ws, noise, mplex)...[SUCCESS]
→ [14/131] rust-v0.56 x python-v0.x (tcp, tls, mplex)...[SUCCESS]
→ [12/131] rust-v0.56 x python-v0.x (tcp, noise, mplex)...[SUCCESS]
→ [11/131] rust-v0.56 x python-v0.x (tcp, noise, yamux)...[SUCCESS]
→ [15/131] rust-v0.56 x python-v0.x (ws, noise, yamux)...[SUCCESS]
→ [19/131] rust-v0.56 x python-v0.x (quic-v1)...[SUCCESS]
→ [32/131] python-v0.x x rust-v0.56 (tcp, noise, yamux)...[SUCCESS]
→ [36/131] python-v0.x x rust-v0.56 (ws, noise, yamux)...[SUCCESS]
→ [34/131] python-v0.x x rust-v0.56 (tcp, tls, yamux)...[SUCCESS]
→ [33/131] python-v0.x x rust-v0.56 (tcp, noise, mplex)...[SUCCESS]
→ [35/131] python-v0.x x rust-v0.56 (tcp, tls, mplex)...[SUCCESS]
→ [39/131] python-v0.x x rust-v0.56 (ws, tls, mplex)...[SUCCESS]
→ [41/131] python-v0.x x python-v0.x (tcp, noise, yamux)...[SUCCESS]
→ [38/131] python-v0.x x rust-v0.56 (ws, tls, yamux)...[SUCCESS]
→ [37/131] python-v0.x x rust-v0.56 (ws, noise, mplex)...[SUCCESS]
→ [42/131] python-v0.x x python-v0.x (tcp, noise, mplex)...[SUCCESS]
→ [44/131] python-v0.x x python-v0.x (tcp, tls, mplex)...[SUCCESS]
→ [40/131] python-v0.x x rust-v0.56 (quic-v1)...[SUCCESS]
→ [43/131] python-v0.x x python-v0.x (tcp, tls, yamux)...[SUCCESS]
→ [45/131] python-v0.x x python-v0.x (wss, noise, yamux)...[SUCCESS]
→ [50/131] python-v0.x x python-v0.x (ws, noise, mplex)...[SUCCESS]
→ [46/131] python-v0.x x python-v0.x (wss, noise, mplex)...[SUCCESS]
→ [48/131] python-v0.x x python-v0.x (wss, tls, mplex)...[SUCCESS]
→ [49/131] python-v0.x x python-v0.x (ws, noise, yamux)...[SUCCESS]
→ [47/131] python-v0.x x python-v0.x (wss, tls, yamux)...[SUCCESS]
→ [51/131] python-v0.x x python-v0.x (ws, tls, yamux)...[SUCCESS]
→ [52/131] python-v0.x x python-v0.x (ws, tls, mplex)...[SUCCESS]
→ [53/131] python-v0.x x python-v0.x (quic-v1)...[SUCCESS]
→ [55/131] python-v0.x x js-v1.x (tcp, noise, mplex)...[SUCCESS]
→ [54/131] python-v0.x x js-v1.x (tcp, noise, yamux)...[SUCCESS]
→ [56/131] python-v0.x x js-v1.x (ws, noise, yamux)...[SUCCESS]
→ [68/131] js-v1.x x rust-v0.56 (ws, noise, yamux)...[SUCCESS]
→ [67/131] js-v1.x x rust-v0.56 (tcp, noise, mplex)...[SUCCESS]
→ [66/131] js-v1.x x rust-v0.56 (tcp, noise, yamux)...[SUCCESS]
→ [58/131] python-v0.x x js-v2.x (tcp, noise, yamux)...[SUCCESS]
→ [57/131] python-v0.x x js-v1.x (ws, noise, mplex)...[SUCCESS]
→ [69/131] js-v1.x x rust-v0.56 (ws, noise, mplex)...[SUCCESS]
→ [76/131] js-v1.x x js-v1.x (tcp, noise, yamux)...[SUCCESS]
→ [77/131] js-v1.x x js-v1.x (tcp, noise, mplex)...[SUCCESS]
→ [79/131] js-v1.x x js-v1.x (ws, noise, mplex)...[SUCCESS]
→ [78/131] js-v1.x x js-v1.x (ws, noise, yamux)...[SUCCESS]
→ [80/131] js-v1.x x js-v2.x (tcp, noise, yamux)...[SUCCESS]
→ [82/131] js-v1.x x js-v2.x (ws, noise, yamux)...[SUCCESS]
→ [81/131] js-v1.x x js-v2.x (tcp, noise, mplex)...[SUCCESS]
→ [84/131] js-v1.x x js-v3.x (tcp, noise, yamux)...[SUCCESS]
→ [59/131] python-v0.x x js-v2.x (tcp, noise, mplex)...[SUCCESS]
→ [83/131] js-v1.x x js-v2.x (ws, noise, mplex)...[SUCCESS]
→ [60/131] python-v0.x x js-v2.x (ws, noise, yamux)...[SUCCESS]
→ [86/131] js-v1.x x js-v3.x (ws, noise, yamux)...[SUCCESS]
→ [85/131] js-v1.x x js-v3.x (tcp, noise, mplex)...[SUCCESS]
→ [87/131] js-v1.x x js-v3.x (ws, noise, mplex)...[SUCCESS]
→ [61/131] python-v0.x x js-v2.x (ws, noise, mplex)...[SUCCESS]
→ [62/131] python-v0.x x js-v3.x (tcp, noise, yamux)...[SUCCESS]
→ [63/131] python-v0.x x js-v3.x (tcp, noise, mplex)...[SUCCESS]
→ [88/131] js-v2.x x rust-v0.56 (tcp, noise, yamux)...[SUCCESS]
→ [64/131] python-v0.x x js-v3.x (ws, noise, yamux)...[SUCCESS]
→ [91/131] js-v2.x x rust-v0.56 (ws, noise, mplex)...[SUCCESS]
→ [90/131] js-v2.x x rust-v0.56 (ws, noise, yamux)...[SUCCESS]
→ [89/131] js-v2.x x rust-v0.56 (tcp, noise, mplex)...[SUCCESS]
→ [100/131] js-v2.x x js-v1.x (ws, noise, yamux)...[SUCCESS]
→ [98/131] js-v2.x x js-v1.x (tcp, noise, yamux)...[SUCCESS]
→ [101/131] js-v2.x x js-v1.x (ws, noise, mplex)...[SUCCESS]
→ [99/131] js-v2.x x js-v1.x (tcp, noise, mplex)...[SUCCESS]
→ [102/131] js-v2.x x js-v2.x (tcp, noise, yamux)...[SUCCESS]
→ [103/131] js-v2.x x js-v2.x (tcp, noise, mplex)...[SUCCESS]
→ [104/131] js-v2.x x js-v2.x (ws, noise, yamux)...[SUCCESS]
→ [105/131] js-v2.x x js-v2.x (ws, noise, mplex)...[SUCCESS]
→ [106/131] js-v2.x x js-v3.x (tcp, noise, yamux)...[SUCCESS]
→ [107/131] js-v2.x x js-v3.x (tcp, noise, mplex)...[SUCCESS]
→ [110/131] js-v3.x x rust-v0.56 (tcp, noise, yamux)...[SUCCESS]
→ [108/131] js-v2.x x js-v3.x (ws, noise, yamux)...[SUCCESS]
→ [109/131] js-v2.x x js-v3.x (ws, noise, mplex)...[SUCCESS]
→ [111/131] js-v3.x x rust-v0.56 (tcp, noise, mplex)...[SUCCESS]
→ [112/131] js-v3.x x rust-v0.56 (ws, noise, yamux)...[SUCCESS]
→ [113/131] js-v3.x x rust-v0.56 (ws, noise, mplex)...[SUCCESS]
→ [71/131] js-v1.x x python-v0.x (tcp, noise, mplex)...[SUCCESS]
→ [73/131] js-v1.x x python-v0.x (wss, noise, mplex)...[SUCCESS]
→ [70/131] js-v1.x x python-v0.x (tcp, noise, yamux)...[SUCCESS]
→ [74/131] js-v1.x x python-v0.x (ws, noise, yamux)...[SUCCESS]
→ [72/131] js-v1.x x python-v0.x (wss, noise, yamux)...[SUCCESS]
→ [75/131] js-v1.x x python-v0.x (ws, noise, mplex)...[SUCCESS]
→ [65/131] python-v0.x x js-v3.x (ws, noise, mplex)...[SUCCESS]
→ [121/131] js-v3.x x js-v1.x (tcp, noise, mplex)...[SUCCESS]
→ [122/131] js-v3.x x js-v1.x (ws, noise, yamux)...[SUCCESS]
→ [120/131] js-v3.x x js-v1.x (tcp, noise, yamux)...[SUCCESS]
→ [123/131] js-v3.x x js-v1.x (ws, noise, mplex)...[SUCCESS]
→ [127/131] js-v3.x x js-v2.x (ws, noise, mplex)...[SUCCESS]
→ [124/131] js-v3.x x js-v2.x (tcp, noise, yamux)...[SUCCESS]
→ [125/131] js-v3.x x js-v2.x (tcp, noise, mplex)...[SUCCESS]
→ [128/131] js-v3.x x js-v3.x (tcp, noise, yamux)...[SUCCESS]
→ [126/131] js-v3.x x js-v2.x (ws, noise, yamux)...[SUCCESS]
→ [131/131] js-v3.x x js-v3.x (ws, noise, mplex)...[SUCCESS]
→ [129/131] js-v3.x x js-v3.x (tcp, noise, mplex)...[SUCCESS]
→ [130/131] js-v3.x x js-v3.x (ws, noise, yamux)...[SUCCESS]
→ [92/131] js-v2.x x python-v0.x (tcp, noise, yamux)...[SUCCESS]
→ [93/131] js-v2.x x python-v0.x (tcp, noise, mplex)...[SUCCESS]
→ [94/131] js-v2.x x python-v0.x (wss, noise, yamux)...[SUCCESS]
→ [97/131] js-v2.x x python-v0.x (ws, noise, mplex)...[SUCCESS]
→ [96/131] js-v2.x x python-v0.x (ws, noise, yamux)...[SUCCESS]
→ [95/131] js-v2.x x python-v0.x (wss, noise, mplex)...[SUCCESS]
→ [114/131] js-v3.x x python-v0.x (tcp, noise, yamux)...[SUCCESS]
→ [115/131] js-v3.x x python-v0.x (tcp, noise, mplex)...[SUCCESS]
→ [116/131] js-v3.x x python-v0.x (wss, noise, yamux)...[SUCCESS]
→ [119/131] js-v3.x x python-v0.x (ws, noise, mplex)...[SUCCESS]
→ [117/131] js-v3.x x python-v0.x (wss, noise, mplex)...[SUCCESS]
→ [118/131] js-v3.x x python-v0.x (ws, noise, yamux)...[SUCCESS] |
@seetadev @lla-dane @sumanjeet0012 @yashksaini-coder
Sorry dirty PR
libp2p/security/tls/transport-luca-test.py should not be needed just ping_demo.py
with rust NOT OK
continue from here.
read interop/transport/NEW_SPEC_2026.md for help set up
some log: