What third-party dependencies does the Maverick Synergy API have

Lee Painter

The core implementation of the Maverick Synergy SSH API has no third-party dependencies. However, there are a number of extension modules that provide additional features that do have dependencies on third-party, open-source libraries. This article outlines the extensions and the dependencies each has, with the current version and licensing information.

Modules With No Dependencies

The following modules have no third-party dependencies

maverick-synergy-client
maverick-synergy-server
maverick-base
maverick-openssh-certs
maverick-synergy-common
maverick-x509
maverick-callback-client
maverick-callback-server

Modules with Third-Party Dependencies

maverick-bc

This module provides tight integration with the BouncyCastle JCE. In order to use this module, you must execute the following code before any other calls to the Maverick Synergy SSH API. 

JCEProvider.enableBouncyCastle(true);

The boolean parameter passed indicates a value for 'makeDefault' which is used to configure some or all algorithms (see below)

By including this module, and executing the above statement a number of configuration changes occur. 

  1. If the BouncyCastle API is not installed as a SecurityProvider then it is installed using Security.addProvider
  2. The ECDSA algorithm name is changed to "ECDSA" instead of "EC"
  3. If makeDefault is true BC will be used for all algorithms that the API supports, otherwise it will just be made the default for Diffie Hellman key exchange
GroupId/ArtifactId Version License  Notes
org.bouncycastle/bcprov-jdk15on 1.60 BouncyCastle (MIT Style)  
org.bouncycastle/bcpkix-jdk15on 1.60 BouncyCastle (MIT Style)  


maverick-bcfips

Similar to 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);
GroupId/ArtifactId Version License
org.bc/bc-fips 1.0.1 BouncyCastle (MIT Style)
org.bc/bcpkix-fips 1.0.1 BouncyCastle (MIT Style)

 
maverick-android

This module provides enhanced support for using the full BouncyCastle JCE on the Android platform. Previous Android versions have shipped with a conflicting, cut down version of BouncyCastle, so SpongyCastle JCE was created in a renamed package space to avoid conflict. Since Android 4.0 the conflicting BouncyCastle version was changed and repackaged allowing normal BouncyCastle JCE to be used.

It may still be relevant to use this if you deploy on Android and are supporting Android 3.0 or below devices. It is also still suitable for Android 4.0 and over although if you are exclusively targeting 4.0+ devices you can also consider just including the maverick-bc or maverick-bcfips dependency instead.

Like the maverick-bc and maverick-bcfips modules you must call the following to enable BC on Android support:

JCEProvider.enableBouncyCastle(true);

GroupId/ArtifactId

Version License
com.madgag.spongycastle/core 1.58.0.0 BouncyCastle (MIT Style)
com.madgag.spongycastle/prov 1.58.0.0 BouncyCastle (MIT Style)
com.madgag.spongycastle/bcpkix-jdk5on 1.58.0.0 BouncyCastle (MIT Style)

 

maverick-ed25519

Including this module enables the ed25519 public key type and curve25519-sha256@libssh.org key exchange.

GroupId/ArtifactId Version License  Notes
net.i2p.crypto/eddsa 0.3.0 Creative Commons  
Curve25519.java N/A Public Domain  Used in source directly. No dependency jar available.


maverick-zip

Including this module enables zlib compression.

GroupId/ArtifactId Version License
com.jcraft/jzlib 1.1.2 BSD


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.
jline 3.11.0 Apache 2.0  

 

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.2 Apache 2.0  Only required when using VFSFileFactory / VFSFile
org.apache/commons-logging 1.2 Apache 2.0  Only required when using VFSFileFactory / VFSFile

* Further dependencies may be required depending upon the VFS providers you want to use in commons-vfs2


maverick-sshagent

This module provides a complete private key agent for holding keys in-memory. Compatible with OpenSSH agent and PuTTY's Pageant.

GroupId/ArtifactId

Version License  Notes
jna-platform 4.5.1 Apache 2.0  
junixsocket 2.0.4 Apache 2.0