bpo-35926: Add support for OpenSSL 1.1.1b on Windows (GH-11779)

diff --git a/PCbuild/get_externals.bat b/PCbuild/get_externals.bat
index 887fdc9..27722bb 100644
--- a/PCbuild/get_externals.bat
+++ b/PCbuild/get_externals.bat
@@ -49,7 +49,7 @@
 
 set libraries=
 set libraries=%libraries%                                       bzip2-1.0.6
-if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries%     openssl-1.1.0j
+if NOT "%IncludeSSLSrc%"=="false" set libraries=%libraries%     openssl-1.1.1b
 set libraries=%libraries%                                       sqlite-3.21.0.0
 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tcl-core-8.6.9.0
 if NOT "%IncludeTkinterSrc%"=="false" set libraries=%libraries% tk-8.6.9.0
@@ -72,7 +72,7 @@
 echo.Fetching external binaries...
 
 set binaries=
-if NOT "%IncludeSSL%"=="false"     set binaries=%binaries% openssl-bin-1.1.0j
+if NOT "%IncludeSSL%"=="false"     set binaries=%binaries% openssl-bin-1.1.1b
 if NOT "%IncludeTkinter%"=="false" set binaries=%binaries% tcltk-8.6.9.0
 if NOT "%IncludeSSLSrc%"=="false"  set binaries=%binaries% nasm-2.11.06
 
diff --git a/PCbuild/openssl.props b/PCbuild/openssl.props
index 8c78cd4..a7e1679 100644
--- a/PCbuild/openssl.props
+++ b/PCbuild/openssl.props
@@ -11,7 +11,8 @@
   </ItemDefinitionGroup>
   <PropertyGroup>
     <_DLLSuffix>-1_1</_DLLSuffix>
-    <_DLLSuffix Condition="$(Platform) == 'x64'">$(_DLLSuffix)-x64</_DLLSuffix>
+    <_DLLSuffix Condition="$(Platform) == 'ARM'">$(_DLLSuffix)-arm</_DLLSuffix>
+    <_DLLSuffix Condition="$(Platform) == 'ARM64'">$(_DLLSuffix)-arm64</_DLLSuffix>
   </PropertyGroup>
   <ItemGroup>
     <_SSLDLL Include="$(opensslOutDir)\libcrypto$(_DLLSuffix).dll" />
diff --git a/PCbuild/openssl.vcxproj b/PCbuild/openssl.vcxproj
index 1a36d08..0da6f67 100644
--- a/PCbuild/openssl.vcxproj
+++ b/PCbuild/openssl.vcxproj
@@ -1,38 +1,22 @@
 <?xml version="1.0" encoding="utf-8"?>
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <ItemGroup Label="ProjectConfigurations">
-    <ProjectConfiguration Include="Debug|Win32">
-      <Configuration>Debug</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|Win32">
       <Configuration>Release</Configuration>
       <Platform>Win32</Platform>
     </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|Win32">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGInstrument|x64">
-      <Configuration>PGInstrument</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|Win32">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>Win32</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="PGUpdate|x64">
-      <Configuration>PGUpdate</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
-    <ProjectConfiguration Include="Debug|x64">
-      <Configuration>Debug</Configuration>
-      <Platform>x64</Platform>
-    </ProjectConfiguration>
     <ProjectConfiguration Include="Release|x64">
       <Configuration>Release</Configuration>
       <Platform>x64</Platform>
     </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM">
+      <Configuration>Release</Configuration>
+      <Platform>ARM</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|ARM64">
+      <Configuration>Release</Configuration>
+      <Platform>ARM64</Platform>
+    </ProjectConfiguration>
   </ItemGroup>
   <PropertyGroup Label="Globals">
     <ProjectGuid>{B5FD6F1D-129E-4BFF-9340-03606FAC7283}</ProjectGuid>
@@ -40,15 +24,36 @@
 
   <Import Project="python.props" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
-  
-  <PropertyGroup Label="Configuration">
+
+  <PropertyGroup Label="Configuration" Condition="$(Platform) == 'Win32'">
     <ConfigurationType>Makefile</ConfigurationType>
     <Bitness>32</Bitness>
-    <Bitness Condition="$(Platform) == 'x64'">64</Bitness>
     <ArchName>x86</ArchName>
-    <ArchName Condition="$(Platform) == 'x64'">amd64</ArchName>
     <OpenSSLPlatform>VC-WIN32</OpenSSLPlatform>
-    <OpenSSLPlatform Condition="$(Platform) == 'x64'">VC-WIN64A</OpenSSLPlatform>
+    <SupportSigning>true</SupportSigning>
+  </PropertyGroup>
+
+  <PropertyGroup Label="Configuration" Condition="$(Platform) == 'x64'">
+    <ConfigurationType>Makefile</ConfigurationType>
+    <Bitness>64</Bitness>
+    <ArchName>amd64</ArchName>
+    <OpenSSLPlatform>VC-WIN64A-masm</OpenSSLPlatform>
+    <SupportSigning>true</SupportSigning>
+  </PropertyGroup>
+
+  <PropertyGroup Label="Configuration" Condition="$(Platform) == 'ARM'">
+    <ConfigurationType>Makefile</ConfigurationType>
+    <Bitness>ARM</Bitness>
+    <ArchName>ARM</ArchName>
+    <OpenSSLPlatform>VC-WIN32-ARM</OpenSSLPlatform>
+    <SupportSigning>true</SupportSigning>
+  </PropertyGroup>
+
+  <PropertyGroup Label="Configuration" Condition="$(Platform) == 'ARM64'">
+    <ConfigurationType>Makefile</ConfigurationType>
+    <Bitness>ARM64</Bitness>
+    <ArchName>ARM64</ArchName>
+    <OpenSSLPlatform>VC-WIN64-ARM</OpenSSLPlatform>
     <SupportSigning>true</SupportSigning>
   </PropertyGroup>
 
diff --git a/PCbuild/prepare_ssl.bat b/PCbuild/prepare_ssl.bat
index bd4b548..88fd022 100644
--- a/PCbuild/prepare_ssl.bat
+++ b/PCbuild/prepare_ssl.bat
@@ -42,7 +42,7 @@
 call "%PCBUILD%\find_python.bat" "%PYTHON%"
 if ERRORLEVEL 1 (echo Cannot locate python.exe on PATH or as PYTHON variable & exit /b 3)
 
-call "%PCBUILD%\get_externals.bat" --openssl-src %ORG_SETTING%
+call "%PCBUILD%\get_externals.bat" --openssl-src --no-openssl %ORG_SETTING%
 
 if "%PERL%" == "" where perl > "%TEMP%\perl.loc" 2> nul && set /P PERL= <"%TEMP%\perl.loc" & del "%TEMP%\perl.loc"
 if "%PERL%" == "" (echo Cannot locate perl.exe on PATH or as PERL variable & exit /b 4)
@@ -51,4 +51,8 @@
 if errorlevel 1 exit /b
 %MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=x64
 if errorlevel 1 exit /b
+%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM
+if errorlevel 1 exit /b
+%MSBUILD% "%PCBUILD%\openssl.vcxproj" /p:Configuration=Release /p:Platform=ARM64
+if errorlevel 1 exit /b
 
diff --git a/PCbuild/python.props b/PCbuild/python.props
index 683fbb6..58877ee 100644
--- a/PCbuild/python.props
+++ b/PCbuild/python.props
@@ -49,8 +49,8 @@
     <sqlite3Dir>$(ExternalsDir)sqlite-3.21.0.0\</sqlite3Dir>
     <bz2Dir>$(ExternalsDir)bzip2-1.0.6\</bz2Dir>
     <lzmaDir>$(ExternalsDir)xz-5.2.2\</lzmaDir>
-    <opensslDir>$(ExternalsDir)openssl-1.1.0j\</opensslDir>
-    <opensslOutDir>$(ExternalsDir)openssl-bin-1.1.0j\$(ArchName)\</opensslOutDir>
+    <opensslDir>$(ExternalsDir)openssl-1.1.1b\</opensslDir>
+    <opensslOutDir>$(ExternalsDir)openssl-bin-1.1.1b\$(ArchName)\</opensslOutDir>
     <opensslIncludeDir>$(opensslOutDir)include</opensslIncludeDir>
     <nasmDir>$(ExternalsDir)\nasm-2.11.06\</nasmDir>
     <zlibDir>$(ExternalsDir)\zlib-1.2.11\</zlibDir>
diff --git a/PCbuild/readme.txt b/PCbuild/readme.txt
index 1f2fb92..c44722b 100644
--- a/PCbuild/readme.txt
+++ b/PCbuild/readme.txt
@@ -165,7 +165,7 @@
     Homepage:
         http://tukaani.org/xz/
 _ssl
-    Python wrapper for version 1.1.0h of the OpenSSL secure sockets
+    Python wrapper for version 1.1.1b of the OpenSSL secure sockets
     library, which is downloaded from our binaries repository at
     https://github.com/python/cpython-bin-deps.