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
 
Last modified date: 08/09/2017