<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"></head><body dir="auto"><div><span style="font-family: Arial, sans-serif; font-size: 10pt;">Hello,</span></div><div class="WordSection1"><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">I imagine this may have a trivial explanation, or perhaps indicate some quirk on my machine, but it looks as though some desired functionality isn’t available on my machine with version 1.4. I wanted to share this in case it indicates some wider issue of interest, and helps me learn a little about how </span><span style="font-size:10.0pt;font-family:"Courier New"">cryptography</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> works under the hood.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">Windows 7, 64-bit, Python 3.5.1, and I believe OpenSSL 1.0.2. I use </span><span style="font-size:10.0pt;font-family:"Courier New"">paramiko</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> for SFTP, and when updating paramiko (on a whim) to 2.0.2 with Anaconda, it had me update </span><span style="font-size:10.0pt;font-family:"Courier New"">cryptography</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> as well, to version 1.4, or maybe it was 1.3 at first — either one experiences the issue. When attempting an SSH connect, I get a traceback ending with this:<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-family:"Courier New"">File "C:\Users\...\AppData\Local\Continuum\Anaconda3\lib\site-packages\cryptography\hazmat\bindings\openssl\binding.py", line 73, in wrapper<o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:"Courier New"">    if lib.Cryptography_STATIC_CALLBACKS:<o:p></o:p></span></p><p class="MsoNormal"><span style="font-family:"Courier New""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-family:"Courier New"">AttributeError: cffi library '_openssl' has no function, constant or global variable named 'Cryptography_STATIC_CALLBACKS'<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">When I manually carry out some of the imports in the source...<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Courier New"">from cryptography.hazmat.bindings._openssl import ffi, lib<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">...and then look at what auto-complete shows for </span><span style="font-size:10.0pt;font-family:"Courier New"">lib</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">, I don’t see </span><span style="font-size:10.0pt;font-family:"Courier New"">Cryptography_STATIC_CALLBACKS</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">, which is consistent with the AttributeError. I don’t yet understand where to look for the source underneath the bootstrapped </span><span style="font-size:10.0pt;font-family:"Courier New"">_openssl.*.pyd</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> file.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">The SSH connection and all subsequent functionality work fine with the latest versions of </span><span style="font-size:10.0pt;font-family:"Courier New"">paramiko</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> and </span><span style="font-size:10.0pt;font-family:"Courier New"">cffi</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> as long as I revert </span><span style="font-size:10.0pt;font-family:"Courier New"">cryptography</span><span style="font-size:10.0pt;font-family:"Arial","sans-serif""> to 1.0.2.<o:p></o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif""><o:p> </o:p></span></p><p class="MsoNormal"><span style="font-size:10.0pt;font-family:"Arial","sans-serif"">-Robin Fishbein<o:p></o:p></span></p><p class="MsoNormal"><br></p></div><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
        {mso-style-priority:99;
        mso-style-link:"Balloon Text Char";
        margin:0in;
        margin-bottom:.0001pt;
        font-size:8.0pt;
        font-family:"Tahoma","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Arial","sans-serif";
        color:windowtext;}
span.BalloonTextChar
        {mso-style-name:"Balloon Text Char";
        mso-style-priority:99;
        mso-style-link:"Balloon Text";
        font-family:"Tahoma","sans-serif";}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style></body></html>