Skip to content

Commit

Permalink
added prebuilt openssl library for windows
Browse files Browse the repository at this point in the history
(see windows/lib/readme.md for why we did this)
  • Loading branch information
t-schroeder committed Jul 21, 2021
1 parent 55695d1 commit 1bd921f
Show file tree
Hide file tree
Showing 7 changed files with 172 additions and 4 deletions.
8 changes: 4 additions & 4 deletions windows/SyncMyL2P.xml.template
Original file line number Diff line number Diff line change
Expand Up @@ -105,10 +105,10 @@
<origin>../bin/vc_redist.x86.exe</origin>
</distributionFile>
<distributionFile>
<origin>../qt5/Tools/OpenSSL/Win_x86/bin/libcrypto-1_1.dll</origin>
<origin>../windows/lib/libcrypto-1_1.dll</origin>
</distributionFile>
<distributionFile>
<origin>../qt5/Tools/OpenSSL/Win_x86/bin/libssl-1_1.dll</origin>
<origin>../windows/lib/libssl-1_1.dll</origin>
</distributionFile>
</distributionFileList>
</folder>
Expand Down Expand Up @@ -170,10 +170,10 @@
<origin>../bin/vc_redist.x64.exe</origin>
</distributionFile>
<distributionFile>
<origin>../qt5/Tools/OpenSSL/Win_x64/bin/libcrypto-1_1-x64.dll</origin>
<origin>../windows/lib/libcrypto-1_1-x64.dll</origin>
</distributionFile>
<distributionFile>
<origin>../qt5/Tools/OpenSSL/Win_x64/bin/libssl-1_1-x64.dll</origin>
<origin>../windows/lib/libssl-1_1-x64.dll</origin>
</distributionFile>
</distributionFileList>
</folder>
Expand Down
125 changes: 125 additions & 0 deletions windows/lib/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@

LICENSE ISSUES
==============

The OpenSSL toolkit stays under a double 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-2019 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
* [email protected].
*
* 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
* ([email protected]). This product includes software written by Tim
* Hudson ([email protected]).
*
*/

Original SSLeay License
-----------------------

/* Copyright (C) 1995-1998 Eric Young ([email protected])
* All rights reserved.
*
* This package is an SSL implementation written
* by Eric Young ([email protected]).
* 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 ([email protected]).
*
* 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 ([email protected])"
* 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 ([email protected])"
*
* 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.]
*/

43 changes: 43 additions & 0 deletions windows/lib/Readme.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@

Sync-my-L2P links against OpenSSL at runtime. This page describes where we get the OpenSSL DLLs from.

### Why not use QT's precompiled OpenSSL DLLs?

On https://download.qt.io/ there are already prebuilt OpenSSL DLLs:

* https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_openssl_x86/qt.tools.openssl.win_x86/
* https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_openssl_x64/qt.tools.openssl.win_x64/

They are built with an older version of Visual Studio. Therefore they link to msvcr100.dll which has to be installed on some systems (e.g. Windows 7) through the Microsoft Visual C++ 2010 SP1 Redistributable. But since Sync-my-L2P is built with a newer Visual Studio version, it ships with a newer Visual C++ Redistributable that doesn't contain msvcr100.dll. Therefore we compile OpenSSL ourselves with the same Visual Studio version as Sync-my-L2P. This way we only need one Visual C++ Redistributable. To keep Sync-my-L2P's build time short, we've checked in the precompiled DLLs.

### Prerequisites

* Perl
* nmake (comes with Visual Studio)
* nasm (https://www.nasm.us/)

### Source

The OpenSSL source code is downloaded from: https://download.qt.io/online/qtsdkrepository/windows_x86/desktop/tools_openssl_src/qt.tools.openssl.src/

### x86 build steps

```batch
mkdir C:\dev\openssl-win32
cd C:\dev\openssl-win32
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars32.bat"
perl C:\dev\openssl-src\Tools\OpenSSL\src\Configure VC-WIN32
nmake
nmake test
```

### x64 build steps

```batch
mkdir C:\openssl-win64
cd C:\openssl-win64
"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat"
perl C:\dev\openssl-src\Tools\OpenSSL\src\Configure VC-WIN64A
nmake
nmake test
```
Binary file added windows/lib/libcrypto-1_1-x64.dll
Binary file not shown.
Binary file added windows/lib/libcrypto-1_1.dll
Binary file not shown.
Binary file added windows/lib/libssl-1_1-x64.dll
Binary file not shown.
Binary file added windows/lib/libssl-1_1.dll
Binary file not shown.

0 comments on commit 1bd921f

Please sign in to comment.