Languages
Choose an implementation based on the operations your application needs. All eighteen languages have account modules, but only some include an HTTPS transport. Cryptographic support and test coverage also vary, so the presence of a language directory does not imply that every messaging operation is available.
The order reflects the current implementation, rather than language popularity or the presence of an auth module. Complete cryptographic workflows and peer-key interoperability come first, followed by verified HTTPS integration, identity and key handling, and repository test coverage. Implementations with incomplete PKI or only account-adapter scaffolding follow those with working JWK cryptography. Similar implementations share a completeness tier even where the navigation must put one before another; Java and C#, and Perl and Lua, are such pairs. This is a source-based completeness assessment, not a speed or resource-usage benchmark.
WSS in this table means an SDK integration with mesgd's current messaging protocol. A language runtime or a sample may open a TLS WebSocket without implementing that integration. JavaScript can use the browser's native WebSocket API with the documented JSON example.
In the table, "Contract" identifies languages included in make test-auth, and "Live" identifies those included in make test-auth-live. Both describe test coverage in the repository rather than a guarantee that every toolchain is installed. The runners report unavailable toolchains as skips.
| Position | Language and examples | HTTPS | WSS SDK integration | Account test coverage | Basis for position |
|---|---|---|---|---|---|
| 1 | Erlang | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS, peer-key helpers, and hybrid seal/open with a tested full public-key registration round trip. |
| 2 | Go | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS, explicit identity instances, JWK import/export, and tested peer encryption and signature verification. |
| 3 | C | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS through libcurl and tested peer-key cryptography; public PKI header and WSS wrapper remain missing. |
| 4 | Ruby | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS, JWK storage, and tested peer encryption and signature verification; identity state is module-global. |
| 5 | Python | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS and tested peer-key operations; identity state is class-global, and full-key registration exceeds its single OAEP block. |
| 6 | JavaScript | Built in | Pending; browser JSON example available | Contract and live HTTPS | Verified HTTPS and tested peer-key operations; PKI imports Node filesystem code, and no registration helper is provided. |
| 7 | Rust | Pending; supply transport | Pending; experimental sample only | Contract | Explicit identity instances and tested peer-key cryptography; the account adapter requires an application HTTPS transport. |
| 8 | PHP | Built in | Pending; experimental sample only | Contract and live HTTPS | Verified HTTPS and local JWK/PKI tests; no peer-key helper surface matching the shared protocol implementations. |
| 9 | Java | Pending; supply transport | Pending; experimental sample only | Not in auth runner | Local JWK/PKI and cross-language fixture tests; HTTPS transport and account-runner coverage remain pending. |
| 10 | C# | Pending; supply transport | Pending; experimental sample only | Not in auth runner | Local JWK/PKI and cross-language fixture tests; HTTPS transport and account-runner coverage remain pending. |
| 11 | Kotlin | Pending; supply transport | Pending; no sample | Not in auth runner | Local JWK/PKI tests; HTTPS transport, shared protocol coverage, and a WSS sample remain pending. |
| 12 | OCaml | Pending; supply transport | Pending; experimental sample only | Not in auth runner | JWK storage, local PKI tests, and encrypt-to-key support; shared protocol coverage and native HTTPS remain pending. |
| 13 | C++ | C libcurl bridge | Pending; experimental sample only | Contract; shares C transport | Account contract tests and the C HTTPS bridge; PKI still uses the older implementation and missing WSS headers. |
| 14 | Swift | Pending; supply transport | Pending; experimental sample only | Not in auth runner | Account adapter and Apple-oriented cryptography; native HTTPS adapter, Linux RSA, and shared coverage remain pending. |
| 15 | Perl | Pending; supply transport | Pending; experimental sample only | Contract | Tested account adapter; native HTTPS and interoperable JWK/PKI support remain pending. |
| 16 | Lua | Pending; supply transport | Pending; experimental sample only | Contract | Tested account adapter; native HTTPS and interoperable JWK/PKI support remain pending. |
| 17 | Haskell | Pending; supply transport | Pending; experimental sample only | Not in auth runner | Account adapter source; native HTTPS, account-runner coverage, and the PKI rewrite remain pending. |
| 18 | Forth | Pending; supply transport | Not implemented | Not in auth runner | Low-level account endpoint words and local cryptography; structured validation, JWK, HTTPS, and WSS remain unimplemented. |
Java and Kotlin use the org.json dependency already in mesgd-sdk. C# uses System.Text.Json. Swift uses Foundation. OCaml uses Yojson.Safe. Haskell uses aeson, containers, and text. C and C++ use the bundled cJSON: compile c/auth.c and 3rd-party/cJSON/cJSON.c, and optionally c/auth_curl.c with libcurl. Rust uses serde_json and does not add an HTTP crate. The OCaml auth library is separate from its PKI library.
PKI and protocol tests
make test-mesgd runs Erlang, Python, JavaScript, Go, Ruby, Rust, and C. Those languages implement the public-JWK, encrypt-to-a-key, and verify-with-a-public-key helpers, except where a language is only on the local PKI target.
| Area | Languages |
|---|---|
On make test-mesgd | Erlang, Python, JavaScript, Go, Ruby, Rust, C |
| Local PKI tests, not on the top-level protocol target | PHP, Kotlin. OCaml has encrypt_with and register, and is not on make tests |
| PKI still being rewritten | C++, Haskell, Lua, Perl |
| Outside the shared JWK tests | Swift has no Linux RSA path in mesgd-sdk. Forth has no JWK |
Run commands for the ping/pong samples are in Running the samples. Package lists stay in each sample README. Those READMEs still tell you to fetch /.well-known/mesgd-pub.json. mesgd does not serve that file.