/** @mainpage This is the online reference for developing with the libssh library. It documents the libssh C API and the C++ wrapper. @section main-linking Linking We created a small howto how to link libssh against your application, read @subpage libssh_linking. @section main-tutorial Tutorial You should start by reading @subpage libssh_tutorial, then reading the documentation of the interesting functions as you go. @section main-features Features The libssh library provides: - Full C library functions for manipulating a client-side SSH connection - SSH2 and SSH1 protocol compliant - Fully configurable sessions - Server support - SSH agent authentication support - Support for AES-128, AES-192, AES-256, Blowfish, 3DES in CBC mode, and AES in CTR mode - Supports OpenSSL and GCrypt - Use multiple SSH connections in a same process, at same time - Use multiple channels in the same connection - Thread safety when using different sessions at same time - POSIX-like SFTP (Secure File Transfer) implementation with openssh extension support - SCP implementation - Large file system support (files bigger than 4GB) - RSA and DSS server public key supported - Compression support (with zlib) - Public key (RSA and DSS), password and keyboard-interactive authentication - Full poll()/WSAPoll() support and a poll-emulation for Win32. - Runs and tested under x86_64, x86, ARM, Sparc32, PPC under Linux, BSD, MacOSX, Solaris and Windows @section main-rfc Internet standard @subsection main-rfc-secsh Secure Shell (SSH) The following RFC documents described SSH-2 protcol as an Internet standard. - RFC 4250, The Secure Shell (SSH) Protocol Assigned Numbers - RFC 4251, The Secure Shell (SSH) Protocol Architecture - RFC 4252, The Secure Shell (SSH) Authentication Protocol - RFC 4253, The Secure Shell (SSH) Transport Layer Protocol - RFC 4254, The Secure Shell (SSH) Connection Protocol - RFC 4255, Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints - RFC 4256, Generic Message Exchange Authentication for the Secure Shell Protocol (SSH) - RFC 4335, The Secure Shell (SSH) Session Channel Break Extension - RFC 4344, The Secure Shell (SSH) Transport Layer Encryption Modes - RFC 4345, Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol It was later modified and expanded by the following RFCs. - RFC 4419, Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol - RFC 4432, RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol - RFC 4462, Generic Security Service Application Program Interface (GSS-API) Authentication and Key Exchange for the Secure Shell (SSH) Protocol - RFC 4716, The Secure Shell (SSH) Public Key File Format - RFC 5656, Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer @subsection main-rfc-sftp Secure Shell File Transfer Protocol (SFTP) The protocol is not an Internet standard but it is still widely implemented. OpenSSH and most other implementation implement Version 3 of the protocol. We do the same in libssh. - draft-ietf-secsh-filexfer-02.txt, SSH File Transfer Protocol @subsection main-rfc-extensions Secure Shell Extensions The OpenSSH project has defined some extensions to the protocol. We support some of them like the statvfs calls in SFTP or the ssh-agent. - OpenSSH's deviations and extensions - OpenSSH's ssh-agent */