Documentation
Open Source Release Policy
Export Compliance
Using BouncyCastle
Installing the API
Enabling Logging
Per-Connection Logging
Third Party Dependencies
Generating SSH Keys
Using BouncyCastle
Using SSH Public Keys in Java
Supporting ED25519/Curve25519
Supporting Compression
Integrating Licensing into Maven Builds
Creating an SSH Client
Public Key Authentication
Keyboard Interactive Authentication
Public Key Authentication with sshagent
Executing Single Commands
Executing Commands within a Shell
Transferring Files
Connecting through Proxies
Display the Authentication Banner
Using the SFTP Client
Port Forwarding
Working Examples
Configuring Listening Interfaces
Configuring Host Keys
Password Authentication
Public Key Authentication
Challenge-Response Authentication
Configuring Port Forwarding
Configuring SFTP
Supporting SCP
Implementing your own File System
Creating an Interactive Terminal
Proxy Protocol Support
What third-party dependencies does the Maverick Synergy API have
The core implementation of the Maverick Synergy SSH API has no third-party dependencies. However, several extension modules provide additional features that do have dependencies on third-party, open-source libraries. This article outlines each extension and dependencies, with the current version and licensing information.
Modules with Third-Party Dependencies
maverick-bc
This module provides tight integration with the BouncyCastle JCE. To use this module, you must execute the following code before any other calls to the Maverick Synergy SSH API.
JCEProvider.enableBouncyCastle(true);
Code language: JavaScript (javascript)
The boolean parameter passed indicates a value for ‘makeDefault’, which is used to configure some or all algorithms (see below)
Several configuration changes occur by including this module and executing the above statement.
- If the BouncyCastle API is not installed as a SecurityProvider, then it is installed using Security.addProvider
- The ECDSA algorithm name is changed to “ECDSA” instead of “EC”
- If makeDefault is true, BC will be used for all algorithms that the API supports; otherwise, it will just be made the default for the Diffie Hellman key exchange implementations.
GroupId/ArtifactId | Version | License | Notes |
org.bouncycastle/bcprov-jdk18on | 1.76 | BouncyCastle (MIT Style) | |
org.bouncycastle/bcpkix-jdk18on | 1.76 | BouncyCastle (MIT Style) |
maverick-bcfips
Like the maverick-bc, this module provides enhanced support for the BC FIPS-certified JCE. It performs the same function as maverick-bc, and thus the same configuration changes, and the following must be called:
JCEProvider.enableBouncyCastle(true);
Code language: JavaScript (javascript)
GroupId/ArtifactId | Version | License |
org.bc/bc-fips | 1.0.2.4 | BouncyCastle (MIT Style) |
org.bc/bcpkix-fips | 1.0.7 | BouncyCastle (MIT Style) |
maverick-virtual-session
This module enables the creation of interactive shells in the Maverick Synergy Server API. With this API, you can write commands that can be executed within a virtual shell.
GroupId/ArtifactId | Version | License | Notes |
commons-cli | 1.3.1 | Apache 2.0 | This dependency is only required if using ShellCommandWithOptions class. |
commons-lang3 | 3.12.0 | Apache 2.0 | |
jline | 3.12.0 | Apache 2.0 | |
pty4j | 0.12.11 | Eclipse Public License 1.0 | Required if you use AbstractOSCommand or native shells using Shell command. |
purejavacomm | 0.0.11.1 | BSD | Required by pty4j |
jna | 5.12.1 | LGPL | Required by pty4j |
maverick-virtual-filesystem
This module provides an AbstractFile implementation that enables the creation of virtual file systems, with the ability to mount other file system types to paths within the virtual file system.
GroupId/ArtifactId | Version | License | Notes |
org.apache/commons-vfs2 | 2.9 | Apache 2.0 | Only required when using VFSFileFactory / VFSFile |
org.apache/commons-lang3 | 3.12.0 | Apache 2.0 | Only required when using VFSFileFactory / VFSFile |
org.apache/commons-logging | 1.2 | Apache 2.0 | Only required when using VFSFileFactory / VFSFile |
maverick-sshagent-jni-sockets
This module provides UNIX socket support to the maverick-sshagent. Use this if you need to use the sshagent on Linux or OSX when the JRE version is lower than 16. If you are using Java 16 or above, use the maverick-sshagent-jdk16-sockets that has no dependencies.
GroupId/ArtifactId | Version | License | Notes |
jna-platform | 5.12.1 | Apache 2.0 | |
junixsocket | 2.8.1 | Apache 2.0 |
maverick-sshagent-named-pipes
This module provides UNIX socket support to the maverick-sshagent. Use this if you need to use the sshagent on Linux or OSX when the JRE version is lower than 16. If you are using Java 16 or above, use the maverick-sshagent-jdk16-sockets that has no dependencies.
GroupId/ArtifactId | Version | License | Notes |
jna-platform | 5.12.1 | Apache 2.0 |