Short: OpenSSL as an Amiga shared library Author: AmiSSL Open Source Team Uploader: Oliver Roberts Type: util/libs Version: 4.12 Replaces: util/libs/AmiSSL-* Requires: AmigaOS 4.0/PPC, AmigaOS 3.0+/68020+ Architecture: ppc-amigaos >= 4.0.5; m68k-amigaos >= 3.0 URL: https://github.com/jens-maus/amissl This is version 4.12 of the open-source based AmiSSL library for Amiga based operating systems. Version 4.x is a new major release which comes with full compatibility to the OpenSSL 1.1.x line which includes important security related fixes, TLSv1.3 and comes with new encryption ciphers which are required nowadays to connect to modern SSL-based services (e.g. HTTPS). Backwards Compatibility: ----------------------- All applications compiled to use most previous versions of AmiSSLv4 will automatically use this latest version once installed. Unfortunately, due to some errors that were made in AmiSSL 4.3, applications compiled to specifically use AmiSSL 4.3 will need to be recompiled with the AmiSSL 4.4 SDK (or newer) in order for them to be able to use this latest version. Due to fundamental changes in the API between the old AmiSSLv3 and new v4 versions and the large changes between the old OpenSSL 0.9.x and the new OpenSSL 1.1.x line, applications have to be recompiled with the updated AmiSSL SDK to take full advantage of the modernized OpenSSL 1.1.x API. Besides that fundamental change, AmiSSLv4 can be installed on top of a AmiSSLv3 installation while still ensuring that applications compiled for AmiSSLv3 will continue to work properly. Requirements: ------------ - AmigaOS 4.0+/PPC, AmigaOS 3.0+/68020+ or MorphOS Version 4.12 (11.2.2022): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1m (14.12.2021) version, which brings security and bug fixes. - Updated root certificates to latest Mozilla-based bundle provided by https://curl.se/docs/caextract.html dated 1.2.2022. - Fixed RSA_X931_derive_ex() from not being reachable on OS3. - Fixed crash after OpenSSL fatal error message requester shown. - Cleaned up and unified error requesters, removing redundant code. - Fixed GCC linker alignment for all OS4 binaries. Version 4.11 (30.10.2021): ------------------------ - Updated root certificates to latest Mozilla-based bundle provided by https://curl.se/docs/caextract.html dated 26.10.2021. - Legacy entropy generation is now faster on OS3 machines, with the removal of delays caused by using the vblank timer, which typically causes AmiSSL to initialise 2 seconds faster (#57). - Fixed legacy entropy generation to correctly use an entropy factor of 4, as originally intended, which was broken since AmiSSL 4.3 (#57). - Entropy generation now uses SHA-256 instead of SHA-1. - Tweaked OS4 memory allocations to not be locked. - Fixed issues when redirecting OpenSSL tool output to a file (#58). - Added Ctrl-C break detection to the OpenSSL tool. - OS4 binaries now stripped further with --strip-unneeded-rel-relocs. Version 4.10 (25.08.2021): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1l (24.08.2021) version, which brings security and bug fixes, including: + Fixed an SM2 Decryption Buffer Overflow (CVE-2021-3711). + Fixed various read buffer overruns processing ASN.1 strings (CVE-2021-3712). - Updated root certificates to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ dated 05.07.2021. - Added Italian installer translation. Version 4.9 (02.04.2021): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1k (25.03.2021) version, which brings security and bug fixes. - Simplified and improved logic in amisslmaster.library for choosing which libraries to open. - Installer will now delete redundant AmiSSLv4 libraries where possible. - Added Swedish installer translation. - Updated icons with more modern GlowIcons. - Added sample openssl.cnf file and CA.pl helper script to the installation. - Added CA.pl documentation to OpenSSL.doc. Version 4.8 (13.03.2021): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1j (16.02.2021) version, which brings security and bug fixes. - Updated root certificates to latest Mozilla-based bundle provided by https://curl.se/docs/caextract.html. - Fixed corrupted OS3 libamisslauto.a (object name was too long). - Tweaked SDK examples and OpenSSL includes to be more compatible with vanilla VBCC and SAS/C compiler installations. - Restored SAS/C support to AmiSSL autoopen link library code. - Added native VBCC support to AmiSSL autoopen link library code. - Added lib/autoinit_amissl_main.c to SDK to allow VBCC, SAS/C and GCC users to compile their own link library, if required. Version 4.7 (17.12.2020): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1i (08.12.2020) version, which brings security and bug fixes. - Updated root certificates to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ - Fixed OpenSSL command and https developer example not having execute file permission bit set on OS3 Version 4.6 (08.06.2020): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1g (21.04.2020) version, which brings security and bug fixes. - Tweaks to allow and force Amithlon to use the 68060 target, due to 64-bit integer math emulation being broken in Amithlon (68080 and MorphOS should continue to use the more optimal 68020-40 target). Version 4.5 (29.03.2020): ------------------------ - Dropped FPU usage from 68060 target, allowing 68LC060 and 68EC060 processors to benefit from the 4.4 changes, without crashing. - Fixed a number of memory leaks, particularly where multithreaded applications would leak memory over time (although freed on exit). - All binaries now stripped of debug symbols, improving load time. - Fixed installer issue for MorphOS (#43). - Modernized and improved the https example source code. - Minor improvements/fixes. Version 4.4 (15.02.2020): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.1d (10.09.2019) version. - Applications compiled with the AmiSSL 4.3 SDK will need to be recompiled to use this release (if the AmiSSL 4.0-4.2 SDK was used, those applications do not need recompiling and will automatically use AmiSSL 4.4). - Updated root certificates to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ - Now includes separate 68020-40 and 68060 optimised versions. - Fixed poor 64-bit integer math performance (including erratic mouse movement) specific to 68060 processors, caused by software emulation of instructions not present on 68060 processors. - Added 68060 optimised 64-bit multiplication routine from vbcc with permission by Frank Wille. - Improved BN performance for 68060 (disabled m68k asm replacement as it's slower due to the above). - Improved elliptic curve performance for all m68k processors. - Fixed the OS3 target from crashing on systems with a 68020/030, but without an FPU (#37). - Disabled Poly1305 FPU algorithm on Tabor A1222 (#38). - Fixed TLS 1.3 cipher lookup failures on OS4, caused by compiler bug (#35). - OpenSSL.doc not updated for the last 14 years, but now automatically updated for each new release. - Fixed crashing OpenSSL command on OS3 (#28). - Fixed OpenSSL command not making path to openssl.cnf correctly (#34). - Fixed OpenSSL command -out parameter (#33). - OpenSSL s_server command can now be interrupted with Ctrl-C. - Install script fixes for MorphOS (#41). - Fixed include files for vbcc/m68k compilation (#20). - LhA release archive now packed using an older header level for better compatibility with some Amiga unpackers. - Minor improvements/fixes. Version 4.3 (21.02.2019): ------------------------ - Updated OpenSSL backend to latest OpenSSL 1.1.1a (20.11.2018) version including newest TLS 1.2 and TLS 1.3 protocol/cipher versions and general compatibility. - Updated root certificates to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ - Minor improvements/fixes. Version 4.2 (07.03.2018): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.0g (02.11.2017) version. - Updated root certificates to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ - Fixed https.c example cleanup code for non-OS4 targets (#18) - Reinstated AmigaOS multithreading support and semaphore protection, using the new thread API introduced in OpenSSL 1.1.0 (#17) - Include `ppcinline/macros.h` which contains all `LPXX()` macros to use the AmiSSL includes for MorphOS. - Minor improvements/fixes. Version 4.1 (13.03.2017): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.0e (16.02.2017) version. - MorphOS can now be selected as an install target with the OS3/m68k version being installed. For a native PPC version we would require some work to be done by some talented MorphOS developers. - Added some m68k asm replacement code for potentially speeding up BN calculation routines. - Added AmiUpdate compatibility. - Included a newlib compiled version of libamisslauto.a. - Minor improvements/Fixes for install script. Version 4.0 (07.02.2017): ------------------------ - Updated OpenSSL backend to full compatibility to latest OpenSSL 1.1.0d (26 Jan 2017) version. - Updated root certificate bundle to latest Mozilla-based bundle provided by https://curl.haxx.se/ca/ - Removed whole IsCipherAvailable() API and reenabled IDEA, MDC2 and RC5 ciphers as the protecting patents have expired during 2012 and 2015. - Enabled all PPC ASM optimizations in OpenSSL. - Switched build system to exclusively use GCC-based cross compilers for all platforms using proper baserel support for using the amissl shared library in a multi-application environment. General ------- AmiSSL is a shared library package, port of OpenSSL which is "an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library." AmiSSL contains three major components: the libraries, the certificate files and a port of the OpenSSL tool. Libraries --------- The main library is "amisslmaster.library" which acts as a proxy which opens the appropriate AmiSSL library (with compatibility to a certain OpenSSL version) for the programs using AmiSSL. It is possible to have different AmiSSL versions installed at the same time since amisslmaster.library will make sure that the correct libraries are opened. However, since a certain version of amisslmaster.library cannot know about the future releases of AmiSSL, it is important that the latest version of amisslmaster.library is always installed. The amisslmaster.library was introduced with AmiSSL v2, but since none of AmiSSL v1 file names collide with later AmiSSL releases, they can coexist on the same system with the later versions. The rest of the libraries are found inside the AmiSSL directory (assigned to AMISSL:Libs/AmiSSL). With the exception of AmiSSL v1 libraries there, none of them should be opened directly, but through amisslmaster.library. The technical details on this can be found in AmiSSL SDK documentation (see https://github.com/jens-maus/amissl/blob/master/dist/README-SDK). The previous versions of libraries in AmiSSL directory should be kept when a new version of AmiSSL is released since they may still be used. For example, IBrowse v2.3 uses AmiSSLv2 libraries through amisslmaster.library. These libraries are named "AmiSSL:Libs/AmiSSL/amissl_v2.library", "AmiSSL:Libs/AmiSSL/blowfish_v2.library", etc. and are based on OpenSSL 0.9.6g. The first release of AmiSSLv3 is based on OpenSSL 0.9.7g, latest available at the time. It includes "AmiSSL:Libs/AmiSSL/amissl_v097g.library" (all other libraries like blowfish, cast etc are now included in it and the name reflects the OpenSSL version number). Since OpenSSL 0.9.6g and 0.9.7g have incompatible API's and public structures, when IBrowse v2.3 tries to open AmiSSL through amisslmaster.library v3, amisslmaster.library will honor its request and open AmiSSLv2 libraries even though AmiSSLv3 library is available. The same applies to AmiSSLv4, the successor of AmiSSLv3. Another example: suppose that a program is compiled for OpenSSL 0.9.7g API. When it asks amisslmaster.library to open AmiSSL with that API, amisslmaster.library will open "AmiSSL:Libs/AmiSSL/amissl_097g.library". If a bugfix version of OpenSSL 0.9.7g called 0.9.7h with compatible API is released, AmiSSL could be updated to include "AmiSSL:Libs/AmiSSL/amissl_097h.library". The amisslmaster.library would then open "amissl_097h.library" on behalf of the program even though it was compiled for and asked for version 0.9.7g. The program would thus benefit from the fixed version without having to be recompiled. Certificates ------------ AmiSSL includes root certificate files which are installed into "AmiSSL:Certs" directory (Note: the AmiSSL: assign must exist - it is usually added to S:User-Startup by the install script). Each AmiSSL version comes with a full set of root certificates and has those that have expired removed. If you had some earlier versions of AmiSSL installed, it is suggested that the old AmiSSL:Certs directory is replaced with the certs directory from the latest AmiSSL archive (The installer script should usually take care of that). Please note that it is not suggested to manually add own certificates to "AmiSSL:Certs". You should rather add and maintain them in "AmiSSL:UserCerts" so that no future AmiSSL release will delete your own certificates. In addition, please note that usually applications providing SSL/TLS functionality should provide you a way to install your own certificates in this directory path. The OpenSSL command-line tool ----------------------------- A port of the OpenSSL command-line tool is also included and usually installed to AmiSSL: during installation. It is a "command line tool for using the various cryptography functions of OpenSSL's crypto library from the shell". The documentation for the OpenSSL tool is included in the archive and can also be reviewed online: https://www.openssl.org/docs/man1.1.1/man1/openssl.html. A sample openssl.cnf file is also installed to AmiSSL:, if it doesn't already exist, along with the CA.pl helper script, both of which aid the certificate generation features of the OpenSSL tool. IMPORTANT NOTE: -------------- This release comes with binaries for the AmigaOS4/PPC and AmigaOS3/m68k platform only. Unfortunately, due to lack of motivated developers we couldn't provide native binaries for the MorphOS/PPC or AROS (PPC, i386, x86_64) platform in time. If you are, however, interested in seeing AmiSSL v4 being ported for these other Amiga-based platforms, please try to find motivated and talented developers who could join our team as proper maintainers for these alternative platforms. In addition, if you are a MorphOS or AROS developer yourself, feel free to send proper pull requests to see your platform supported in one of the next releases or please consider joining our team. Legal information ----------------- AmiSSL v1 Copyright (c) 1999-2006 Andrija Antonijevic. AmiSSL v2/v3 Copyright (c) 2002-2006 Andrija Antonijevic and Stefan Burstroem. AmiSSL v4 Copyright (c) 2014-2021 AmiSSL Open Source Team. All Rights Reserved. AmiSSL IS PROVIDED "AS IS" AND ANY WARRANTIES, EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AmiSSL AUTHORS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The OpenSSL toolkit itself stays under a dual license, i.e. both the conditions of the OpenSSL License and the original SSLeay license apply to the toolkit. See below for the actual license texts. OpenSSL License --------------- ==================================================================== Copyright (c) 1998-2021 The OpenSSL Project. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit. (http://www.openssl.org/)" 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to endorse or promote products derived from this software without prior written permission. For written permission, please contact openssl-core@openssl.org. 5. Products derived from this software may not be called "OpenSSL" nor may "OpenSSL" appear in their names without prior written permission of the OpenSSL Project. 6. Redistributions of any form whatsoever must retain the following acknowledgment: "This product includes software developed by the OpenSSL Project for use in the OpenSSL Toolkit (http://www.openssl.org/)" THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE OpenSSL PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ==================================================================== This product includes cryptographic software written by Eric Young (eay@cryptsoft.com). This product includes software written by Tim Hudson (tjh@cryptsoft.com). Original SSLeay License ----------------------- Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) All rights reserved. This package is an SSL implementation written by Eric Young (eay@cryptsoft.com). The implementation was written so as to conform with Netscapes SSL. This library is free for commercial and non-commercial use as long as the following conditions are aheared to. The following conditions apply to all code found in this distribution, be it the RC4, RSA, lhash, DES, etc., code; not just the SSL code. The SSL documentation included with this distribution is covered by the same copyright terms except that the holder is Tim Hudson (tjh@cryptsoft.com). Copyright remains Eric Young's, and as such any Copyright notices in the code are not to be removed. If this package is used in a product, Eric Young should be given attribution as the author of the parts of the library used. This can be in the form of a textual message at program startup or in documentation (online or textual) provided with the package. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. All advertising materials mentioning features or use of this software must display the following acknowledgement: "This product includes cryptographic software written by Eric Young (eay@cryptsoft.com)" The word 'cryptographic' can be left out if the rouines from the library being used are not cryptographic related :-). 4. If you include any Windows specific code (or a derivative thereof) from the apps directory (application code) you must include an acknowledgement: "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The licence and distribution terms for any publically available version or derivative of this code cannot be changed. i.e. this code cannot simply be copied and put under another distribution licence [including the GNU Public Licence.]