43276765491732026-06-17T08:39:33ZJava I2P (geti2p.net) 2.12.03b06529f97b273f2c130ae987a208f35c2031973 / 2.60.0809bd3a42b35 / v0.1.60000-0.20260612195558-809bd3a42b357cb1d079674a7b05e53f870feca63334e7a3c34d / 0.4.0rustc_version=rustc 1.96.0 (ac68faa20 2026-05-25)| Category | libi2pd (P/F/S/T) | go-i2p (P/F/S/T) | emissary (P/F/S/T) | |---|---:|---:|---:| | common-types | 3/0/1/4 | 4/0/0/4 | 3/0/1/4 | | crypto | 7/0/3/10 | 9/0/1/10 | 4/0/6/10 | | garlic | 1/0/1/2 | 1/0/1/2 | 0/0/2/2 | | structures | 3/0/0/3 | 2/0/1/3 | 1/0/2/3 | | tunnel | 2/0/0/2 | 2/0/0/2 | 0/0/2/2 |
| Implementation | PASS | FAIL | SKIP | TOTAL | |---|---:|---:|---:|---:| | Pinned libi2pd | 16 | 0 | 5 | 21 | | go-i2p (tip) | 23 | 0 | 3 | 26 | | emissary (tip) | 8 | 0 | 13 | 21 |
No FAIL outcomes reported.
| Implementation | Vector | Mode | Message | Skip reason |
|---|---|---|---|---|
| libi2pd | common-types/null-certificate-roundtrip | deterministic | libi2pd has no standalone public certificate parser/serializer; only embedded identity certificate bytes are exposed | libi2pd has no standalone public certificate parser/serializer; only embedded identity certificate bytes are exposed |
| libi2pd | crypto/aes-cbc-safe-encrypt | inverse-operation | libi2pd exposes raw AES-CBC helpers but not the Java safeEncrypt/safeDecrypt framing API | libi2pd exposes raw AES-CBC helpers but not the Java safeEncrypt/safeDecrypt framing API |
| libi2pd | crypto/elgamal-encrypt-decrypt | inverse-operation | libi2pd public headers expose the 222-byte ElGamal primitive but not the short-message engine used by this vector | libi2pd public headers expose the 222-byte ElGamal primitive but not the short-message engine used by this vector |
| libi2pd | crypto/hkdf-derive-32-bytes | deterministic | libi2pd HKDF currently assumes a 32-byte salt in its public API; this vector uses a different salt length | libi2pd HKDF currently assumes a 32-byte salt in its public API; this vector uses a different salt length |
| libi2pd | garlic/garlic-clove-roundtrip | deterministic | libi2pd public headers do not expose a standalone GarlicClove type | libi2pd public headers do not expose a standalone GarlicClove type |
| go-i2p | crypto/elgamal-encrypt-decrypt | inverse-operation | go-i2p ElGamal API currently expects a different ciphertext framing than this vector format | go-i2p ElGamal API currently expects a different ciphertext framing than this vector format |
| go-i2p | garlic/garlic-message-elgamal-aes | inverse-operation | go-i2p ElGamal decrypt API currently cannot consume the garlic vector ciphertext framing | go-i2p ElGamal decrypt API currently cannot consume the garlic vector ciphertext framing |
| go-i2p | structures/routerinfo-roundtrip | deterministic | go-i2p RouterInfo verifier currently does not validate legacy DSA_SHA1 signatures used by this vector | go-i2p RouterInfo verifier currently does not validate legacy DSA_SHA1 signatures used by this vector |
| emissary | common-types/null-certificate-roundtrip | deterministic | emissary main does not expose a standalone certificate parser/serializer for the null certificate vector contract | emissary main does not expose a standalone certificate parser/serializer for the null certificate vector contract |
| emissary | crypto/aes-cbc-safe-encrypt | inverse-operation | emissary main does not expose Java-compatible safeEncrypt/safeDecrypt AES framing API | emissary main does not expose Java-compatible safeEncrypt/safeDecrypt AES framing API |
| emissary | crypto/ecdsa-p384-keygen-sign-verify | verify-only | emissary main does not expose an ECDSA-P384 verifier API at the harness boundary | emissary main does not expose an ECDSA-P384 verifier API at the harness boundary |
| emissary | crypto/ecdsa-p521-keygen-sign-verify | verify-only | emissary main does not expose an ECDSA-P521 verifier API at the harness boundary | emissary main does not expose an ECDSA-P521 verifier API at the harness boundary |
| emissary | crypto/elgamal-encrypt-decrypt | inverse-operation | emissary main does not expose the legacy I2P ElGamal-2048 decrypt API used by this vector | emissary main does not expose the legacy I2P ElGamal-2048 decrypt API used by this vector |
| emissary | crypto/hkdf-derive-32-bytes | deterministic | emissary main does not currently expose a public HKDF helper matching this vector interface | emissary main does not currently expose a public HKDF helper matching this vector interface |
| emissary | crypto/reddsa-ed25519-keygen-sign-verify | verify-only | emissary main does not expose a RedDSA verifier API matching this vector format | emissary main does not expose a RedDSA verifier API matching this vector format |
| emissary | garlic/garlic-clove-roundtrip | deterministic | emissary main does not expose a standalone GarlicClove serializer/parser API in public modules | emissary main does not expose a standalone GarlicClove serializer/parser API in public modules |
| emissary | garlic/garlic-message-elgamal-aes | inverse-operation | emissary main does not expose legacy ElGamal+AES garlic decrypt APIs in public modules | emissary main does not expose legacy ElGamal+AES garlic decrypt APIs in public modules |
| emissary | structures/leaseset-roundtrip | deterministic | LeaseSet serialization in emissary requires private signing material unavailable in reference vectors | LeaseSet serialization in emissary requires private signing material unavailable in reference vectors |
| emissary | structures/routerinfo-roundtrip | deterministic | RouterInfo reserialization in emissary requires private signing material unavailable in reference vectors | RouterInfo reserialization in emissary requires private signing material unavailable in reference vectors |
| emissary | tunnel/tunnel-data-message-roundtrip | deterministic | emissary main does not expose a stable public TunnelDataMessage parse/serialize API for this harness contract | emissary main does not expose a stable public TunnelDataMessage parse/serialize API for this harness contract |
| emissary | tunnel/tunnel-hop-layer-processing | deterministic | emissary main does not expose the per-hop tunnel layer transform API at this harness boundary | emissary main does not expose the per-hop tunnel layer transform API at this harness boundary |