Back to FlowSsh Documentation

What is FlowSshC/Cpp/Net?

What is FlowSshC? And what about FlowSshCpp and FlowSshNet? FlowSshC is a C wrapper API to our fast and reliable SSH (Secure Shell) engine. FlowSshCpp and FlowSshNet are further abstractions of this same engine. FlowSshCpp provides an object oriented C++ interface that is generally easier to use and program against than pure C. Similarly, FlowSshNet provides an object oriented interface for managed applications. Internally, FlowSshNet relies on FlowSshCpp, and FlowSshCpp relies on FlowSshC. The following diagram illustrates these architectural dependencies.

dependencies

Points of interest:

  • FlowSshC/Cpp/Net all provide the same functionality and use similar naming conventions in their interfaces. Internally they use the same SSH engine.
  • Supported languages: C, C++, C++/CLI, C#, and VB.NET.
  • Source code: Regular FlowSsh licenses include source code for FlowSshCpp and FlowSshNet, but not source code for the SSH engine. Special FlowSsh licenses may include full source code, including the SSH engine.
  • Stability: The SSH engine is the same as used in Bitvise SSH Server for Windows, used by thousands of organizations worldwide.
  • Security: Our technologies are developed by a handful of experienced developers with a focus on correctness and security. Our implementations are high quality, and have had an excellent security record.
  • Certification: FlowSsh uses a FIPS 140-2 certified cryptographic module for most cryptography. (Use of algorithms not implemented through the certified module, e.g. MD5, is optional.)

Throughout these documents all declarations and samples for FlowSshC or FlowSshCpp are in C/C++, while declarations and samples for FlowSshNet use C#. We don't provide VB.NET or C++/CLI samples, since the FlowSshNet interface is identical for any CLR language.

Supported SSH features. The purpose of SSH is to secure a connection by authenticating and encrypting it. Various services, such as remote access, port forwarding (tunneling), and file transfer can be provided across the encrypted connection. FlowSsh incorporates the following SSH features:

  • User authentication with a password and via ssh-rsa or ssh-dss public-key authentication.
  • Support for outgoing connections through SOCKS4, SOCKS5, and HTTP CONNECT proxies.
  • Powerful SSH port forwarding capabilities in both C2S (client-to-server) and S2C (server-to-client) directions.
  • Remote command execution.
  • Interactive shell support with or without a PTY (pseudo terminal).
  • Powerful SFTP capabilities.

Important. The FlowSsh library is a client and not a server implementation of the SSH protocol. Furthermore, our implementation supports the newer SSH version 2, and cannot be used with servers that only support the older SSH version 1.