# Version History

#### 16.6.3:

- Fixed problem where the Intel macOS segments in the plugin were all bad.
- Fixed issue where some parts of the plugins showed the version number 16.6.2 which should have been 16.6 at the time.

#### 16.6 (this version incorrectly had the label 16.6.2 in some places):

- Updated zlib to 1.3.2.
- Did various of security patches.
- The plugin code segments for macOS platforms are now a lot smaller than before.

#### 16.5.2:

- Fixed problem with the EinhugurVault class on Windows systems.

#### 16.5:

- Added EinhugurVault class. which uses the operating system's credential storage on each type of operating system. (KeyChain on macOS, Credential Vault on Windows and Secret Service API on Linux).
- Added EinhugurVaultException class.
- Added Example project for the Vault class.

#### 16.2.2:

- Fixed problem where ZipArchiveReader kept lock on the file after closing.

#### 16.2.0:

- Fixed crash if one letter was passed into 2FA_TOTP.
- Fixed 128 bit key generation for 2FA_TOTP.

#### 16.1.4:

- Fixed problem where on e segment had demo message in it.

#### 16.1.2:

- Fixed problem with AES on iOS where it had incorrect endian causing incorrect results.

#### 16.1:

- Added Ed25519 public key signing classes.
- Took out most encodings from the main plugin and put in new separate plugin, e-CryptIt Engine - Encodings to give users more options on what they install instead of installing everything to keep Xojo as fast as possible.

#### 16.0:

- Added Linux ARM 64 build. (Works for Xojo 2022r4 or later).

#### 15.2.2:

- Fixed Linux linker error.

#### 15.5:

- Added Windows Arm 64 build.

#### 15.0:

- Added Einhugur_2F2_TOTP class. This class is for two factor authentication and is compatible with for example the Microsoft Authenticator and Google Authenticator apps.
- Added 4 new example projects for the new Einhugur_2F2_TOTP class.
- Added convenience shared Hash method to HMAC_MD5 class to hash small data with less code.
- Added convenience shared Hash method to MD5 class to hash small data with less code.
- Added convenience shared Hash method to SHA class to hash small data with less code.
- Added convenience shared Hash method to SHA1 class to hash small data with less code.
- Added convenience shared Hash method to HMAC_SHA1 class to hash small data with less code.
- Added convenience shared Hash method to SHA_256 class to hash small data with less code.
- Added convenience shared Hash method to SHA_384 class to hash small data with less code.
- Added convenience shared Hash method to SHA_512 class to hash small data with less code.
- Added convenience shared Hash method to HMAC_SHA_256 class to hash small data with less code.
- Added convenience shared Hash method to HMAC_SHA_384 class to hash small data with less code.
- Added convenience shared Hash method to HMAC_SHA_512 class to hash small data with less code.
- Added convenience shared Hash method to SHA3 class to hash small data with less code.
- Added convenience shared HashAsHex method to SHA3 class to hash small data with less code.
- Added convenience shared Hash method to HMAC_SHA3 class to hash small data with less code.
- Added convenience shared HashAsHex method to HMAC_SHA3 class to hash small data with less code.

#### 14.6:

- Added EinhugurBcrypt class.
- Added Crypt example project.

#### 14.5:

- Added EinhugurZStandard class for ZStandard high compression rate compression.
- Added Example project showing ZStandard compression using Xojo threads.
- Added Example project showing ZStandard compression using Native threads.

#### 14.4:

- Added EinhugurBase32 module which supports RFC 4648, base32hex - RFC 2938 and z-base-32 Base32 variants.
- Changed methods in EinhugurBase64 module from Global to public scope - See migration notices.
- Changed names of methods in the EinhugurBase64 module - See migration notices.

#### 14.3:

- Added Arm support to iOS Simulator target.

#### 14.2.2:

- Retargeted iOS build to set same minimum version as Xojo sets (iOS 11 instead of iOS 13).

#### 14.2:

- Added Apple iOS compile for the UUCoderStream class.
- Added Apple Silicon compile for the UUCoderStream class. (Not tested).
- Modernised API-s under the hood on UUCoderStream and got rid of Carbon Decencies.

#### 14.1:

- Added Apple iOS compile for the LZMA class.
- Added Apple Silicon compile for the LZMA class. (Not tested).
- Added Apple iOS compile for the LZMA2 class.
- Added Apple Silicon compile for the LZMA2 class. (Not tested).
- Added Apple iOS compile for the ZCompression class.
- Added Apple Silicon compile for the ZCompression class. (Not tested).
- Added Apple iOS compile for the ZStream class.
- Added Apple Silicon compile for the ZStream class. (Not tested).
- Added Apple iOS compile for the ZStreamWriter class.
- Added Apple Silicon compile for the ZStreamWriter class. (Not tested).
- Added Apple iOS compile for the ZStreamReader class.
- Added Apple Silicon compile for the ZStreamReader class. (Not tested).
- Added Apple iOS compile for the ZipArchive class.
- Added Apple Silicon compile for the ZipArchive class. (Not tested).
- Added Apple iOS compile for the ZipArchiveReader class.
- Added Apple Silicon compile for the ZipArchiveReader class. (Not tested).
- Added Apple iOS compile for the ZipArchiveWriter class.
- Added Apple Silicon compile for the ZipArchiveWriter class. (Not tested).
- Added Apple iOS compile for the ZipEntry class.
- Added Apple Silicon compile for the ZipEntry class. (Not tested).

#### 14.0:

- Added new Class EinhugurSecureString.
- Added Apple Silicon compile for the AES_CBC class. (Not tested).
- Added Apple iOS compile for the AES_CBC class.
- Added Apple Silicon compile for the AES_ECB class. (Not tested).
- Added Apple iOS compile for the AES_ECB class.
- Added Apple Silicon compile for the Base64Stream class. (Not tested).
- Added Apple iOS compile for the Base64Stream class.
- Added Apple Silicon compile for the BlowFishECB class. (Not tested).
- Added Apple iOS compile for the BlowFishECB class.
- Added Apple Silicon compile for the BlowFishCBC class. (Not tested).
- Added Apple iOS compile for the BlowFishCBC class.
- Added Apple Silicon compile for the HMAC_MD5 class. (Not tested).
- Added Apple iOS compile for the HMAC_MD5 class.
- Added Apple Silicon compile for the HMAC_SHA1 class. (Not tested).
- Added Apple iOS compile for the HMAC_SHA1 class.
- Added Apple Silicon compile for the HMAC_SHA3 class. (Not tested).
- Added Apple iOS compile for the HMAC_SHA3 class.
- Added Apple Silicon compile for the HMAC_SHA_256 class. (Not tested).
- Added Apple iOS compile for the HMAC_SHA_256 class.
- Added Apple Silicon compile for the HMAC_SHA_384 class. (Not tested).
- Added Apple iOS compile for the HMAC_SHA_384 class.
- Added Apple Silicon compile for the HMAC_SHA_512 class. (Not tested).
- Added Apple iOS compile for the HMAC_SHA_512 class.
- Added Apple Silicon compile for the MD5 class. (Not tested).
- Added Apple iOS compile for the MD5 class.
- Added Apple Silicon compile for the RIPEMD class. (Not tested).
- Added Apple iOS compile for the RIPEMD class.
- Added Apple Silicon compile for the SHA class. (Not tested).
- Added Apple iOS compile for the SHA class.
- Added Apple Silicon compile for the SHA1 class. (Not tested).
- Added Apple iOS compile for the SHA1 class.
- Added Apple Silicon compile for the SHA3 class. (Not tested).
- Added Apple iOS compile for the SHA3 class.
- Added Apple Silicon compile for the SHA_256 class. (Not tested).
- Added Apple iOS compile for the SHA_256 class.
- Added Apple Silicon compile for the SHA_384 class. (Not tested).
- Added Apple iOS compile for the SHA_384 class.
- Added Apple Silicon compile for the SHA_512 class. (Not tested).
- Added Apple iOS compile for the SHA_512 class.
- Added Apple Silicon compile for the Serpent class. (Not tested).
- Added Apple iOS compile for the Serpent class.
- Added Apple Silicon compile for the TwofishCBC class. (Not tested).
- Added Apple iOS compile for the TwofishCBC class.
- Added Apple Silicon compile for the TwofishCFB1 class. (Not tested).
- Added Apple iOS compile for the TwofishCFB1 class.
- Added Apple Silicon compile for the TwofishECB class. (Not tested).
- Added Apple iOS compile for the TwofishECB class.
- Added Apple Silicon compile for the EinhugurECrypt module. (Not tested).
- Added Apple iOS compile for the EinhugurECrypt module.
- Added Apple Silicon compile for the EinhugurBase64 module. (Not tested).
- Added Apple iOS compile for the EinhugurBase64 module.
- Added Apple Silicon compile for the CRC1 class. (Not tested).
- Added Apple iOS compile for the CRC1 class.
- Added Apple Silicon compile for the CRC16 class. (Not tested).
- Added Apple iOS compile for the CRC16 class.
- Added Apple Silicon compile for the CRC3 class. (Not tested).
- Added Apple iOS compile for the CRC13 class.
- Added Apple Silicon compile for the CRC32 class. (Not tested).
- Added Apple iOS compile for the CRC132 class.
- Added Apple Silicon compile for the CRC64 class. (Not tested).
- Added Apple iOS compile for the CRC164 class.
- Added Apple Silicon compile for the CRC8 class. (Not tested).
- Added Apple iOS compile for the CRC8 class.
- Added Apple Silicon compile for the EinhugurChecksum module. (Not tested).
- Added Apple iOS compile for the EinhugurChecksum module.

#### 13.5:

- ZipArchiveWriter now puts UTF8 flag in Bit 11 of the special flags to support proper unicode handling of file name and comments.
- Added ProgressDelegate to the Zip Archive class.
- Added optional progress parameter to both variations of AddFile on the ZipArchiveWriter class.
- Added optional progress parameter to both variations of AddFileContent on the ZipArchiveWriter class.
- Added optional progress parameter to both variations of AddItem on the ZipArchiveWriter class.
- Added excellent 3rd party example projects from Pierre-Jean GOULIER for Zip Archives.
- Added urlMode parameters to the Base64Stream class.
- Added Base64EncodeURL method to the EinhugurBase64 module.
- Added Base64DecodeURL method to the EinhugurBase64 module.

#### 13.35:

- Adjusted for Xojo 2019r2.x API changes.

#### 13.34:

- Removed deprecated macOS FSFork API's from the ZStream classes.
- Fixed macOS 64 bit issue with ZStreamReader returning error code after reading.

#### 13.3:

- Made the ZStreamReader more defensive if custom stream is providing more bytes than the compressor is asking for.
- Adjusted Minimum macOS required, as it was higher than needed.

#### 13.1.8:

- Fixed linker Error on Linux systems with ZipArchives.

#### 13.1.7:

- Fixed issue with Zip archives on Windows systems.

#### 13.1.6:

- Fixed problem with ZipArchiveWriter when writing empty directories.

#### 13.1.5:

- Fixed console problem with ZipArchiveReader.
- Fixed console problem with ZipArchiveWriter.

#### 13.1.4

- ZStream.GetZipEngineHandle is now marked as Console safe so that other plugins such as ExcelWriter and PDF Plugin can work in console applications.

#### 13.1.1:

- Improved the ZipEngineHandle object internally to prepare for supporting the soon to be released ExcelWriter plugin.

#### 13.1:

- Added two variations of AddFileContent methods to the ZipArchiveWriter class.
- MacBinaryStream is now 64bit compatible. (Even if this is legacy encoding then it turned up that some file formats need to use this internally so minimum 64bit support is needed).

#### 13.0.1:

- Fixed segment errors on Windows systems in several parts of the plugin.

#### 13.0:

- Added new CRC1 class.
- Added new CRC3 class.
- Added new CRC8 class that offers 10 variations of CRC8 and can support custom variations.
- Added new CRC16 class that offers 21 variations of CRC16 and can support custom variations.
- Added new CRC32 class that offers 9 variations of CRC32 and can support custom variations.
- Added new CRC64 class that offers 4 variations of CRC64.
- Added ExtractFileToStringFromEntryIndex method to the ZipArchiveReader class.
- Deprecated Crc32(bytes as String, crc as UInt32) as UInt32
- Deprecated Crc32_MemoryBlock(bytes as MemoryBlock,offset as Integer,length as Integer,crc as UInt32) as UInt32.
- Deprecated Crc16(bytes as String, crc as UInt16) as UInt16.
- Deprecated Crc16_MemoryBlock(bytes as MemoryBlock, offset as Integer,length as Integer,crc as UInt16) as UInt16.
- Deprecated Crc16(bytes as String) as UInt16.
- Separated all checksum algorithms from the main plugin to help users deal with the Max DLL issue on Xojo for Windows. It gives more options to pull out unused plugin segments.

#### 12.6:

- Added LZMA compression class.
- Added LZMA2 compression class.
- Separated all compression from the main plugin to help users deal with the Max DLL issue on Xojo for Windows. It gives more options to pull out unused plugin segments.
- Added PluginVersion method to the EinhugurZipArchives module.
- Added PluginVersion method to the EinhugurChecksum module.
- Added PluginVersion shared method to the ZCompression class.
- Added PluginVersion shared method to the ZStreamWriter class.
- Added PluginVersion shared method to the ZStreamReader class.
- Added PluginVersion shared method to the ZStream class.

#### 12.5.5:

- Added GetZipEngineHandle shared method to the ZStream class to allow other plugins to use the Zip engine.

#### 12.5.3:

- Fixed Linux linker errors with the ZCompression class, CRC functions and Adler functions. (Affected Linux 32bit, 64bit and ARM)

#### 12.5.2:

- * Fixed ZStream issues on all Linux platforms, though most notably on 64bit Linux and potentially MacOS X 64 bit.

#### 12.5:

- Added ZipArchive abstract class.
- Added ZipArchiveReader class.
- Added ZipArchiveWriter class.
- Added support for RIPEMD 256.
- Added support for RIPEMD 320.
- Changed all the RIPEMD classes into one class that can handle all four of the bit size options.
- Fixed issue with corruption on 32 bit Linux segments.
- Updated the RIPEMD example project for the new bit modes and the change of the class structure.
- Added new example project for the new ZipArchives.

#### 12.0:

- Added 64 bit compile support for Mac target.
- Added 64 bit compile support for Windows target.
- Added 64 bit compile support for Linux target.
- Added ARM compile support for Linux target.
- All Linux targets are now compiled with CLang.
- Some global functions were moved into modules.
- Some of the ciphers can now work on MemoryBlocks as well as Strings like before.
- Most of the Hash algorithms can now work on MemoryBlocks as well as Strings like before.
- Adler and CRC32 now return UInt32 instead of Integer.

#### 11.0.1:

- Fixed Linux Link error in simple Encryption and in Twofish encryption.

#### 11.0:

- Added SHA3 class (224, 256, 284 and 512 bits)
- Added HMAC_SHA3 class (224, 256, 284 and 512 bits)
- Now also ships with a Xojo plugin. The Xojo plugin comes in the new Xojo format and is compiled with newer SDK. (Even if there was nothing calling for having it in Xojo binary then for upcoming 64bit versions of Xojo’s then we need to be ready to have the plugin in the new Xojo format).
- Split the plugin into e-CryptIt Engine and e-CryptIt Engine Legacy Encodings, so that those who do not need old file encoding formats (such as MacBinary III, BinHex and AppleSingle) that not many use nowadays don’t need to load all those segments.
- Base64Encode global method has been moved from Global scope to EinhugurBase64 module
- Base64Decode global method has been moved from Global scope to EinhugurBase64 module
- Encrypt (e-CryptIt Engine proprietary encryption) global method has been moved from Global scope to EinhugurEncrypt module.
- Decrypt (e-CryptIt Engine proprietary decryption) global method has been moved from Global scope to EinhugurEncrypt module.
- eCryptEncode (e-CryptIt Engine proprietary encoding) global method has been moved from Global scope to EinhugurEncrypt module.
- eCryptDecode (e-CryptIt Engine proprietary decoding) global method has been moved from Global scope to EinhugurEncrypt module.
- Combined some small and redundant segments to help users deal with the maximum DLL loading restriction on Windows version of Xojo.
- Moved all global checksum methods into EinhugurChecksums module.
- Greatly reduced dependencies on Linux so the plugin can work in Linux console application where no GUI libraries are installed in the Linux system.
- Changed the compile architecture on Windows systems.
- Updated some internal old and deprecated APIs.

#### 10.2.5:

- Plugin segments come code signed on MacOS X systems.
- Documentation now also ships as docset for the awesome Dash viewer from http://kapeli.com/dash.
- Fixed the plugin to work with more modern Linux distros.

#### 10.2.1:

- Fixed issues with test vectors failing on Windows systems due to the change of compiler architectures on Windows in the following classes: Sha_256, HMAC_Sha256, Sha384, HMAC_Sha384, Sha512 and HMAC_SHA512.

#### 10.2:

- Various of tweaks and changes were done to make the plugin more compatible with Real Studio 2012.
- Changed the compile architecture on Windows systems.

#### 10.1:

- Re-did all the zip IO for Windows to make sure unicode file names are working.
- Moved some of the segments of the plugin to use faster compilers on Windows systems.
- Re-Factored some parts of the plugin to stop using depreciated calls in REALbasic.
- Did some Cocoa improvements.

#### 10.0:

- Added Cocoa compile support to all segments of the plugin.
- Updated the YEncEncoder to use more modern file API's on MacOS X.
- Updated the BinhexEncoderStream to use more modern file API's on MacOS X.

#### 9.3.9:

- Added a CompressedBytesRead property to the ZStreamReader class.
- Added a CompressedBytesProcessed property to the ZStreamReader class.

#### 9.3.8:

- Fixed issues with Blowfish_CBC class in console mode.

#### 9.3.7:

- Fixed issues with AES_CBC class in console mode.

#### 9.3.6:

- Fixed some more new style REALbasic constructor issues.
- Plugin is now linked against and dependent on libstdc++6 instead of libstdc++5 on Linux systems.

#### 9.3.4:

- Added support for next generation of REALbasic.

#### 9.3.2:

- Improved console application support.

#### 9.3:

- Added a RIPEMD_128 class.
- Added a RIPEMD_160 class.
- Fixed several linux issues.
- The Universal Binary is now compiled as Bundle instead of dylib to support the new mechanism in REALbasic to load Mach-O plugins directly into memory.
- All classes and methods in the plugin have been marker as console safe.

#### 9.2:

- Added a HMAC_SHA_256 class.
- Added a HMAC_SHA_384 class.
- Added a HMAC_SHA_512 class.
- ZStreamWriter now supports file names with more than 31 letters on all MacOS systems.
- Improved Unicode support for file names in ZStreamWriter on all MacOS systems.
- ZStream (writing) new upports file names with more than 31 letters on all MacOS systems.
- Improved Unicode support for file names in ZStream when writing on all MacOS systems.
- Added test case example code to test against official test vectors in the documentation for the following algorithms: MD5, SHA1, SHA_256, SHA_384, SHA512, HMAC_MD5, HMAC_SHA1, HMAC_SHA_256, HMAC_SHA_384, HMAC_SHA512.

#### 9.0.2:

- Fixed a Linker error with the Serpent algorithm on Linux systems.
- Made minor adjustments with the Base64Stream.

#### 9.0:

- Added support for MacOS X Universal Build.
- Rewrote the MacBinaryStream to make use of newer MacOS API's instead of old depreciated ones.

#### 8.6:

- Added a new constructor to the ZStreamWriter class that adds support to write directly to a REALbasic BinaryStream and optionally allows for skipping gz header/trailer.
- Added a CRC read only property to the ZStreamWriter class.
- Added a CompressedSize read only property to the ZStreamWriter class.
- Added a UncompressedSize read only property to the ZStreamWriter class.
- Fixed a bug with one of the constructors for the ZStreamWriter where it was taking IBinaryStreamReader instead of a IBinaryStreamWriter as a parameter.

#### 8.5.4:

- Fixed a buffer overflow problem in the UUDecoder when file names were longer than 150 letters.
- Windows segments for the UU-encoder and decoder are now compiled with a different compiler to support future roadmap and long term goals for the plugin.

#### 8.5.2:

- Fixed a problem on Linux systems where the ZStream class was not working when decompressing data.

#### 8.5.1:

- Fixed a problem where the yEnc-decoder was causing a linker error crash on Linux systems.

#### 8.5:

- Fixed a problem in the yEnc Encoder where it was putting floating point number in the yEnc headers when encoding large files.
- Fixed a problem in the yEnc Encoder where a extra space was after the file name in the yEnc header.
- Changed the UUEncoder so that in the trailer mark ASCII code 96 is put there instead of ASCII code 32. Although both are valid then MS Outlook is not able to deal with decoding it when it has 32.
- Windows segments for the yEnc encoder and decoder are now compiled with a different compiler to support future roadmap and long term goals for the plugin.

#### 8.4.8:

- Fixed a critical problem that was born in version 8.4.7 where AES, Twofish and Serpent were failing on Windows systems.

#### 8.4.7:

- Did more optimizations on the plugin.
- Fixed a minor memory leak in the ZStreamReader object.
- The DEMO version of the plugin will no longer post a lot of bogus demo messages when launching the REALbasic 2005 IDE.

#### 8.4.6:

- Fixed a problem with the yEncDecoder class when used with REALbasic 2005 on Windows systems.

#### 8.4.4:

- Fixed a problem where the supplied Resource stream was not getting encoded for MacBinaryStream on Windows and Linux systems.
- Added a Constructor to the MacBinaryStream that takes additionally MacCreator, MacType code and Mac Finder flags, to make the support for creating Mac files on Windows and Linux better.
- Improved the documentation.

#### 8.4.2:

- The plugin was altered so it could pass tests for next generation of REALbasic.
- Some example projects were improved.

#### 8.4:

- Added a Serpent ECB Encryption algorithm.
- Added a Serpent CBC Encryption algorithm.
- Added a CipherMode constant module which currently can be used with the Serpent algorithm.
- Added a CipherKeyType constant module which currently can be used with the Serpent and Twofish algorithms.
- Fixed a potential memory corruption problem with the AES CBC encryption class.
- Added and updated some encryption example projects.

#### 8.2.8:

- Added support for decoding incorrect UUEncoded files from a certain UUEncoder that has become common on the newsgroups.

#### 8.2.6:

- * Did a small change to make the YEncDecoder to work on non NT based Windows systems.

#### 8.2.4:

- The FileName property in the UUCoderStream is no longer truncated to 31 characters when the original file name was longer.

#### 8.2.2:

- Fixed a problem in the yEnc decoder where sometimes the last character of the name of the file got lost.

#### 8.2:

- Re-linked all the Mach-O plugin segments to not have flat namespaces to avoid problems that such causes in end user applications.

#### 8.1.2:

- Fixed a problem with the MacBinaryStream decoding, which caused incorrect decoding on 1 of every 127 files that had a resource fork.
- The e-CryptIt Engine now comes with new much higher quality HTML based documentation instead of the Plugin Plunger documentation.

#### 8.1:

- Added a YEncEncoder class with support for creating both single part and multipart yEnc files.
- The YEncDecoder now supports decoding files where the original file name had a space in its file name.
- Error -10010 "No CRC information was found" is no longer posted in the YEncDecoder when no CRC field is found since the YEnc specs state that the CRC field is not mandatory.
- Added a new Error code to the YEncDecoder: -10021 "Error looking for Yenc trailer".
- Added a new error check which checks header size info against trailer size info and decoded file size.
- Added a OriginalSize property to the YEncDecoder class.

#### 8.0:

- Added a YEncDecoder class.
- Added a ZStreamReader class.
- Added a ZStreamWriter class.
- Added Mach-O compile support for all algorithms in the plugin. (A REALbasic 5.5.2 and later feature)
- The ZStreamReader and ZStreamWriter are meant to replace the ZStream class. The new classes use a more modern and efficient Einhugur streaming technology than the old one.

#### 7.8:

- Added a AppleSingleEncoderStream class.
- Added a AppleSingleDecoderStream class.
- Added a BinHexEncoderStream class.
- Changed the MacBinaryStream class to implement the new IBinaryStreamReader and IBinaryStreamWriter interfaces instead of IStreamReader and IStreamWriter.

#### 7.7:

- Decoding MacBinary files with the MacBinaryStream on MacOS X will now leave the decoded file with a executable flag. (This is constant with what other decoder applications do)
- Decoding MacBinary files with the MacBinaryStream on Linux will now leave the decoded file with a executable flag.
- Added a new constructor to the UUCoderStream class to support preserving of Unix based file permissions when encoding.
- Added a SetDecodedFilePermissions method to the UUCoderStream class to support preserving of Unix based file permissions when decoding.
- Added Linux support for CRC32.
- Added Linux support for Adler32.
- Added Linux support for Zip compression on Strings.
- Added Linux support for Zip compression on file streams.

#### 7.6:

- Added AES_ECB encryption algorithm class.
- Added AES_CBC encryption algorithm class.
- Fixed a flaw in the TwofishCBC class where it was unusable if the IV was not set.
- Added TwofishCFB1 encryption algorithm class.
- Added Linux support for the Twofish ECB class.
- Added Linux support for the Twofish CBC class.
- Added Linux support for the e-CryptIt algorithm.
- Added Linux support for the e-CryptEncode algorithm.
- Added Linux support for the MD5 class.
- Added Linux support for the HMAC_MD5 class.
- Added Linux support for the SHA class.
- Added Linux support for the SHA1 class.
- Added Linux support for the HMAC_SHA1 class.
- Fixed a Win32 problem with the UUCoderStream class.
- Added Linux support for the UUCoderStream class.
- Added Linux support for the Base64Stream class.

#### 7.5:

- Added Linux compile support for MacBinaryStream.
- Added Linux compile support for Blowfish ECB encryption/decrption.
- Added Linux compile support for Blowfish CBC encryption/decrption.
- Added Linux compile support for the Base64 encoder/decoder.
- Added Linux compile support for the BinHex encoder/decoder.
- Added Linux compile support for the CRC16 algorithm.
- Added Linux compile support for the SHA_256 algorithm.
- Added Linux compile support for the SHA_384 algorithm.
- Added Linux compile support for the SHA_512 algorithm.
- Accelerated the Blowfish algorithm.
- Fixed a problem when a REALbasic Windows IDE was used to compile for MacOS.
- Fixed a problem where MacBinaryStream did not work on MacOS 8.6 systems. (This is a unofficial fix since we don't officially support anything later than MacOS 9)

#### 7.4.2:

- Fixed a problem when a REALbasic Windows IDE was used to compile for MacOS.

#### 7.4.1:

- Fixed a class interface problem that could cause a linker error when building apps with REALbasic versions older that REALbasic 5.

#### 7.4:

- Added a MacBinaryStream class with the following new things over the the existing MacBinaryIII class:
- + Has streaming capabilities.
- + Is IStreamReader and IStreamWriter compatible.
- + Is supported on Windows systems.
- Moved shared encryption and streaming interfaces to TypeLib, to enabled better sharing between various of plugins and plugin segments.

#### 7.3.5:

- Changed the UUEncoder padding, so that a Outlook on Windows systems, which apparently only supports one padding type, can decode the encoded files.
- Fixed a problem with HMAC_SHA1, where it was failing on test vectors larger than 64 bytes.

#### 7.3:

- Added support for the REALbasic Windows IDE.
- Fixed a problem with initializing a empty Twofish CBC IV.

#### 7.2:

- Added a SHA_256 hashing class.
- Added a SHA_384 hashing class.
- Added a SHA_512 hashing class.
- Changed the UUCoderStream to use IStreamReader and IStreamWriter instead of IOProc.
- Removed the IOProc class.
- The Plugin now also ships with a Plugin for the Win32 IDE.

#### 7.1:

- Added a Base64Stream class, which is more oriented to handle MIME Base64 with extra CR symbols.
- Greatly improved error handling in the ZStream class.
- Fixed a problem with a Demo MessageBox comming from some Win32 compiled applications.
- Added a Crc16 function.
- Added a Crc16_MemoryBlock function.
- Added a Crc32_MemoryBlock function.
- Added a Adler32_MemoryBlock function.
- Fixed a BinHex problem in PPC and Carbon Targets where the new BinHex encoder was forgetting the resource fork.

#### 7.0.3:

- Fixed fixed a potential memory corruption problem in the e-CryptIt Algorithm.

#### 7.0.2:

- Fixed a incorrect implementation of the e-CryptIt Algorithm, which seems to have been incorrect since version 6.8.

#### 7.0:

- Added a BlowfishECB class (This replaces the old functions).
- Added a BlowfishCBC class which adds a CBC chained Blowfish encryption to the plugin.
- Added a TwofishECB class which adds a ECB unchained Twofish encryption to the plugin.
- Added a TwofishCBC class which adds a CBC chained Twofish encryption to the plugin.
- Added a IEncryptionAlgorithm Interface which BlowfishECB, BlowfishCBC, TwofishECB and TwofishCBC implement.
- Removed the old function based BlowFish ECB encryption and all the ByRef string referencing relating to it.
- Added new example projects for the new algorithms.
- The ZStream class is now implemented with native MacOS calls rather that MSL calls making it 35% smaller on Carbon and 50% smaller on PPC.
- Fixed a bug with the ZStream that made it crash when used on OS 8.6.
- Fixed a minor memory leak in the ZStream constructor.
- The ZStream now Implements the IStreamWriter and IStreamReader Interface.
- The ZStream now can take IStreamReader and IStreamWriter as a constructor parameter, which add the ability to do in memory compression and decompression.

#### 6.8.3:

- Fixed a problem where the Zip compression was posting Demo message boxes in non demo version of the plugin on Win32 targets.

#### 6.8.2:

- Fixed a problem where the BlowFish encipher was posting Demo message boxes in non demo version of the plugin.

#### 6.8.1:

- Fixed a binding problem with the IStreamWriter in the BinHex encoder.

#### 6.8:

- Added a IStreamWriter Interface.
- Added a IStreamReader Interface.
- The BinHex Encoder can now write to any class that implements the IStreamWriter Interface.
- The BinHex Decoder can now read from any class that implements the IStreamReader Interface.
- The BinHex Encoder is now supported on Win32 targets.
- The BinHex Decoder is now supported on Win32 targets. (decodes the datafork only)
- Added a ResourceForkWasSkipped property to the BinHex class. (for Win32 purposes)
- Fixed a minor problem in the Base64 decoder where sometimes when a Base64 string was assigned to a FolderItem property, then the string would be in incorrect length.
- Made the e-CryptIt Flexible Encoder much faster.
- Made the e-CryptIt Flexible Decoder much faster.
- The Encrypt function no longer does a ByRef encryption. (This means minor change of syntax)
- The Decrypt function no longer does a ByRef decryption. (This means minor change of syntax)
- Fixed a minor potential problem in the ZCompression class.
- Added a IHashAlgorithm Interface.
- MD5, HMAC_MD5, SHA, SHA1 and HMAC_SHA1 now all implement the IHashAlgorithm Interface.

#### 6.7:

- Did major speed optimizations in MacBinary encoder.
- Did major speed optimizations in Base64 encoder and decoder.
- Did minor speed optimizations in MacBinary decoder.
- Did minor speed optimizations in the BinHex decoder.
- Did minor speed optimizations in the SHA and SHA1 class.
- Did minor speed optimizations in the MD5 class.
- Did minor speed optimizations in the ZStream class.
- Did minor speed optimizations on zip compression for strings.
- Did minor speed optimizations for Adler32 and CRC32.
- Fixed a problem that could sometimes make Carbon REALbasic, crash on launch when running Classic OS.
- Made the footprint of the ZStream a lot smaller on Win32 and Carbon targets.
- Fixed Win32 concurrency issue with other Einhugur plugins.
- The plugin now comes pre-patched to avoid the REALbasic 68k segment loading bug.
- The e-CryptIt Compatibility plugin for backward compatibility with e-CryptIt Engine 5.x is no longer shipped with the package.

#### 6.6:

- Revisited all segments of the e-CryptIt Engine, with the goal to gain some more speed.
- All parts of the e-CryptIt Engine should gain some more speed by this. Most significant speed improvement is in Hashing algorithms, and some in Encoding algorithms and a little in encryption algoritms.
- Fixed a possible memory corruption problem under Win32 in the UUCoderStream class.
- Improved the Einhugur Win32 miniruntime, making the x86 plugins smaller and faster.

#### 6.5.3:

- Fixed Position property of the ZipStream.

#### 6.5.2:

- Fixed Position property of the ZipStream.
- Fixed Filenames when decoding some MacBinary II encoded documents.

#### 6.5:

- Added AppleSingle / Double Encoding.
- Added AppleSingle / Double Decoding.
- More speed for Base64 encoder/decoder
- More speed for MacBinary encoder/decoder.
- More speed for BinHex encoder/decoder.
- More speed for UUCodingStream.

#### 6.2:

- Added a HMAC-MD5 Keyed-Hashing algorithm.
- Added a HMAC-SHA1 Keyed-Hashing algorithm.
- Fixed a MacOS X Bug with MacBinary Encoder and decoder.
- Added sample projects for the new algorithms.
- Did more internal segmentation on all Hashing algorithms to minimise code size in compiled applications that use hashing.

#### 6.1:

- Changed the syntax of BinHex decoding so that location of the decoded file can be set.
- Fixed a Bug on MacBinary decoder where a file color would be set instead of a custom icon bit.

#### 6.0:

- New Endian safe BlowFish crypto engine. (The new engine is also compatible with correctly implemented BlowFish in correct endian in other programming environments)
- Added MD5 Hashing Algorithm (68k, PPC, Carbon, x86)
- Added SHA Hashing Algorithm (68k, PPC, Carbon, x86)
- Added SHA1 Hashing Algorithm (68k, PPC, Carbon, x86)
- The new BlowFish crypto engine has been made Carbon compatible.
- Regular crypto engine made Carbon compatible.
- Base64 encoder made Carbon compatible.
- BinHex encoder made Carbon compatible.
- MacBinary III encoder made Carbon compatible.
- UUCoderStream made Carbon compatible.
- IOProc made Carbon compatible.
- Zip compression on Streams and strings made Carbon compatible.
- CRC32 and Adler32 Checksums made Carbon compatible.
- x86 code for Regular crypto engine now compiled with Einhugur MiniRuntime 6.0, making the x86 plug smaller than before.
- x86 code for old and new BlowFish engine now compiled with Einhugur MiniRuntime 6.0, making the x86 plug smaller than before.
- x86 code for Base64 encoder now compiled with Einhugur MiniRuntime 6.0, making the x86 plug smaller than before.
- x86 code for UUCoderStream now compiled with Einhugur MiniRuntime 6.0, making the x86 plug smaller than before.
- x86 code for IOProc now compiled with Einhugur MiniRuntime 6.0, making the x86 plug smaller than before.
- The old engine has been separated from the Main plugin into a backward compatibility plugin.
- The old UUCoder has been put in the backward compatibility plugin.
- The old BlowFish crypto engine has been made Carbon compatible.
- The old UUCoder crypto engine has been made Carbon compatible.
- Added sample projects and updated some older ones.
- The documentation now all comes in RB PluginPlunger format instead of e-Help format.

#### 5.8:

- Fixed 68k Compile problem with Base64
- Fixed 68k Compile problem with BinHex
- Fixed 68k Compile problem with UUCoder
- Fixed 68k Compile problem with IOProc
- Fixed a very rare but possible corruption problem with UUDecoder.
- Added support for Chr(13)+Chr(10) and Chr(10)+Chr(13) linefeedsin UUDecoder.
- Added support for UUEncoded files with headers above the actual UUCoding that.
- Added Handler in UUDecoder for Files that have filenames that contain paths.
- Added Handler in UUDecoder for Files with illegal MacOS filenames.

#### 5.7:

- Internal testing version, never hit the street.

#### 5.6:

- Fixed 68k Compile problem with Strong crypto engine.
  (Was never officially out but few users got it for testing purposes)

#### 5.5:

- Added UUCoderStream class:
- - Easier to use than any of the previous of our encoders
- - More error handling than ever before.
- - Support for "in memory" IOProc.
- - 68k, PPC and x86 support.
- - Full Thread support, even if IOProc is enabled.
- Added IOProc support class.

#### 5.1:

- Added support for decoding UUEncoded documents with 13 as linefeed character instead of 10.

#### 5.0:

- Added Zip compression on strings (68k, PPC, x86)
- Added Zip compression on files (.z format) (68k, PPC, x86)
- Added CRC32 Checksums (68k, PPC, x86)
- Added Adler32 Checksums (68k, PPC, x86)
- Added documentation for implementing buffered Base64

#### 4.2:

- Problem with UUDecoder in all versions after 2.1a17 of REALbasic fixed
- Now compiled for REALbasic 2.1bX (the new SDK)
- x86 Encryption as well as the Base64 coder are now compiled with Einhugur MiniRuntime instead of the Metrowerks, making the x86 plugs almost 50% smaller
- UUCoding samples added again (they were for some reason missing in version 4.1)

#### 4.1:

- MacBinary III Decoder fixed

####