SSH protocol implementation in Ada
- Ada 57.4%
- C++ 40.8%
- C 1.7%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .githooks | ||
| backends | ||
| doc | ||
| examples | ||
| src | ||
| tests | ||
| util | ||
| .gitignore | ||
| .gitmodules | ||
| AGENTS.md | ||
| alire.toml | ||
| LICENSE | ||
| README.md | ||
| run_tests.sh | ||
| ssh_protocol.gpr | ||
ssh_protocol-ada
SSH protocol implementation in Ada. It's a core library without I/O, cryptography, or RNG.
Backends
To use this library in an SSH application, developers need to use a cryptography backend to provide cryptography primitives and RNG support.
This project has implemented two backends:
- libsodium: use libsodium to provide Curve25519 KEX, Ed25519 signing and Chacha20-Poly1305 AEAD cipher, which is compatible to most SSH servers
- openssh-libcrypto: use cryptography primitives from OpenSSH and OpenSSL libcrypto, which supports a safe subset of the cipher suite from OpenSSH, compatible to all the SSH servers I have seen
Examples
A client example is implemented in ssh_apps.
SPARK
The code is written in the SPARK subset. The source code can now pass the stone level.
Disclaimer
Most of the code is generated by DeepSeek V4 models.
The code in the main branch is reviewed by a human, and the code in the dev branch is not fully reviewed.
License
The core library uses Apache 2.0 license. The backends may use different licenses.