<div dir="ltr">Hi,<div><br></div><div>I started to write an email with request for help building cryptography on Windows for Python 3.3, but then I figured out how to get the desired result, so now I only want to share some knowledge and also provide you a build log in the case you're interested in compiler warnings.</div>

<div><br></div><div>Also I'd like to know it built correctly, is there any easy-to-use unittest suite I can run? I see there tests package, but I'm not sure what is your method to run tests in your project? Obvioulsly `python3 -m unittest` does not work.</div>

<div><br></div><div>My intent was to build cryptography library against static libs of OpenSSL because I had problems with running simple C code with OpenSSL dlls, I found on StackOverflow suggestion that only linking against static libraries would help. It does help for me.</div>

<div><br></div><div>Here is openssl directories I've used:</div><div>include: C:\OpenSSL-Win32\include<br></div><div>lib: C:\OpenSSL-Win32\lib\VC\static</div><div><br></div><div>My C code successfully linked against this set of libraries:</div>

<div>'libeay32MD', 'ssleay32MD', 'gdi32', 'user32', 'advapi32'<br></div><div><br></div><div>So here is my steps similar to what you wrote on Installation page:</div><div><a href="https://cryptography.io/en/latest/installation/#on-windows">https://cryptography.io/en/latest/installation/#on-windows</a><br>

</div><div><br></div><div><div>"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" x86</div><div>set LIB=C:\OpenSSL-Win32\lib\VC\static;%LIB%</div><div>set INCLUDE=C:\OpenSSL-Win32\include;%INCLUDE%</div>

<div>C:\Python33\python setup.py install</div></div><div><br></div><div>That wasn't enough because of set of libraries you need to link against. So I just changed settings in bindings.py:</div><div><br></div><div><p style="margin:0px">

<span style="font-family:'Courier New';font-size:8pt;font-weight:600;color:rgb(117,117,117);background-color:rgb(246,245,238)">=== modified file cryptography/hazmat/bindings/openssl/binding.py</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;font-weight:600;color:rgb(0,136,11)">--- cryptography/hazmat/bindings/openssl/binding.py     2014-02-18 13:18:03 +0000</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;font-weight:600;color:rgb(204,0,0)">+++ cryptography/hazmat/bindings/openssl/binding.py      2014-02-18 13:54:26 +0000</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;font-style:italic;color:rgb(153,30,199)">@@ -92,7 +92,9 @@</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt">         if sys.platform != "win32":</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt">             libraries = ["crypto", "ssl"]</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt">         else:  # pragma: no cover</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;color:rgb(204,0,0)">-            libraries = ["libeay32", "ssleay32", "advapi32"]</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;color:rgb(0,136,11)">+            libraries = ["libeay32MD", "ssleay32MD", </span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;color:rgb(0,136,11)">+                "gdi32", "user32", "advapi32",</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt;color:rgb(0,136,11)">+                "Ws2_32", "Crypt32"]</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt"> </span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt">         cls.ffi, cls.lib = build_ffi(cls._module_prefix, cls._modules,</span></p>
<p style="margin:0px"><span style="font-family:'Courier New';font-size:8pt">                                      _OSX_PRE_INCLUDE, _OSX_POST_INCLUDE,</span></p><br>With the last change I was finally able to build cryptography python library. \o/<p style="margin:0px;font-family:'Courier New';font-size:8pt">

</p>
<p style="margin:0px;font-family:'Courier New';font-size:8pt"></p></div><div><br></div><div>Attached is the build log in the case you want to see compiler errors.</div><div><br></div><div>Some warnings catched my eye, like this:</div>

<div><br></div><div><div>cryptography\hazmat\primitives\__pycache__\_cffi__xcd368b2dx4a8b9ec1.c(218) : warning C4244: '=' : conversion from 'unsigned __int64' to 'uint8_t', possible loss of data<br>

</div></div><div><br></div><div>or</div><div><br></div><div><div>cryptography\hazmat\bindings\__pycache__\_cffi__xabccc2b1x4bab9030.c(4386) : warning C4308: negative integral constant converted to unsigned type</div></div>

<div><br></div><div>Probably you might know that everything is OK, I just wanted to test somehow my build is OK.</div><div><br></div><div>Alexander.</div><div><br></div></div>