Core
          Module Implementation: OpenSSLCryptoInterfaceApp
          The top level application (OpenSSLCryptoInterfaceApp) contains core classes and extensions to support the use of the cryptographic bindings in VA Smalltalk.
          Note: Internal classes are italicized and will only contain a short description.
          Thread-Support
          OpenSSLThreadSupportMediator: This object is responsible for connecting VA Smalltalk's thread-lock implementation with OpenSSL's thread-lock interface.  This is what allows older versions of OpenSSL (< 1.1.0), that do not include platform-specific lock implementations, to be thread-safe within VA Smalltalk's environment.
          Low-Level OpenSSL Communication
          OpenSSLCryptoInterfaceApp: Contains the Low-Level Function and Constants pool dictionaries.
          OpenSSLCryptoLibraryDispatcher: Performs the actual asynchronous dispatching of all OpenSSL functions and interprets the return value for the caller (i.e. knows when to return an error object).
          OSSslCryptoStructure: Primarily for organizational benefits, this abstract class also connects subclasses to the appropriate OpenSSL dispatcher.
          Memory Management
          OSSslStructure: Contains the GC Notifier to ensure native memory is freed when the OSObject is garbage collected.  Contains a reference counter to keep reference counts in sync with OpenSSL's internal reference counts.  Contains the memory ownership concept to prevent double-freeing native memory, or attempting to free memory that is not owned by the object such as a reference to OpenSSL static memory.
          Library Information
          OSSslVersion
          Query object to get information about the current library or can be requested to perform checks to make sure everything is setup ok in the environment.  For usage, run the class side examples in OpenSSLVersionExamples
          Class methods: Accessing
          current
          Answer the current version of OpenSSL in use.  This will be undefined until the library is properly initialized
          Answers:
          <OSSslVersion> - version object
          <UndefinedObject> - not set yet
           
          Class methods: Factory
          getBindingVersion
          Answers the binding version of the Smalltalk wrapper.  This is the minimum version of the OpenSSL cryptographic library supported by VA Smalltalk.
          Answers:
          <OSSslVersion> - version instance
           
          getLibraryVersion
          Answers the version of the OpenSSL cryptographic library that VA Smalltalk binded to.
          Answers:
          <OSSslVersion> - version instance
           
          Class methods: Status Check
          printStatusCheck
          Check that the OpenSSL Crypto Library is installed and available. Check that VA's threading support library is installed and available. Check that the version of the OpenSSL Library meets the minimum requirement defined by the binding.
          Errors to any of the various checks are printed to the Transcript.
          Answers:
          <Boolean> - true if status check passed, false otherwise
           
          printStatusCheckOn: aStream
          Check that the OpenSSL Crypto Library is installed and available. Check that VA's threading support library is installed and available. Check that the version of the OpenSSL Library meets the minimum requirement defined by the binding.
          Errors to any of the various checks are printed to aStream.
          Arguments:
          aStream - <WriteStream Interface>
          Answers:
          <Boolean> - true if status check passed, false otherwise
           
          statusCheck
          Check that the OpenSSL Crypto Library is installed and available. Check that VA's threading support library is installed and available. Check that the version of the OpenSSL Library meets the minimum requirement defined by the binding.
          Errors are ignored, this simply answers a <Boolean>.
          Answers:
          <Boolean> - true if status check passed, false otherwise
           
          Instance methods: Printing
          printOn: aStream
          Print the full version information on @aStream.
          Arguments:
          aStream - <WriteStream>
           
          Instance methods: Version Number
          fix
          Answer the fix element of the version.
          Answers:
          <Integer> - fix number
           
          is10
          Answer true if the version of OpenSSL is 1.0.x.
          Answers:
          <Boolean>
           
          is100
          Answer true if the version of OpenSSL is 1.0.0.
          Answers:
          <Boolean>
           
          is101
          Answer true if the version of OpenSSL is 1.0.1.
          Answers:
          <Boolean>
           
          is102
          Answer true if the version of OpenSSL is 1.0.2.
          Answers:
          <Boolean>
           
          is11
          Answer true if the version of OpenSSL is 1.1.x.
          Answers:
          <Boolean>
           
          is110
          Answer true if the version of OpenSSL is 1.1.0.
          Answers:
          <Boolean>
           
          major
          Answer the major element of the version.
          Answers:
          <Integer> - major number
           
          minor
          Answer the minor element of the version.
          Answers:
          <Integer> - minor number
           
          patch
          Answer the patch element of the version.
          Answers:
          <Character> - patch letter
           
          status
          Answer the status of the version
          Answers:
          <Symbol> - #Development | #Release | #Beta
           
          Instance methods: Version Text
          builtOn
          Answer a <String> describing the build date.
          Depending on compiler flags, this may be unavailable which can yield the strings:
          'built on: reproducible build, date unspecified' or 'built on: date not available'
          Answers:
          <String> - built on information
           
          compilerFlags
          Answer a <String> describing the compiler flags used to build the library.
          Depending on the compiler flags used, this may be unavailable which yields
          the string: 'compiler: information not available'
          Answers:
          <String> - compiler flags
           
          directory
          Answer a <String> describing the directory the library was built in.
          Depending on the compiler flags used, this may be unavailable which yields
          the string: 'OPENSSLDIR: N/A'
          Answers:
          <String> - build directory
           
          platform
          Answer a <String> describing the platform the library was built on.
          Depending on the compiler flags used, this may be unavailable which yields
          the string: 'platform: information not available'.
          Answers:
          <String> - platform
           
          version
          Answer a <String> describing the library version information.
          This may include date information of the version.
          Answers:
          <String> - version info