<?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=Stevem</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=Stevem"/>
	<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php/Special:Contributions/Stevem"/>
	<updated>2026-05-28T23:00:13Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.13</generator>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2491</id>
		<title>FIPS module 3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2491"/>
		<updated>2016-10-31T14:52:52Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Added sponsorship info&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 3.0 FIPS module will be conceptually similar to the preceeding line of ''OpenSSL FIPS Object Module'' cryptographic modules. An extensive reworking of the internals is planned, to address some issues stemming from the historical origins and subsequent ad hoc evolution of previous modules.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sponsorship ==&lt;br /&gt;
&lt;br /&gt;
As with the previous open source based FIPS 140 validation efforts, this validation would not be possible without financial sponsorship. The primary sponsor for this validation is SafeLogic, Inc. In addition to financial support SafeLogic is also collaborating on the validation work itself. SafeLogic welcomes participation by additional interested stakeholders and sponsors. Please direct any queries to:&lt;br /&gt;
&lt;br /&gt;
:{| style=&amp;quot;height=5em; border-spacing: 0px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Ray Potter&lt;br /&gt;
| ray@safelogic.com&lt;br /&gt;
|-&lt;br /&gt;
| SafeLogic Inc.&lt;br /&gt;
| https://www.safelogic.com/&lt;br /&gt;
|-&lt;br /&gt;
| 459 Hamilton Ave, Suite 306&lt;br /&gt;
| +1 844 436 2797&lt;br /&gt;
|-&lt;br /&gt;
| Palo Alto, CA 94301 USA&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Technical Objectives ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An initial rough draft of requirements and goals:&lt;br /&gt;
&lt;br /&gt;
1) Keep it minimal and avoid any OpenSSL dependencies at all: i.e. make it fully usable as a stand alone crypto module (the 2.0 module is awkwardly usable without OpenSSL but its OpenSSL heritage shows).&lt;br /&gt;
&lt;br /&gt;
2) Support compilation in various forms including as standalone ENGINE which is simply loaded into &amp;quot;normal&amp;quot; OpenSSL which then simply does all the FIPS weirdness automatically. Ideally a &amp;quot;FIPS capable&amp;quot; OpenSSL will no longer be required at all.&lt;br /&gt;
&lt;br /&gt;
3) Overhaul the algorithm testing code to be much cleaner and modular than the hacky stuff we've lived with so far. Allow handling of huge test vector data files by &amp;quot;piping&amp;quot; data instead of having to store the full files on the target device (which can be problematic for embedded environments).&lt;br /&gt;
&lt;br /&gt;
4) Consider feasibility of built in entropy sources so OpenSSL or the parent application/library aren't required to supply entropy.&lt;br /&gt;
&lt;br /&gt;
5) A standalone minimal FIPS module tarball that contains only the code needed to build the contents of the crypto module (only what is inside the &amp;quot;cryptographic module boundary&amp;quot;, in FIPS-speak). Omit the test suite software and much of the build-time software (strong precedent says that &amp;quot;incore&amp;quot; and &amp;quot;fipsld&amp;quot; can be omitted, for instance).&lt;br /&gt;
&lt;br /&gt;
6) Ability to build out of the source tree.&lt;br /&gt;
&lt;br /&gt;
7) FIPS 186-4 KeyGen.&lt;br /&gt;
&lt;br /&gt;
8) SP 800-56A compliance (Self-tests per I.G. 9.6).&lt;br /&gt;
:: Diffie-Hellman full compliance with NIST SP 800-56A including CAVP algorithm testing.&lt;br /&gt;
:: Diffie-Hellman Known Answer Tests (KATs) that include shared secret KAT and KDF KAT.&lt;br /&gt;
&lt;br /&gt;
9) SP 800-56B vendor affirmation (I.G. D.4).&lt;br /&gt;
&lt;br /&gt;
10) SHA-3 and SHAKE.&lt;br /&gt;
&lt;br /&gt;
11) Automatic execution of power-on self-tests (I.G. 9.5/9.10).&lt;br /&gt;
&lt;br /&gt;
12) Any allowed efficiencies in power-on self-tests.&lt;br /&gt;
&lt;br /&gt;
13) Alternate FIPS Approved modes of operation (turn self-tests and algorithms “off”).&lt;br /&gt;
&lt;br /&gt;
14) Explore possibility of validating &amp;quot;stitched&amp;quot; algorithm implementations.&lt;br /&gt;
&lt;br /&gt;
15) Consider any newly FIPS approved algorithms (e.g. new EC curves, Chacha/Poly)&lt;br /&gt;
&lt;br /&gt;
Stakeholder requests:&lt;br /&gt;
&lt;br /&gt;
a.	RSA key wrapping as part of NIST SP 800-56B (also called KTS validation testing), if CAVS testing is available.&lt;br /&gt;
&lt;br /&gt;
b.	AES-GMAC compliance (I.G. A.5).&lt;br /&gt;
&lt;br /&gt;
c.	AES Key Wrap Compliance to NIST SP 800-38F.&lt;br /&gt;
&lt;br /&gt;
d.	PBKDF2 Suppport.&lt;br /&gt;
&lt;br /&gt;
e.      Format Preserving Encrypion Support (NIST SP 800-38G)&lt;br /&gt;
&lt;br /&gt;
f.	Addition of EC curve 25519&lt;br /&gt;
&lt;br /&gt;
g.      Improved entropy to meet NIST SP 800-90B.&lt;br /&gt;
&lt;br /&gt;
h.	Symmetric key wrap conformant to SP 800-38F&lt;br /&gt;
&lt;br /&gt;
i.	SP 800-135 KDFs&lt;br /&gt;
&lt;br /&gt;
j.	SP 800-108 KDFs&lt;br /&gt;
&lt;br /&gt;
k.	Addition of AES XPN&lt;br /&gt;
&lt;br /&gt;
l.	XTS-AES compliance to I.G. A.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What we probably won't do:&lt;br /&gt;
&lt;br /&gt;
1. Any &amp;quot;light&amp;quot; versions of the FIPS module (i.e fewer algorithm implementations). Each such variant would require a separate FIPS 140 validation which would be cost prohibitive.&lt;br /&gt;
&lt;br /&gt;
2. The initial validation will only include a handful of popular platforms (e.g. Linux on x86). Each platform validation costs both time and money, with the risk of delaying the overall validation if we try to tackle too many in parallel before the validation is awarded (a lesson learned from the last open source based validation in 2012/2013). We will be able to queue up platform validations once the initial validation is formally submitted. However, checking that the new module builds and works for platforms of interest will be useful as platform portability code tweaks are usually minor.&lt;br /&gt;
&lt;br /&gt;
3. Make any substantial addition or changes to the module once the initial development is substantially complete (another lesson learned from the 2.0 validation).&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2472</id>
		<title>FIPS module 3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2472"/>
		<updated>2016-09-27T13:34:55Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Added anti-goals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 3.0 FIPS module will be conceptually similar to the preceeding line of ''OpenSSL FIPS Object Module'' cryptographic modules. An extensive reworking of the internals is planned, to address some issues stemming from the historical origins and subsequent ad hoc evolution of previous modules.&lt;br /&gt;
&lt;br /&gt;
An initial rough draft of requirements and goals:&lt;br /&gt;
&lt;br /&gt;
1) Keep it minimal and avoid any OpenSSL dependencies at all: i.e. make it fully usable as a stand alone crypto module (the 2.0 module is awkwardly usable without OpenSSL but its OpenSSL heritage shows).&lt;br /&gt;
&lt;br /&gt;
2) Support compilation in various forms including as standalone ENGINE which is simply loaded into &amp;quot;normal&amp;quot; OpenSSL which then simply does all the FIPS weirdness automatically. Ideally a &amp;quot;FIPS capable&amp;quot; OpenSSL will no longer be required at all.&lt;br /&gt;
&lt;br /&gt;
3) Overhaul the algorithm testing code to be much cleaner and modular than the hacky stuff we've lived with so far. Allow handling of huge test vector data files by &amp;quot;piping&amp;quot; data instead of having to store the full files on the target device (which can be problematic for embedded environments).&lt;br /&gt;
&lt;br /&gt;
4) Consider feasibility of built in entropy sources so OpenSSL or the parent application/library aren't required to supply entropy.&lt;br /&gt;
&lt;br /&gt;
5) A standalone minimal FIPS module tarball that contains only the code needed to build the contents of the crypto module (only what is inside the &amp;quot;cryptographic module boundary&amp;quot;, in FIPS-speak). Omit the test suite software and much of the build-time software (strong precedent says that &amp;quot;incore&amp;quot; and &amp;quot;fipsld&amp;quot; can be omitted, for instance).&lt;br /&gt;
&lt;br /&gt;
6) Ability to build out of the source tree.&lt;br /&gt;
&lt;br /&gt;
7) FIPS 186-4 KeyGen.&lt;br /&gt;
&lt;br /&gt;
8) SP 800-56A compliance (Self-tests per I.G. 9.6).&lt;br /&gt;
:: Diffie-Hellman full compliance with NIST SP 800-56A including CAVP algorithm testing.&lt;br /&gt;
:: Diffie-Hellman Known Answer Tests (KATs) that include shared secret KAT and KDF KAT.&lt;br /&gt;
&lt;br /&gt;
9) SP 800-56B vendor affirmation (I.G. D.4).&lt;br /&gt;
&lt;br /&gt;
10) SHA-3 and SHAKE.&lt;br /&gt;
&lt;br /&gt;
11) Automatic execution of power-on self-tests (I.G. 9.5/9.10).&lt;br /&gt;
&lt;br /&gt;
12) Any allowed efficiencies in power-on self-tests.&lt;br /&gt;
&lt;br /&gt;
13) Alternate FIPS Approved modes of operation (turn self-tests and algorithms “off”).&lt;br /&gt;
&lt;br /&gt;
14) Explore possibility of validating &amp;quot;stitched&amp;quot; algorithm implementations.&lt;br /&gt;
&lt;br /&gt;
15) Consider any newly FIPS approved algorithms (e.g. new EC curves, Chacha/Poly)&lt;br /&gt;
&lt;br /&gt;
Stakeholder requests:&lt;br /&gt;
&lt;br /&gt;
a.	RSA key wrapping as part of NIST SP 800-56B (also called KTS validation testing), if CAVS testing is available.&lt;br /&gt;
&lt;br /&gt;
b.	AES-GMAC compliance (I.G. A.5).&lt;br /&gt;
&lt;br /&gt;
c.	AES Key Wrap Compliance to NIST SP 800-38F.&lt;br /&gt;
&lt;br /&gt;
d.	PBKDF2 Suppport.&lt;br /&gt;
&lt;br /&gt;
e.      Format Preserving Encrypion Support (NIST SP 800-38G)&lt;br /&gt;
&lt;br /&gt;
f.	Addition of EC curve 25519&lt;br /&gt;
&lt;br /&gt;
g.      Improved entropy to meet NIST SP 800-90B.&lt;br /&gt;
&lt;br /&gt;
h.	Symmetric key wrap conformant to SP 800-38F&lt;br /&gt;
&lt;br /&gt;
i.	SP 800-135 KDFs&lt;br /&gt;
&lt;br /&gt;
j.	SP 800-108 KDFs&lt;br /&gt;
&lt;br /&gt;
k.	Addition of AES XPN&lt;br /&gt;
&lt;br /&gt;
l.	XTS-AES compliance to I.G. A.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
What we probably won't do:&lt;br /&gt;
&lt;br /&gt;
1. Any &amp;quot;light&amp;quot; versions of the FIPS module (i.e fewer algorithm implementations). Each such variant would require a separate FIPS 140 validation which would be cost prohibitive.&lt;br /&gt;
&lt;br /&gt;
2. The initial validation will only include a handful of popular platforms (e.g. Linux on x86). Each platform validation costs both time and money, with the risk of delaying the overall validation if we try to tackle too many in parallel before the validation is awarded (a lesson learned from the last open source based validation in 2012/2013). We will be able to queue up platform validations once the initial validation is formally submitted. However, checking that the new module builds and works for platforms of interest will be useful as platform portability code tweaks are usually minor.&lt;br /&gt;
&lt;br /&gt;
3. Make any substantial addition or changes to the module once the initial development is substantially complete (another lesson learned from the 2.0 validation).&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2471</id>
		<title>FIPS module 3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2471"/>
		<updated>2016-09-27T13:20:50Z</updated>

		<summary type="html">&lt;p&gt;Stevem: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 3.0 FIPS module will be conceptually similar to the preceeding line of ''OpenSSL FIPS Object Module'' cryptographic modules. An extensive reworking of the internals is planned, to address some issues stemming from the historical origins and subsequent ad hoc evolution of previous modules.&lt;br /&gt;
&lt;br /&gt;
An initial rough draft of requirements and goals:&lt;br /&gt;
&lt;br /&gt;
1) Keep it minimal and avoid any OpenSSL dependencies at all: i.e. make it fully usable as a stand alone crypto module (the 2.0 module is awkwardly usable without OpenSSL but its OpenSSL heritage shows).&lt;br /&gt;
&lt;br /&gt;
2) Support compilation in various forms including as standalone ENGINE which is simply loaded into &amp;quot;normal&amp;quot; OpenSSL which then simply does all the FIPS weirdness automatically. Ideally a &amp;quot;FIPS capable&amp;quot; OpenSSL will no longer be required at all.&lt;br /&gt;
&lt;br /&gt;
3) Overhaul the algorithm testing code to be much cleaner and modular than the hacky stuff we've lived with so far. Allow handling of huge test vector data files by &amp;quot;piping&amp;quot; data instead of having to store the full files on the target device (which can be problematic for embedded environments).&lt;br /&gt;
&lt;br /&gt;
4) Consider feasibility of built in entropy sources so OpenSSL or the parent application/library aren't required to supply entropy.&lt;br /&gt;
&lt;br /&gt;
5) A standalone minimal FIPS module tarball that contains only the code needed to build the contents of the crypto module (only what is inside the &amp;quot;cryptographic module boundary&amp;quot;, in FIPS-speak). Omit the test suite software and much of the build-time software (strong precedent says that &amp;quot;incore&amp;quot; and &amp;quot;fipsld&amp;quot; can be omitted, for instance).&lt;br /&gt;
&lt;br /&gt;
6) Ability to build out of the source tree.&lt;br /&gt;
&lt;br /&gt;
7) FIPS 186-4 KeyGen.&lt;br /&gt;
&lt;br /&gt;
8) SP 800-56A compliance (Self-tests per I.G. 9.6).&lt;br /&gt;
:: Diffie-Hellman full compliance with NIST SP 800-56A including CAVP algorithm testing.&lt;br /&gt;
:: Diffie-Hellman Known Answer Tests (KATs) that include shared secret KAT and KDF KAT.&lt;br /&gt;
&lt;br /&gt;
9) SP 800-56B vendor affirmation (I.G. D.4).&lt;br /&gt;
&lt;br /&gt;
10) SHA-3 and SHAKE.&lt;br /&gt;
&lt;br /&gt;
11) Automatic execution of power-on self-tests (I.G. 9.5/9.10).&lt;br /&gt;
&lt;br /&gt;
12) Any allowed efficiencies in power-on self-tests.&lt;br /&gt;
&lt;br /&gt;
13) Alternate FIPS Approved modes of operation (turn self-tests and algorithms “off”).&lt;br /&gt;
&lt;br /&gt;
14) Explore possibility of validating &amp;quot;stitched&amp;quot; algorithm implementations.&lt;br /&gt;
&lt;br /&gt;
15) Consider any newly FIPS approved algorithms (e.g. new EC curves, Chacha/Poly)&lt;br /&gt;
&lt;br /&gt;
Stakeholder requests:&lt;br /&gt;
&lt;br /&gt;
a.	RSA key wrapping as part of NIST SP 800-56B (also called KTS validation testing), if CAVS testing is available.&lt;br /&gt;
&lt;br /&gt;
b.	AES-GMAC compliance (I.G. A.5).&lt;br /&gt;
&lt;br /&gt;
c.	AES Key Wrap Compliance to NIST SP 800-38F.&lt;br /&gt;
&lt;br /&gt;
d.	PBKDF2 Suppport.&lt;br /&gt;
&lt;br /&gt;
e.      Format Preserving Encrypion Support (NIST SP 800-38G)&lt;br /&gt;
&lt;br /&gt;
f.	Addition of EC curve 25519&lt;br /&gt;
&lt;br /&gt;
g.      Improved entropy to meet NIST SP 800-90B.&lt;br /&gt;
&lt;br /&gt;
h.	Symmetric key wrap conformant to SP 800-38F&lt;br /&gt;
&lt;br /&gt;
i.	SP 800-135 KDFs&lt;br /&gt;
&lt;br /&gt;
j.	SP 800-108 KDFs&lt;br /&gt;
&lt;br /&gt;
k.	Addition of AES XPN&lt;br /&gt;
&lt;br /&gt;
l.	XTS-AES compliance to I.G. A.9&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2464</id>
		<title>FIPS module 2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2464"/>
		<updated>2016-09-20T20:37:22Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Typo and tweak&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''OpenSSL FIPS Object Module 2.0'' was first validated with FIPS 140-2 certificate [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 #1747] in mid-2013.  This 2.0 FIPS module is compatible with OpenSSL releases 1.0.1 and 1.0.2, and not with any other releases.&lt;br /&gt;
&lt;br /&gt;
Thanks to the [http://openssl.com/fips/hostage.html &amp;quot;hostage issue&amp;quot;] in 2015, two new &amp;quot;clone&amp;quot; validations (known as &amp;quot;Alternative Scenario 1A&amp;quot; validations, also referred to as &amp;quot;re-brand&amp;quot; validations by some test labs) were obtained for the same module. The &amp;quot;RE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2473 #2473], was intended to be identical to #1747 while allowing the addition of new platforms.  The &amp;quot;SE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2398 #2398], was intended for the addition of platforms requiring source code mods and thus new revisions to the module tarball. The #1747 and #2473 validations will forever remain at revision 2.0.10, while new revisions will be added to #2398 (which is at 2.0.13 as of September 2016).&lt;br /&gt;
&lt;br /&gt;
Note that although the paperwork for the two clone validations #2398 and #2473 was submitted at the same time, and the two sets of paperwork were precisely identical other than the respective references to &amp;quot;RE&amp;quot; versus &amp;quot;SE&amp;quot; in the module names, they were approved at different times (July and November) with different editorial modifications required by the CMVP for the Security Policy documents. Such inconsistencies are common with FIPS 140-2 validations; the outcome from one validation effort is not necessarily predictive of what will happen for subsequent similar (or even identical) attempts.&lt;br /&gt;
&lt;br /&gt;
In addition to the three validations of the ''OpenSSL FIPS Object Module 2.0'' obtained directly by OpenSSL, some third party vendors have obtained additional &amp;quot;re-brand&amp;quot; validations of the same cryptographic module:&lt;br /&gt;
&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2676 #2676], Cohesity OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2631 #2631], Intel OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2575 #2575], Cellcrypt Secure Core 3 FIPS 140-2 Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2454], LogRhythm FIPS Object Module Version 6.3.4&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2422], Nimble Storage OpenSSL FIPS Object Module&lt;br /&gt;
&lt;br /&gt;
Note that while these clone validations have re-branded proprietary module names, they reference the original ''OpenSSL FIPS Object Module 2.0'' tarballs which are available under the open source OpenSSL license, and hence these validations can be used and cited by anyone.&lt;br /&gt;
&lt;br /&gt;
A list of formally tested platforms (&amp;quot;Operational Environments&amp;quot;) is associated with each validation. Collectively there are over two hundred unique platforms listed across all the ''OpenSSL FIPS Object Module 2.0'' validations:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Unique platforms across all ''OpenSSL FIPS Object Module 2.0'' validations as of 2016-09&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Feroceon 88FR131 (ARMv5) (gcc Compiler Version 4.5.3)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) with AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) without AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on OMAP 3530 (ARMv7) with NEON (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) with NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) without NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on Qualcomm Snapdragon APQ8060 (ARMv7) with NEON (gcc compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on TI OMAP 3 (ARMv7) with NEON (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) with NEON (gcc Complier Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with Neon (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) with NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) without NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) with NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) without NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.0 running on ARM Cortex A8 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 running on ARMv7 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 6.1 running on Apple A6X SoC (ARMv7s) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64- bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple OS X 10.7 running on Intel Core i7-3615QM (Apple LLVM version 4.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) without AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2620v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2690v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) with AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) without AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 running on TI C64x+ (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|eCos 3 running on Freescale i.MX27 926ejs (ARMv5TEJ) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Fedora 14 running on Intel Core i5 with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5- 2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) 32-bit (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) without NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compilerv Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 running on PowerPC e300c3 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 running on TI AM3703CBP (ARMv7) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 running on PowerPC32 e300 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS300 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS500 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS700 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Broadcom BCM11107 (ARMv6) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale e500v2 (PPC) (gcc Compiler Version 4.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale PowerPCe500 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on TI TMS320DM6446 (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) with AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) without AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on VMware ESXi 6.00 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on Vmware ESXi 6.00 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 64-bit under Citrix XenServer running on Intel Xeon E5-2430L (x86) without AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)2&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.8 running on ARM926 (ARMv5TEJ) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on ASPEED AST-Series (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on Emulex PILOT3 (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) running on Intel Celeron (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) running on Intel Pentium 4 (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5- 2430M (64-bit) with AES-NI (Microsoft ® C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5-2430M (64-bit) with AES-NI (Microsoft « C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 running on ARMv7 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 running on ARMv5TEJ (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows Server 2008 R2 running on an Intel Xeon E5-2420 (x64) (Microsoft 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on Intel Xeon 5500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on PowerPCe500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|OpenWRT 2.6 running on MIPS 24Kc (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 without AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11(32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L with AES-NI (gcc Compiler Version 4.6.3)3&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.4 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.5 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)4&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Core i5 with AES-NI (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) with NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) without NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 running on ARM 922T (ARMv4) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)1&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AESNI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.7 running on Intel Core 2 Duo (x86) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 running on TI TNETV1050 (MIPS) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.9 running on Freescale P2020 (PPC) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xA (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xD (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2463</id>
		<title>FIPS module 2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2463"/>
		<updated>2016-09-20T19:49:37Z</updated>

		<summary type="html">&lt;p&gt;Stevem: fix typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''OpenSSL FIPS Object Module 2.0'' was first validated with FIPS 140-2 certificate [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 #1747] in mid-2013.  This 2.0 FIPS module is compatible with OpenSSL releases 1.0.1 and 1.0.2, and not with any other releases.&lt;br /&gt;
&lt;br /&gt;
Thanks to the [http://openssl.com/fips/hostage.html &amp;quot;hostage issue&amp;quot;] in 2015, two new &amp;quot;clone&amp;quot; validations (known as &amp;quot;Alternative Scenario 1A&amp;quot; validations, also referred to as &amp;quot;re-brand&amp;quot; validations by some test labs) were obtained for the same module. The &amp;quot;RE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2473 #2473], was intended to be identical to #1747 while allowing the addition of new platforms.  The &amp;quot;SE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2398 #2398], was intended for the addition of platforms requiring source code mods and thus new revisions to the module tarball. The #1747 and #2473 validations will forever remain at revision 2.0.10, while new revisions will be added to #2398 (which is at 2.0.13 as of September 2016).&lt;br /&gt;
&lt;br /&gt;
Note that although the paperwork for the two clone validations #2398 and #2473 was submitted at the same time, and the two sets of paperwork were precisely identical other than the respective references to &amp;quot;RE&amp;quot; versus &amp;quot;SE&amp;quot; in the module names, they were approved at different times (July and November) with different editorial modifications required by the CMVP for the Security Policy documents. Such inconsistencies are common with FIPS 140-2 validations; the outcome from one validation effort is not necessarily predictive of what will happen for subsequent similar (or even identical) attempts.&lt;br /&gt;
&lt;br /&gt;
In addition to the three validations of the ''OpenSSL FIPS Object Module 2.0'' obtained directly by OpenSSL, some third party vendors have obtained additional &amp;quot;re-brand&amp;quot; validations:&lt;br /&gt;
&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2676 #2676], Cohesity OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2631 #2631], Intel OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2575 #2575], Cellcrypt Secure Core 3 FIPS 140-2 Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2454], LogRhythm FIPS Object Module Version 6.3.4&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2422], Nimble Storage OpenSSL FIPS Object Module&lt;br /&gt;
&lt;br /&gt;
Noe that while these clone validations have re-branded proprietary module names, they reference the original ''OpenSSL FIPS Object Module 2.0'' tarballs which are available under the open source OpenSSL license, and hence these validations can be used and cited by anyone.&lt;br /&gt;
&lt;br /&gt;
A list of formally tested platforms (&amp;quot;Operational Environments&amp;quot;) is associated with each validation. Collectively there are over two hundred unique platforms listed across all the ''OpenSSL FIPS Object Module 2.0'' validations:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Unique platforms across all ''OpenSSL FIPS Object Module 2.0'' validations as of 2016-09&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Feroceon 88FR131 (ARMv5) (gcc Compiler Version 4.5.3)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) with AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) without AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on OMAP 3530 (ARMv7) with NEON (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) with NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) without NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on Qualcomm Snapdragon APQ8060 (ARMv7) with NEON (gcc compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on TI OMAP 3 (ARMv7) with NEON (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) with NEON (gcc Complier Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with Neon (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) with NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) without NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) with NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) without NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.0 running on ARM Cortex A8 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 running on ARMv7 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 6.1 running on Apple A6X SoC (ARMv7s) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64- bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple OS X 10.7 running on Intel Core i7-3615QM (Apple LLVM version 4.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) without AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2620v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2690v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) with AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) without AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 running on TI C64x+ (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|eCos 3 running on Freescale i.MX27 926ejs (ARMv5TEJ) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Fedora 14 running on Intel Core i5 with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5- 2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) 32-bit (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) without NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compilerv Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 running on PowerPC e300c3 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 running on TI AM3703CBP (ARMv7) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 running on PowerPC32 e300 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS300 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS500 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS700 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Broadcom BCM11107 (ARMv6) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale e500v2 (PPC) (gcc Compiler Version 4.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale PowerPCe500 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on TI TMS320DM6446 (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) with AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) without AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on VMware ESXi 6.00 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on Vmware ESXi 6.00 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 64-bit under Citrix XenServer running on Intel Xeon E5-2430L (x86) without AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)2&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.8 running on ARM926 (ARMv5TEJ) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on ASPEED AST-Series (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on Emulex PILOT3 (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) running on Intel Celeron (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) running on Intel Pentium 4 (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5- 2430M (64-bit) with AES-NI (Microsoft ® C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5-2430M (64-bit) with AES-NI (Microsoft « C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 running on ARMv7 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 running on ARMv5TEJ (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows Server 2008 R2 running on an Intel Xeon E5-2420 (x64) (Microsoft 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on Intel Xeon 5500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on PowerPCe500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|OpenWRT 2.6 running on MIPS 24Kc (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 without AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11(32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L with AES-NI (gcc Compiler Version 4.6.3)3&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.4 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.5 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)4&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Core i5 with AES-NI (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) with NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) without NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 running on ARM 922T (ARMv4) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)1&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AESNI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.7 running on Intel Core 2 Duo (x86) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 running on TI TNETV1050 (MIPS) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.9 running on Freescale P2020 (PPC) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xA (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xD (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2462</id>
		<title>FIPS module 2.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_2.0&amp;diff=2462"/>
		<updated>2016-09-20T14:59:06Z</updated>

		<summary type="html">&lt;p&gt;Stevem: initial draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The ''OpenSSL FIPS Object Module 2.0'' was first validated with FIPS 140-2 certificate [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 #1747] in mid-2013.  This 2.0 FIPS module is compatible with OpenSSL releases 1.0.1 and 1.0.2, and not with any other releases.&lt;br /&gt;
&lt;br /&gt;
Thanks to the [http://openssl.com/fips/hostage.html &amp;quot;hostage issue&amp;quot;] in 2015, two new &amp;quot;clone&amp;quot; validations (known as &amp;quot;Alternative Scenario 1A&amp;quot; validations, also referred to as &amp;quot;re-brand&amp;quot; validations by some test labs) were obtained for the same module. The &amp;quot;RE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2473 #2473], was intended to be identical to #1747 while allowing the addition of new platforms.  The &amp;quot;SE&amp;quot; validation, [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2398 #2398], was intended for the addition of platforms requiring source code mods and thus new revisions to the module tarball. The #1747 and #2473 validations will forever remain at revision 2.0.10, while new revisions will be added to #2398 (which is at 2.0.13 as of September 2016).&lt;br /&gt;
&lt;br /&gt;
Note that although the paperwork for the two clone validations #2398 and #2473 was submitted at the same time, and the two sets of paperwork were precisely identical other than the respective references to &amp;quot;RE&amp;quot; versus &amp;quot;SE&amp;quot; in the module names, they were approved at different times (July and November) with different editorial modifications required by the CMVP for the Security Policy documents. Such inconsistencies are common with FIPS 140-2 validations; the outcome from one validation effort is not necessarily predictive of what will happen for subsequent similar (or even identical) attempts.&lt;br /&gt;
&lt;br /&gt;
In addition to the three validations of the ''OpenSSL FIPS Object Module 2.0'' obtained directly by OpenSSL, some third party vendors have obtained additional &amp;quot;re-brand&amp;quot; validations:&lt;br /&gt;
&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2676 #2676], Cohesity OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2631 #2631], Intel OpenSSL FIPS Object Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2575 #2575], Cellcrypt Secure Core 3 FIPS 140-2 Module&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2454], LogRhythm FIPS Object Module Version 6.3.4&lt;br /&gt;
:: [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2454 #2422], Nimble Storage OpenSSL FIPS Object Module&lt;br /&gt;
&lt;br /&gt;
Noe that while these clone validations have re-branded proprietary module names, they reference the original ''OpenSSL FIPS Object Module 2.0'' tarballs which are available under the open source OpenSSL license, and hence these valdidations can be used and cited by anyone.&lt;br /&gt;
&lt;br /&gt;
A list of formally tested platforms (&amp;quot;Operational Environments&amp;quot;) is associated with each validation. Collectively there are over two hundred unique platforms listed across all the ''OpenSSL FIPS Object Module 2.0'' validations:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Unique platforms across all ''OpenSSL FIPS Object Module 2.0'' validations as of 2016-09&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Feroceon 88FR131 (ARMv5) (gcc Compiler Version 4.5.3)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) with AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AcanOS 1.0 running on Intel Core i7-3612QE (x86) without AES-NI (gcc Compiler Version 4.6.2)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 32-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 6.1 64-bit running on IBM POWER 7 (PPC) with optimizations (IBM XL C/C++ for AIX Compiler Version V10.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 32-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|AIX 7.1 64-bit running on IBM POWER 7 (PPC) (IBM XL C/C++ for AIX Compiler Version V13.1)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on OMAP 3530 (ARMv7) with NEON (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) with NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 2.2 running on Qualcomm QSD8250 (ARMv7) without NEON (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 3.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.0)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on NVIDIA Tegra 250 T20 (ARMv7) (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on Qualcomm Snapdragon APQ8060 (ARMv7) with NEON (gcc compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.0 running on TI OMAP 3 (ARMv7) with NEON (gcc Compiler Version 4.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) with NEON (gcc Complier Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.1 running on TI DM3730 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with Neon (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) with NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 4.2 running on Nvidia Tegra 3 (ARMv7) without NEON (gcc Compiler Version 4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) with NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 32-bit running on Qualcomm APQ8084 (ARMv7) without NEON (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) with NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Android 5.0 64-bit running on SAMSUNG Exynos7420 (ARMv8) without NEON and Crypto Extensions (gcc Compiler Version 4.9)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.0 running on ARM Cortex A8 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 5.1 running on ARMv7 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 6.1 running on Apple A6X SoC (ARMv7s) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple iOS 7.1 64- bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Apple OS X 10.7 running on Intel Core i7-3615QM (Apple LLVM version 4.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|ArbOS 5.3 running on Xeon E5645 (x86) without AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CascadeOS 6.1 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2620v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|CentOS 5.6 64-bit running on Intel Xeon E5-2690v3 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) with AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DataGravity Discovery Series OS V2.0 running on Intel Xeon E5-2420 (x86) without AES-NI (gcc Compiler Version 4.7.2)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 running on TI C64x+ (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|DSP Media Framework 1.4 (TMS320C6x C/C++ Compiler v6.0.13)&lt;br /&gt;
|-&lt;br /&gt;
|eCos 3 running on Freescale i.MX27 926ejs (ARMv5TEJ) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Fedora 14 running on Intel Core i5 with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5- 2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.0 running on Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.3)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) with AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 10.2 running on Intel Xeon E5-2430L (x86) without AES-NI (clang Compiler Version 3.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) 32-bit (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 8.4 running on Intel Xeon E5440 (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.1 running on Xeon E5-2430L (x86) without AESNI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|FreeBSD 9.2 running on Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (32 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|HP-UX 11i (64 bit) running on Intel Itanium 2 (HP C/aC++ B3910B)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) with NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 6.0 running on Apple A5 / ARM Cortex-A9 (ARMv7) without NEON (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) with NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32­bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 32-bit running on Apple A7 (ARMv8) without NEON (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) with NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64­bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compiler Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|iOS 8.1 64-bit running on Apple A7 (ARMv8) without NEON and Crypto Extensions (clang Compilerv Version 600.0.56)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.27 running on PowerPC e300c3 (gcc Compiler Version 4.2.4)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.32 running on TI AM3703CBP (ARMv7) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6.33 running on PowerPC32 e300 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS300 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS500 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on a Nimble Storage CS700 with AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Broadcom BCM11107 (ARMv6) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale e500v2 (PPC) (gcc Compiler Version 4.4.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on Freescale PowerPCe500 (gcc Compiler Version 4.1.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 2.6 running on TI TMS320DM6446 (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) with AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 32-bit running on Intel Atom E3845 (x86) without AES-NI (gcc Compiler Version 4.8.1)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on VMware ESXi 6.00 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 on Vmware ESXi 6.00 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon with AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.10 running on Intel Xeon without AES-NI (gcc Compiler Version 4.8.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 64-bit under Citrix XenServer running on Intel Xeon E5-2430L (x86) without AES-NI&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Citrix XenServer 6.2 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)2&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Microsoft Windows 2012 Hyper-V running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L with AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.4 under Vmware ESXi 5.1 running on Intel Xeon E5-2430L without AES-NI (gcc Compiler Version 4.8.0)&lt;br /&gt;
|-&lt;br /&gt;
|Linux 3.8 running on ARM926 (ARMv5TEJ) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on ASPEED AST-Series (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Linux ORACLESP 2.6 running on Emulex PILOT3 (ARMv5) (gcc Compiler Version 4.4.5)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (32 bit) running on Intel Celeron (Microsoft 32 bit C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 (64 bit) running on Intel Pentium 4 (Microsoft C/C++ Optimizing Compiler Version 16.00)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5- 2430M (64-bit) with AES-NI (Microsoft ® C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows 7 running on Intel Core i5-2430M (64-bit) with AES-NI (Microsoft « C/C++ Optimizing Compiler Version 16.00 for x64)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 5.0 running on ARMv7 (Microsoft C/C++ Optimizing Compiler Version 13.10 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows CE 6.0 running on ARMv5TEJ (Microsoft C/C++ Optimizing Compiler Version 15.00 for ARM)&lt;br /&gt;
|-&lt;br /&gt;
|Microsoft Windows Server 2008 R2 running on an Intel Xeon E5-2420 (x64) (Microsoft 32-bit C/C++ Optimizing Compiler Version 16.00.40219.01 for 80x86)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on Intel Xeon 5500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|NetBSD 5.1 running on PowerPCe500 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|OpenWRT 2.6 running on MIPS 24Kc (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 5 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 with AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Linux 6 running on Intel Xeon 5675 without AES-NI (gcc Compiler Version 4.4.6)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (32 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 10 (64 bit) running on SPARC-T3 (SPARCv9) (gcc Compiler Version 3.4.3)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11(32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (32 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on Intel Xeon 5675 (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) running on SPARC-T3 (SPARCv9) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 (64 bit) (Sun C Version 5.12)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (32 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AES-NI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|Oracle Solaris 11 running on Intel Xeon 5675 with AESNI (64 bit) (gcc Compiler Version 4.5.2)&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L with AES-NI (gcc Compiler Version 4.6.3)3&lt;br /&gt;
|-&lt;br /&gt;
|PexOS 1.0 under vSphere ESXi 5.1 running on Intel Xeon E52430L without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.4 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|QNX 6.5 running on Freescale i.MX25 (ARMv4) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)&lt;br /&gt;
|-&lt;br /&gt;
|TS-Linux 2.4 running on Arm920Tid (ARMv4) (gcc Compiler Version 4.3.2)4&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (32 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 (64 bit) running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Core i5 with AES-NI (32 bit) (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 10.04 running on Intel Pentium T4200 (gcc Compiler Version 4.1.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) with AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 12.04 running on Intel Xeon E5-2430L (x86) without AES-NI (gcc Compiler Version 4.6.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) with NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|Ubuntu 13.04 running on AM335x Cortex-A8 (ARMv7) without NEON (gcc Compiler Version 4.7.3)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|uCLinux 0.9.29 running on ARM 922T (ARMv4) (gcc Compiler Version 4.2.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)1&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 1.5 under Vmware ESXi 5.0 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) with AESNI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|Vmware Horizon Workspace 2.1 under vSphere ESXi 5.5 running on Intel Xeon E3-1220 (x86) without AES-NI (gcc Compiler Version 4.5.1)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.7 running on Intel Core 2 Duo (x86) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.8 running on TI TNETV1050 (MIPS) (gcc Compiler Version 4.1.2)&lt;br /&gt;
|-&lt;br /&gt;
|VxWorks 6.9 running on Freescale P2020 (PPC) (gcc Compiler Version 4.3.3)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xA (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|-&lt;br /&gt;
|Windows Embedded Compact 7 running on Freescale i.MX53xD (ARMv7) with NEON (Microsoft C/C++ Optimizing Compiler Version 15.00.20720)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_modules&amp;diff=2461</id>
		<title>FIPS modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_modules&amp;diff=2461"/>
		<updated>2016-09-20T14:22:52Z</updated>

		<summary type="html">&lt;p&gt;Stevem: link to 2.0 module page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is currently only one extant FIPS 140-2 validated cryptographic module, the ''OpenSSL FIPS Object Module 2.0''. This module is revised periodically with platform portability modifications to support additional platforms (general improvements and bugfixes, even security vulnerability mitigations, are not permitted[http://veridicalsystems.com/blog/immutability-of-fips/]). As of September 2016 the latest module revision is 2.0.13.&lt;br /&gt;
&lt;br /&gt;
The 2.0 module is rather confusingly covered by three very similar validations, the original #1747[http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747] and the &amp;quot;Alternative Scenario 1A&amp;quot; clone validations #2398 [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2398] and #2473 [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2473]. For perverse and inscrutable bureaucratic reasons the #1747 validation cannot be updated and it and #2473 will forever remain at revision 2.0.10. New platforms can be added to #2398 for revision 2.0.10, and new platforms and new revisions can currently be added to the #2398 validation. The choice of validation is a paperwork consideration as all three validations reference the same cryptographic module. Note there are also a number of third party clone validations that also reference exactly the same cryptographic module. Since that module is available under the OpenSSL open source license, any such validation can be cited for satisfying FIPS 140-2 validation requirements. Collectively across all such validations the 2.0 FIPS module has more than two hundred formally tested platforms (known as &amp;quot;Operational Environments&amp;quot; in FIPS-speak).  More information about the 2.0 FIPS module can be founf starting at [[FIPS_module_2.0]].&lt;br /&gt;
&lt;br /&gt;
The 2.0 FIPS module is compatible with OpenSSL releases 1.0.1 and 1.0.2, and no others. The extensive internal structural changes for OpenSSL 1.1 preclude the use of the 2.0 FIPS module with that release.&lt;br /&gt;
&lt;br /&gt;
A new validation effort is to develop and validate a new open source based cryptographic module was announced in July 2016[https://www.openssl.org/blog/blog/2016/07/20/fips/]. This new module will be usable with OpenSSL release 1.1. It will provisionally be called ''OpenSSL FIPS Object Module 3.0''.  Notes and commentary can be found starting at [[FIPS_module_3.0]].&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2460</id>
		<title>FIPS module 3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2460"/>
		<updated>2016-09-19T13:39:22Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Caveat entropy goal&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 3.0 FIPS module will be conceptually similar to the preceeding line of ''OpenSSL FIPS Object Module'' cryptographic modules. An extensive reworking of the internals is planned, to address some issues stemming from the historical origins and subsequent ad hoc evolution of previous modules.&lt;br /&gt;
&lt;br /&gt;
An initial rough draft of requirements and goals:&lt;br /&gt;
&lt;br /&gt;
1) Keep it minimal and avoid any OpenSSL dependencies at all: i.e. make it fully usable as a stand alone crypto module (the 2.0 module is awkwardly usable without OpenSSL but its OpenSSL heritage shows).&lt;br /&gt;
&lt;br /&gt;
2) Support compilation in various forms including as standalone ENGINE which is simply loaded into &amp;quot;normal&amp;quot; OpenSSL which then simply does all the FIPS weirdness automatically. Ideally a &amp;quot;FIPS capable&amp;quot; OpenSSL will no longer be required at all.&lt;br /&gt;
&lt;br /&gt;
3) Overhaul the algorithm testing code to be much cleaner and modular than the hacky stuff we've lived with so far. Allow handling of huge test vector data files by &amp;quot;piping&amp;quot; data instead of having to store the full files on the target device (which can be problematic for embedded environments).&lt;br /&gt;
&lt;br /&gt;
4) Consider feasibility of built in entropy sources so OpenSSL or the parent application/library aren't required to supply entropy.&lt;br /&gt;
&lt;br /&gt;
5) A standalone minimal FIPS module tarball that contains only the code needed to build the contents of the crypto module (only what is inside the &amp;quot;cryptographic module boundary&amp;quot;, in FIPS-speak). Omit the test suite software and much of the build-time software (strong precedent says that &amp;quot;incore&amp;quot; and &amp;quot;fipsld&amp;quot; can be omitted, for instance).&lt;br /&gt;
&lt;br /&gt;
6) Ability to build out of the source tree.&lt;br /&gt;
&lt;br /&gt;
7) FIPS 186-4 KeyGen.&lt;br /&gt;
&lt;br /&gt;
8) SP 800-56A compliance (Self-tests per I.G. 9.6).&lt;br /&gt;
:: Diffie-Hellman full compliance with NIST SP 800-56A including CAVP algorithm testing.&lt;br /&gt;
:: Diffie-Hellman Known Answer Tests (KATs) that include shared secret KAT and KDF KAT.&lt;br /&gt;
&lt;br /&gt;
9) SP 800-56B vendor affirmation (I.G. D.4).&lt;br /&gt;
&lt;br /&gt;
10) SHA-3 and SHAKE.&lt;br /&gt;
&lt;br /&gt;
11) Automatic execution of power-on self-tests (I.G. 9.5/9.10).&lt;br /&gt;
&lt;br /&gt;
12) Any allowed efficiencies in power-on self-tests.&lt;br /&gt;
&lt;br /&gt;
13) Alternate FIPS Approved modes of operation (turn self-tests and algorithms “off”).&lt;br /&gt;
&lt;br /&gt;
14) Explore possibility of validating &amp;quot;stitched&amp;quot; algorithm implementations.&lt;br /&gt;
&lt;br /&gt;
15) Consider any newly FIPS approved algorithms (e.g. new EC curves, Chacha/Poly)&lt;br /&gt;
&lt;br /&gt;
Stakeholder requests:&lt;br /&gt;
&lt;br /&gt;
a.	RSA key wrapping as part of NIST SP 800-56B (also called KTS validation testing), if CAVS testing is available.&lt;br /&gt;
&lt;br /&gt;
b.	AES-GMAC compliance (I.G. A.5).&lt;br /&gt;
&lt;br /&gt;
c.	AES Key Wrap Compliance to NIST SP 800-38F.&lt;br /&gt;
&lt;br /&gt;
d.	PBKDF2 Suppport.&lt;br /&gt;
&lt;br /&gt;
e.      Format Preserving Encrypion Support (NIST SP 800-38G)&lt;br /&gt;
&lt;br /&gt;
f.	Addition of EC curve 25519&lt;br /&gt;
&lt;br /&gt;
g.      Improved entropy to meet NIST SP 800-90B.&lt;br /&gt;
&lt;br /&gt;
h.	Symmetric key wrap conformant to SP 800-38F&lt;br /&gt;
&lt;br /&gt;
i.	SP 800-135 KDFs&lt;br /&gt;
&lt;br /&gt;
j.	SP 800-108 KDFs&lt;br /&gt;
&lt;br /&gt;
l.	Addition of AES XPN&lt;br /&gt;
&lt;br /&gt;
m.	XTS-AES compliance to I.G. A.9&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2459</id>
		<title>FIPS module 3.0</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_module_3.0&amp;diff=2459"/>
		<updated>2016-09-19T13:17:10Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Initial draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The 3.0 FIPS module will be conceptually similar to the preceeding line of ''OpenSSL FIPS Object Module'' cryptographic modules. An extensive reworking of the internals is planned, to address some issues stemming from the historical origins and subsequent ad hoc evolution of previous modules.&lt;br /&gt;
&lt;br /&gt;
An initial rough draft of requirements and goals:&lt;br /&gt;
&lt;br /&gt;
1) Keep it minimal and avoid any OpenSSL dependencies at all: i.e. make it fully usable as a stand alone crypto module (the 2.0 module is awkwardly usable without OpenSSL but its OpenSSL heritage shows).&lt;br /&gt;
&lt;br /&gt;
2) Support compilation in various forms including as standalone ENGINE which is simply loaded into &amp;quot;normal&amp;quot; OpenSSL which then simply does all the FIPS weirdness automatically. Ideally a &amp;quot;FIPS capable&amp;quot; OpenSSL will no longer be required at all.&lt;br /&gt;
&lt;br /&gt;
3) Overhaul the algorithm testing code to be much cleaner and modular than the hacky stuff we've lived with so far. Allow handling of huge test vector data files by &amp;quot;piping&amp;quot; data instead of having to store the full files on the target device (which can be problematic for embedded environments).&lt;br /&gt;
&lt;br /&gt;
4) Built in entropy sources so OpenSSL or the parent application/library aren't required to supply entropy.&lt;br /&gt;
&lt;br /&gt;
5) A standalone minimal FIPS module tarball that contains only the code needed to build the contents of the crypto module (only what is inside the &amp;quot;cryptographic module boundary&amp;quot;, in FIPS-speak). Omit the test suite software and much of the build-time software (strong precedent says that &amp;quot;incore&amp;quot; and &amp;quot;fipsld&amp;quot; can be omitted, for instance).&lt;br /&gt;
&lt;br /&gt;
6) Ability to build out of the source tree.&lt;br /&gt;
&lt;br /&gt;
7) FIPS 186-4 KeyGen.&lt;br /&gt;
&lt;br /&gt;
8) SP 800-56A compliance (Self-tests per I.G. 9.6).&lt;br /&gt;
:: Diffie-Hellman full compliance with NIST SP 800-56A including CAVP algorithm testing.&lt;br /&gt;
:: Diffie-Hellman Known Answer Tests (KATs) that include shared secret KAT and KDF KAT.&lt;br /&gt;
&lt;br /&gt;
9) SP 800-56B vendor affirmation (I.G. D.4).&lt;br /&gt;
&lt;br /&gt;
10) SHA-3 and SHAKE.&lt;br /&gt;
&lt;br /&gt;
11) Automatic execution of power-on self-tests (I.G. 9.5/9.10).&lt;br /&gt;
&lt;br /&gt;
12) Any allowed efficiencies in power-on self-tests.&lt;br /&gt;
&lt;br /&gt;
13) Alternate FIPS Approved modes of operation (turn self-tests and algorithms “off”).&lt;br /&gt;
&lt;br /&gt;
14) Explore possibility of validating &amp;quot;stitched&amp;quot; algorithm implementations.&lt;br /&gt;
&lt;br /&gt;
15) Consider any newly FIPS approved algorithms (e.g. new EC curves, Chacha/Poly)&lt;br /&gt;
&lt;br /&gt;
Stakeholder requests:&lt;br /&gt;
&lt;br /&gt;
a.	RSA key wrapping as part of NIST SP 800-56B (also called KTS validation testing), if CAVS testing is available.&lt;br /&gt;
&lt;br /&gt;
b.	AES-GMAC compliance (I.G. A.5).&lt;br /&gt;
&lt;br /&gt;
c.	AES Key Wrap Compliance to NIST SP 800-38F.&lt;br /&gt;
&lt;br /&gt;
d.	PBKDF2 Suppport.&lt;br /&gt;
&lt;br /&gt;
e.      Format Preserving Encrypion Support (NIST SP 800-38G)&lt;br /&gt;
&lt;br /&gt;
f.	Addition of EC curve 25519&lt;br /&gt;
&lt;br /&gt;
g.      Improved entropy to meet NIST SP 800-90B.&lt;br /&gt;
&lt;br /&gt;
h.	Symmetric key wrap conformant to SP 800-38F&lt;br /&gt;
&lt;br /&gt;
i.	SP 800-135 KDFs&lt;br /&gt;
&lt;br /&gt;
j.	SP 800-108 KDFs&lt;br /&gt;
&lt;br /&gt;
l.	Addition of AES XPN&lt;br /&gt;
&lt;br /&gt;
m.	XTS-AES compliance to I.G. A.9&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_modules&amp;diff=2458</id>
		<title>FIPS modules</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_modules&amp;diff=2458"/>
		<updated>2016-09-19T13:00:10Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Initial draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There is currently only one extant FIPS 140-2 validated cryptographic module, the ''OpenSSL FIPS Object Module 2.0''. This module is revised periodically with platform portability modifications to support additional platforms (general improvements and bugfixes, even security vulnerability mitigations, are not permitted[http://veridicalsystems.com/blog/immutability-of-fips/]). As of September 2016 the latest module revision is 2.0.13.&lt;br /&gt;
&lt;br /&gt;
The 2.0 module is rather confusingly covered by three very similar validations, the original #1747[http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747] and the &amp;quot;Alternative Scenario 1A&amp;quot; clone validations #2398 [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2398] and #2473 [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#2473]. For perverse and inscrutable bureaucratic reasons the #1747 validation cannot be updated and it and #2473 will forever remain at revision 2.0.10. New platforms can be added to #2398 for revision 2.0.10, and new platforms and new revisions can currently be added to the #2398 validation. The choice of validation is a paperwork consideration as all three validations reference the same cryptographic module. Note there are also a number of third party clone validations that also reference exactly the same cryptographic module. Since that module is available under the OpenSSL open source license, any such validation can be cited for satisfying FIPS 140-2 validation requirements. Collectively across all such validations the 2.0 FIPS module has more than two hundred formally tested platforms (known as &amp;quot;Operational Environments&amp;quot; in FIPS-speak).&lt;br /&gt;
&lt;br /&gt;
The 2.0 FIPS module is compatible with OpenSSL releases 1.0.1 and 1.0.2, and no others. The extensive internal structural changes for OpenSSL 1.1 preclude the use of the 2.0 FIPS module with that release.&lt;br /&gt;
&lt;br /&gt;
A new validation effort is to develop and validate a new open source based cryptographic module was announced in July 2016[https://www.openssl.org/blog/blog/2016/07/20/fips/]. This new module will be usable with OpenSSL release 1.1. It will provisionally be called ''OpenSSL FIPS Object Module 3.0''.  Notes and commentary can be found starting at [[FIPS_module_3.0]].&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=2457</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=2457"/>
		<updated>2016-09-19T12:26:20Z</updated>

		<summary type="html">&lt;p&gt;Stevem: /* OpenSSL Quick Links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is the OpenSSL wiki.  The main site is https://www.openssl.org . If this is your first visit or to get an account please see the [[Welcome]] page. Your participation and [[Contributions]] are valued.&lt;br /&gt;
&lt;br /&gt;
This wiki is intended as a place for collecting, organizing, and refining useful information about OpenSSL that is currently strewn among multiple locations and formats.&lt;br /&gt;
&lt;br /&gt;
== OpenSSL Quick Links ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Mailing Lists]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Documentation Index|Index of all API functions]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Binaries]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[SSL and TLS Protocols]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[1.1 API Changes]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[FIPS modules]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
:* Using This Wiki&lt;br /&gt;
:: [http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide], [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list], [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ], [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* [[EVP]]&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* [[STACK API]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
::[[Creating an OpenSSL Engine to use indigenous ECDH ECDSA and HASH Algorithms]]&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
:* [[FIPS Mode]]&lt;br /&gt;
:* [[Simple TLS Server]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [http://wiki.openssl.org/index.php/Category:FIPS_140 FIPS 140-2]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
== Security Advisories ==&lt;br /&gt;
:* [https://www.openssl.org/about/secpolicy.html OpenSSL Security Policy]&lt;br /&gt;
:* [https://www.openssl.org/news/vulnerabilities.html OpenSSL Vulnerabilities List]&lt;br /&gt;
:* [[Security_Advisories|Security Advisories Additional Information]]&lt;br /&gt;
&lt;br /&gt;
== Feedback and Contributions ==&lt;br /&gt;
:* [https://www.openssl.org/support/faq.html#BUILD18 How to notify us of suspected security vulnerabilities]&lt;br /&gt;
:* [https://www.openssl.org/community/#bugs How to report bugs, other than for suspected vulnerabilities]&lt;br /&gt;
:* [[Contributions|General background on source and documentation contributions - '''must read''']]&lt;br /&gt;
:* Contributing code fixes, other than for suspected vulnerabilities, as well as fixes and other improvements to manual pages:&lt;br /&gt;
::* If you are unsure as to whether a feature will be useful for the general OpenSSL community please discuss it on the [https://www.openssl.org/support/community.html openssl-dev mailing list] first.  Someone may be already working on the same thing or there may be a good reason as to why that feature isn't implemented.&lt;br /&gt;
::* Follow the [[Use of Git#Use_of_Git_with_OpenSSL_source_tree|instructions for accessing source code]] in the appropriate branches. Note that manual pages and the FAQ are maintained with the source code.&lt;br /&gt;
::* Submit a pull request for each separate fix (also documented [[Use of Git#Use_of_Git_with_OpenSSL_source_tree|there]])&lt;br /&gt;
::* Submit a bug report (see second bullet, above) and reference the pull request. Or you can attach the patch to the ticket.&lt;br /&gt;
:* Contributing fixes and other improvements to the web site&lt;br /&gt;
::* Follow the [[Use_of_Git#Use_of_Git_with_the_OpenSSL_web_site|instructions for accessing web site sources]]&lt;br /&gt;
::* Create a patch (also documented [[Use_of_Git#Use_of_Git_with_the_OpenSSL_web_site|there]])&lt;br /&gt;
::* Submit a bug report and add the patch as an attachment&lt;br /&gt;
:* [[Developing For OpenSSL]]&lt;br /&gt;
:* [[KnownPatches|Known patches not part of OpenSSL]]&lt;br /&gt;
:* [[Welcome|Contributing to this wiki]]&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Code reformatting]]&lt;br /&gt;
&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
:* [[OCB|OCB Licence details]]&lt;br /&gt;
:* [[Defect and Feature Review Process]]&lt;br /&gt;
:* [[Unit Testing]] (includes other automated testing information)&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Binaries&amp;diff=2324</id>
		<title>Binaries</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Binaries&amp;diff=2324"/>
		<updated>2015-11-05T15:45:38Z</updated>

		<summary type="html">&lt;p&gt;Stevem: New page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Some people have offered to provide OpenSSL binary distributions for selected operating systems. The condition to get a link here is that the link is stable and can provide continued support for OpenSSL for a while.&lt;br /&gt;
&lt;br /&gt;
Note: many Linux distributions come with pre-compiled OpenSSL packages. Those are already well-known among the users of said distributions, and will therefore not be mentioned here. If you are such a user, we ask you to get in touch with your distributor first. This service is primarily for operating systems where there are no pre-compiled OpenSSL packages.&lt;br /&gt;
&lt;br /&gt;
'''Important Disclaimer''':&lt;br /&gt;
''The listing of these third party products does not imply any endorsement by the OpenSSL project, and these organizations are not affiliated in any way with OpenSSL other than by the reference to their ndependent web sites here. In particular any donations or payments to any of these organizations will not be known to, seen by, or in any way benefit the OpenSSL project.''&lt;br /&gt;
&lt;br /&gt;
Use these OpenSSL derived products at your own risk; these products have not been evaluated or tested by the OpenSSL project.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
|+ Third Party OpenSSL Related Binary Distributions&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Product&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | Description&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | URL&lt;br /&gt;
|-&lt;br /&gt;
| OpenSSL for Windows&lt;br /&gt;
| Works with MSVC++, Builder 3/4/5, and MinGW. Comes in form of self-install executables.&lt;br /&gt;
| https://slproweb.com/products/Win32OpenSSL.html&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| OpenSSL for Windows&lt;br /&gt;
| Pre-compiled Win32/64 libraries without external dependencies to the Microsoft Visual Studio Runtime DLLs, except for the system provided msvcrt.dll.&lt;br /&gt;
| https://indy.fulgan.com/SSL/&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| OpenSSL for Solaris&lt;br /&gt;
| Versions for Solaris 2.5 - 11 SPARC and X86&lt;br /&gt;
| http://www.unixpackages.com/&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode_and_TLS&amp;diff=1471</id>
		<title>FIPS mode and TLS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode_and_TLS&amp;diff=1471"/>
		<updated>2014-02-10T13:53:14Z</updated>

		<summary type="html">&lt;p&gt;Stevem: First draft of large new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The new SP800-131A and FIPS 186-4 restrictions on algorithms and key sizes complicate&lt;br /&gt;
the use of ciphersuites for TLS considerably. This page is intended to answer the&lt;br /&gt;
question &amp;quot;can I configure an OpenSSL cipherstring for TLS to comply with the new FIPS restrictions?&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
This discussion assumes use of a &amp;quot;FIPS capable&amp;quot; OpenSSL 1.0.1f or later.&lt;br /&gt;
&lt;br /&gt;
A new security framework in development for future versions will make enforcing these types&lt;br /&gt;
of restrictions easier and the algorithm restrictions are performed all in one place.&lt;br /&gt;
&lt;br /&gt;
== Quick Summary ==&lt;br /&gt;
&lt;br /&gt;
The preferred cipherstring for OpenSSL 1.0.1f+ for all versions of TLS subject to the new FIPS&lt;br /&gt;
restrictions is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, multiple caveats apply as discussed below.&lt;br /&gt;
&lt;br /&gt;
Workarounds for OpenSSL releases prior to 1.0.1f are discussed below.&lt;br /&gt;
&lt;br /&gt;
== Detailed discussion ==&lt;br /&gt;
&lt;br /&gt;
The general rule is you can't use SHA1 for digital signatures any more nor&lt;br /&gt;
a combination like MD5+SHA1. You *can* use SHA1 for HMAC so there's no need to&lt;br /&gt;
force the use of SHA256 HMAC ciphersuites.&lt;br /&gt;
&lt;br /&gt;
A cipherstring in OpenSSL also known as a &amp;quot;cipher list&amp;quot; &lt;br /&gt;
https://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS&lt;br /&gt;
A cipherstring in OpenSSL is a compact notation for a set of cryptographic algorithms&lt;br /&gt;
(public key, symmetric key, and digest algorithms) in order of preference.&lt;br /&gt;
&lt;br /&gt;
The cipherstring notation is discussed at https://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT&lt;br /&gt;
Briefly, a cipherstring is a series of elements each designating either a specific ciphersuite or a set of&lt;br /&gt;
ciphersuites. The &amp;quot;+&amp;quot; operator designates a logical and operation, so &amp;quot;element1+element1&amp;quot; represents that&lt;br /&gt;
set of ciphersuites containing the algorithms in both element1 and element2. The &amp;quot;!&amp;quot; operator permanently&lt;br /&gt;
all the algorithms in the following element.&lt;br /&gt;
&lt;br /&gt;
=== TLS 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
All TLS 1.0/1.1 authenticated PFS (Perfect Forward Secrecy) ciphersuites use SHA1 alone or MD5+SHA1. That&lt;br /&gt;
leaves only unauthenticated ones (which are vulnerable to MiTM so we discount&lt;br /&gt;
them) or those using static keys. Theoretically that would permit RSA, DH or&lt;br /&gt;
ECDH keys in certificates but in practice everyone uses RSA.&lt;br /&gt;
&lt;br /&gt;
The corresponding cipherstring is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl ciphers -v 'kRSA+FIPS:!TLSv1.2'&lt;br /&gt;
AES256-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA1&lt;br /&gt;
DES-CBC3-SHA            SSLv3 Kx=RSA      Au=RSA  Enc=3DES(168) Mac=SHA1&lt;br /&gt;
AES128-SHA              SSLv3 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
That cipherstring specifies three possible ciphersuites allowable in FIPS mode for TLS 1.0 and 1.1.&lt;br /&gt;
The RSA key in the certificate has to be of suitable size&lt;br /&gt;
(2048 bits minimum) as do all other keys in the chain and none of the CAs can&lt;br /&gt;
sign using SHA1. Also those kRSA ciphersuites are allowed for&lt;br /&gt;
server certificates only; client authentication is never allowed&lt;br /&gt;
with the new rules for TLS 1.0 and 1.1.&lt;br /&gt;
&lt;br /&gt;
In a real application when FIPS mode is enabled then only &lt;br /&gt;
FIPS ciphersuites are allowed no matter what you use in the string. So in FIPS mode&lt;br /&gt;
&amp;quot;kRSA:!TLSv1.2&amp;quot; will be functionally equivalent to &amp;quot;kRSA+FIPS!TLSv1.2&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Note the &amp;quot;TLSv1.2&amp;quot; string was only added to OpenSSL recently, as of OpenSSL 1.0.1f.&lt;br /&gt;
It designates the ciphers for TLSv1.2 subject to the FIPS 140-2 and FIPS 186-4&lt;br /&gt;
restrictions.&lt;br /&gt;
&lt;br /&gt;
Note the cipherstring 'FIPS:!TLSv1.2' would also allow fixed DH and fixed ECDH&lt;br /&gt;
certificates but those are not encountered in the wild.&lt;br /&gt;
The key exchange component &amp;quot;kRSA&amp;quot; specifies just those algorithms that support RSA key exchange.&lt;br /&gt;
&lt;br /&gt;
=== TLS 1.2 ===&lt;br /&gt;
&lt;br /&gt;
TLS 1.2 provides more options as the signature can use an algorithm other&lt;br /&gt;
than SHA1. &lt;br /&gt;
&amp;quot;kRSA+FIPS&amp;quot; specifies those ciphersuites that use RSA key exchange, including TLS v1.2, *and*&lt;br /&gt;
are allowed in FIPS mode, and including anonymous ones which may be undesirable:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl ciphers -v 'kRSA+FIPS'&lt;br /&gt;
AES256-GCM-SHA384       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
AES256-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(256)  Mac=SHA256&lt;br /&gt;
AES256-SHA              SSLv3 Kx=RSA        Au=RSA  Enc=AES(256)  Mac=SHA1&lt;br /&gt;
DES-CBC3-SHA            SSLv3 Kx=RSA        Au=RSA  Enc=3DES(168) Mac=SHA1&lt;br /&gt;
AES128-GCM-SHA256       TLSv1.2 Kx=RSA      Au=RSA  Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
AES128-SHA256           TLSv1.2 Kx=RSA      Au=RSA  Enc=AES(128)  Mac=SHA256&lt;br /&gt;
AES128-SHA              SSLv3 Kx=RSA        Au=RSA  Enc=AES(128)  Mac=SHA1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
The ephemeral key for the now permitted PFS keys must be at least 2048 bits (DH)&lt;br /&gt;
or 256 bits (ECDH) in size. Anything supporting ECDH will probably set P-256 as&lt;br /&gt;
a default so that should be OK (Apache does).&lt;br /&gt;
&lt;br /&gt;
There's a snag though. The ciphersuite ECDH-RSA-AES128-SHA can (outside FIPS) be&lt;br /&gt;
used for TLS 1.0 and later whereas in FIPS mode it can only be used for TLS v1.2. A&lt;br /&gt;
TLS client can't advertise ciphersuites in that way (i.e. you can use this for&lt;br /&gt;
TLS1.2 only and nothing earlier) so you're left with the situation where a FIPS&lt;br /&gt;
compliant client might say it wants ECDH-RSA-AES128-SHA&lt;br /&gt;
and TLS 1.2 and the server only supports TLS 1.0 so it will choke when it tries to&lt;br /&gt;
use the prohibited ciphersuite+version combination. Servers are fine because&lt;br /&gt;
they can theoretically select based on version (except in practice OpenSSL doesn't support that).&lt;br /&gt;
&lt;br /&gt;
If that wasn't enough there's another complication. For TLS v1.2 you have to&lt;br /&gt;
restrict the supported signature algorithms to exclude SHA1, allowing only&lt;br /&gt;
SHA256 and above. There is no way to do that in OpenSSL 1.0.1 clients.&lt;br /&gt;
Similarly the supported EC curves have to be restricted to exclude some which are&lt;br /&gt;
of insufficient field size.&lt;br /&gt;
&lt;br /&gt;
In summary: it's a bloody mess.&lt;br /&gt;
&lt;br /&gt;
The list of allowable ciphers for all versions of TLS, 1.0/1/1/1.2 is 'TLSv1.2:kRSA'&lt;br /&gt;
which includes those with no encryption or no authentication which are generally&lt;br /&gt;
undesirable and should be excluded.  In full with explicit &amp;quot;+FIPS&amp;quot; qualification that becomes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL'&lt;br /&gt;
ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH        Au=RSA  Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH      Au=ECDSA Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH            Au=RSA  Enc=AES(256)  Mac=SHA384&lt;br /&gt;
ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH          Au=ECDSA Enc=AES(256)  Mac=SHA384&lt;br /&gt;
DHE-DSS-AES256-GCM-SHA384 TLSv1.2 Kx=DH            Au=DSS  Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH            Au=RSA  Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
DHE-RSA-AES256-SHA256   TLSv1.2 Kx=DH              Au=RSA  Enc=AES(256)  Mac=SHA256&lt;br /&gt;
DHE-DSS-AES256-SHA256   TLSv1.2 Kx=DH              Au=DSS  Enc=AES(256)  Mac=SHA256&lt;br /&gt;
ECDH-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/RSA     Au=ECDH Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
ECDH-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
ECDH-RSA-AES256-SHA384  TLSv1.2 Kx=ECDH/RSA        Au=ECDH Enc=AES(256)  Mac=SHA384&lt;br /&gt;
ECDH-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH/ECDSA     Au=ECDH Enc=AES(256)  Mac=SHA384&lt;br /&gt;
AES256-GCM-SHA384       TLSv1.2 Kx=RSA             Au=RSA  Enc=AESGCM(256) Mac=AEAD&lt;br /&gt;
AES256-SHA256           TLSv1.2 Kx=RSA             Au=RSA  Enc=AES(256)  Mac=SHA256&lt;br /&gt;
ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH        Au=RSA  Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH      Au=ECDSA Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH            Au=RSA  Enc=AES(128)  Mac=SHA256&lt;br /&gt;
ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH          Au=ECDSA Enc=AES(128)  Mac=SHA256&lt;br /&gt;
DHE-DSS-AES128-GCM-SHA256 TLSv1.2 Kx=DH            Au=DSS  Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH            Au=RSA  Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
DHE-RSA-AES128-SHA256   TLSv1.2 Kx=DH              Au=RSA  Enc=AES(128)  Mac=SHA256&lt;br /&gt;
DHE-DSS-AES128-SHA256   TLSv1.2 Kx=DH              Au=DSS  Enc=AES(128)  Mac=SHA256&lt;br /&gt;
ECDH-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/RSA     Au=ECDH Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
ECDH-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH/ECDSA Au=ECDH Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
ECDH-RSA-AES128-SHA256  TLSv1.2 Kx=ECDH/RSA        Au=ECDH Enc=AES(128)  Mac=SHA256&lt;br /&gt;
ECDH-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH/ECDSA     Au=ECDH Enc=AES(128)  Mac=SHA256&lt;br /&gt;
AES128-GCM-SHA256       TLSv1.2 Kx=RSA             Au=RSA  Enc=AESGCM(128) Mac=AEAD&lt;br /&gt;
AES128-SHA256           TLSv1.2 Kx=RSA             Au=RSA  Enc=AES(128)  Mac=SHA256&lt;br /&gt;
AES256-SHA              SSLv3 Kx=RSA               Au=RSA  Enc=AES(256)  Mac=SHA1&lt;br /&gt;
DES-CBC3-SHA            SSLv3 Kx=RSA               Au=RSA  Enc=3DES(168) Mac=SHA1&lt;br /&gt;
AES128-SHA              SSLv3 Kx=RSA               Au=RSA  Enc=AES(128)  Mac=SHA1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
What does this ciphersuite specification mean in practice?&lt;br /&gt;
&lt;br /&gt;
If the peer supports TLS v1.2 it will use a TLS v1.2 ciphersuite which is FIPS&lt;br /&gt;
186-4 compliant (with the curve and signature restrictions I mentioned) or&lt;br /&gt;
non-PFS RSA otherwise.&lt;br /&gt;
&lt;br /&gt;
If the peer only supports TLS 1.1 or 1.0 it will fall back to the non-PFS RSA&lt;br /&gt;
ciphersuites which again will be FIPS 186-4 compliant subject to the silly key&lt;br /&gt;
and certificate signing restrictions.&lt;br /&gt;
&lt;br /&gt;
The ciphersuite (for 1.0.1f+) of 'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL'&lt;br /&gt;
will satisfy FIPS 186-4 for any version of TLS 1.0/1.1/1.2 with caveats as noted.&lt;br /&gt;
&lt;br /&gt;
To specify a list of allowable ciphers for TLS 1.0/1.1 only append !TLSv1.2 which permanently deletes&lt;br /&gt;
those which are only usable for TLS v1.2, giving 'kRSA+FIPS:!TLSv1.2'.&lt;br /&gt;
&lt;br /&gt;
=== Cipherstrings ===&lt;br /&gt;
&lt;br /&gt;
Commentary on what the cipherstrings components mean and their relevance:&lt;br /&gt;
&lt;br /&gt;
&amp;quot;TLSv1.2&amp;quot;: list of ciphersuites only allowed for TLS 1.2. This means if TLS 1.2&lt;br /&gt;
is negotiated they can be used and if not they won't. They also happen to be&lt;br /&gt;
permitted by FIPS 186-4 because TLS 1.2 can use signature algorithms stronger&lt;br /&gt;
that SHA1. That means that it is &amp;quot;safe&amp;quot; to include this in a cipher string&lt;br /&gt;
because (a) they are compliant with FIPS 186-4 in for TLS 1.2 and (b) they can&lt;br /&gt;
never be used for TLS 1.1 or 1.0.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;kRSA&amp;quot;: list of ciphersuites which support RSA key exchange. Because TLS 1.1 and&lt;br /&gt;
1.0 can only use SHA1+MD5 in signatures these are the only ones allowed because&lt;br /&gt;
they don't use signatures.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;FIPS&amp;quot;: list of ciphersuites allowed in FIPS mode excluding those offering no&lt;br /&gt;
encryption. This is for informational purposes only because if you *are* in FIPS&lt;br /&gt;
mode you can only use those ciphersuites anyway (but including the no encryption&lt;br /&gt;
ones).&lt;br /&gt;
&lt;br /&gt;
The lists above all include ciphersuites which you wouldn't normally use: no&lt;br /&gt;
encryption or no authentication. So those need to be disabled. This is done by&lt;br /&gt;
appending '!eNULL:!aNULL': this means &amp;quot;disable any ciphersuites present which&lt;br /&gt;
include no encryption or authentication&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
So combining these we get the following cipher string in FIPS mode:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'TLSv1.2:kRSA:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
which with the functionally redundant &amp;quot;+FIPS&amp;quot; qualifiers is equivant to:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'TLSv1.2+FIPS:kRSA+FIPS:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Without the &amp;quot;+FIPS&amp;quot; qualifiers and outside FIPS mode you'll will see weak export grade&lt;br /&gt;
ciphersuites which would be disabled in FIPS mode. Those can be seen with:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	openssl ciphers -v 'TLSv1.2:kRSA:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
To see the actual set of ciphersuites in FIPS mode, without the explicit &amp;quot;+FIPS&amp;quot; qualifiers,&lt;br /&gt;
do:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	OPENSSL_FIPS=1 openssl ciphers -v 'TLSv1.2:kRSA:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
So in summary &amp;quot;in FIPS mode use the cipherstring 'TLSv1.2:kRSA:!eNULL:!aNULL'&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Note this important disclaimer though: This cipherstring *only* restricts the ciphersuites to those&lt;br /&gt;
not explicitly excluded by FIPS 186-4. There are other conditions which must be&lt;br /&gt;
enforced such as key size, permitted curves and permitted signature algorithms.&lt;br /&gt;
Just because a ciphersuite has been negotiated in this range does not guaranteed&lt;br /&gt;
compliance.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;FIPS capable&amp;quot; OpenSSL does not currently provide a means to automatically enforce the&lt;br /&gt;
new FIPS 186-4 restrictions.&lt;br /&gt;
&lt;br /&gt;
=== A quick overview of TLS ===&lt;br /&gt;
&lt;br /&gt;
The primary purpose of the handshake is to enable both peers to securely obtain&lt;br /&gt;
a shared secret value called the pre-master secret. They then use that to&lt;br /&gt;
generate session keys (encryption and MAC) which are used for the exchange of&lt;br /&gt;
actual application data. The handshake is the only place public key algorithms&lt;br /&gt;
are used.&lt;br /&gt;
&lt;br /&gt;
In the case of PFS ciphersuites both ends generate a temporary key (ECDH or DH)&lt;br /&gt;
and exchange the public bits with each other. They use the algorithm to generate&lt;br /&gt;
the shared DH/ECDH secret value which is used later on. The new FIPS restrictions interfere with&lt;br /&gt;
this because those keys have to be large enough. For ECDH an extension can be&lt;br /&gt;
used to ensure this. For DH you just have to hope the server has a big enough&lt;br /&gt;
key and abort if not.&lt;br /&gt;
&lt;br /&gt;
For anonymous algorithms that's all you get. They are vulnerable to man in the&lt;br /&gt;
middle (MitM) attacks and so are rarely used.&lt;br /&gt;
&lt;br /&gt;
In the real world algorithms include authentication. In those the server digitally&lt;br /&gt;
signs its ECDH or DH key using the key in its certificate. This is to ensure the&lt;br /&gt;
temporary ECDH or DH key can't be forged. It is that digital signature that is&lt;br /&gt;
important here and the one which the new FIPS restrictions disrupt.&lt;br /&gt;
&lt;br /&gt;
How that temporary key is signed depends on the cipher suite and the key in the&lt;br /&gt;
server's certificate. The whole process is called server authentication.&lt;br /&gt;
&lt;br /&gt;
In the case of TLS 1.0 and 1.1 that signature uses a MD5+SHA1 hybrid for RSA&lt;br /&gt;
keys and just SHA1 for DSA and ECDSA. That's why PFS is prohibited by the new FIPS&lt;br /&gt;
rules: there is no option but to use SHA1.&lt;br /&gt;
&lt;br /&gt;
In the case of TLS 1.2 any valid combination can be used and the MD5+SHA1 hybrid is no&lt;br /&gt;
longer present for RSA. RSA just uses the same signature format that&lt;br /&gt;
certificates use (PKCS#1).&lt;br /&gt;
&lt;br /&gt;
For TLS 1.2 the client sends the set of signature algorithms it supports in&lt;br /&gt;
preference order in the supported signature algorithms extensions. The server&lt;br /&gt;
then selects one and uses that for that signature. For new FIPS it would just&lt;br /&gt;
use SHA256 as a minimum or abort the connection if the client only supported&lt;br /&gt;
SHA1 (unlikely).&lt;br /&gt;
&lt;br /&gt;
Client authentication in TLS is a secondary concern. In this case the client&lt;br /&gt;
signs some data related to the handshake and sends the result back. The server&lt;br /&gt;
then checks that signature.&lt;br /&gt;
&lt;br /&gt;
As with server authentication TLS 1.1/1.0 has to use either MD5+SHA1 for RSA or&lt;br /&gt;
just SHA1 for other algorithms. So client authentication violates the new FIPS&lt;br /&gt;
restrictions and cannot be used for TLs 1.0/1.1.&lt;br /&gt;
&lt;br /&gt;
TLS 1.2 removes the restriction to SHA1. In this case the server sends back the&lt;br /&gt;
algorithms it supports and the client selects one. Again SHA256 or&lt;br /&gt;
better s needed to comply with new FIPS restrictions.&lt;br /&gt;
&lt;br /&gt;
Next consider the non-PFS case. We consider RSA&lt;br /&gt;
key exchange only as is the only practical option. This is completely different from PFS. In&lt;br /&gt;
this case the client generates the pre master secret and encrypts it using the&lt;br /&gt;
servers key. The server decrypts it and then uses that to complete the&lt;br /&gt;
handshake. No additional signing is used here so no place for SHA1 to be used.&lt;br /&gt;
The server is authenticated because if it didn't have the right key it couldn't&lt;br /&gt;
decrypt the pre-master secret. It's a bit unusual in that authentication (which&lt;br /&gt;
is normally associated with signatures) is performed using an RSA decryption&lt;br /&gt;
operation.&lt;br /&gt;
&lt;br /&gt;
Some further discussion in case that wasn't confusing enough:&lt;br /&gt;
&lt;br /&gt;
Some people say that it is implied that TLS 1.1 and 1.0 must use SHA1 in&lt;br /&gt;
digital signatures in all certificates. If so then&lt;br /&gt;
TLS 1.1 and 1.0 can never be compliant with new FIPS.&lt;br /&gt;
&lt;br /&gt;
Assuming that is not true, what does it mean in practice? A&lt;br /&gt;
a public webserver would require a certificate signed by CAs that&lt;br /&gt;
use SHA256 minimum and large enough keys. Not a trivial&lt;br /&gt;
task in itself.&lt;br /&gt;
&lt;br /&gt;
Aside from that, problems will be encountered if your server needs to use anything&lt;br /&gt;
outside of the new FIPS restrictions (e.g. to talk to other&lt;br /&gt;
clients). Some older browsers (e.g. IE on XP is one which is&lt;br /&gt;
still very common) don't support SHA2 at all. So they'll fail when they talk to&lt;br /&gt;
that server because the can't verify the signatures.&lt;br /&gt;
&lt;br /&gt;
TLS 1.2 is a bit better, at least in theory. The supported signatures should apply to the&lt;br /&gt;
whole certificate chain. So a client advertising only SHA1+RSA receive a&lt;br /&gt;
chain supporting SHA1+RSA only (if the  server has one) and a client supporting SHA256+RSA&lt;br /&gt;
will receive a &amp;quot;new FIPS&amp;quot; friendly chain.&lt;br /&gt;
&lt;br /&gt;
However, in practice that requirement is generally ignored and implementations serve up whatever&lt;br /&gt;
chain is configured regardless of signature algorithms sent by the client&lt;br /&gt;
because many implementers consider that a slly restriction. For interoperability OpenSSL is&lt;br /&gt;
similarly lax if a &amp;quot;strict&amp;quot; option isn't set. In fact configuring multiple&lt;br /&gt;
chains like that can't be directly done in OpenSSL without application support&lt;br /&gt;
which nothing other than s_server can currently handle.&lt;br /&gt;
&lt;br /&gt;
==== Digests in TLS ====&lt;br /&gt;
&lt;br /&gt;
There are different purposes that digest algorithms are put to.&lt;br /&gt;
&lt;br /&gt;
In TLS 1.2 something called the supported signature algorithms extension&lt;br /&gt;
determines the supported digests as a public key + algorithm pair. It's that&lt;br /&gt;
usage that FIPS 186-4 (and SP800-57) has an impact on. So you can't use RSA+SHA1&lt;br /&gt;
any more. For digital signatures the strength of SHA1 is at most 80 bits: it can&lt;br /&gt;
be less with a weak key.&lt;br /&gt;
&lt;br /&gt;
That digital signature is used to maintain the integrity of the handshake&lt;br /&gt;
messages and certificate chains in PFS ciphersuites: basically server and client&lt;br /&gt;
authentication.&lt;br /&gt;
&lt;br /&gt;
For TLS 1.2 you can specify any digest to be used to maintain handshake&lt;br /&gt;
integrity for digital signatures: for TLS 1.1 and below you could only use&lt;br /&gt;
SHA1+MD5. It's that reason why PFS ciphersuites are banned in TLS 1.1 and below.&lt;br /&gt;
&lt;br /&gt;
Digests use HMAC. For HMAC use the key strength is the digest length so SHA1 is 160 bits.&lt;br /&gt;
&lt;br /&gt;
Before TLS 1.2 all cipher suites used SHA1 HMAC (or in legacy cases MD5) for the&lt;br /&gt;
HMAC.&lt;br /&gt;
&lt;br /&gt;
TLS 1.2 introduced some ciphersuites which used SHA256 and SHA384 for the HMAC&lt;br /&gt;
and the AEAD ones like AES-GCM which have a mac as part of the algorithm itself.&lt;br /&gt;
&lt;br /&gt;
Note that TLS 1.2 also permits all the ciphersuites for TLS 1.1, 1.0 too.&lt;br /&gt;
For details see Table 2 and 3 in SP800-57.&lt;br /&gt;
&lt;br /&gt;
Those tables make a lot more sense when you realise for digital signatures it's&lt;br /&gt;
half the digest size. So SHA1 is 20 bytes which is 160 bits and so 80 bits of&lt;br /&gt;
strength so it only appears in the &amp;quot;80 bits&amp;quot; box for digital signatures. Whereas&lt;br /&gt;
for other uses it is the full digest size so SHA1 appears in the 80, 112 and 128&lt;br /&gt;
bit boxes.&lt;br /&gt;
&lt;br /&gt;
Unfortunately the FIPS terminology unnecessarily obfuscated the issue. It would&lt;br /&gt;
have been easier to just say in SP800-57 that SHA1 HMAC is 160 bits&lt;br /&gt;
of equivalent security instead of placing it in the :Security Strenght 128&amp;quot; row&lt;br /&gt;
of Table 3. &lt;br /&gt;
&lt;br /&gt;
TLS 1.2 can use SHA1 in two different places. One is the signature algorithms on&lt;br /&gt;
certificates: i.e. the algorithm the CA signs with. The second place is&lt;br /&gt;
temporary key signature (server authentication) as described below.&lt;br /&gt;
&lt;br /&gt;
==== Digital Signatures in TLS ====&lt;br /&gt;
&lt;br /&gt;
There are three places digital signatures are used in TLS.&lt;br /&gt;
&lt;br /&gt;
1. The signatures on certificates.&lt;br /&gt;
&lt;br /&gt;
The certificates' signatures are set by the CA so to comply with new FIPS&lt;br /&gt;
whatever else you do you need a certificate chain that uses SHA256 at least.&lt;br /&gt;
&lt;br /&gt;
2. Server Key Exchange.&lt;br /&gt;
&lt;br /&gt;
The Server Key Exchange message contains a signature in any authenticated PFS&lt;br /&gt;
ciphersuite. The algorithm used depends on the version of TLS.&lt;br /&gt;
&lt;br /&gt;
For TLS 1.1 and 1.0 the algorithm is either a MD5+SHA1 hybrid (RSA) or SHA1&lt;br /&gt;
(DSA, ECDSA). Both of these are prohibited by new FIPS so TLS 1.1 and 1.0&lt;br /&gt;
authenticated PFS ciphersuites are not allowed.&lt;br /&gt;
&lt;br /&gt;
For TLS 1.2 any appropriate algorithm can be used to sign Server Key Exchange&lt;br /&gt;
messages. So PFS authenticated ciphersuites *are* allowed under new FIPS as long&lt;br /&gt;
as SHA1 is not used to sign Server Key Exchange. MD5 is of course a double no-no.&lt;br /&gt;
&lt;br /&gt;
3. Certificate Verify.&lt;br /&gt;
&lt;br /&gt;
The Certificate Verify message is used whenever client authentication is enabled&lt;br /&gt;
for any applicable ciphersuite (not just PFS). The same digest algorithms are&lt;br /&gt;
used as Server Key Exchange.&lt;br /&gt;
&lt;br /&gt;
Therefore new FIPS and TLS 1.1 and 1.0 prohibits client authentication outright&lt;br /&gt;
in *any* ciphersuite.&lt;br /&gt;
&lt;br /&gt;
TLS 1.2 is more flexible and can use any appropriate algorithm so client&lt;br /&gt;
authentication is permitted as long as SHA1 and MD5 are not used.&lt;br /&gt;
&lt;br /&gt;
=== What about versions of OpenSSL prior to 1.0.1f? ===&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;TLSv1.2&amp;quot; ciphersuite designation was added at 1.0.1f. For earlier versions of&lt;br /&gt;
OpenSSL the current equivalent of the cipherstring&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'TLSv1.2:kRSA:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
can be &amp;quot;brute forced&amp;quot; as the unwieldy&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:ADH-AES256-GCM-SHA384:ADH-AES256-SHA256:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:AES256-GCM-SHA384:AES256-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:ADH-AES128-GCM-SHA256:ADH-AES128-SHA256:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:AES128-GCM-SHA256:AES128-SHA256:NULL-SHA256:kRSA:!eNULL:!aNULL'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, as new ciphersuites get added to the 'TLSv1.2' ciphersuite that brute force&lt;br /&gt;
equivalent might end up not being&lt;br /&gt;
equivalent any more.&lt;br /&gt;
&lt;br /&gt;
Since TLSv1.2 only ciphers use SHA256, SHA384 and AES in GCM mode so one string is:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
	'AESGCM:SHA384:SHA256'&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
There are other ways to get the same effect. One is to disable any ciphers which&lt;br /&gt;
use SHA1. So &amp;quot;FIPS:-SHA&amp;quot; is currently equivalent to &amp;quot;FIPS+TLSv1.2&amp;quot;. The use of&lt;br /&gt;
the &amp;quot;-SHA&amp;quot; is necessary here because it only *temporarily* disables SHA1 MACs.&lt;br /&gt;
That means you can do: &amp;quot;FIPS:-SHA:FIPS+kRSA&amp;quot; to add back the RSA key exchange&lt;br /&gt;
ciphersuites that use SHA1. Contrast that with using &amp;quot;!SHA&amp;quot; instead which permanently&lt;br /&gt;
removes SHA1 from the cipherstring.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:FIPS_Warnings_and_Cautions&amp;diff=1465</id>
		<title>Talk:FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:FIPS_Warnings_and_Cautions&amp;diff=1465"/>
		<updated>2014-01-27T23:25:44Z</updated>

		<summary type="html">&lt;p&gt;Stevem: add signature&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Distribution from Snail Mail CD==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You must use a source distribution file from an official snail-mailed CD.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I understood it to be the case that you CAN download it, but if you do you MUST verify the HMAC-SHA-1 digest with an independantly validated FIPS 140-2 product. Getting access to such a product may be very difficult for most people!!&lt;br /&gt;
&lt;br /&gt;
Yes, difficult approximating impossible ... see the discussion in Section 6.6 of the [https://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS Module User Guide]. That discussion summarizes an extensive dialog with the CMVP during which it became clear that no unassailably correct &amp;quot;download&amp;quot; solution was possible (at least for the OpenSSL FIPS Object Module which is held to a different standard than other validations).--[[User:Stevem|Stevem]] 23:25, 27 January 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:FIPS_Warnings_and_Cautions&amp;diff=1464</id>
		<title>Talk:FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:FIPS_Warnings_and_Cautions&amp;diff=1464"/>
		<updated>2014-01-27T23:25:06Z</updated>

		<summary type="html">&lt;p&gt;Stevem: /* Distribution from Snail Mail CD */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Distribution from Snail Mail CD==&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You must use a source distribution file from an official snail-mailed CD.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
I understood it to be the case that you CAN download it, but if you do you MUST verify the HMAC-SHA-1 digest with an independantly validated FIPS 140-2 product. Getting access to such a product may be very difficult for most people!!&lt;br /&gt;
&lt;br /&gt;
Yes, difficult approximating impossible ... see the discussion in Section 6.6 of the [https://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS Module User Guide]. That discussion summarizes an extensive dialog with the CMVP during which it became clear that no unassailably correct &amp;quot;download&amp;quot; solution was possible (at least for the OpenSSL FIPS Object Module which is held to a different standard than other validations).&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1458</id>
		<title>FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1458"/>
		<updated>2014-01-27T20:59:07Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Summary list of major gotchas&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software developers are the primary audience of this wiki, and as such naturally tend to focus on technical issues. When told to look into this thing called a &amp;quot;FIPS 140-2 validated module&amp;quot;, the developer will focus on questions like: How do I build the FIPS module for this platform? How do I code my application to use it?&lt;br /&gt;
&lt;br /&gt;
This wiki will attempt to address those questions, but there is a huge danger there. There is one and only one reason to use the OpenSSL FIPS Object Module, or the associated &amp;quot;FIPS capable&amp;quot; OpenSSL: because a non-technical ''policy'' specifically requires it. There is no advantage to using the FIPS module in any other circumstance; the cryptographic services proviced by the FIPS module are necessarily less secure, less maintainable, and have worse performance than those provided by an OpenSSL release of equal or later vintage. The FIPS module is used only because a specific customer or situation requires it, most commonly the U.S. Government and Department of Defense where procurement policies require that cryptographic implementations be FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
However, there is a lot more to satisfying those policy mandates than just getting the software to compile and run for your specific platform. FIPS 140-2 also imposes a number of what can be called ideological requirements that have no technical or practical basis and are not obvious or comprehensible to the typical software developer. The mere fact that a FIPS module (and/or FIPS capable OpenSSL) is running on a given platform does ''not'' mean that the result can be claimed as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
The most obvious example is the requirement that the source code distribution be obtained from a snail-mailed CD and not downloaded from [http://www.openssl.org/source/ http://www.openssl.org/source/]. That is true even though a cursory check will show both files to be bit-for-bit identical. A software developer thinks of bits as fungible and interchangeable, like electrons in a wire or drops of water in an ocean; a file (string of bits) copied or moved to another location is the same file. In the world of FIPS 140-2 they are not; the file copied from anywhere than the physical CD is not the same even though it is bit-for-bit identical. The world of FIPS 140-2 contains several such concepts that are incomprehensible to the uninitiated, and sometimes the topic of much discussion and disagreement among the test labs and specialists that work in that world extensively.&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to present a warning that simply getting the FIPS module to compile and run for your platform(s) of interest is the least of your problems, as you need to satisfy the ideological requirements. That's the hard part, as those requirements are nowhere articulated clearly.&lt;br /&gt;
&lt;br /&gt;
This page will be linked where appropriate using the following icon: {{FIPS}}&lt;br /&gt;
&lt;br /&gt;
Summary of major pitfalls (some of which can't easily be summarized and all of which need more detailed discussion):&lt;br /&gt;
&lt;br /&gt;
:* You ''must'' use a source distribution file from an [http://opensslfoundation.com/fips/verify.html official snail-mailed CD].&lt;br /&gt;
:* Your target platform must be &amp;quot;close enough&amp;quot; to one of the formally tested platforms.&lt;br /&gt;
:* You cannot modify the contents of the source distribution file ''at all''.&lt;br /&gt;
:* Your build environment must be &amp;quot;close enough&amp;quot; to the one documented for the formal testing.&lt;br /&gt;
&lt;br /&gt;
{{TODO|This is incomplete}}&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Template:FIPS&amp;diff=1449</id>
		<title>Template:FIPS</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Template:FIPS&amp;diff=1449"/>
		<updated>2014-01-27T20:27:20Z</updated>

		<summary type="html">&lt;p&gt;Stevem: New template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | [[File:Skull_and_crossbones.svg|50px|link=FIPS:FIPS Warnings and Cautions]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Important FIPS Warnings &amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;includeonly&amp;gt;[[Category: FIPS]]&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1440</id>
		<title>FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1440"/>
		<updated>2014-01-27T19:27:22Z</updated>

		<summary type="html">&lt;p&gt;Stevem: red in warning logo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software developers are the primary audience of this wiki, and as such naturally tend to focus on technical issues. When told to look into this thing called a &amp;quot;FIPS 140-2 validated module&amp;quot;, the developer will focus on questions like: How do I build the FIPS module for this platform? How do I code my application to use it?&lt;br /&gt;
&lt;br /&gt;
This wiki will attempt to address those questions, but there is a huge danger there. There is one and only one reason to use the OpenSSL FIPS Object Module, or the associated &amp;quot;FIPS capable&amp;quot; OpenSSL: because a non-technical ''policy'' specifically requires it. There is no advantage to using the FIPS module in any other circumstance; the cryptographic services proviced by the FIPS module are necessarily less secure, less maintainable, and have worse performance than those provided by an OpenSSL release of equal or later vintage. The FIPS module is used only because a specific customer or situation requires it, most commonly the U.S. Government and Department of Defense where procurement policies require that cryptographic implementations be FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
However, there is a lot more to satisfying those policy mandates than just getting the software to compile and run for your specific platform. FIPS 140-2 also imposes a number of what can be called ideological requirements that have no technical or practical basis and are not obvious or comprehensible to the typical software developer. The mere fact that a FIPS module (and/or FIPS capable OpenSSL) is running on a given platform does ''not'' mean that the result can be claimed as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
The most obvious example is the requirement that the source code distribution be obtained from a snail-mailed CD and not downloaded from [http://www.openssl.org/source/ http://www.openssl.org/source/]. That is true even though a cursory check will show both files to be bit-for-bit identical. A software developer thinks of bits as fungible and interchangeable, like electrons in a wire or drops of water in an ocean; a file (string of bits) copied or moved to another location is the same file. In the world of FIPS 140-2 they are not; the file copied from anywhere than the physical CD is not the same even though it is bit-for-bit identical. The world of FIPS 140-2 contains several such concepts that are incomprehensible to the uninitiated, and sometimes the topic of much discussion and disagreement among the test labs and specialists that work in that world extensively.&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to present a warning that simply getting the FIPS module to compile and run for your platform(s) of interest is the least of your problems, as you need to satisfy the ideological requirements. That's the hard part, as those requirements are nowhere articulated clearly.&lt;br /&gt;
&lt;br /&gt;
This page will be linked where appropriate using the following icon:&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| bgcolor=&amp;quot;red&amp;quot; | [[File:Skull_and_crossbones.svg|50px|link=FIPS:FIPS Warnings and Cautions]]&lt;br /&gt;
| &amp;lt;span style=&amp;quot;color:red&amp;quot;&amp;gt; Important FIPS Warnings &amp;lt;/span&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[more to come]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1439</id>
		<title>FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1439"/>
		<updated>2014-01-27T19:12:45Z</updated>

		<summary type="html">&lt;p&gt;Stevem: first try at FIPS warnings icon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software developers are the primary audience of this wiki, and as such naturally tend to focus on technical issues. When told to look into this thing called a &amp;quot;FIPS 140-2 validated module&amp;quot;, the developer will focus on questions like: How do I build the FIPS module for this platform? How do I code my application to use it?&lt;br /&gt;
&lt;br /&gt;
This wiki will attempt to address those questions, but there is a huge danger there. There is one and only one reason to use the OpenSSL FIPS Object Module, or the associated &amp;quot;FIPS capable&amp;quot; OpenSSL: because a non-technical ''policy'' specifically requires it. There is no advantage to using the FIPS module in any other circumstance; the cryptographic services proviced by the FIPS module are necessarily less secure, less maintainable, and have worse performance than those provided by an OpenSSL release of equal or later vintage. The FIPS module is used only because a specific customer or situation requires it, most commonly the U.S. Government and Department of Defense where procurement policies require that cryptographic implementations be FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
However, there is a lot more to satisfying those policy mandates than just getting the software to compile and run for your specific platform. FIPS 140-2 also imposes a number of what can be called ideological requirements that have no technical or practical basis and are not obvious or comprehensible to the typical software developer. The mere fact that a FIPS module (and/or FIPS capable OpenSSL) is running on a given platform does ''not'' mean that the result can be claimed as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
The most obvious example is the requirement that the source code distribution be obtained from a snail-mailed CD and not downloaded from [http://www.openssl.org/source/ http://www.openssl.org/source/]. That is true even though a cursory check will show both files to be bit-for-bit identical. A software developer thinks of bits as fungible and interchangeable, like electrons in a wire or drops of water in an ocean; a file (string of bits) copied or moved to another location is the same file. In the world of FIPS 140-2 they are not; the file copied from anywhere than the physical CD is not the same even though it is bit-for-bit identical. The world of FIPS 140-2 contains several such concepts that are incomprehensible to the uninitiated, and sometimes the topic of much discussion and disagreement among the test labs and specialists that work in that world extensively.&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to present a warning that simply getting the FIPS module to compile and run for your platform(s) of interest is the least of your problems, as you need to satisfy the ideological requirements. That's the hard part, as those requirements are nowhere articulated clearly.&lt;br /&gt;
&lt;br /&gt;
This page will be linked where appropriate using the following icon:&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
|[[File:Skull_and_crossbones.svg|50px|link=FIPS:FIPS Warnings and Cautions]]&lt;br /&gt;
|Important FIPS Warnings&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[more to come]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=File:Skull_and_crossbones.svg&amp;diff=1438</id>
		<title>File:Skull and crossbones.svg</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=File:Skull_and_crossbones.svg&amp;diff=1438"/>
		<updated>2014-01-27T19:02:23Z</updated>

		<summary type="html">&lt;p&gt;Stevem: logo for FIPS warnings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;logo for FIPS warnings&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1435</id>
		<title>FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1435"/>
		<updated>2014-01-27T18:44:20Z</updated>

		<summary type="html">&lt;p&gt;Stevem: moved FIPS Warnings and Cautions to FIPS:FIPS Warnings and Cautions:&amp;amp;#32;Create new namespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software developers are the primary audience of this wiki, and as such naturally tend to focus on technical issues. When told to look into this thing called a &amp;quot;FIPS 140-2 validated module&amp;quot;, the developer will focus on questions like: How do I build the FIPS module for this platform? How do I code my application to use it?&lt;br /&gt;
&lt;br /&gt;
This wiki will attempt to address those questions, but there is a huge danger there. There is one and only one reason to use the OpenSSL FIPS Object Module, or the associated &amp;quot;FIPS capable&amp;quot; OpenSSL: because a non-technical ''policy'' specifically requires it. There is no advantage to using the FIPS module in any other circumstance; the cryptographic services proviced by the FIPS module are necessarily less secure, less maintainable, and have worse performance than those provided by an OpenSSL release of equal or later vintage. The FIPS module is used only because a specific customer or situation requires it, most commonly the U.S. Government and Department of Defense where procurement policies require that cryptographic implementations be FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
However, there is a lot more to satisfying those policy mandates than just getting the software to compile and run for your specific platform. FIPS 140-2 also imposes a number of what can be called ideological requirements that have no technical or practical basis and are not obvious or comprehensible to the typical software developer. The mere fact that a FIPS module (and/or FIPS capable OpenSSL) is running on a given platform does ''not'' mean that the result can be claimed as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
The most obvious example is the requirement that the source code distribution be obtained from a snail-mailed CD and not downloaded from [http://www.openssl.org/source/ http://www.openssl.org/source/]. That is true even though a cursory check will show both files to be bit-for-bit identical. A software developer thinks of bits as fungible and interchangeable, like electrons in a wire or drops of water in an ocean; a file (string of bits) copied or moved to another location is the same file. In the world of FIPS 140-2 they are not; the file copied from anywhere than the physical CD is not the same even though it is bit-for-bit identical. The world of FIPS 140-2 contains several such concepts that are incomprehensible to the uninitiated, and sometimes the topic of much discussion and disagreement among the test labs and specialists that work in that world extensively.&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to present a warning that simply getting the FIPS module to compile and run for your platform(s) of interest is the least of your problems, as you need to satisfy the ideological requirements. That's the hard part, as those requirements are nowhere articulated clearly.&lt;br /&gt;
&lt;br /&gt;
[more to come]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1434</id>
		<title>FIPS Warnings and Cautions</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Warnings_and_Cautions&amp;diff=1434"/>
		<updated>2014-01-27T18:16:26Z</updated>

		<summary type="html">&lt;p&gt;Stevem: initial content&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Software developers are the primary audience of this wiki, and as such naturally tend to focus on technical issues. When told to look into this thing called a &amp;quot;FIPS 140-2 validated module&amp;quot;, the developer will focus on questions like: How do I build the FIPS module for this platform? How do I code my application to use it?&lt;br /&gt;
&lt;br /&gt;
This wiki will attempt to address those questions, but there is a huge danger there. There is one and only one reason to use the OpenSSL FIPS Object Module, or the associated &amp;quot;FIPS capable&amp;quot; OpenSSL: because a non-technical ''policy'' specifically requires it. There is no advantage to using the FIPS module in any other circumstance; the cryptographic services proviced by the FIPS module are necessarily less secure, less maintainable, and have worse performance than those provided by an OpenSSL release of equal or later vintage. The FIPS module is used only because a specific customer or situation requires it, most commonly the U.S. Government and Department of Defense where procurement policies require that cryptographic implementations be FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
However, there is a lot more to satisfying those policy mandates than just getting the software to compile and run for your specific platform. FIPS 140-2 also imposes a number of what can be called ideological requirements that have no technical or practical basis and are not obvious or comprehensible to the typical software developer. The mere fact that a FIPS module (and/or FIPS capable OpenSSL) is running on a given platform does ''not'' mean that the result can be claimed as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
The most obvious example is the requirement that the source code distribution be obtained from a snail-mailed CD and not downloaded from [http://www.openssl.org/source/ http://www.openssl.org/source/]. That is true even though a cursory check will show both files to be bit-for-bit identical. A software developer thinks of bits as fungible and interchangeable, like electrons in a wire or drops of water in an ocean; a file (string of bits) copied or moved to another location is the same file. In the world of FIPS 140-2 they are not; the file copied from anywhere than the physical CD is not the same even though it is bit-for-bit identical. The world of FIPS 140-2 contains several such concepts that are incomprehensible to the uninitiated, and sometimes the topic of much discussion and disagreement among the test labs and specialists that work in that world extensively.&lt;br /&gt;
&lt;br /&gt;
The purpose of this page is to present a warning that simply getting the FIPS module to compile and run for your platform(s) of interest is the least of your problems, as you need to satisfy the ideological requirements. That's the hard part, as those requirements are nowhere articulated clearly.&lt;br /&gt;
&lt;br /&gt;
[more to come]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1432</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1432"/>
		<updated>2014-01-27T17:44:07Z</updated>

		<summary type="html">&lt;p&gt;Stevem: /* Usage and Programming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If this is your first visit or to get an account please see the [[Welcome]] page. Your participation and [[Contributions]] are valued.&lt;br /&gt;
&lt;br /&gt;
This wiki is intended as a place for collecting, organizing, and refining useful information about OpenSSL that is currently strewn among multiple locations and formats.&lt;br /&gt;
&lt;br /&gt;
== OpenSSL Quick Links ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Mailing Lists]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
:* Using This Wiki&lt;br /&gt;
:: [http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide], [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list], [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ], [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* [[EVP]]&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* [[STACK API]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
:* [[FIPS Mode]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
:* [[OCB|OCB Licence details]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1431</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1431"/>
		<updated>2014-01-27T17:43:17Z</updated>

		<summary type="html">&lt;p&gt;Stevem: /* Usage and Programming */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If this is your first visit or to get an account please see the [[Welcome]] page. Your participation and [[Contributions]] are valued.&lt;br /&gt;
&lt;br /&gt;
This wiki is intended as a place for collecting, organizing, and refining useful information about OpenSSL that is currently strewn among multiple locations and formats.&lt;br /&gt;
&lt;br /&gt;
== OpenSSL Quick Links ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Mailing Lists]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
:* Using This Wiki&lt;br /&gt;
:: [http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide], [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list], [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ], [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* [[EVP]]&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* [[STACK API]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
:* [FIPS Mode]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
:* [[OCB|OCB Licence details]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1067</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1067"/>
		<updated>2013-05-31T14:16:44Z</updated>

		<summary type="html">&lt;p&gt;Stevem: New look, for better or worse&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If this is your first visit please see the [[Welcome]] page. Your participation and [[Contributions]] are valued.&lt;br /&gt;
&lt;br /&gt;
This wiki is intended as a place for collecting, organizing, and refining useful information about OpenSSL that is currently strewn among multiple locations and formats.&lt;br /&gt;
&lt;br /&gt;
== OpenSSL Quick Links ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
:* Using This Wiki&lt;br /&gt;
:: [http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide], [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list], [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ], [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* EVP&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1066</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1066"/>
		<updated>2013-05-31T13:02:50Z</updated>

		<summary type="html">&lt;p&gt;Stevem: More edits trying for that new look&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content Outline&lt;br /&gt;
&lt;br /&gt;
== OpenSSL Quick Links ==&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
:* Using This Wiki&lt;br /&gt;
:: [http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide], [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list], [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ], [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* EVP&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Miscellanous ==&lt;br /&gt;
For the material that doesn't seem to fit anywhere else&lt;br /&gt;
:* New topics pending categorization (not yet linked elsewhere)&lt;br /&gt;
:* Incomplete or contentious pages under discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I like it - it brings the interesting content right up front. It probably needs to have some top and tail text to describe what this wiki is for, and how to contribute. I added a link to the Elliptic Curve Cryptography page above&lt;br /&gt;
--[[User:Matt|Matt]] 15:02, 30 May 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1065</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1065"/>
		<updated>2013-05-31T12:55:06Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Reference guidelines&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content Outline&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
::* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:: If you wish to edit any of the Manual page content please refer to the [[Guidelines for Manual Page Authors]] page.&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* EVP&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying|EVP Signing and Verifying (including MAC codes)]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellanous ==&lt;br /&gt;
For the material that doesn't seem to fit anywhere else&lt;br /&gt;
:* New topics pending categorization (not yet linked elsewhere)&lt;br /&gt;
:* Incomplete or contentious pages under discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I like it - it brings the interesting content right up front. It probably needs to have some top and tail text to describe what this wiki is for, and how to contribute. I added a link to the Elliptic Curve Cryptography page above&lt;br /&gt;
--[[User:Matt|Matt]] 15:02, 30 May 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1055</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1055"/>
		<updated>2013-05-30T17:59:49Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Update with section headers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Content Outline&lt;br /&gt;
&lt;br /&gt;
== Administrivia ==&lt;br /&gt;
Site guidelines, legal and admininstrative issues.&lt;br /&gt;
:* [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reference ==&lt;br /&gt;
This section contains the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation. The man pages are automatically imported from the OpenSSL git repository and local wiki modifications are submitted as patches.&lt;br /&gt;
:* OpenSSL Manual Pages&lt;br /&gt;
:* [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
:* [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
:* [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Usage and Programming ==&lt;br /&gt;
This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
:* Building from Source&lt;br /&gt;
:: Where to find it, the different versions, how to build and install it.&lt;br /&gt;
:* [[OpenSSL Overview]]&lt;br /&gt;
:* [[Versioning]]&lt;br /&gt;
:* [[Compilation and Installation]]&lt;br /&gt;
:* EVP&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
::* [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
::* [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
::* [[EVP Key and Parameter Generation]]&lt;br /&gt;
::* [[EVP Key Agreement]]&lt;br /&gt;
::* [[EVP Message Digests]]&lt;br /&gt;
::* [[EVP Key Derivation]]&lt;br /&gt;
::* [[EVP Signing and Verifying]]&lt;br /&gt;
:* Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
::* [[Diffie-Hellman parameters]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Concepts and Theory ==&lt;br /&gt;
Discussions of basic cryptographic theory and concepts&lt;br /&gt;
Discussions of common operational issues&lt;br /&gt;
:* [[Base64]]&lt;br /&gt;
:* [[FIPS 140-2]]&lt;br /&gt;
:* [[Random Numbers]]&lt;br /&gt;
:* [[Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
:* [[Elliptic Curve Cryptography]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Internals and Development ==&lt;br /&gt;
This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
:* [[Internals]]&lt;br /&gt;
:* [[Code Quality]]&lt;br /&gt;
:* [[Static and Dynamic Analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Miscellanous ==&lt;br /&gt;
For the material that doesn't seem to fit anywhere else&lt;br /&gt;
:* New topics pending categorization (not yet linked elsewhere)&lt;br /&gt;
:* Incomplete or contentious pages under discussion&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
I like it - it brings the interesting content right up front. It probably needs to have some top and tail text to describe what this wiki is for, and how to contribute. I added a link to the Elliptic Curve Cryptography page above&lt;br /&gt;
--[[User:Matt|Matt]] 15:02, 30 May 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1054</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Main_Page&amp;diff=1054"/>
		<updated>2013-05-30T17:26:18Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Relocate welcome information to separate page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If this is your first visit please see the [[Welcome]] page. Your participation and [[Contributions]] are valued.&lt;br /&gt;
&lt;br /&gt;
This wiki is intended as a place for collecting, organizing, and refining useful information about OpenSSL that is currently strewn among multiple locations and formats.&lt;br /&gt;
&lt;br /&gt;
== Getting Started ==&lt;br /&gt;
&lt;br /&gt;
Getting Started provides quick links to frequent topics and questions.&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL Quick Links ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[OpenSSL Overview]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Compilation and Installation]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Internals]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libcrypto API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[libssl API]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Examples]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[License]] &amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Command Line Utilities]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Related Links]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using This Wiki ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[http://meta.wikimedia.org/wiki/Help:Contents Wiki User's Guide]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
      &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Mailing List]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== OpenSSL Manual Pages ===&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;TABLE border=0&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Manual:Openssl(1)]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Manual:Ssl(3)]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Manual:Crypto(3)]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
     &amp;lt;TR&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Documentation Index]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;[[Image:HTAB.png]][[Image:HTAB.png]]&amp;lt;/TD&amp;gt;&lt;br /&gt;
        &amp;lt;TD&amp;gt;&amp;lt;/TD&amp;gt;&lt;br /&gt;
      &amp;lt;/TR&amp;gt;&lt;br /&gt;
  &amp;lt;/TABLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Usage]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Welcome&amp;diff=1053</id>
		<title>Welcome</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Welcome&amp;diff=1053"/>
		<updated>2013-05-30T17:17:47Z</updated>

		<summary type="html">&lt;p&gt;Stevem: New page, offloaded from main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Welcome to the OpenSSL Wiki'''&lt;br /&gt;
&lt;br /&gt;
This wiki is under construction as we figure out what works and what doesn't. Please see the [[basic rules]] which are summarized here:&lt;br /&gt;
&lt;br /&gt;
This wiki is intended for the OpenSSL community. There are a few minor restrictions so we don't have to fool with capchas and constantly monitor for spam, defacements, and vandalism. The essence of the restrictions are:&lt;br /&gt;
&lt;br /&gt;
* Everyone can read content&lt;br /&gt;
* Approved registered users can add or edit content&lt;br /&gt;
&lt;br /&gt;
We encourage your participation and hope you will add pages and improve existing pages. If you want to add or edit content you should request an account by sending an email to wiki-admin@opensslfoundation.com and give a sentence or two describing your interest in OpenSSL so that we know that you are not a spammer!!&lt;br /&gt;
&lt;br /&gt;
We hope to have multiple administrators. Those who have an interest may request admission to the Administrator or Bureaucrat groups.&lt;br /&gt;
&lt;br /&gt;
We would like the content to be as accessible and usable as possible. All contributions must be made available under the current OpenSSL licence (and any future OpenSSL license) as described on the [[License]] page. We understand existing OpenSSL subject matter from other sources will inevitably appear here. Please respect copyright restrictions, and only place material here if it is already under the OpenSSL license or if you are the copyright holder and release it under the current and future OpenSSL license, or it is currently in the public domain.&lt;br /&gt;
&lt;br /&gt;
It remains to be seen how this will work out. If you think your contributions have been blocked or modified inappropriately it was probably done by accident; please contact Steve Marquess, marquess@opensslfoundation.com, +1 301-874-2571.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1049</id>
		<title>Talk:Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Talk:Main_Page&amp;diff=1049"/>
		<updated>2013-05-30T13:39:04Z</updated>

		<summary type="html">&lt;p&gt;Stevem: First draft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This [[Main Page]] really needs some work. Here are some initial thoughts on an overall organization:&lt;br /&gt;
&lt;br /&gt;
* Administrivia&lt;br /&gt;
: Site guidelines, legal and admininstrative issues.&lt;br /&gt;
** [[Basic rules]], [[Commercial Product Disclaimer]], [[Contributions]], [[Copyright]], [[License]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Reference&lt;br /&gt;
: This section has the automagically generated man pages from the OpenSSL git repository, and similar &amp;quot;man&amp;quot; style reference documentation&lt;br /&gt;
** OpenSSL Manual Pages&lt;br /&gt;
*** [[Manual:Openssl(1)]], [[Manual:Ssl(3)]], [[Manual:Crypto(3)]], [[Documentation Index]]&lt;br /&gt;
** [[API]], [[Libcrypto API]], [[Libssl API]]&lt;br /&gt;
** [[FIPS mode()]], [[FIPS_mode_set()]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Usage (or Programming?)&lt;br /&gt;
: This section has discussions of practical issues in using OpenSSL&lt;br /&gt;
** Building from Source&lt;br /&gt;
** [[OpenSSL Overview]]&lt;br /&gt;
** [[Versioning]]&lt;br /&gt;
** [[Compilation and Installation]]&lt;br /&gt;
** EVP&lt;br /&gt;
:: Programming techniques and example code&lt;br /&gt;
:: Use of EVP is preferred for most applications and circumstances&lt;br /&gt;
*** [[EVP Asymmetric Encryption and Decryption of an Envelope]]&lt;br /&gt;
*** [[EVP Authenticated Encryption and Decryption]]&lt;br /&gt;
*** [[EVP Symmetric Encryption and Decryption]]&lt;br /&gt;
*** [[EVP Key and Parameter Generation]]&lt;br /&gt;
*** [[EVP Key Agreement]]&lt;br /&gt;
*** [[EVP Message Digests]]&lt;br /&gt;
*** [[EVP Key Derivation]]&lt;br /&gt;
*** [[EVP Signing and Verifying]]&lt;br /&gt;
** Low Level APIs&lt;br /&gt;
:: More specialized non-EVP usage&lt;br /&gt;
*** [[Diffie-Hellman parameters]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Concepts and Theory&lt;br /&gt;
: Discussions of basic cryptographic theory and concepts&lt;br /&gt;
: Discussions of common operational issues&lt;br /&gt;
** [[Base64]]&lt;br /&gt;
** [[FIPS 140-2]]&lt;br /&gt;
** [[Random Numbers]]&lt;br /&gt;
** [[Diffie Hellman]]&lt;br /&gt;
** [[Elliptic Curve Diffie Hellman]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Internals and Development&lt;br /&gt;
: This section is for internal details of primary interest to OpenSSL maintainers and power users&lt;br /&gt;
** [[Internals]]&lt;br /&gt;
** [[Code Quality]]&lt;br /&gt;
** [[Static and Dynamic Analysis]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Miscellanous&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1048</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1048"/>
		<updated>2013-05-30T13:03:47Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Intro sentence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section covers some of the common issues and questions with building and using the FIPS 140-2 validated OpenSSL FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
=== FIPS Module Build ===&lt;br /&gt;
&lt;br /&gt;
The FIPS module is the binary file fipscanister.o (fipscanister.lib for Windows) created by the build process.&lt;br /&gt;
(Technically speaking the FIPS module also includes the companion fipscanister.o.sha1,fips_premain.c, and fips_premain.c.sha1 files).&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary FIPS module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this restriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tiniest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform of interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;br /&gt;
&lt;br /&gt;
==== No-Nos ====&lt;br /&gt;
&lt;br /&gt;
Some build environment modifications are known to be disallowed.&lt;br /&gt;
&lt;br /&gt;
===== Code Path =====&lt;br /&gt;
&lt;br /&gt;
The [[code path]] is an important concept. Modifications to the build environment that change the code path of the resulting binary code (e.g. adding/removing assembler optimizations, or changing between 32 and 64 bit code generation) mean that the original formally tested platform is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
==== Grey Areas ====&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Some limited modifications to the build environment are permissible provided that:&lt;br /&gt;
&lt;br /&gt;
* the contents of the official tarball are not modified, at all&lt;br /&gt;
* the canonical build commands are used (''gunzip ...; cd ...; ./config; make'')&lt;br /&gt;
* the code path is the same as for a formally tested platform&lt;br /&gt;
&lt;br /&gt;
=== Application Linking ===&lt;br /&gt;
&lt;br /&gt;
Ok, if you created the FIPS module (the fipscanister.lib and technically also the fipscanister.lib.sha1, fips_premain.c, fips_premain.c.sha1 files) *exactly* as documented in the Security Policy and without *any* modification of the ./openssl-fips-2.0.3/ workarea, *then* you have a FIPS module you can claim as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
Having achieved that the next step is to link that FIPS module into an executable application. Here the restrictions are far less severe; consisting essentially of two responsibilities:&lt;br /&gt;
&lt;br /&gt;
1) Verify the digests of the FIPS module (fipscanister.o, fips_premain.c) against the *.sha1 files.&lt;br /&gt;
&lt;br /&gt;
2) Set the integrity test digest. The fipsld utility does than for native compiled, and an &amp;quot;incore&amp;quot; utility for cross-compilation. Different &amp;quot;incore&amp;quot; utilities are used for various cross-compiled platforms.&lt;br /&gt;
&lt;br /&gt;
Note the CMVP does not (to our knowledge) impose any specific requirement on the &amp;quot;fipsld&amp;quot; or &amp;quot;incore&amp;quot; utilities. While it can be very dangerous to presume an understanding of their thought processes, as they see FIPS 140-2 validation from a very different perspective than the typical software developer/engineer, I believe it goes something like this:&lt;br /&gt;
&lt;br /&gt;
The integrity digest is verified at runtime as part of the mandated POST (Power Up Self Test, a key FIPS 140-2 concept). The code that performs that check is carefully and formally reviewed and tested. That integrity test consists of calculating a HMAC-SHA1 digest of the TXT and RODATA segments of the FIPS module as mapped in live memory, and comparing it against a known value embedded in the module. The &amp;quot;fipsld&amp;quot; or &amp;quot;incore&amp;quot; utility stores that known value. No formal testing is required for that utility because for any given fixed string of bits (i.e. the TXT+RODATA segments) there is only one possible correct value for the HMAC-SHA1 digest. If an untested and defective fipsld/incore utility stores an incorrect value then the POST will fail, therefore only the latter need be formally tested.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1041</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1041"/>
		<updated>2013-05-29T17:58:58Z</updated>

		<summary type="html">&lt;p&gt;Stevem: s#incore#fipsld/incore#g in &amp;quot;Application Linking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FIPS Module Build ===&lt;br /&gt;
&lt;br /&gt;
The FIPS module is the binary file fipscanister.o (fipscanister.lib for Windows)&lt;br /&gt;
&amp;lt;ref&amp;gt;Technically speaking the FIPS module alsi includes the companion fipscanister.o.sha1,fips_premain.c, and fips_premain.c.sha1 files.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
created by the build process. &lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary FIPS module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this reestriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tinest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform if interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;br /&gt;
&lt;br /&gt;
==== No-Nos ====&lt;br /&gt;
&lt;br /&gt;
Some build environment modifications are known to be disallowed.&lt;br /&gt;
&lt;br /&gt;
===== Code Path =====&lt;br /&gt;
&lt;br /&gt;
The [[code path]] is an important concept. Modifications to the build environment that change the code path of the resulting binary code (e.g. adding/removing assembler optimizations, or changing between 32 and 64 bit code generation) mean that the original formally tested platform is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
==== Grey Areas ====&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Some limited modifications to the build environment are permissible provided that:&lt;br /&gt;
&lt;br /&gt;
* the contents of the official tarball are not modified, at all&lt;br /&gt;
* the canonical build commands are used (''gunzip ...; cd ...; ./config; make'')&lt;br /&gt;
* the code path is the same as for a formally tested platform&lt;br /&gt;
&lt;br /&gt;
=== Application Linking ===&lt;br /&gt;
&lt;br /&gt;
Ok, if you created the FIPS module (the fipscanister.lib and technically also the fipscanister.lib.sha1, fips_premain.c, fips_premain.c.sha1 files) *exactly* as documented in the Security Policy and without *any* modification of the ./openssl-fips-2.0.3/ workarea, *then* you have a FIPS module you can claim as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
Having achieved that the next step is to link that FIPS module into an executable application. Here the restrictions are far less severe; consisting essentially of two responsibilities:&lt;br /&gt;
&lt;br /&gt;
1) Verify the digests of the FIPS module (fipscanister.o, fips_premain.c) against the *.sha1 files.&lt;br /&gt;
&lt;br /&gt;
2) Set the integrity test digest. The fipsld utility does than for native compiled, and an &amp;quot;incore&amp;quot; utility for cross-compilation. Different &amp;quot;incore&amp;quot; utilities are used for various cross-compiled platforms.&lt;br /&gt;
&lt;br /&gt;
Note the CMVP does not (to our knowledge) impose any specific requirement on the &amp;quot;fipsld&amp;quot; or &amp;quot;incore&amp;quot; utilities. While it can be very dangerous to presume an understanding of their thought processes, as they see FIPS 140-2 validation from a very different perspective than the typical software developer/engineer, I believe it goes something like this:&lt;br /&gt;
&lt;br /&gt;
The integrity digest is verified at runtime as part of the mandated POST (Power Up Self Test, a key FIPS 140-2 concept). The code that performs that check is carefully and formally reviewed and tested. That integrity test consists of calculating a HMAC-SHA1 digest of the TXT and RODATA segments of the FIPS module as mapped in live memory, and comparing it against a known value embedded in the module. The &amp;quot;fipsld&amp;quot; or &amp;quot;incore&amp;quot; utility stores that known value. No formal testing is required for that utility because for given any fixed string of bits (i.e. the TXT+RODATA segments) there is only one possible correct value for the HMAC-SHA1 digest. If an untested and defective fipsld/incore utility stores an incorrect value then the POST will fail, therefore only the latter need be formally tested.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1040</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1040"/>
		<updated>2013-05-29T17:53:32Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Added Application Linking section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FIPS Module Build ===&lt;br /&gt;
&lt;br /&gt;
The FIPS module is the binary file fipscanister.o (fipscanister.lib for Windows)&lt;br /&gt;
&amp;lt;ref&amp;gt;Technically speaking the FIPS module alsi includes the companion fipscanister.o.sha1,fips_premain.c, and fips_premain.c.sha1 files.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
created by the build process. &lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary FIPS module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this reestriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tinest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform if interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;br /&gt;
&lt;br /&gt;
==== No-Nos ====&lt;br /&gt;
&lt;br /&gt;
Some build environment modifications are known to be disallowed.&lt;br /&gt;
&lt;br /&gt;
===== Code Path =====&lt;br /&gt;
&lt;br /&gt;
The [[code path]] is an important concept. Modifications to the build environment that change the code path of the resulting binary code (e.g. adding/removing assembler optimizations, or changing between 32 and 64 bit code generation) mean that the original formally tested platform is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
==== Grey Areas ====&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Some limited modifications to the build environment are permissible provided that:&lt;br /&gt;
&lt;br /&gt;
* the contents of the official tarball are not modified, at all&lt;br /&gt;
* the canonical build commands are used (''gunzip ...; cd ...; ./config; make'')&lt;br /&gt;
* the code path is the same as for a formally tested platform&lt;br /&gt;
&lt;br /&gt;
=== Application Linking ===&lt;br /&gt;
&lt;br /&gt;
Ok, if you created the FIPS module (the fipscanister.lib and technically also the fipscanister.lib.sha1, fips_premain.c, fips_premain.c.sha1 files) *exactly* as documented in the Security Policy and without *any* modification of the ./openssl-fips-2.0.3/ workarea, *then* you have a FIPS module you can claim as FIPS 140-2 validated.&lt;br /&gt;
&lt;br /&gt;
Having achieved that the next step is to link that FIPS module into an executable application. Here the restrictions are far less severe; consisting essentially of two responsibilities:&lt;br /&gt;
&lt;br /&gt;
1) Verify the digests of the FIPS module (fipscanister.o, fips_premain.c) against the *.sha1 files.&lt;br /&gt;
&lt;br /&gt;
2) Set the integrity test digest. The msincore utility does that in your situation. Different &amp;quot;incore&amp;quot; utilities are used for other cross-compiled platforms.&lt;br /&gt;
&lt;br /&gt;
Note the CMVP does not (to our knowledge) impose any specific requirement on the &amp;quot;incore&amp;quot; utility. While it can be very dangerous to presume an understanding of their thought processes, as they see FIPS 140-2 validation from a very different perspective than the typical software developer/engineer, I believe it goes something like this:&lt;br /&gt;
&lt;br /&gt;
The integrity digest is verified at runtime as part of the mandated POST (Power Up Self Test, a key FIPS 140-2 concept). The code that performs that check is carefully and formally reviewed and tested. That integrity test consists of calculating a HMAC-SHA1 digest of the TXT and RODATA segments of the FIPS module as mapped in live memory, and comparing it against a known value embedded in the module. The &amp;quot;incore&amp;quot; utility (in this case) stores that known value. No formal testing is required for that utility because for given any fixed string of bits (i.e. the TXT+RODATA segments) there is only one possible correct value for the HMAC-SHA1 digest. If an untested and defective incore utility stores an incorrect value then the POST will fail, therefore only the latter need be formally tested.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1039</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1039"/>
		<updated>2013-05-29T17:03:26Z</updated>

		<summary type="html">&lt;p&gt;Stevem: New levels -- &amp;quot;Cite&amp;quot; extension needed (mediawiki-extensions-base)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== FIPS Module Build ===&lt;br /&gt;
&lt;br /&gt;
The FIPS module is the binary file fipscanister.o (fipscanister.lib for Windows)&lt;br /&gt;
&amp;lt;ref&amp;gt;Technically speaking the FIPS module alsi includes the companion fipscanister.o.sha1,fips_premain.c, and fips_premain.c.sha1 files.&lt;br /&gt;
&amp;lt;/ref&amp;gt;&lt;br /&gt;
created by the build process. &lt;br /&gt;
&lt;br /&gt;
The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary FIPS module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this reestriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tinest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform if interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;br /&gt;
&lt;br /&gt;
==== No-Nos ====&lt;br /&gt;
&lt;br /&gt;
Some build environment modifications are known to be disallowed.&lt;br /&gt;
&lt;br /&gt;
===== Code Path =====&lt;br /&gt;
&lt;br /&gt;
The [[code path]] is an important concept. Modifications to the build environment that change the code path of the resulting binary code (e.g. adding/removing assembler optimizations, or changing between 32 and 64 bit code generation) mean that the original formally tested platform is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
==== Grey Areas ====&lt;br /&gt;
&lt;br /&gt;
[TBD]&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Some limited modifications to the build environment are permissible provided that:&lt;br /&gt;
&lt;br /&gt;
* the contents of the official tarball are not modified, at all&lt;br /&gt;
* the canonical build commands are used (''gunzip ...; cd ...; ./config; make'')&lt;br /&gt;
* the code path is the same as for a formally tested platform&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1038</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1038"/>
		<updated>2013-05-29T14:45:39Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Added code path and summary sections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this reestriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tinest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform if interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;br /&gt;
&lt;br /&gt;
==== Code Path ====&lt;br /&gt;
&lt;br /&gt;
The [[code path]] is an important concept. Modifications to the build environment that change the code path of the resulting binary code (e.g. adding/removing assembler optimizations, or changing between 32 and 64 bit code generation) mean that the original formally tested platform is no longer relevant.&lt;br /&gt;
&lt;br /&gt;
==== Conclusion ====&lt;br /&gt;
&lt;br /&gt;
Some limited modifications to the build environment are permissible provided that:&lt;br /&gt;
&lt;br /&gt;
* the contents of the official tarball are not modified, at all&lt;br /&gt;
* the canonical build commands are used (''gunzip ...; cd ...; ./config; make'')&lt;br /&gt;
* the code path is the same as for a formally tested platform&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1037</id>
		<title>FIPS Build Guidelines</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_Build_Guidelines&amp;diff=1037"/>
		<updated>2013-05-29T14:38:23Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Initial draft of new page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140sp/140sp1747.pdf Security Policy] document defines a very specific procedure for creating a binary module from the official source distributions:&lt;br /&gt;
&lt;br /&gt;
 gunzip -c openssl-fips-2.0.''N''.tar.gz | tar xf -&lt;br /&gt;
 cd openssl-fips-2.0.''N''&lt;br /&gt;
 ./config&lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
(for Unix/Linux). The Security Policy and [http://csrc.nist.gov/groups/STM/cmvp/documents/140-1/140val-all.htm#1747 NIST CMVP web site entry] also clearly state that the source distribution (tarball) ''cannot'' be modified, ''at all''. The unofficial [http://www.openssl.org/docs/fips/UserGuide-2.0.pdf FIPS user Guide] also notes this reestriction.&lt;br /&gt;
&lt;br /&gt;
That is worth repeating as the question appears repeatedly: you '''cannot modify the contents of the official tarball'''. The CMVP has imposed that very specific prohibition on all of the OpenSSL FIPS Object Module validations. From the software developer/engineer perspective that prohibition is senseless and furstrating, but it is what it is. You can't modify the tarball, even if the tinest tweak would make the difference between success and failure in building the module for your platform of interest. The natural tendency of a software developer is to identify and implement the simplest and most elegant modification to fix a build or execution. That approach generally won't work when the goal is to claim FIPS 140-2 validated status for the resulting module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Question: Okay, got it. The official canonical build commands given above must be used with an unmodified official tarball. The end result doesn't build a usable module for my platform if interest. Is there ''anything'' I ''can'' do?&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Answer: Maybe.&lt;br /&gt;
&lt;br /&gt;
The CMVP has provided specific guidance on some things that ''must'' be done (e.g. the canonical build commands) and some things that ''cannot'' be done (modification of the tarball contents). However, based on an extensive series of validations of specific platforms (Operational Environments in FIPS-speak) we can discern some general rules for a limited set of techniques that are presumptively permissible.&lt;br /&gt;
&lt;br /&gt;
==== Environment scripts ====&lt;br /&gt;
&lt;br /&gt;
The ./config command determines a build target from various inputs, for example the ''uname'' command for Unix/Linux systems for native compilation. For cross-compilation the target characteristics are determined from environment variables MACHINE, SYSTEM, RELEASE, etc. The use of a shell script that sets the appropriate environment variables is well established. For instance [http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh http://opensslfoundation.com/fips/2.0/platforms/android/setenv-android-4.1.sh]:&lt;br /&gt;
&lt;br /&gt;
 #!/bin/sh&lt;br /&gt;
 # Cross-compile environment for Android on ARMv7&lt;br /&gt;
 #&lt;br /&gt;
 # This script assumes the Android NDK and the OpenSSL FIPS&lt;br /&gt;
 # tarballs have been unpacked in the same directory&lt;br /&gt;
 &lt;br /&gt;
 #android-sdk-linux/platforms Edit this to wherever you unpacked the NDK&lt;br /&gt;
 &lt;br /&gt;
 if [ -d android-ndk-r8b ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8b&lt;br /&gt;
 fi&lt;br /&gt;
 if [ -d android-ndk-r8c ]; then&lt;br /&gt;
   export ANDROID_NDK=$PWD/android-ndk-r8c&lt;br /&gt;
 fi&lt;br /&gt;
 &lt;br /&gt;
 # Edit to reference the incore script (usually in ./util/)&lt;br /&gt;
 export FIPS_SIG=$PWD/openssl-fips-2.0.2/util/incore&lt;br /&gt;
 &lt;br /&gt;
 for i in linux darwin&lt;br /&gt;
 do&lt;br /&gt;
   if [ -d $ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin ]; then&lt;br /&gt;
     PATH=$ANDROID_NDK/toolchains/arm-linux-androideabi-4.6/prebuilt/$i-x86/bin:$PATH&lt;br /&gt;
   fi&lt;br /&gt;
 done&lt;br /&gt;
 &lt;br /&gt;
 export PATH&lt;br /&gt;
 &lt;br /&gt;
 #&lt;br /&gt;
 # Shouldn't need to edit anything past here.&lt;br /&gt;
 #&lt;br /&gt;
 &lt;br /&gt;
 export MACHINE=armv7l&lt;br /&gt;
 export RELEASE=2.6.37&lt;br /&gt;
 export SYSTEM=android&lt;br /&gt;
 export ARCH=arm&lt;br /&gt;
 export CROSS_COMPILE=&amp;quot;arm-linux-androideabi-&amp;quot;&lt;br /&gt;
 export ANDROID_DEV=&amp;quot;$ANDROID_NDK/platforms/android-14/arch-arm/usr&amp;quot;&lt;br /&gt;
 export HOSTCC=gcc&lt;br /&gt;
&lt;br /&gt;
So in general specification of information needed to define the cross-compilation target for the toolkit is premissible, provided that the contents of the original official tarball are not modified.&lt;br /&gt;
&lt;br /&gt;
==== Build Utilities ====&lt;br /&gt;
&lt;br /&gt;
Multiple validated platforms have also been cross-compiled with build utilities supplied and residing outside of the official source distribution workarea, e.g. [http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh http://opensslfoundation.com/fips/2.0/platforms/ios/setenv-ios-11.sh] which contains:&lt;br /&gt;
&lt;br /&gt;
 # FIPS_SIG is the tool for determining the incore fingerprint&lt;br /&gt;
 #export FIPS_SIG=/usr/local/ssl/fingerprint-macho&lt;br /&gt;
 export FIPS_SIG=&amp;quot;`pwd`&amp;quot;/iOS/incore_macho&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;incore&amp;quot; utilties (''incore, incore6x, msincore, incore_macho'') calculate and insert the [[incore digest]] of the executable file linked with the FIPS module, and are not used during creation of the actual FIPS module proper (''fipscanister.o'', ''fipscanister.lib''). Note most openssl-fips-2.0.N.tar.gz tarballs contain one or more incore utilities; these ''cannot be modified'' in place. However, specification of separate utility files residing ''outside'' of the unpacked tarball is permissible.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=1036</id>
		<title>FIPS mode()</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=1036"/>
		<updated>2013-05-29T13:23:47Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Remove font effect artifects&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode - retrieve the current FIPS 140-2 mode of operation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;openssl/crypto.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int FIPS_mode(void);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() is used to determine the FIPS mode of operation by a program utilizing the services of the validated library. The library must have been built with the FIPS Object Module, and the FIPS Object Module must have been acquired, built, and installed in accordance with the Security Policy.&lt;br /&gt;
&lt;br /&gt;
The return value is either 0 to indicate that the FIPS mode of operation is not enabled, or the value used for the ONOFF parameter passed to an earlier successful call to FIPS_mode_set(). Effectively any non-zero value indicates FIPS mode; values other than 1 may have additional significance such as designating an additional restriction to Suite B algorithms.&lt;br /&gt;
&lt;br /&gt;
If the library was built without support of the FIPS Object Module, then the function will return 0 with an error code of CRYPTO_R_FIPS_MODE_NOT_SUPPORTED (0x0f06d065).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''RETURN VALUES'''&lt;br /&gt;
&lt;br /&gt;
A return code of non-zero indicates FIPS mode, 0 indicates non-FIPS mode. When called from a version of OpenSSL that is not &amp;quot;FIPS capable&amp;quot; (capable of utilizing an embedded FIPS Object Module), then FIPS_mode() will always return 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set(3), FIPS_selftest(3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() was formerly included with &amp;lt;openssl/fips.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''HISTORY'''&lt;br /&gt;
&lt;br /&gt;
FIPS support was introduced in version 0.9.7 of OpenSSL.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FIPS 140-2]]&lt;br /&gt;
[[Category:Crypto API]]&lt;br /&gt;
[[Category:C level]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=Command_Line_Utilities&amp;diff=1033</id>
		<title>Command Line Utilities</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=Command_Line_Utilities&amp;diff=1033"/>
		<updated>2013-05-28T20:47:02Z</updated>

		<summary type="html">&lt;p&gt;Stevem: /* rsa / genrsa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.openssl.org/docs/apps/openssl.html OpenSSL site command line tools]&lt;br /&gt;
&lt;br /&gt;
== Commands by purpose ==&lt;br /&gt;
&lt;br /&gt;
Following commands are grouped by purpose using a different grouping than of default openssl documentation / help.&lt;br /&gt;
&lt;br /&gt;
=== Get information about your openssl toolkit ===&lt;br /&gt;
&lt;br /&gt;
When installed on your system openssl binary is entry point for many functions.&lt;br /&gt;
&lt;br /&gt;
* launching openssl without any parameter will enter an interactive mode with an OpenSSL&amp;gt; prompt&lt;br /&gt;
** to quit: quit&lt;br /&gt;
** enter a command it will set a command context in which parameters depends on command.&lt;br /&gt;
&lt;br /&gt;
==== version ====&lt;br /&gt;
&lt;br /&gt;
OpenSSL&amp;gt; version&lt;br /&gt;
OpenSSL 1.0.1e 11 Feb 2013&lt;br /&gt;
&lt;br /&gt;
==== ciphers ====&lt;br /&gt;
&lt;br /&gt;
returns SSL/TLS ciphers supported.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSSL&amp;gt; ciphers&lt;br /&gt;
ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:SRP-DSS-AES-256-CBC-SHA:SRP-RSA-AES-256-CBC-SHA:DHE-DSS-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-DSS-AES256-SHA:DHE-RSA-CAMELLIA256-SHA:DHE-DSS-CAMELLIA256-SHA:ECDH-RSA-AES256-GCM-SHA384:ECDH-ECDSA-AES256-GCM-SHA384:ECDH-RSA-AES256-SHA384:ECDH-ECDSA-AES256-SHA384:ECDH-RSA-AES256-SHA:ECDH-ECDSA-AES256-SHA:AES256-GCM-SHA384:AES256-SHA256:AES256-SHA:CAMELLIA256-SHA:PSK-AES256-CBC-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:SRP-DSS-3DES-EDE-CBC-SHA:SRP-RSA-3DES-EDE-CBC-SHA:EDH-RSA-DES-CBC3-SHA:EDH-DSS-DES-CBC3-SHA:ECDH-RSA-DES-CBC3-SHA:ECDH-ECDSA-DES-CBC3-SHA:DES-CBC3-SHA:PSK-3DES-EDE-CBC-SHA:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:SRP-DSS-AES-128-CBC-SHA:SRP-RSA-AES-128-CBC-SHA:DHE-DSS-AES128-GCM-SHA256:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES128-SHA256:DHE-DSS-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA:DHE-RSA-SEED-SHA:DHE-DSS-SEED-SHA:DHE-RSA-CAMELLIA128-SHA:DHE-DSS-CAMELLIA128-SHA:ECDH-RSA-AES128-GCM-SHA256:ECDH-ECDSA-AES128-GCM-SHA256:ECDH-RSA-AES128-SHA256:ECDH-ECDSA-AES128-SHA256:ECDH-RSA-AES128-SHA:ECDH-ECDSA-AES128-SHA:AES128-GCM-SHA256:AES128-SHA256:AES128-SHA:SEED-SHA:CAMELLIA128-SHA:PSK-AES128-CBC-SHA:ECDHE-RSA-RC4-SHA:ECDHE-ECDSA-RC4-SHA:ECDH-RSA-RC4-SHA:ECDH-ECDSA-RC4-SHA:RC4-SHA:RC4-MD5:PSK-RC4-SHA:EDH-RSA-DES-CBC-SHA:EDH-DSS-DES-CBC-SHA:DES-CBC-SHA:EXP-EDH-RSA-DES-CBC-SHA:EXP-EDH-DSS-DES-CBC-SHA:EXP-DES-CBC-SHA:EXP-RC2-CBC-MD5:EXP-RC4-MD5&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
openssl list-cipher-algorithms&lt;br /&gt;
&lt;br /&gt;
openssl list-public-key-algorithms&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Name: OpenSSL RSA method&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: rsaEncryption&lt;br /&gt;
	PEM string: RSA&lt;br /&gt;
Name: rsa&lt;br /&gt;
	Type: Alias to rsaEncryption&lt;br /&gt;
Name: OpenSSL PKCS#3 DH method&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: dhKeyAgreement&lt;br /&gt;
	PEM string: DH&lt;br /&gt;
Name: dsaWithSHA&lt;br /&gt;
	Type: Alias to dsaEncryption&lt;br /&gt;
Name: dsaEncryption-old&lt;br /&gt;
	Type: Alias to dsaEncryption&lt;br /&gt;
Name: dsaWithSHA1-old&lt;br /&gt;
	Type: Alias to dsaEncryption&lt;br /&gt;
Name: dsaWithSHA1&lt;br /&gt;
	Type: Alias to dsaEncryption&lt;br /&gt;
Name: OpenSSL DSA method&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: dsaEncryption&lt;br /&gt;
	PEM string: DSA&lt;br /&gt;
Name: OpenSSL EC algorithm&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: id-ecPublicKey&lt;br /&gt;
	PEM string: EC&lt;br /&gt;
Name: OpenSSL HMAC method&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: hmac&lt;br /&gt;
	PEM string: HMAC&lt;br /&gt;
Name: OpenSSL CMAC method&lt;br /&gt;
	Type: Builtin Algorithm&lt;br /&gt;
	OID: cmac&lt;br /&gt;
	PEM string: CMAC&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== engine ====&lt;br /&gt;
&lt;br /&gt;
OpenSSL&amp;gt; engine&lt;br /&gt;
(rsax) RSAX engine support&lt;br /&gt;
(dynamic) Dynamic engine loading support&lt;br /&gt;
&lt;br /&gt;
==== speed ====&lt;br /&gt;
&lt;br /&gt;
returns informations of toolkit performance on cryptographic functions computations.&lt;br /&gt;
&lt;br /&gt;
( Ex: on Linux 3.1.0-1-amd64 #1 SMP x86_64 GNU/Linux, HP dv7 i7 4Gb )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Doing md4 for 3s on 16 size blocks: 12430613 md4's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing md5 for 3s on 16 size blocks: 8943943 md5's in 2.99s&lt;br /&gt;
Doing md5 for 3s on 64 size blocks: 6560162 md5's in 3.00s&lt;br /&gt;
Doing md5 for 3s on 256 size blocks: 3674563 md5's in 3.00s&lt;br /&gt;
Doing md5 for 3s on 1024 size blocks: 1325803 md5's in 3.00s&lt;br /&gt;
Doing md5 for 3s on 8192 size blocks: 190271 md5's in 3.00s&lt;br /&gt;
Doing hmac(md5) for 3s on 16 size blocks: 7289025 hmac(md5)'s in 3.00s&lt;br /&gt;
Doing hmac(md5) for 3s on 64 size blocks: 5519732 hmac(md5)'s in 3.00s&lt;br /&gt;
Doing hmac(md5) for 3s on 256 size blocks: 3319123 hmac(md5)'s in 3.00s&lt;br /&gt;
Doing hmac(md5) for 3s on 1024 size blocks: 1275475 hmac(md5)'s in 3.00s&lt;br /&gt;
Doing hmac(md5) for 3s on 8192 size blocks: 187134 hmac(md5)'s in 3.00s&lt;br /&gt;
Doing sha1 for 3s on 16 size blocks: 10089842 sha1's in 2.99s&lt;br /&gt;
Doing sha1 for 3s on 64 size blocks: 7033355 sha1's in 3.00s&lt;br /&gt;
Doing sha1 for 3s on 256 size blocks: 3919372 sha1's in 3.00s&lt;br /&gt;
Doing sha1 for 3s on 1024 size blocks: 1374314 sha1's in 3.00s&lt;br /&gt;
Doing sha1 for 3s on 8192 size blocks: 198808 sha1's in 3.00s&lt;br /&gt;
Doing sha256 for 3s on 16 size blocks: 6462822 sha256's in 3.00s&lt;br /&gt;
Doing sha256 for 3s on 64 size blocks: 3504641 sha256's in 3.00s&lt;br /&gt;
Doing sha256 for 3s on 256 size blocks: 1486771 sha256's in 3.00s&lt;br /&gt;
Doing sha256 for 3s on 1024 size blocks: 440613 sha256's in 3.00s&lt;br /&gt;
Doing sha256 for 3s on 8192 size blocks: 58418 sha256's in 3.00s&lt;br /&gt;
Doing sha512 for 3s on 16 size blocks: 5040453 sha512's in 2.99s&lt;br /&gt;
Doing sha512 for 3s on 64 size blocks: 5089425 sha512's in 3.00s&lt;br /&gt;
Doing sha512 for 3s on 256 size blocks: 1865240 sha512's in 3.00s&lt;br /&gt;
Doing sha512 for 3s on 1024 size blocks: 643708 sha512's in 3.00s&lt;br /&gt;
Doing sha512 for 3s on 8192 size blocks: 90615 sha512's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing whirlpool for 3s on 8192 size blocks: 33204 whirlpool's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing rmd160 for 3s on 8192 size blocks: 66719 rmd160's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing rc4 for 3s on 8192 size blocks: 238972 rc4's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing des cbc for 3s on 8192 size blocks: 19837 des cbc's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing des ede3 for 3s on 8192 size blocks: 7706 des ede3's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing aes-128 cbc for 3s on 8192 size blocks: 35217 aes-128 cbc's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing aes-192 cbc for 3s on 8192 size blocks: 29225 aes-192 cbc's in 3.01s&lt;br /&gt;
...&lt;br /&gt;
Doing aes-256 cbc for 3s on 8192 size blocks: 24414 aes-256 cbc's in 3.00s&lt;br /&gt;
...&lt;br /&gt;
Doing aes-256 ige for 3s on 8192 size blocks: 23331 aes-256 ige's in 2.99s&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic encryption ===&lt;br /&gt;
&lt;br /&gt;
==== Basic file ====&lt;br /&gt;
&lt;br /&gt;
to cipher a file or data to protect and share it protected by a shared key.&lt;br /&gt;
&lt;br /&gt;
symetric cipher :&lt;br /&gt;
[[AES]] [[Blowfish]] [[RC4]] [[3DES]] [[RC2]] [[DES]] [[CAST5]] [[SEED]]&lt;br /&gt;
&lt;br /&gt;
block to stream conversion :&lt;br /&gt;
[[ECB]] [[CBC]] [[OFB]] [[CFB]] [[CTR]] [[XTS]] [[GCM]]&lt;br /&gt;
&lt;br /&gt;
compression :&lt;br /&gt;
[[ZLIB]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Cipher commands (see the `enc' command for more details)&lt;br /&gt;
aes-128-cbc       aes-128-ecb       aes-192-cbc       aes-192-ecb       &lt;br /&gt;
aes-256-cbc       aes-256-ecb       base64            bf                &lt;br /&gt;
bf-cbc            bf-cfb            bf-ecb            bf-ofb            &lt;br /&gt;
camellia-128-cbc  camellia-128-ecb  camellia-192-cbc  camellia-192-ecb  &lt;br /&gt;
camellia-256-cbc  camellia-256-ecb  cast              cast-cbc          &lt;br /&gt;
cast5-cbc         cast5-cfb         cast5-ecb         cast5-ofb         &lt;br /&gt;
des               des-cbc           des-cfb           des-ecb           &lt;br /&gt;
des-ede           des-ede-cbc       des-ede-cfb       des-ede-ofb       &lt;br /&gt;
des-ede3          des-ede3-cbc      des-ede3-cfb      des-ede3-ofb      &lt;br /&gt;
des-ofb           des3              desx              rc2               &lt;br /&gt;
rc2-40-cbc        rc2-64-cbc        rc2-cbc           rc2-cfb           &lt;br /&gt;
rc2-ecb           rc2-ofb           rc4               rc4-40            &lt;br /&gt;
seed              seed-cbc          seed-cfb          seed-ecb          &lt;br /&gt;
seed-ofb          zlib&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl enc --help&lt;br /&gt;
unknown option '--help'&lt;br /&gt;
options are&lt;br /&gt;
-in &amp;lt;file&amp;gt;     input file&lt;br /&gt;
-out &amp;lt;file&amp;gt;    output file&lt;br /&gt;
-pass &amp;lt;arg&amp;gt;    pass phrase source&lt;br /&gt;
-e             encrypt&lt;br /&gt;
-d             decrypt&lt;br /&gt;
-a/-base64     base64 encode/decode, depending on encryption flag&lt;br /&gt;
-k             passphrase is the next argument&lt;br /&gt;
-kfile         passphrase is the first line of the file argument&lt;br /&gt;
-md            the next argument is the md to use to create a key&lt;br /&gt;
                 from a passphrase.  One of md2, md5, sha or sha1&lt;br /&gt;
-S             salt in hex is the next argument&lt;br /&gt;
-K/-iv         key/iv in hex is the next argument&lt;br /&gt;
-[pP]          print the iv/key (then exit if -P)&lt;br /&gt;
-bufsize &amp;lt;n&amp;gt;   buffer size&lt;br /&gt;
-nopad         disable standard block padding&lt;br /&gt;
-engine e      use engine e, possibly a hardware device.&lt;br /&gt;
Cipher Types&lt;br /&gt;
-aes-128-cbc               -aes-128-cfb               -aes-128-cfb1             &lt;br /&gt;
-aes-128-cfb8              -aes-128-ctr               -aes-128-ecb              &lt;br /&gt;
-aes-128-gcm               -aes-128-ofb               -aes-128-xts              &lt;br /&gt;
-aes-192-cbc               -aes-192-cfb               -aes-192-cfb1             &lt;br /&gt;
-aes-192-cfb8              -aes-192-ctr               -aes-192-ecb              &lt;br /&gt;
-aes-192-gcm               -aes-192-ofb               -aes-256-cbc              &lt;br /&gt;
-aes-256-cfb               -aes-256-cfb1              -aes-256-cfb8             &lt;br /&gt;
-aes-256-ctr               -aes-256-ecb               -aes-256-gcm              &lt;br /&gt;
-aes-256-ofb               -aes-256-xts               -aes128                   &lt;br /&gt;
-aes192                    -aes256                    -bf                       &lt;br /&gt;
-bf-cbc                    -bf-cfb                    -bf-ecb                   &lt;br /&gt;
-bf-ofb                    -blowfish                  -camellia-128-cbc         &lt;br /&gt;
-camellia-128-cfb          -camellia-128-cfb1         -camellia-128-cfb8        &lt;br /&gt;
-camellia-128-ecb          -camellia-128-ofb          -camellia-192-cbc         &lt;br /&gt;
-camellia-192-cfb          -camellia-192-cfb1         -camellia-192-cfb8        &lt;br /&gt;
-camellia-192-ecb          -camellia-192-ofb          -camellia-256-cbc         &lt;br /&gt;
-camellia-256-cfb          -camellia-256-cfb1         -camellia-256-cfb8        &lt;br /&gt;
-camellia-256-ecb          -camellia-256-ofb          -camellia128              &lt;br /&gt;
-camellia192               -camellia256               -cast                     &lt;br /&gt;
-cast-cbc                  -cast5-cbc                 -cast5-cfb                &lt;br /&gt;
-cast5-ecb                 -cast5-ofb                 -des                      &lt;br /&gt;
-des-cbc                   -des-cfb                   -des-cfb1                 &lt;br /&gt;
-des-cfb8                  -des-ecb                   -des-ede                  &lt;br /&gt;
-des-ede-cbc               -des-ede-cfb               -des-ede-ofb              &lt;br /&gt;
-des-ede3                  -des-ede3-cbc              -des-ede3-cfb             &lt;br /&gt;
-des-ede3-cfb1             -des-ede3-cfb8             -des-ede3-ofb             &lt;br /&gt;
-des-ofb                   -des3                      -desx                     &lt;br /&gt;
-desx-cbc                  -id-aes128-GCM             -id-aes192-GCM            &lt;br /&gt;
-id-aes256-GCM             -rc2                       -rc2-40-cbc               &lt;br /&gt;
-rc2-64-cbc                -rc2-cbc                   -rc2-cfb                  &lt;br /&gt;
-rc2-ecb                   -rc2-ofb                   -rc4                      &lt;br /&gt;
-rc4-40                    -rc4-hmac-md5              -seed                     &lt;br /&gt;
-seed-cbc                  -seed-cfb                  -seed-ecb                 &lt;br /&gt;
-seed-ofb  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Mail / SMIME ====&lt;br /&gt;
&lt;br /&gt;
===== smime v2 pkcs7 1.5 =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl smime --help&lt;br /&gt;
Usage smime [options] cert.pem ...&lt;br /&gt;
where options are&lt;br /&gt;
-encrypt       encrypt message&lt;br /&gt;
-decrypt       decrypt encrypted message&lt;br /&gt;
-sign          sign message&lt;br /&gt;
-verify        verify signed message&lt;br /&gt;
-pk7out        output PKCS#7 structure&lt;br /&gt;
-des3          encrypt with triple DES&lt;br /&gt;
-des           encrypt with DES&lt;br /&gt;
-seed          encrypt with SEED&lt;br /&gt;
-rc2-40        encrypt with RC2-40 (default)&lt;br /&gt;
-rc2-64        encrypt with RC2-64&lt;br /&gt;
-rc2-128       encrypt with RC2-128&lt;br /&gt;
-aes128, -aes192, -aes256&lt;br /&gt;
               encrypt PEM output with cbc aes&lt;br /&gt;
-camellia128, -camellia192, -camellia256&lt;br /&gt;
               encrypt PEM output with cbc camellia&lt;br /&gt;
-nointern      don't search certificates in message for signer&lt;br /&gt;
-nosigs        don't verify message signature&lt;br /&gt;
-noverify      don't verify signers certificate&lt;br /&gt;
-nocerts       don't include signers certificate when signing&lt;br /&gt;
-nodetach      use opaque signing&lt;br /&gt;
-noattr        don't include any signed attributes&lt;br /&gt;
-binary        don't translate message to text&lt;br /&gt;
-certfile file other certificates file&lt;br /&gt;
-signer file   signer certificate file&lt;br /&gt;
-recip  file   recipient certificate file for decryption&lt;br /&gt;
-in file       input file&lt;br /&gt;
-inform arg    input format SMIME (default), PEM or DER&lt;br /&gt;
-inkey file    input private key (if not signer or recipient)&lt;br /&gt;
-keyform arg   input private key format (PEM or ENGINE)&lt;br /&gt;
-out file      output file&lt;br /&gt;
-outform arg   output format SMIME (default), PEM or DER&lt;br /&gt;
-content file  supply or override content for detached signature&lt;br /&gt;
-to addr       to address&lt;br /&gt;
-from ad       from address&lt;br /&gt;
-subject s     subject&lt;br /&gt;
-text          include or delete text MIME headers&lt;br /&gt;
-CApath dir    trusted certificates directory&lt;br /&gt;
-CAfile file   trusted certificates file&lt;br /&gt;
-crl_check     check revocation status of signer's certificate using CRLs&lt;br /&gt;
-crl_check_all check revocation status of signer's certificate chain using CRLs&lt;br /&gt;
-engine e      use engine e, possibly a hardware device.&lt;br /&gt;
-passin arg    input file pass phrase source&lt;br /&gt;
-rand file:file:...&lt;br /&gt;
               load the file (or the files in the directory) into&lt;br /&gt;
               the random number generator&lt;br /&gt;
cert.pem       recipient certificate(s) for encryption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== smime v3 cms =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl cms --help&lt;br /&gt;
Usage cms [options] cert.pem ...&lt;br /&gt;
where options are&lt;br /&gt;
-encrypt       encrypt message&lt;br /&gt;
-decrypt       decrypt encrypted message&lt;br /&gt;
-sign          sign message&lt;br /&gt;
-verify        verify signed message&lt;br /&gt;
-cmsout        output CMS structure&lt;br /&gt;
-des3          encrypt with triple DES&lt;br /&gt;
-des           encrypt with DES&lt;br /&gt;
-seed          encrypt with SEED&lt;br /&gt;
-rc2-40        encrypt with RC2-40 (default)&lt;br /&gt;
-rc2-64        encrypt with RC2-64&lt;br /&gt;
-rc2-128       encrypt with RC2-128&lt;br /&gt;
-aes128, -aes192, -aes256&lt;br /&gt;
               encrypt PEM output with cbc aes&lt;br /&gt;
-camellia128, -camellia192, -camellia256&lt;br /&gt;
               encrypt PEM output with cbc camellia&lt;br /&gt;
-nointern      don't search certificates in message for signer&lt;br /&gt;
-nosigs        don't verify message signature&lt;br /&gt;
-noverify      don't verify signers certificate&lt;br /&gt;
-nocerts       don't include signers certificate when signing&lt;br /&gt;
-nodetach      use opaque signing&lt;br /&gt;
-noattr        don't include any signed attributes&lt;br /&gt;
-binary        don't translate message to text&lt;br /&gt;
-certfile file other certificates file&lt;br /&gt;
-certsout file certificate output file&lt;br /&gt;
-signer file   signer certificate file&lt;br /&gt;
-recip  file   recipient certificate file for decryption&lt;br /&gt;
-keyid         use subject key identifier&lt;br /&gt;
-in file       input file&lt;br /&gt;
-inform arg    input format SMIME (default), PEM or DER&lt;br /&gt;
-inkey file    input private key (if not signer or recipient)&lt;br /&gt;
-keyform arg   input private key format (PEM or ENGINE)&lt;br /&gt;
-out file      output file&lt;br /&gt;
-outform arg   output format SMIME (default), PEM or DER&lt;br /&gt;
-content file  supply or override content for detached signature&lt;br /&gt;
-to addr       to address&lt;br /&gt;
-from ad       from address&lt;br /&gt;
-subject s     subject&lt;br /&gt;
-text          include or delete text MIME headers&lt;br /&gt;
-CApath dir    trusted certificates directory&lt;br /&gt;
-CAfile file   trusted certificates file&lt;br /&gt;
-crl_check     check revocation status of signer's certificate using CRLs&lt;br /&gt;
-crl_check_all check revocation status of signer's certificate chain using CRLs&lt;br /&gt;
-engine e      use engine e, possibly a hardware device.&lt;br /&gt;
-passin arg    input file pass phrase source&lt;br /&gt;
-rand file:file:...&lt;br /&gt;
               load the file (or the files in the directory) into&lt;br /&gt;
               the random number generator&lt;br /&gt;
cert.pem       recipient certificate(s) for encryption&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Create / Handle Public Key Certificates ===&lt;br /&gt;
&lt;br /&gt;
This requires you have a knowledge of what PKI is ( Certificate Authorities, Certificate Request, Certificate, Public Key, Private Key )&lt;br /&gt;
&lt;br /&gt;
Classical use case is to obtain a valid Certificate for a Secured Web site ( https protocol ).&lt;br /&gt;
First you create a Private Key ( will be created together with Public key ).&lt;br /&gt;
Then create a Certificate Request for that private key with some informations for purpose of future Certificate.&lt;br /&gt;
Then send that Certificate Request to a Certificate Authority ( CA ) that will issue a Certificate that CA signed. For well known CA you need to pay. &lt;br /&gt;
Up to you to install your Private key together with the received Certificate on your system. &lt;br /&gt;
&lt;br /&gt;
It exists graphical front-end to operate openssl wihtin a GUI : [http://xca.sourceforge.net/ XCA]&lt;br /&gt;
&lt;br /&gt;
==== Key Generation ====&lt;br /&gt;
&lt;br /&gt;
===== rsa / genrsa =====&lt;br /&gt;
&lt;br /&gt;
RSA is the most common type of Public/Private Key.&lt;br /&gt;
Private Key part should never be disclosed while public key part is ... public.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl genrsa --help&lt;br /&gt;
usage: genrsa [args] [numbits]&lt;br /&gt;
 -des            encrypt the generated key with DES in cbc mode&lt;br /&gt;
 -des3           encrypt the generated key with DES in ede cbc mode (168 bit key)&lt;br /&gt;
 -seed&lt;br /&gt;
                 encrypt PEM output with cbc seed&lt;br /&gt;
 -aes128, -aes192, -aes256&lt;br /&gt;
                 encrypt PEM output with cbc aes&lt;br /&gt;
 -camellia128, -camellia192, -camellia256&lt;br /&gt;
                 encrypt PEM output with cbc camellia&lt;br /&gt;
 -out file       output the key to 'file&lt;br /&gt;
 -passout arg    output file pass phrase source&lt;br /&gt;
 -f4             use F4 (0x10001) for the E value&lt;br /&gt;
 -3              use 3 for the E value&lt;br /&gt;
 -engine e       use engine e, possibly a hardware device.&lt;br /&gt;
 -rand file:file:...&lt;br /&gt;
                 load the file (or the files in the directory) into&lt;br /&gt;
                 the random number generator&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
rsa help&lt;br /&gt;
unknown option help&lt;br /&gt;
rsa [options] &amp;lt;infile &amp;gt;outfile&lt;br /&gt;
where options are&lt;br /&gt;
 -inform arg     input format - one of DER NET PEM&lt;br /&gt;
 -outform arg    output format - one of DER NET PEM&lt;br /&gt;
 -in arg         input file&lt;br /&gt;
 -sgckey         Use IIS SGC key format&lt;br /&gt;
 -passin arg     input file pass phrase source&lt;br /&gt;
 -out arg        output file&lt;br /&gt;
 -passout arg    output file pass phrase source&lt;br /&gt;
 -des            encrypt PEM output with cbc des&lt;br /&gt;
 -des3           encrypt PEM output with ede cbc des using 168 bit key&lt;br /&gt;
 -seed           encrypt PEM output with cbc seed&lt;br /&gt;
 -aes128, -aes192, -aes256&lt;br /&gt;
                 encrypt PEM output with cbc aes&lt;br /&gt;
 -camellia128, -camellia192, -camellia256&lt;br /&gt;
                 encrypt PEM output with cbc camellia&lt;br /&gt;
 -text           print the key in text&lt;br /&gt;
 -noout          don't print key out&lt;br /&gt;
 -modulus        print the RSA key modulus&lt;br /&gt;
 -check          verify key consistency&lt;br /&gt;
 -pubin          expect a public key in input file&lt;br /&gt;
 -pubout         output a public key&lt;br /&gt;
 -engine e       use engine e, possibly a hardware device.&lt;br /&gt;
error in rsa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== dsa / gendsa=====&lt;br /&gt;
&lt;br /&gt;
dsa is a less common Public/Private key scheme, but can be seen anyway, so ...&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl gendsa&lt;br /&gt;
usage: gendsa [args] dsaparam-file&lt;br /&gt;
 -out file - output the key to 'file'&lt;br /&gt;
 -des      - encrypt the generated key with DES in cbc mode&lt;br /&gt;
 -des3     - encrypt the generated key with DES in ede cbc mode (168 bit key)&lt;br /&gt;
 -seed&lt;br /&gt;
                 encrypt PEM output with cbc seed&lt;br /&gt;
 -aes128, -aes192, -aes256&lt;br /&gt;
                 encrypt PEM output with cbc aes&lt;br /&gt;
 -camellia128, -camellia192, -camellia256&lt;br /&gt;
                 encrypt PEM output with cbc camellia&lt;br /&gt;
 -engine e - use engine e, possibly a hardware device.&lt;br /&gt;
 -rand file:file:...&lt;br /&gt;
           - load the file (or the files in the directory) into&lt;br /&gt;
             the random number generator&lt;br /&gt;
 dsaparam-file&lt;br /&gt;
           - a DSA parameter file as generated by the dsaparam command&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OpenSSL&amp;gt; dsa help&lt;br /&gt;
unknown option help&lt;br /&gt;
dsa [options] &amp;lt;infile &amp;gt;outfile&lt;br /&gt;
where options are&lt;br /&gt;
 -inform arg     input format - DER or PEM&lt;br /&gt;
 -outform arg    output format - DER or PEM&lt;br /&gt;
 -in arg         input file&lt;br /&gt;
 -passin arg     input file pass phrase source&lt;br /&gt;
 -out arg        output file&lt;br /&gt;
 -passout arg    output file pass phrase source&lt;br /&gt;
 -engine e       use engine e, possibly a hardware device.&lt;br /&gt;
 -des            encrypt PEM output with cbc des&lt;br /&gt;
 -des3           encrypt PEM output with ede cbc des using 168 bit key&lt;br /&gt;
 -aes128, -aes192, -aes256&lt;br /&gt;
                 encrypt PEM output with cbc aes&lt;br /&gt;
 -camellia128, -camellia192, -camellia256&lt;br /&gt;
                 encrypt PEM output with cbc camellia&lt;br /&gt;
 -seed           encrypt PEM output with cbc seed&lt;br /&gt;
 -text           print the key in text&lt;br /&gt;
 -noout          don't print key out&lt;br /&gt;
 -modulus        print the DSA public value&lt;br /&gt;
error in dsa&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Elliptic Curves / ec ecparam =====&lt;br /&gt;
&lt;br /&gt;
[[Elliptic_Curve_Cryptography]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl ecparam --help&lt;br /&gt;
unknown option --help&lt;br /&gt;
ecparam [options] &amp;lt;infile &amp;gt;outfile&lt;br /&gt;
where options are&lt;br /&gt;
 -inform arg       input format - default PEM (DER or PEM)&lt;br /&gt;
 -outform arg      output format - default PEM&lt;br /&gt;
 -in  arg          input file  - default stdin&lt;br /&gt;
 -out arg          output file - default stdout&lt;br /&gt;
 -noout            do not print the ec parameter&lt;br /&gt;
 -text             print the ec parameters in text form&lt;br /&gt;
 -check            validate the ec parameters&lt;br /&gt;
 -C                print a 'C' function creating the parameters&lt;br /&gt;
 -name arg         use the ec parameters with 'short name' name&lt;br /&gt;
 -list_curves      prints a list of all currently available curve 'short names'&lt;br /&gt;
 -conv_form arg    specifies the point conversion form &lt;br /&gt;
                   possible values: compressed&lt;br /&gt;
                                    uncompressed (default)&lt;br /&gt;
                                    hybrid&lt;br /&gt;
 -param_enc arg    specifies the way the ec parameters are encoded&lt;br /&gt;
                   in the asn1 der encoding&lt;br /&gt;
                   possible values: named_curve (default)&lt;br /&gt;
                                    explicit&lt;br /&gt;
 -no_seed          if 'explicit' parameters are chosen do not use the seed&lt;br /&gt;
 -genkey           generate ec key&lt;br /&gt;
 -rand file        files to use for random number input&lt;br /&gt;
 -engine e         use engine e, possibly a hardware device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ec [options] &amp;lt;infile &amp;gt;outfile&lt;br /&gt;
where options are&lt;br /&gt;
 -inform arg     input format - DER or PEM&lt;br /&gt;
 -outform arg    output format - DER or PEM&lt;br /&gt;
 -in arg         input file&lt;br /&gt;
 -passin arg     input file pass phrase source&lt;br /&gt;
 -out arg        output file&lt;br /&gt;
 -passout arg    output file pass phrase source&lt;br /&gt;
 -engine e       use engine e, possibly a hardware device.&lt;br /&gt;
 -des            encrypt PEM output, instead of 'des' every other &lt;br /&gt;
                 cipher supported by OpenSSL can be used&lt;br /&gt;
 -text           print the key&lt;br /&gt;
 -noout          don't print key out&lt;br /&gt;
 -param_out      print the elliptic curve parameters&lt;br /&gt;
 -conv_form arg  specifies the point conversion form &lt;br /&gt;
                 possible values: compressed&lt;br /&gt;
                                  uncompressed (default)&lt;br /&gt;
                                   hybrid&lt;br /&gt;
 -param_enc arg  specifies the way the ec parameters are encoded&lt;br /&gt;
                 in the asn1 der encoding&lt;br /&gt;
                 possible values: named_curve (default)&lt;br /&gt;
                                  explicit&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Certificate Authority / ca ====&lt;br /&gt;
&lt;br /&gt;
When you want to act as a Certificate Authority.&lt;br /&gt;
&lt;br /&gt;
OpenSSL&amp;gt; ca&lt;br /&gt;
Using configuration from /usr/lib/ssl/openssl.cnf&lt;br /&gt;
Error opening CA private key ./demoCA/private/cakey.pem&lt;br /&gt;
140492277311144:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('./demoCA/private/cakey.pem','r')&lt;br /&gt;
140492277311144:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:&lt;br /&gt;
unable to load CA private key&lt;br /&gt;
error in ca&lt;br /&gt;
&lt;br /&gt;
By default you don't have ca created...&lt;br /&gt;
&lt;br /&gt;
==== Certificate Request / pkcs10 / req ====&lt;br /&gt;
&lt;br /&gt;
OpenSSL&amp;gt; req ?&lt;br /&gt;
unknown option ?&lt;br /&gt;
req [options] &amp;lt;infile &amp;gt;outfile&lt;br /&gt;
where options  are&lt;br /&gt;
 -inform arg    input format - DER or PEM&lt;br /&gt;
 -outform arg   output format - DER or PEM&lt;br /&gt;
 -in arg        input file&lt;br /&gt;
 -out arg       output file&lt;br /&gt;
 -text          text form of request&lt;br /&gt;
 -pubkey        output public key&lt;br /&gt;
 -noout         do not output REQ&lt;br /&gt;
 -verify        verify signature on REQ&lt;br /&gt;
 -modulus       RSA modulus&lt;br /&gt;
 -nodes         don't encrypt the output key&lt;br /&gt;
 -engine e      use engine e, possibly a hardware device&lt;br /&gt;
 -subject       output the request's subject&lt;br /&gt;
 -passin        private key password source&lt;br /&gt;
 -key file      use the private key contained in file&lt;br /&gt;
 -keyform arg   key file format&lt;br /&gt;
 -keyout arg    file to send the key to&lt;br /&gt;
 -rand file:file:...&lt;br /&gt;
                load the file (or the files in the directory) into&lt;br /&gt;
                the random number generator&lt;br /&gt;
 -newkey rsa:bits generate a new RSA key of 'bits' in size&lt;br /&gt;
 -newkey dsa:file generate a new DSA key, parameters taken from CA in 'file'&lt;br /&gt;
 -newkey ec:file generate a new EC key, parameters taken from CA in 'file'&lt;br /&gt;
 -[digest]      Digest to sign with (md5, sha1, md2, mdc2, md4)&lt;br /&gt;
 -config file   request template file.&lt;br /&gt;
 -subj arg      set or modify request subject&lt;br /&gt;
 -multivalue-rdn enable support for multivalued RDNs&lt;br /&gt;
 -new           new request.&lt;br /&gt;
 -batch         do not ask anything during request generation&lt;br /&gt;
 -x509          output a x509 structure instead of a cert. req.&lt;br /&gt;
 -days          number of days a certificate generated by -x509 is valid for.&lt;br /&gt;
 -set_serial    serial number to use for a certificate generated by -x509.&lt;br /&gt;
 -newhdr        output &amp;quot;NEW&amp;quot; in the header lines&lt;br /&gt;
 -asn1-kludge   Output the 'request' in a format that is wrong but some CA's&lt;br /&gt;
                have been reported as requiring&lt;br /&gt;
 -extensions .. specify certificate extension section (override value in config file)&lt;br /&gt;
 -reqexts ..    specify request extension section (override value in config file)&lt;br /&gt;
 -utf8          input characters are UTF8 (default ASCII)&lt;br /&gt;
 -nameopt arg    - various certificate name options&lt;br /&gt;
 -reqopt arg    - various request text options&lt;br /&gt;
&lt;br /&gt;
error in req&lt;br /&gt;
&lt;br /&gt;
==== Certificates AKA x509  ====&lt;br /&gt;
&lt;br /&gt;
x509 command allows you to display content of a x509 certificate and to convert it from/to [[PEM]], [[NET]] or [[DER]] formats.&lt;br /&gt;
&lt;br /&gt;
OpenSSL&amp;gt; x509 help&lt;br /&gt;
unknown option help&lt;br /&gt;
usage: x509 args&lt;br /&gt;
 -inform arg     - input format - default PEM (one of DER, NET or PEM)&lt;br /&gt;
 -outform arg    - output format - default PEM (one of DER, NET or PEM)&lt;br /&gt;
 -keyform arg    - private key format - default PEM&lt;br /&gt;
 -CAform arg     - CA format - default PEM&lt;br /&gt;
 -CAkeyform arg  - CA key format - default PEM&lt;br /&gt;
 -in arg         - input file - default stdin&lt;br /&gt;
 -out arg        - output file - default stdout&lt;br /&gt;
 -passin arg     - private key password source&lt;br /&gt;
 -serial         - print serial number value&lt;br /&gt;
 -subject_hash   - print subject hash value&lt;br /&gt;
 -subject_hash_old   - print old-style (MD5) subject hash value&lt;br /&gt;
 -issuer_hash    - print issuer hash value&lt;br /&gt;
 -issuer_hash_old    - print old-style (MD5) issuer hash value&lt;br /&gt;
 -hash           - synonym for -subject_hash&lt;br /&gt;
 -subject        - print subject DN&lt;br /&gt;
 -issuer         - print issuer DN&lt;br /&gt;
 -email          - print email address(es)&lt;br /&gt;
 -startdate      - notBefore field&lt;br /&gt;
 -enddate        - notAfter field&lt;br /&gt;
 -purpose        - print out certificate purposes&lt;br /&gt;
 -dates          - both Before and After dates&lt;br /&gt;
 -modulus        - print the RSA key modulus&lt;br /&gt;
 -pubkey         - output the public key&lt;br /&gt;
 -fingerprint    - print the certificate fingerprint&lt;br /&gt;
 -alias          - output certificate alias&lt;br /&gt;
 -noout          - no certificate output&lt;br /&gt;
 -ocspid         - print OCSP hash values for the subject name and public key&lt;br /&gt;
 -ocsp_uri       - print OCSP Responder URL(s)&lt;br /&gt;
 -trustout       - output a &amp;quot;trusted&amp;quot; certificate&lt;br /&gt;
 -clrtrust       - clear all trusted purposes&lt;br /&gt;
 -clrreject      - clear all rejected purposes&lt;br /&gt;
 -addtrust arg   - trust certificate for a given purpose&lt;br /&gt;
 -addreject arg  - reject certificate for a given purpose&lt;br /&gt;
 -setalias arg   - set certificate alias&lt;br /&gt;
 -days arg       - How long till expiry of a signed certificate - def 30 days&lt;br /&gt;
 -checkend arg   - check whether the cert expires in the next arg seconds&lt;br /&gt;
                   exit 1 if so, 0 if not&lt;br /&gt;
 -signkey arg    - self sign cert with arg&lt;br /&gt;
 -x509toreq      - output a certification request object&lt;br /&gt;
 -req            - input is a certificate request, sign and output.&lt;br /&gt;
 -CA arg         - set the CA certificate, must be PEM format.&lt;br /&gt;
 -CAkey arg      - set the CA key, must be PEM format&lt;br /&gt;
                   missing, it is assumed to be in the CA file.&lt;br /&gt;
 -CAcreateserial - create serial number file if it does not exist&lt;br /&gt;
 -CAserial arg   - serial file&lt;br /&gt;
 -set_serial     - serial number to use&lt;br /&gt;
 -text           - print the certificate in text form&lt;br /&gt;
 -C              - print out C code forms&lt;br /&gt;
 -md2/-md5/-sha1/-mdc2 - digest to use&lt;br /&gt;
 -extfile        - configuration file with X509V3 extensions to add&lt;br /&gt;
 -extensions     - section from config file with X509V3 extensions to add&lt;br /&gt;
 -clrext         - delete extensions before signing and input certificate&lt;br /&gt;
 -nameopt arg    - various certificate name options&lt;br /&gt;
 -engine e       - use engine e, possibly a hardware device.&lt;br /&gt;
 -certopt arg    - various certificate text options&lt;br /&gt;
&lt;br /&gt;
==== Client Certificates AKA pkcs12 ====&lt;br /&gt;
&lt;br /&gt;
Client Certificate is a language abuse, but anyway it is kind of file you need to install on your system when SSL/TLS server require Client Authentication.&lt;br /&gt;
Those kind of certificates credentials are known with .'''pkcs12''' or .'''pfx''' file extension.&lt;br /&gt;
They contains a x509 Certificate and the public/private key of client. Those files are then very sensible to handle with same security as a private key.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Usage: pkcs12 [options]&lt;br /&gt;
where options are&lt;br /&gt;
-export       output PKCS12 file&lt;br /&gt;
-chain        add certificate chain&lt;br /&gt;
-inkey file   private key if not infile&lt;br /&gt;
-certfile f   add all certs in f&lt;br /&gt;
-CApath arg   - PEM format directory of CA's&lt;br /&gt;
-CAfile arg   - PEM format file of CA's&lt;br /&gt;
-name &amp;quot;name&amp;quot;  use name as friendly name&lt;br /&gt;
-caname &amp;quot;nm&amp;quot;  use nm as CA friendly name (can be used more than once).&lt;br /&gt;
-in  infile   input filename&lt;br /&gt;
-out outfile  output filename&lt;br /&gt;
-noout        don't output anything, just verify.&lt;br /&gt;
-nomacver     don't verify MAC.&lt;br /&gt;
-nocerts      don't output certificates.&lt;br /&gt;
-clcerts      only output client certificates.&lt;br /&gt;
-cacerts      only output CA certificates.&lt;br /&gt;
-nokeys       don't output private keys.&lt;br /&gt;
-info         give info about PKCS#12 structure.&lt;br /&gt;
-des          encrypt private keys with DES&lt;br /&gt;
-des3         encrypt private keys with triple DES (default)&lt;br /&gt;
-seed         encrypt private keys with seed&lt;br /&gt;
-aes128, -aes192, -aes256&lt;br /&gt;
              encrypt PEM output with cbc aes&lt;br /&gt;
-camellia128, -camellia192, -camellia256&lt;br /&gt;
              encrypt PEM output with cbc camellia&lt;br /&gt;
-nodes        don't encrypt private keys&lt;br /&gt;
-noiter       don't use encryption iteration&lt;br /&gt;
-nomaciter    don't use MAC iteration&lt;br /&gt;
-maciter      use MAC iteration&lt;br /&gt;
-nomac        don't generate MAC&lt;br /&gt;
-twopass      separate MAC, encryption passwords&lt;br /&gt;
-descert      encrypt PKCS#12 certificates with triple DES (default RC2-40)&lt;br /&gt;
-certpbe alg  specify certificate PBE algorithm (default RC2-40)&lt;br /&gt;
-keypbe alg   specify private key PBE algorithm (default 3DES)&lt;br /&gt;
-macalg alg   digest algorithm used in MAC (default SHA1)&lt;br /&gt;
-keyex        set MS key exchange type&lt;br /&gt;
-keysig       set MS key signature type&lt;br /&gt;
-password p   set import/export password source&lt;br /&gt;
-passin p     input file pass phrase source&lt;br /&gt;
-passout p    output file pass phrase source&lt;br /&gt;
-engine e     use engine e, possibly a hardware device.&lt;br /&gt;
-rand file:file:...&lt;br /&gt;
              load the file (or the files in the directory) into&lt;br /&gt;
              the random number generator&lt;br /&gt;
-CSP name     Microsoft CSP name&lt;br /&gt;
-LMK          Add local machine keyset attribute to private key&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SSL/TLS and Certificates ONLINE services ===&lt;br /&gt;
&lt;br /&gt;
==== s_server ====&lt;br /&gt;
&lt;br /&gt;
This implements a generic SSL/TLS server. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl s_server&lt;br /&gt;
Error opening server certificate private key file server.pem&lt;br /&gt;
139811478357672:error:02001002:system library:fopen:No such file or directory:bss_file.c:398:fopen('server.pem','r')&lt;br /&gt;
139811478357672:error:20074002:BIO routines:FILE_CTRL:system lib:bss_file.c:400:&lt;br /&gt;
unable to load server certificate private key file&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''you need to provide certificate and private key to be able to run SSL/TLS server.'''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl s_server --help&lt;br /&gt;
unknown option --help&lt;br /&gt;
usage: s_server [args ...]&lt;br /&gt;
&lt;br /&gt;
 -accept arg   - port to accept on (default is 4433)&lt;br /&gt;
 -context arg  - set session ID context&lt;br /&gt;
 -verify arg   - turn on peer certificate verification&lt;br /&gt;
 -Verify arg   - turn on peer certificate verification, must have a cert.&lt;br /&gt;
 -cert arg     - certificate file to use&lt;br /&gt;
                 (default is server.pem)&lt;br /&gt;
 -crl_check    - check the peer certificate has not been revoked by its CA.&lt;br /&gt;
                 The CRL(s) are appended to the certificate file&lt;br /&gt;
 -crl_check_all - check the peer certificate has not been revoked by its CA&lt;br /&gt;
                 or any other CRL in the CA chain. CRL(s) are appened to the&lt;br /&gt;
                 the certificate file.&lt;br /&gt;
 -certform arg - certificate format (PEM or DER) PEM default&lt;br /&gt;
 -key arg      - Private Key file to use, in cert file if&lt;br /&gt;
                 not specified (default is server.pem)&lt;br /&gt;
 -keyform arg  - key format (PEM, DER or ENGINE) PEM default&lt;br /&gt;
 -pass arg     - private key file pass phrase source&lt;br /&gt;
 -dcert arg    - second certificate file to use (usually for DSA)&lt;br /&gt;
 -dcertform x  - second certificate format (PEM or DER) PEM default&lt;br /&gt;
 -dkey arg     - second private key file to use (usually for DSA)&lt;br /&gt;
 -dkeyform arg - second key format (PEM, DER or ENGINE) PEM default&lt;br /&gt;
 -dpass arg    - second private key file pass phrase source&lt;br /&gt;
 -dhparam arg  - DH parameter file to use, in cert file if not specified&lt;br /&gt;
                 or a default set of parameters is used&lt;br /&gt;
 -named_curve arg  - Elliptic curve name to use for ephemeral ECDH keys.&lt;br /&gt;
                 Use &amp;quot;openssl ecparam -list_curves&amp;quot; for all names&lt;br /&gt;
                 (default is nistp256).&lt;br /&gt;
 -nbio         - Run with non-blocking IO&lt;br /&gt;
 -nbio_test    - test with the non-blocking test bio&lt;br /&gt;
 -crlf         - convert LF from terminal into CRLF&lt;br /&gt;
 -debug        - Print more output&lt;br /&gt;
 -msg          - Show protocol messages&lt;br /&gt;
 -state        - Print the SSL states&lt;br /&gt;
 -CApath arg   - PEM format directory of CA's&lt;br /&gt;
 -CAfile arg   - PEM format file of CA's&lt;br /&gt;
 -nocert       - Don't use any certificates (Anon-DH)&lt;br /&gt;
 -cipher arg   - play with 'openssl ciphers' to see what goes here&lt;br /&gt;
 -serverpref   - Use server's cipher preferences&lt;br /&gt;
 -quiet        - No server output&lt;br /&gt;
 -no_tmp_rsa   - Do not generate a tmp RSA key&lt;br /&gt;
 -psk_hint arg - PSK identity hint to use&lt;br /&gt;
 -psk arg      - PSK in hex (without 0x)&lt;br /&gt;
 -srpvfile file      - The verifier file for SRP&lt;br /&gt;
 -srpuserseed string - A seed string for a default user salt.&lt;br /&gt;
 -ssl2         - Just talk SSLv2&lt;br /&gt;
 -ssl3         - Just talk SSLv3&lt;br /&gt;
 -tls1_2       - Just talk TLSv1.2&lt;br /&gt;
 -tls1_1       - Just talk TLSv1.1&lt;br /&gt;
 -tls1         - Just talk TLSv1&lt;br /&gt;
 -dtls1        - Just talk DTLSv1&lt;br /&gt;
 -timeout      - Enable timeouts&lt;br /&gt;
 -mtu          - Set link layer MTU&lt;br /&gt;
 -chain        - Read a certificate chain&lt;br /&gt;
 -no_ssl2      - Just disable SSLv2&lt;br /&gt;
 -no_ssl3      - Just disable SSLv3&lt;br /&gt;
 -no_tls1      - Just disable TLSv1&lt;br /&gt;
 -no_tls1_1    - Just disable TLSv1.1&lt;br /&gt;
 -no_tls1_2    - Just disable TLSv1.2&lt;br /&gt;
 -no_dhe       - Disable ephemeral DH&lt;br /&gt;
 -no_ecdhe     - Disable ephemeral ECDH&lt;br /&gt;
 -bugs         - Turn on SSL bug compatibility&lt;br /&gt;
 -www          - Respond to a 'GET /' with a status page&lt;br /&gt;
 -WWW          - Respond to a 'GET /&amp;lt;path&amp;gt; HTTP/1.0' with file ./&amp;lt;path&amp;gt;&lt;br /&gt;
 -HTTP         - Respond to a 'GET /&amp;lt;path&amp;gt; HTTP/1.0' with file ./&amp;lt;path&amp;gt;&lt;br /&gt;
                 with the assumption it contains a complete HTTP response.&lt;br /&gt;
 -engine id    - Initialise and use the specified engine&lt;br /&gt;
 -id_prefix arg - Generate SSL/TLS session IDs prefixed by 'arg'&lt;br /&gt;
 -rand file:file:...&lt;br /&gt;
 -servername host - servername for HostName TLS extension&lt;br /&gt;
 -servername_fatal - on mismatch send fatal alert (default warning alert)&lt;br /&gt;
 -cert2 arg    - certificate file to use for servername&lt;br /&gt;
                 (default is server2.pem)&lt;br /&gt;
 -key2 arg     - Private Key file to use for servername, in cert file if&lt;br /&gt;
                 not specified (default is server2.pem)&lt;br /&gt;
 -tlsextdebug  - hex dump of all TLS extensions received&lt;br /&gt;
 -no_ticket    - disable use of RFC4507bis session tickets&lt;br /&gt;
 -legacy_renegotiation - enable use of legacy renegotiation (dangerous)&lt;br /&gt;
 -nextprotoneg arg - set the advertised protocols for the NPN extension (comma-separated list)&lt;br /&gt;
 -use_srtp profiles - Offer SRTP key management with a colon-separated profile list&lt;br /&gt;
 -keymatexport label   - Export keying material using label&lt;br /&gt;
 -keymatexportlen len  - Export len bytes of keying material (default 20)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== s_client ====&lt;br /&gt;
&lt;br /&gt;
This implements a generic SSL/TLS client&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
unknown option --help&lt;br /&gt;
usage: s_client args&lt;br /&gt;
&lt;br /&gt;
 -host host     - use -connect instead&lt;br /&gt;
 -port port     - use -connect instead&lt;br /&gt;
 -connect host:port - who to connect to (default is localhost:4433)&lt;br /&gt;
 -verify arg   - turn on peer certificate verification&lt;br /&gt;
 -cert arg     - certificate file to use, PEM format assumed&lt;br /&gt;
 -certform arg - certificate format (PEM or DER) PEM default&lt;br /&gt;
 -key arg      - Private key file to use, in cert file if&lt;br /&gt;
                 not specified but cert file is.&lt;br /&gt;
 -keyform arg  - key format (PEM or DER) PEM default&lt;br /&gt;
 -pass arg     - private key file pass phrase source&lt;br /&gt;
 -CApath arg   - PEM format directory of CA's&lt;br /&gt;
 -CAfile arg   - PEM format file of CA's&lt;br /&gt;
 -reconnect    - Drop and re-make the connection with the same Session-ID&lt;br /&gt;
 -pause        - sleep(1) after each read(2) and write(2) system call&lt;br /&gt;
 -showcerts    - show all certificates in the chain&lt;br /&gt;
 -debug        - extra output&lt;br /&gt;
 -msg          - Show protocol messages&lt;br /&gt;
 -nbio_test    - more ssl protocol testing&lt;br /&gt;
 -state        - print the 'ssl' states&lt;br /&gt;
 -nbio         - Run with non-blocking IO&lt;br /&gt;
 -crlf         - convert LF from terminal into CRLF&lt;br /&gt;
 -quiet        - no s_client output&lt;br /&gt;
 -ign_eof      - ignore input eof (default when -quiet)&lt;br /&gt;
 -no_ign_eof   - don't ignore input eof&lt;br /&gt;
 -psk_identity arg - PSK identity&lt;br /&gt;
 -psk arg      - PSK in hex (without 0x)&lt;br /&gt;
 -srpuser user     - SRP authentification for 'user'&lt;br /&gt;
 -srppass arg      - password for 'user'&lt;br /&gt;
 -srp_lateuser     - SRP username into second ClientHello message&lt;br /&gt;
 -srp_moregroups   - Tolerate other than the known g N values.&lt;br /&gt;
 -srp_strength int - minimal mength in bits for N (default 1024).&lt;br /&gt;
 -ssl2         - just use SSLv2&lt;br /&gt;
 -ssl3         - just use SSLv3&lt;br /&gt;
 -tls1_2       - just use TLSv1.2&lt;br /&gt;
 -tls1_1       - just use TLSv1.1&lt;br /&gt;
 -tls1         - just use TLSv1&lt;br /&gt;
 -dtls1        - just use DTLSv1&lt;br /&gt;
 -mtu          - set the link layer MTU&lt;br /&gt;
 -no_tls1_2/-no_tls1_1/-no_tls1/-no_ssl3/-no_ssl2 - turn off that protocol&lt;br /&gt;
 -bugs         - Switch on all SSL implementation bug workarounds&lt;br /&gt;
 -serverpref   - Use server's cipher preferences (only SSLv2)&lt;br /&gt;
 -cipher       - preferred cipher to use, use the 'openssl ciphers'&lt;br /&gt;
                 command to see what is available&lt;br /&gt;
 -starttls prot - use the STARTTLS command before starting TLS&lt;br /&gt;
                 for those protocols that support it, where&lt;br /&gt;
                 'prot' defines which one to assume.  Currently,&lt;br /&gt;
                 only &amp;quot;smtp&amp;quot;, &amp;quot;pop3&amp;quot;, &amp;quot;imap&amp;quot;, &amp;quot;ftp&amp;quot; and &amp;quot;xmpp&amp;quot;&lt;br /&gt;
                 are supported.&lt;br /&gt;
 -engine id    - Initialise and use the specified engine&lt;br /&gt;
 -rand file:file:...&lt;br /&gt;
 -sess_out arg - file to write SSL session to&lt;br /&gt;
 -sess_in arg  - file to read SSL session from&lt;br /&gt;
 -servername host  - Set TLS extension servername in ClientHello&lt;br /&gt;
 -tlsextdebug      - hex dump of all TLS extensions received&lt;br /&gt;
 -status           - request certificate status from server&lt;br /&gt;
 -no_ticket        - disable use of RFC4507bis session tickets&lt;br /&gt;
 -nextprotoneg arg - enable NPN extension, considering named protocols supported (comma-separated list)&lt;br /&gt;
 -legacy_renegotiation - enable use of legacy renegotiation (dangerous)&lt;br /&gt;
 -use_srtp profiles - Offer SRTP key management with a colon-separated profile list&lt;br /&gt;
 -keymatexport label   - Export keying material using label&lt;br /&gt;
 -keymatexportlen len  - Export len bytes of keying material (default 20)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ocsp ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Signing / Digest and Timestamping ===&lt;br /&gt;
&lt;br /&gt;
==== Signing / Digest ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl dgst --help&lt;br /&gt;
unknown option '--help'&lt;br /&gt;
options are&lt;br /&gt;
-c              to output the digest with separating colons&lt;br /&gt;
-r              to output the digest in coreutils format&lt;br /&gt;
-d              to output debug info&lt;br /&gt;
-hex            output as hex dump&lt;br /&gt;
-binary         output in binary form&lt;br /&gt;
-hmac arg       set the HMAC key to arg&lt;br /&gt;
-non-fips-allow allow use of non FIPS digest&lt;br /&gt;
-sign   file    sign digest using private key in file&lt;br /&gt;
-verify file    verify a signature using public key in file&lt;br /&gt;
-prverify file  verify a signature using private key in file&lt;br /&gt;
-keyform arg    key file format (PEM or ENGINE)&lt;br /&gt;
-out filename   output to filename rather than stdout&lt;br /&gt;
-signature file signature to verify&lt;br /&gt;
-sigopt nm:v    signature parameter&lt;br /&gt;
-hmac key       create hashed MAC with key&lt;br /&gt;
-mac algorithm  create MAC (not neccessarily HMAC)&lt;br /&gt;
-macopt nm:v    MAC algorithm parameters or key&lt;br /&gt;
-engine e       use engine e, possibly a hardware device.&lt;br /&gt;
-md4            to use the md4 message digest algorithm&lt;br /&gt;
-md5            to use the md5 message digest algorithm&lt;br /&gt;
-ripemd160      to use the ripemd160 message digest algorithm&lt;br /&gt;
-sha            to use the sha message digest algorithm&lt;br /&gt;
-sha1           to use the sha1 message digest algorithm&lt;br /&gt;
-sha224         to use the sha224 message digest algorithm&lt;br /&gt;
-sha256         to use the sha256 message digest algorithm&lt;br /&gt;
-sha384         to use the sha384 message digest algorithm&lt;br /&gt;
-sha512         to use the sha512 message digest algorithm&lt;br /&gt;
-whirlpool      to use the whirlpool message digest algorithm&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==== timestamping ====&lt;br /&gt;
&lt;br /&gt;
openssl ts&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
usage:&lt;br /&gt;
ts -query [-rand file:file:...] [-config configfile] [-data file_to_hash] [-digest digest_bytes][-md2|-md4|-md5|-sha|-sha1|-mdc2|-ripemd160] [-policy object_id] [-no_nonce] [-cert] [-in request.tsq] [-out request.tsq] [-text]&lt;br /&gt;
or&lt;br /&gt;
ts -reply [-config configfile] [-section tsa_section] [-queryfile request.tsq] [-passin password] [-signer tsa_cert.pem] [-inkey private_key.pem] [-chain certs_file.pem] [-policy object_id] [-in response.tsr] [-token_in] [-out response.tsr] [-token_out] [-text] [-engine id]&lt;br /&gt;
or&lt;br /&gt;
ts -verify [-data file_to_hash] [-digest digest_bytes] [-queryfile request.tsq] -in response.tsr [-token_in] -CApath ca_path -CAfile ca_file.pem -untrusted cert_file.pem&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Data handling ===&lt;br /&gt;
&lt;br /&gt;
==== ASN.1 ====&lt;br /&gt;
&lt;br /&gt;
[[DER]] decoding &lt;br /&gt;
&lt;br /&gt;
openssl asn1parse&lt;br /&gt;
&lt;br /&gt;
==== Base64 ====&lt;br /&gt;
&lt;br /&gt;
base64 encoding / decoding&lt;br /&gt;
&lt;br /&gt;
[[Base64]]&lt;br /&gt;
&lt;br /&gt;
===== a String =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl base64 -e &amp;lt;&amp;lt;&amp;lt; 'Welcome to openssl wiki'&lt;br /&gt;
V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK&lt;br /&gt;
openssl base64 -d &amp;lt;&amp;lt;&amp;lt; 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kK'&lt;br /&gt;
Welcome to openssl wiki&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
warning '''base64 line length is limited to 76 characters by default in openssl''' ( and generated with 64 characters / line ).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl base64 -e &amp;lt;&amp;lt;&amp;lt; 'Welcome to openssl wiki with a very long line that splits...'&lt;br /&gt;
V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRo&lt;br /&gt;
YXQgc3BsaXRzLi4uCg==&lt;br /&gt;
openssl base64 -d &amp;lt;&amp;lt;&amp;lt; 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=&amp;gt; NOTHING !&lt;br /&gt;
&lt;br /&gt;
to be able to decode a base64 line without line feed that exceed 76 characters use -A option :&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl base64 -d -A &amp;lt;&amp;lt;&amp;lt; 'V2VsY29tZSB0byBvcGVuc3NsIHdpa2kgd2l0aCBhIHZlcnkgbG9uZyBsaW5lIHRoYXQgc3BsaXRzLi4uCg=='&lt;br /&gt;
Welcome to openssl wiki with a very long line that splits...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is anyway better to actualy split base64 result in 64 characters lines since -A option is BUGGY ( limit with long files ).&lt;br /&gt;
&lt;br /&gt;
==== DER &amp;lt;-&amp;gt; PEM conversion ====&lt;br /&gt;
&lt;br /&gt;
on each command handling PEM and DER format an '''inform''' and '''outform''' options are provided to specify it.&lt;br /&gt;
Then it is easy to read it in format and write it in another&lt;br /&gt;
&lt;br /&gt;
==== pkcs8 / pkcs5 ====&lt;br /&gt;
&lt;br /&gt;
pkcs8 is a format to store private keys.&lt;br /&gt;
pkcs8 uses various pkcs5 version as subformat.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl pkcs8 --help&lt;br /&gt;
Usage pkcs8 [options]&lt;br /&gt;
where options are&lt;br /&gt;
-in file        input file&lt;br /&gt;
-inform X       input format (DER or PEM)&lt;br /&gt;
-passin arg     input file pass phrase source&lt;br /&gt;
-outform X      output format (DER or PEM)&lt;br /&gt;
-out file       output file&lt;br /&gt;
-passout arg    output file pass phrase source&lt;br /&gt;
-topk8          output PKCS8 file&lt;br /&gt;
-nooct          use (nonstandard) no octet format&lt;br /&gt;
-embed          use (nonstandard) embedded DSA parameters format&lt;br /&gt;
-nsdb           use (nonstandard) DSA Netscape DB format&lt;br /&gt;
-noiter         use 1 as iteration count&lt;br /&gt;
-nocrypt        use or expect unencrypted private key&lt;br /&gt;
-v2 alg         use PKCS#5 v2.0 and cipher &amp;quot;alg&amp;quot;&lt;br /&gt;
-v1 obj         use PKCS#5 v1.5 and cipher &amp;quot;alg&amp;quot;&lt;br /&gt;
 -engine e       use engine e, possibly a hardware device.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Diagnostics ===&lt;br /&gt;
&lt;br /&gt;
==== SSL/TLS session information ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
openssl sess_id --help&lt;br /&gt;
unknown option --help&lt;br /&gt;
usage: sess_id args&lt;br /&gt;
&lt;br /&gt;
 -inform arg     - input format - default PEM (DER or PEM)&lt;br /&gt;
 -outform arg    - output format - default PEM&lt;br /&gt;
 -in arg         - input file - default stdin&lt;br /&gt;
 -out arg        - output file - default stdout&lt;br /&gt;
 -text           - print ssl session id details&lt;br /&gt;
 -cert           - output certificate &lt;br /&gt;
 -noout          - no CRL output&lt;br /&gt;
 -context arg    - set the session ID context&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Shell level]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_oncreate&amp;diff=638</id>
		<title>MediaWiki:Confirmemail oncreate</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_oncreate&amp;diff=638"/>
		<updated>2013-04-03T20:11:42Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Use opensslfoundation.com E-mail address&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A confirmation code was sent to your e-mail address.&lt;br /&gt;
This code is not required to log in, but you will need to provide it before enabling any e-mail-based features in the wiki.&lt;br /&gt;
&lt;br /&gt;
We had to disable default edit privileges due to excessive spam postings.&lt;br /&gt;
For edit privileges please contract the administrators at [mailto:wiki-admin@openssl.com wiki-admin@opensslfoundation.com].&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_body&amp;diff=637</id>
		<title>MediaWiki:Confirmemail body</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_body&amp;diff=637"/>
		<updated>2013-04-03T20:11:05Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Use opensslfoundation.com E-mail address&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Someone, probably you, from IP address $1,&lt;br /&gt;
has registered an account &amp;quot;$2&amp;quot; with this e-mail address on {{SITENAME}}.&lt;br /&gt;
&lt;br /&gt;
To confirm that this account really does belong to you and activate&lt;br /&gt;
e-mail features on {{SITENAME}}, open this link in your browser:&lt;br /&gt;
&lt;br /&gt;
$3&lt;br /&gt;
&lt;br /&gt;
If you did *not* register the account, follow this link&lt;br /&gt;
to cancel the e-mail address confirmation:&lt;br /&gt;
&lt;br /&gt;
$5&lt;br /&gt;
&lt;br /&gt;
This confirmation code will expire at $4.&lt;br /&gt;
&lt;br /&gt;
Once your account registration is complete you will still not be able to edit content&lt;br /&gt;
(thanks to excessive spam abuse). Send an E-mail to wiki-admin@opensslfoundation.com to request&lt;br /&gt;
edit privileges. If you're not already a participant in the OpenSSL mailing lists a&lt;br /&gt;
brief description of your interest will be appreciated, so we'll know you're a&lt;br /&gt;
legitimate member of the OpenSSL community and not a spam artist.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_oncreate&amp;diff=629</id>
		<title>MediaWiki:Confirmemail oncreate</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_oncreate&amp;diff=629"/>
		<updated>2013-04-03T18:05:20Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Add instructions for requesting edit privileges&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A confirmation code was sent to your e-mail address.&lt;br /&gt;
This code is not required to log in, but you will need to provide it before enabling any e-mail-based features in the wiki.&lt;br /&gt;
&lt;br /&gt;
We had to disable default edit privileges due to excessive spam postings.&lt;br /&gt;
For edit privileges please contract the administrators at [mailto:wiki-admin@openssl.com wiki-admin@openssl.com].&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_body&amp;diff=628</id>
		<title>MediaWiki:Confirmemail body</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Confirmemail_body&amp;diff=628"/>
		<updated>2013-04-03T17:51:52Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Add text about edit privileges&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Someone, probably you, from IP address $1,&lt;br /&gt;
has registered an account &amp;quot;$2&amp;quot; with this e-mail address on {{SITENAME}}.&lt;br /&gt;
&lt;br /&gt;
To confirm that this account really does belong to you and activate&lt;br /&gt;
e-mail features on {{SITENAME}}, open this link in your browser:&lt;br /&gt;
&lt;br /&gt;
$3&lt;br /&gt;
&lt;br /&gt;
If you did *not* register the account, follow this link&lt;br /&gt;
to cancel the e-mail address confirmation:&lt;br /&gt;
&lt;br /&gt;
$5&lt;br /&gt;
&lt;br /&gt;
This confirmation code will expire at $4.&lt;br /&gt;
&lt;br /&gt;
Once your account registration is complete you will still not be able to edit content&lt;br /&gt;
(thanks to excessive spam abuse). Send an E-mail to wiki-admin@openssl.com to request&lt;br /&gt;
edit privileges. If you're not already a participant in the OpenSSL mailing lists a&lt;br /&gt;
brief description of your interest will be appreciated, so we'll know you're a&lt;br /&gt;
legitimate member of the OpenSSL community and not a spam artist.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode&amp;diff=490</id>
		<title>FIPS mode</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode&amp;diff=490"/>
		<updated>2013-03-25T13:38:28Z</updated>

		<summary type="html">&lt;p&gt;Stevem: moved FIPS mode to FIPS mode():&amp;amp;#32;Have page name map function name as closely as possible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FIPS mode()]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=489</id>
		<title>FIPS mode()</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=489"/>
		<updated>2013-03-25T13:38:28Z</updated>

		<summary type="html">&lt;p&gt;Stevem: moved FIPS mode to FIPS mode():&amp;amp;#32;Have page name map function name as closely as possible&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode - retrieve the current FIPS 140-2 mode of operation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;openssl/crypto.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int FIPS_mode(void);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() is used to determine the FIPS mode of operation by a program utilizing the services of the validated library. The library must have been built with the FIPS Object Module, and the FIPS Object Module must have been acquired, built, and installed in accordance with the Open''''''SSL Security Policy.&lt;br /&gt;
&lt;br /&gt;
The return value is either 0 to indicate that the FIPS mode of operation is not enabled, or the value used for the ONOFF parameter passed to an earlier successful call to FIPS_mode_set(). Effectively any non-zero value indicates FIPS mode; values other than 1 may have additional significance such as designating an additional restriction to Suite B algorithms.&lt;br /&gt;
&lt;br /&gt;
If the library was built without support of the FIPS Object Module, then the function will return 0 with an error code of CRYPTO_R_FIPS_MODE_NOT_SUPPORTED (0x0f06d065).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''RETURN VALUES'''&lt;br /&gt;
&lt;br /&gt;
A return code of non-zero indicates FIPS mode, 0 indicates non-FIPS mode. When called from a version of Open''''''SSL that is not &amp;quot;FIPS capable&amp;quot; (capable of utilizing an embedded FIPS Object Module), then FIPS_mode() will always return 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set(3), FIPS_selftest(3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() was formerly included with &amp;lt;openssl/fips.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''HISTORY'''&lt;br /&gt;
&lt;br /&gt;
FIPS support was introduced in version 0.9.7 of Open''''''SSL.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=488</id>
		<title>FIPS mode()</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode()&amp;diff=488"/>
		<updated>2013-03-25T13:37:12Z</updated>

		<summary type="html">&lt;p&gt;Stevem: raw output from pod2wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;----&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode - retrieve the current FIPS 140-2 mode of operation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;openssl/crypto.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int FIPS_mode(void);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() is used to determine the FIPS mode of operation by a program utilizing the services of the validated library. The library must have been built with the FIPS Object Module, and the FIPS Object Module must have been acquired, built, and installed in accordance with the Open''''''SSL Security Policy.&lt;br /&gt;
&lt;br /&gt;
The return value is either 0 to indicate that the FIPS mode of operation is not enabled, or the value used for the ONOFF parameter passed to an earlier successful call to FIPS_mode_set(). Effectively any non-zero value indicates FIPS mode; values other than 1 may have additional significance such as designating an additional restriction to Suite B algorithms.&lt;br /&gt;
&lt;br /&gt;
If the library was built without support of the FIPS Object Module, then the function will return 0 with an error code of CRYPTO_R_FIPS_MODE_NOT_SUPPORTED (0x0f06d065).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''RETURN VALUES'''&lt;br /&gt;
&lt;br /&gt;
A return code of non-zero indicates FIPS mode, 0 indicates non-FIPS mode. When called from a version of Open''''''SSL that is not &amp;quot;FIPS capable&amp;quot; (capable of utilizing an embedded FIPS Object Module), then FIPS_mode() will always return 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set(3), FIPS_selftest(3)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode() was formerly included with &amp;lt;openssl/fips.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''HISTORY'''&lt;br /&gt;
&lt;br /&gt;
FIPS support was introduced in version 0.9.7 of Open''''''SSL.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=FIPS_mode_set()&amp;diff=485</id>
		<title>FIPS mode set()</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=FIPS_mode_set()&amp;diff=485"/>
		<updated>2013-03-25T12:10:46Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Example of &amp;quot;pod2wiki FIPS_mode_set.pod&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The FIPS_mode_set(3) function has the following prototype: int FIPS_mode_set(int onoff);&lt;br /&gt;
&lt;br /&gt;
when set to non-zero you go into FIPS mode.&lt;br /&gt;
when set to zero you go into non-FIPS mode.&lt;br /&gt;
&lt;br /&gt;
[[Category:FIPS 140]]&lt;br /&gt;
[[Category:C level]]&lt;br /&gt;
[[Category:Crypto API]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''NAME'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode - enter or exit FIPS 140-2 mode of operation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SYNOPSIS'''&lt;br /&gt;
&lt;br /&gt;
 #include &amp;lt;openssl/crypto.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 int FIPS_mode_set(int ONOFF);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''DESCRIPTION'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set() is used to set the FIPS mode of operation of a running program utilizing the services of a validated library. The library must have been built with the FIPS Object Module, and the FIPS Object Module must have been acquired, built, and installed in accordance with the Open''''''SSL Security Policy.&lt;br /&gt;
&lt;br /&gt;
When invoked with non-zero value for ONOFF value, FIPS_mode_set() will attempt to enter FIPS mode of operation. If the FIPS Object Module successfully enters FIPS mode, the function will return that non-zero value.&lt;br /&gt;
&lt;br /&gt;
Currently all non-zero values of ONOFF enable FIPS mode. In the future other values may specify additional actions beyond enabling FIPS mode, such as a value of 2 to designate an additional restriction to Suite B algorithms. To avoid further compatibility issues, a program is encouraged to call FIPS_mode_set() with a ONOFF value of 1 (rather than an arbitrary non-zero value).&lt;br /&gt;
&lt;br /&gt;
During a call to FIPS_mode_set() with a non-zero value of ONOFF, a number of tests are performed. See FIPS_selftest() for details on the testing performed by the validated FIPS Object Module.&lt;br /&gt;
&lt;br /&gt;
When invoked with ONOFF value of 0, FIPS_mode_set() will attempt to exit the FIPS mode of operation. If the FIPS Object Module successfully exits FIPS mode, the function will return 1.&lt;br /&gt;
&lt;br /&gt;
If FIPS_mode_set() returns a value of 0, then the request to enter or exit the FIPS mode of operation failed. In this case, the caller should call ERR_get_error() to retrieve the error code associated with the failure. The error code can later be used by ERR_error_string(&amp;lt;err&amp;gt;) or `openssl errstr &amp;lt;err&amp;gt;' for a readable string.&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set() can fail for a number of reasons, and many of the error codes are discussed in detail in the Open''''''SSL FIPS Object Module User Guide 2.0. One common code is CRYPTO_R_FIPS_MODE_NOT_SUPPORTED (0xf06d065). The particular error code indicates the application was likely linked against an Open''''''SSL library without validated cryptography. That is, a FIPS Capable Library was *not* used during application linking.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''RETURN VALUES'''&lt;br /&gt;
&lt;br /&gt;
A non-zero return value indicates success, 0 failure.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''EXAMPLE'''&lt;br /&gt;
&lt;br /&gt;
int mode = FIPS_mode(), ret = 0; unsigned long err = 0;&lt;br /&gt;
&lt;br /&gt;
/* Toggle FIPS mode */ if(mode == 0) { ret = FIPS_mode_set(1 /*on*/); if(ret != 1) { err = ERR_get_error(); } } else { ret = FIPS_mode_set(0 /*off*/); if(ret != 1) { err = ERR_get_error(); } }&lt;br /&gt;
&lt;br /&gt;
if(ret != 1) printf(&amp;quot;FIPS_mode_set failed: %lx.&amp;quot;, err);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''SEE ALSO'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode(3), FIPS_selftest(3), ERR_get_error(3), ERR_error_string(3), openssl(8)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''NOTES'''&lt;br /&gt;
&lt;br /&gt;
FIPS_mode_set() was formerly included with &amp;lt;openssl/fips.h&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
'''HISTORY'''&lt;br /&gt;
&lt;br /&gt;
FIPS support was introduced in version 0.9.7 of Open''''''SSL.&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=OpenSSLWiki:Copyrights&amp;diff=286</id>
		<title>OpenSSLWiki:Copyrights</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=OpenSSLWiki:Copyrights&amp;diff=286"/>
		<updated>2013-03-18T12:21:44Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Add redirect to :License&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[License]]&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=285</id>
		<title>MediaWiki:Copyrightwarning</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=285"/>
		<updated>2013-03-18T12:20:42Z</updated>

		<summary type="html">&lt;p&gt;Stevem: Hmmm, back like it was&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please note that all contributions to {{SITENAME}} are considered to be released under the current or future $2: see $1 for details.&lt;br /&gt;
If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.&lt;br /&gt;
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource, or from OpenSSL.&lt;br /&gt;
'''Do not submit copyrighted work without permission!'''&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
	<entry>
		<id>https://wiki.openssl.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=284</id>
		<title>MediaWiki:Copyrightwarning</title>
		<link rel="alternate" type="text/html" href="https://wiki.openssl.org/index.php?title=MediaWiki:Copyrightwarning&amp;diff=284"/>
		<updated>2013-03-18T12:17:33Z</updated>

		<summary type="html">&lt;p&gt;Stevem: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Please note that all contributions to {{SITENAME}} are considered to be released under the current or future $2: see [[License]] for details.&lt;br /&gt;
If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.&lt;br /&gt;
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource, or from OpenSSL.&lt;br /&gt;
'''Do not submit copyrighted work without permission!'''&lt;/div&gt;</summary>
		<author><name>Stevem</name></author>
	</entry>
</feed>