<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JEichenberger</id>
	<title>OpenSSLWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.openssl.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=JEichenberger"/>
	<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php/Special:Contributions/JEichenberger"/>
	<updated>2026-04-11T18:54:14Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1462</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1462"/>
		<updated>2014-01-27T22:19:49Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.  Building that executable as part of the FIPS canister for XP may also be a challenge if you have a 64-bit OS.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
One can use Fips-test.c to test FIPS mode operation of OpenSSL capable libraries.&lt;br /&gt;
Skipping the details one must:&lt;br /&gt;
*Create a project that includes Fips-test.c and fips_premain.c (produced by building the FIPS canister).&lt;br /&gt;
*Build an executable including those two files.&lt;br /&gt;
*Compute the SHA1-digest for that executable.&lt;br /&gt;
 perl msincore.pl -exe Fips-test.exe&lt;br /&gt;
*Modify the build to include that SHA1 digest as a pre-processor definition as fips_premain.c is built.  For example:&lt;br /&gt;
 HMAC_SHA1_SIG=\&amp;quot;89d26c23e45186b029d0bc2e67bde8a99e5a199f\&amp;quot;&lt;br /&gt;
*Rebuild the executable.&lt;br /&gt;
*Run the executable to test it.  For this one can use interactive debug or ceutils.&lt;br /&gt;
&lt;br /&gt;
{{TODO|A more complete example might be helpful here}}&lt;br /&gt;
&lt;br /&gt;
== Caveats ==&lt;br /&gt;
&lt;br /&gt;
*Just because one can build a FIPS canister together with FIPS capable OpenSSL libraries in no way means that the result meets NIST requirements as a FIPS validated program. One must carefully follow additional restrictions set forth in the User's Guide in order to take advantage of validation efforts for existing certified versions.&lt;br /&gt;
*This document describes basic technical details required to build static libraries. Static libraries can be used by applications such as the test application so long as they are built with the proper SHA1 digest.  Applications always load at the same virtual address, which makes it easy for them to use static libraries.  Any program that does not consistently load at the same address, such as a Dynamic Link Library, cannot enable FIPS.&lt;br /&gt;
*With great effort one can create Dynamic Link Libraries for OpenSSL that are FIPS capable.  If in addition to that one can insure that libeay32.dll loads consistently at the same address and contains the proper FIPS digest, FIPS mode is then possible for any application that uses that solution, regardless where in memory that application may load.&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/ceutils.zip ceutils.zip]: This is a set of executable files useful in testing results.&lt;br /&gt;
*[[Media:Fips-test.c|fips-test.c]]: a test program to dump critical FIPS parameters that can also be used to test FIPS mode.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1461</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1461"/>
		<updated>2014-01-27T22:07:21Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Testing the OpenSSL Libraries */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.  Building that executable as part of the FIPS canister for XP may also be a challenge if you have a 64-bit OS.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
One can use Fips-test.c to test FIPS mode operation of OpenSSL capable libraries.&lt;br /&gt;
Skipping the details one must:&lt;br /&gt;
*Create a project that includes Fips-test.c and fips_premain.c (produced by building the FIPS canister).&lt;br /&gt;
*Build an executable including those two files.&lt;br /&gt;
*Compute the SHA1-digest for that executable.&lt;br /&gt;
 perl msincore.pl -exe Fips-test.exe&lt;br /&gt;
*Modify the build to include that SHA1 digest as a pre-processor definition as fips_premain.c is built.  For example:&lt;br /&gt;
 HMAC_SHA1_SIG=\&amp;quot;89d26c23e45186b029d0bc2e67bde8a99e5a199f\&amp;quot;&lt;br /&gt;
*Rebuild the executable.&lt;br /&gt;
*Run the executable to test it.  For this one can use interactive debug or ceutils.&lt;br /&gt;
&lt;br /&gt;
{{TODO|A more complete example might be helpful here}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/ceutils.zip ceutils.zip]: This is a set of executable files useful in testing results.&lt;br /&gt;
*[[Media:Fips-test.c|fips-test.c]]: a test program to dump critical FIPS parameters that can also be used to test FIPS mode.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1460</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1460"/>
		<updated>2014-01-27T21:59:46Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.  Building that executable as part of the FIPS canister for XP may also be a challenge if you have a 64-bit OS.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/ceutils.zip ceutils.zip]: This is a set of executable files useful in testing results.&lt;br /&gt;
*[[Media:Fips-test.c|fips-test.c]]: a test program to dump critical FIPS parameters that can also be used to test FIPS mode.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1459</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1459"/>
		<updated>2014-01-27T21:18:53Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Troubleshooting OpenSSL builds for WM6 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.  Building that executable as part of the FIPS canister for XP may also be a challenge if you have a 64-bit OS.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/ceutils.zip ceutils.zip]: This is a set of executable files useful in testing results.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1457</id>
		<title>File:Build WM6 OpenSSL-FIPS.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1457"/>
		<updated>2014-01-27T20:58:34Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: uploaded a new version of &amp;quot;File:Build WM6 OpenSSL-FIPS.tar.gz&amp;quot;:&amp;amp;#32;Used by FIPS Library and Windows Mobile 6 to build FIPS libraries.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tarball contains a set of batch files for building the OpenSSL FIPS library for Windows Mobile 6.  It also contains a patch set for wcecompat that is required.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1456</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1456"/>
		<updated>2014-01-27T20:48:40Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* ceutils Downloads */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/ceutils.zip ceutils.zip]: This is a set of executable files useful in testing results.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1455</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1455"/>
		<updated>2014-01-27T20:46:22Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Testing the OpenSSL Canister */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
Using ceutils programs one can test the FIPS canister build using a sequence of commands after establishing an ActiveSync connection with a device.&lt;br /&gt;
 &amp;gt;ceutils\cecopy FIPS_WM6_ARMV4I\bin\fips_algvs.exe CE:\&lt;br /&gt;
 &amp;gt;ceutils\cecopy ceutils\cerunner.dll CE:\windows&lt;br /&gt;
 &amp;gt;ceutils\cerun.exe CE:\fips_algvs.exe fips_test_suite post&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1454</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1454"/>
		<updated>2014-01-27T20:33:08Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1453</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1453"/>
		<updated>2014-01-27T20:31:47Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Problem files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting OpenSSL builds for WM6 ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1452</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1452"/>
		<updated>2014-01-27T20:30:50Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Checking Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, together with a few LIB files.  Look for:&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1451</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1451"/>
		<updated>2014-01-27T20:29:57Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Checking Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, including&lt;br /&gt;
**openssl.exe&lt;br /&gt;
**libeaycompat32.lib&lt;br /&gt;
**libeayfips32.lib&lt;br /&gt;
**ssleay32.lib&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1450</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1450"/>
		<updated>2014-01-27T20:28:38Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Checking Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find many executable files and PDB files in the out32_ARMV4I folder, including openssl.exe.&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1448</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1448"/>
		<updated>2014-01-27T20:27:10Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Checking Results */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|       hmac_sha1.pl&lt;br /&gt;
|       msincore.pl&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1447</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1447"/>
		<updated>2014-01-27T20:26:02Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Build the FIPS Capable Library (the canister) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.  Refer to the troubleshooting section below for details.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1446</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1446"/>
		<updated>2014-01-27T20:25:04Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Build the FIPS Object Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister.&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
*copies some additional files required by OpenSSL&lt;br /&gt;
 copy out32dll_ARMV4I\*.exe %FIPSDIR%\bin&lt;br /&gt;
 copy util\msincore %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
 copy util\hmac_sha1.pl %FIPSDIR%\bin&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 rem git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1445</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1445"/>
		<updated>2014-01-27T20:21:31Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Build the FIPS Object Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
 cd openssl-fips-%version%&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 rem git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1444</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1444"/>
		<updated>2014-01-27T20:20:45Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Build the FIPS Capable Library (the canister) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder directly from the public OpenSSL repository.&lt;br /&gt;
 rem git clone git://git.openssl.org/openssl.git&lt;br /&gt;
*selects a branch to work on.&lt;br /&gt;
 git checkout origin/OpenSSL_1_0_2-stable -b OpenSSL_1_0_2&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies header files from FIPSDIR into inc32&lt;br /&gt;
:Some branches of OpenSSL require this step in order to find those header files.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1443</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1443"/>
		<updated>2014-01-27T20:15:20Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Build the FIPS Object Module */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS_for_WM6.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM6_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1442</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1442"/>
		<updated>2014-01-27T20:14:37Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Prepare to build for WM6 using Visual Studio 2008 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM6_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1441</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1441"/>
		<updated>2014-01-27T20:09:19Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Problem files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM61_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With most branches of OpenSSL code one must make changes before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compare files in the branch used against tips.  Most issues are already solved on tips.&lt;br /&gt;
Some of the files likely to have issues are:&lt;br /&gt;
*apps\apps.c&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl:&lt;br /&gt;
**With /WX defined warnings are treated like errors.&lt;br /&gt;
**Windows Mobile uses ws2.lib, not winsock.lib&lt;br /&gt;
**Windows Mobile requires crypt32.lib for e_capi.c.  Add this requirement as wcecompatex.lib is also added.&lt;br /&gt;
**The line that adds coredll.lib and others should not be dependent upon TARGETCPU x86.&lt;br /&gt;
&lt;br /&gt;
Also note that fips_standalone_sha1.exe is required for Windows Mobile builds, but is only provided by Windows XP builds.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1430</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1430"/>
		<updated>2014-01-25T00:07:35Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Problem files */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM61_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With many branches of OpenSSL code one must update several files before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compiling these files is to compare them against tips where those issues are typically already solved.&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*engines/e_capi.c&lt;br /&gt;
*util/pl/VC-32.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1429</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1429"/>
		<updated>2014-01-25T00:02:15Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM61_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Problem files ==&lt;br /&gt;
With many branches of OpenSSL code one must update several files before a successful build is possible for Windows Mobile 6.&lt;br /&gt;
The first thing to try when having troubles compiling these files is to compare them against tips where those issues are typically already solved.&lt;br /&gt;
*crypto/bio/bss_fd.c&lt;br /&gt;
*crypto/cryptlib.c&lt;br /&gt;
*crypto/o_str.c&lt;br /&gt;
*e_capi.c&lt;br /&gt;
*e_os.h&lt;br /&gt;
*util/pl/VC-32.pl&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1428</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1428"/>
		<updated>2014-01-24T23:27:26Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: /* Downloads summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM61_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;br /&gt;
*[https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip]: This is the original source for wcecompat.  Although there is at least one newer version available, it is not recommended for use due to unresolved issues seen with that version.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz]: A recent version of the OpenSSL-FIPS source.&lt;br /&gt;
*[http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz]: A recent version of the OpenSSL source.&lt;br /&gt;
*[[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]: The set of batch files and patch files used by these instructions.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1427</id>
		<title>FIPS Library and Windows Mobile 6</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Library_and_Windows_Mobile_6&amp;diff=1427"/>
		<updated>2014-01-24T23:23:12Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: initial draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This document will provide instructions for building the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library for Windows Mobile 6 devices. The FIPS Object Module provides validated cryptography, and the FIPS Capable Library uses the validated cryptography. As an OpenSSL developer, you will use the library the same as in the past – except you must call &amp;lt;tt&amp;gt;FIPS_mode_set&amp;lt;/tt&amp;gt; to enter FIPS mode and engage the validated cryptography.&lt;br /&gt;
&lt;br /&gt;
The FIPS Object Module, &amp;lt;tt&amp;gt;fipscanister.lib&amp;lt;/tt&amp;gt;, is a sequestered container of object code and data built from source code. The sources, object code and data are strictly controlled by the OpenSSL FIPS 140-2 Security Policy. No changes can be made to the procedure for building the FIPS Object Module, and no changes can be made to the sources. If you need to make changes to the FIPS Object Module, you will need to engage the OpenSSL Foundation for a separate validation.&lt;br /&gt;
&lt;br /&gt;
The FIPS Capable Library is comprised of &amp;lt;tt&amp;gt;libcrypto&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;libssl&amp;lt;/tt&amp;gt;. They are the same libraries you have been using for years. The FIPS Capable Library is tolerant of changes to procedures and source code. You are allowed to modify them within reason, as long as the changes do not adversely affect the FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
This guide is intended to be informative and easy to use. In case of discrepancies between this document and the OpenSSL FIPS Security Policy, the Security Policy will prevail. You can download the Security Policy from http://www.openssl.org/docs/fips/.&lt;br /&gt;
&lt;br /&gt;
The instructions that follow depend upon a properly configured Windows computer with the necessary development tools and platform specific SDK. Specifically, Visual Studio 2008 used in conjunction with the Windows Mobile 6 SDK. Also required are 7-zip, gzip, and tar programs for Windows.&lt;br /&gt;
&lt;br /&gt;
==Quick Summary==&lt;br /&gt;
&lt;br /&gt;
Use the following commands to build the OpenSSL FIPS Object Module and OpenSSL FIPS Capable library. &lt;br /&gt;
Before running the commands&lt;br /&gt;
*download [https://sites.google.com/a/essemer.com.au/www/wcecompat-1.2.zip wcecompat-1.2.zip], [http://www.openssl.org/source/openssl-fips-2.0.5.tar.gz openssl-fips-2.0.5.tar.gz], [http://www.openssl.org/source/openssl-1.0.1e.tar.gz openssl-1.0.1e.tar.gz], and [[Media:Build_WM6_OpenSSL-FIPS.tar.gz|Build_WM6_OpenSSL-FIPS.tar.gz]]&lt;br /&gt;
*place all files in the same directory (the 'root' directory mentioned below)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; gzip -d Build_WM6_OpenSSL-FIPS.tar.gz&lt;br /&gt;
&amp;gt; tar -xvf Build_WM6_OpenSSL-FIPS.tar&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Prepare to build for WM6 using Visual Studio 2008 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; WM61_ARMV4I_env.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The provided batch file is specific to a single target (WM6) and compiler (Visual Studio 2008).  Using this batch file as an example one could derive a process for building for another target or to use a different compiler.  Note however that the patch set provided for wcecompat only includes those changes that are required for the Windows Mobile 6 target. Additional changes may be required for other target platforms.&lt;br /&gt;
&lt;br /&gt;
=== Build wcecompat for WM6 ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;gt; Build_wcecompat.bat&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*extracts wcecompat-1.2 into the wcecompat folder&lt;br /&gt;
*creates a git repository based upon the contents of that folder&lt;br /&gt;
*commits a patch set to update wcecompat to support WM6&lt;br /&gt;
*builds wcecompat&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Object Module ===&lt;br /&gt;
&lt;br /&gt;
Note: using this process the FIPS Object Module is built directly from the contents of the tar.gz file. This is important since one must neither modify the source nor the build process for this step.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_FIPS.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl-fips folder from a tar.gz file&lt;br /&gt;
 Set version=2.0.5&lt;br /&gt;
 if exist openssl-fips-%version%.tar.gz gzip -d openssl-fips-%version%.tar.gz&lt;br /&gt;
 tar -xvf openssl-fips-%version%.tar&lt;br /&gt;
*defines some environment variables:&lt;br /&gt;
 set FIPSDIR=..\FIPS_WM61_ARMV4I&lt;br /&gt;
 set FIPS_SHA1_PATH=perl util\fips_standalone_sha1&lt;br /&gt;
 set FIPS_SIG=perl util\msincore&lt;br /&gt;
 set WCECOMPAT=..\wcecompat&lt;br /&gt;
*builds the FIPS canister&lt;br /&gt;
 call ms\do_fips.bat&lt;br /&gt;
*builds fips_algvs.exe, a program one can use to validate the canister&lt;br /&gt;
 nmake -f ms\cedll.mak build_algvs&lt;br /&gt;
&lt;br /&gt;
=== Build the FIPS Capable Library (the canister) ===&lt;br /&gt;
&lt;br /&gt;
This step is fraught with perils due to the fact that many branches of OpenSSL do not properly build for Windows Mobile 6 without first making changes.  As such the commands listed here will work only after those issues have been addressed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;: From the 'root' directory&lt;br /&gt;
&amp;gt; Build_OpenSSL.bat&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This batch file:&lt;br /&gt;
*creates the openssl folder from a tar.gz file&lt;br /&gt;
 Set version=1.0.1e&lt;br /&gt;
 if exist openssl-%version%.tar.gz gzip -d openssl-%version%.tar.gz&lt;br /&gt;
 if not exist openssl-%version%\*.* tar -xvf openssl-%version%.tar&lt;br /&gt;
*redefines the FIPS_SIG environment variable:&lt;br /&gt;
 set FIPS_SIG=perl %FIPSDIR%\bin\msincore.pl&lt;br /&gt;
:The msincore.pl script is required to build a FIPS capable OpenSSL DLL, but it is only provided with the OpenSSL-FIPS project.&lt;br /&gt;
*copies fips.h from FIPSDIR into inc32\openssl&lt;br /&gt;
:Many of the branches of OpenSSL require this step in order to find fips.h.&lt;br /&gt;
*configures OpenSSL to build for CE with FIPS&lt;br /&gt;
 perl Configure VC-CE fips --with-fipsdir=%FIPSDIR%&lt;br /&gt;
*creates the necessary makefiles&lt;br /&gt;
 call ms\do_ms&lt;br /&gt;
*builds static OpenSSL libraries&lt;br /&gt;
 nmake -f ms\ce.mak&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Checking Results==&lt;br /&gt;
&lt;br /&gt;
*After building wcecompat the wcecompat\lib folder should contain wcecompat.lib and wcecompatex.lib.&lt;br /&gt;
*After building the canister that should be a new folder named FIPS_WM61_ARMV4I in the root folder which contains:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;gt;tree FIPS_WM61_ARMV4I /f&lt;br /&gt;
+---bin&lt;br /&gt;
|       fipslink.pl&lt;br /&gt;
|       fips_algvs.exe&lt;br /&gt;
|&lt;br /&gt;
+---include&lt;br /&gt;
|   \---openssl&lt;br /&gt;
|           fips.h&lt;br /&gt;
|           fips_rand.h&lt;br /&gt;
|&lt;br /&gt;
\---lib&lt;br /&gt;
        fipscanister.lib&lt;br /&gt;
        fipscanister.lib.sha1&lt;br /&gt;
        fips_premain.c&lt;br /&gt;
        fips_premain.c.sha1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* As mentioned before, the OpenSSL build itself may not complete without additional work.  Once it does complete, however, you will find&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;br /&gt;
== Testing the OpenSSL Canister ==&lt;br /&gt;
== Testing the OpenSSL Libraries ==&lt;br /&gt;
&lt;br /&gt;
== Downloads ==&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=TODO&amp;diff=1426</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=TODO&amp;diff=1426"/>
		<updated>2014-01-24T23:22:25Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: Redirected page to Template:TODO&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#redirect [[template:TODO]]&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Template:TODO&amp;diff=1425</id>
		<title>Template:TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Template:TODO&amp;diff=1425"/>
		<updated>2014-01-24T23:20:44Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: Created page with &amp;quot;{| |- |rowspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot;|70px |align=&amp;quot;left&amp;quot; valign=&amp;quot;bottom&amp;quot; style=&amp;quot;font-size:1.5em; color:#777777;&amp;quot;|'''TODO''' |- |align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; styl…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot;|[[Image:Sticky.png|left|70px]]&lt;br /&gt;
|align=&amp;quot;left&amp;quot; valign=&amp;quot;bottom&amp;quot; style=&amp;quot;font-size:1.5em; color:#777777;&amp;quot;|'''TODO'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;color:#aaaaaa;&amp;quot;|{{{1|Please consider contributing to this section}}}.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category: TODO]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=TODO&amp;diff=1424</id>
		<title>TODO</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=TODO&amp;diff=1424"/>
		<updated>2014-01-24T23:19:44Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: Created page with &amp;quot;{| |- |rowspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot;|70px |align=&amp;quot;left&amp;quot; valign=&amp;quot;bottom&amp;quot; style=&amp;quot;font-size:1.5em; color:#777777;&amp;quot;|'''TODO''' |- |align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; styl…&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; align=&amp;quot;left&amp;quot;|[[Image:Sticky.png|left|70px]]&lt;br /&gt;
|align=&amp;quot;left&amp;quot; valign=&amp;quot;bottom&amp;quot; style=&amp;quot;font-size:1.5em; color:#777777;&amp;quot;|'''TODO'''&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;left&amp;quot; valign=&amp;quot;top&amp;quot; style=&amp;quot;color:#aaaaaa;&amp;quot;|{{{1|Please consider contributing to this section}}}.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category: TODO]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=File:Sticky.png&amp;diff=1423</id>
		<title>File:Sticky.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=File:Sticky.png&amp;diff=1423"/>
		<updated>2014-01-24T23:19:30Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: Used by TODO template.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Used by TODO template.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1422</id>
		<title>File:Build WM6 OpenSSL-FIPS.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1422"/>
		<updated>2014-01-24T23:03:06Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: uploaded a new version of &amp;quot;File:Build WM6 OpenSSL-FIPS.tar.gz&amp;quot;:&amp;amp;#32;Used by FIPS Library and Windows Mobile 6 to build FIPS libaries.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tarball contains a set of batch files for building the OpenSSL FIPS library for Windows Mobile 6.  It also contains a patch set for wcecompat that is required.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1421</id>
		<title>File:Build WM6 OpenSSL-FIPS.tar.gz</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=File:Build_WM6_OpenSSL-FIPS.tar.gz&amp;diff=1421"/>
		<updated>2014-01-24T21:45:25Z</updated>

		<summary type="html">&lt;p&gt;JEichenberger: This tarball contains a set of batch files for building the OpenSSL FIPS library for Windows Mobile 6.  It also contains a patch set for wcecompat that is required.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tarball contains a set of batch files for building the OpenSSL FIPS library for Windows Mobile 6.  It also contains a patch set for wcecompat that is required.&lt;/div&gt;</summary>
		<author><name>JEichenberger</name></author>
	</entry>
</feed>