| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =pod | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 NAME | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | OSSL_PROVIDER-FIPS - OpenSSL FIPS provider | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 DESCRIPTION | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 08:59:56 +08:00
										 |  |  | The OpenSSL FIPS provider is a special provider that conforms to the Federal | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | Information Processing Standards (FIPS) specified in FIPS 140-2. This 'module' | 
					
						
							|  |  |  | contains an approved set of cryptographic algorithms that is validated by an | 
					
						
							|  |  |  | accredited testing laboratory. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =head2 Properties | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The implementations in this provider specifically have these properties | 
					
						
							|  |  |  | defined: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-09 22:03:10 +08:00
										 |  |  | =item "provider=fips" | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 11:53:07 +08:00
										 |  |  | =item "fips=yes" | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It may be used in a property query string with fetching functions such as | 
					
						
							|  |  |  | L<EVP_MD_fetch(3)> or L<EVP_CIPHER_fetch(3)>, as well as with other | 
					
						
							|  |  |  | functions that take a property query string, such as | 
					
						
							|  |  |  | L<EVP_PKEY_CTX_new_from_name(3)>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It isn't mandatory to query for any of these properties, except to | 
					
						
							|  |  |  | make sure to get implementations of this provider and none other. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The "fips=yes" property can be use to make sure only FIPS approved | 
					
						
							|  |  |  | implementations are used for crypto operations.  This may also include | 
					
						
							| 
									
										
										
										
											2022-05-04 10:04:43 +08:00
										 |  |  | other non-crypto support operations that are not in the FIPS provider, | 
					
						
							| 
									
										
										
										
											2020-08-17 03:25:08 +08:00
										 |  |  | such as asymmetric key encoders, | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | see L<OSSL_PROVIDER-default(7)/Asymmetric Key Management>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 OPERATIONS AND ALGORITHMS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The OpenSSL FIPS provider supports these operations and algorithms: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Hashing Algorithms / Message Digests | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item SHA1, see L<EVP_MD-SHA1(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item SHA2, see L<EVP_MD-SHA2(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item SHA3, see L<EVP_MD-SHA3(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item KECCAK-KMAC, see L<EVP_MD-KECCAK-KMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Symmetric Ciphers | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item AES, see L<EVP_CIPHER-AES(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-22 10:37:11 +08:00
										 |  |  | =item DES-EDE3 (TripleDES), see L<EVP_CIPHER-DES(7)> | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Message Authentication Code (MAC) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item CMAC, see L<EVP_MAC-CMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item GMAC, see L<EVP_MAC-GMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item HMAC, see L<EVP_MAC-HMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item KMAC, see L<EVP_MAC-KMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Key Derivation Function (KDF) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item HKDF, see L<EVP_KDF-HKDF(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-03 13:42:13 +08:00
										 |  |  | =item TLS13-KDF, see L<EVP_KDF-TLS13_KDF(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =item SSKDF, see L<EVP_KDF-SSKDF(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item PBKDF2, see L<EVP_KDF-PBKDF2(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-16 10:42:18 +08:00
										 |  |  | =item SSHKDF, see L<EVP_KDF-SSHKDF(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-03 13:42:13 +08:00
										 |  |  | =item TLS1-PRF, see L<EVP_KDF-TLS1_PRF(7)> | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item KBKDF, see L<EVP_KDF-KBKDF(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-16 10:42:18 +08:00
										 |  |  | =item X942KDF-ASN1, see L<EVP_KDF-X942-ASN1(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X942KDF-CONCAT, see L<EVP_KDF-X942-CONCAT(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X963KDF, see L<EVP_KDF-X963(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Key Exchange | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH, see L<EVP_KEYEXCH-DH(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-05-26 11:53:07 +08:00
										 |  |  | =item ECDH, see L<EVP_KEYEXCH-ECDH(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X25519, see L<EVP_KEYEXCH-X25519(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X448, see L<EVP_KEYEXCH-X448(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Asymmetric Signature | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DSA, see L<EVP_KEYEXCH-DSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-27 19:52:17 +08:00
										 |  |  | =item RSA, see L<EVP_SIGNATURE-RSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-06 07:16:38 +08:00
										 |  |  | =item X25519, see L<EVP_SIGNATURE-ED25519(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X448, see L<EVP_SIGNATURE-ED448(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-27 19:52:17 +08:00
										 |  |  | =item HMAC, see L<EVP_SIGNATURE-HMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item CMAC, see L<EVP_SIGNATURE-CMAC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head2 Asymmetric Cipher | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item RSA, see L<EVP_KEYEXCH-RSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-19 16:08:46 +08:00
										 |  |  | =head2 Asymmetric Key Encapsulation | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item RSA, see L<EVP_KEM-RSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =head2 Asymmetric Key Management | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item DH, see L<EVP_KEYMGMT-DH(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-04 10:04:43 +08:00
										 |  |  | =item DHX, see L<EVP_KEYMGMT-DHX(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =item DSA, see L<EVP_KEYMGMT-DSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item RSA, see L<EVP_KEYMGMT-RSA(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-04 10:04:43 +08:00
										 |  |  | =item EC, see L<EVP_KEYMGMT-EC(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X25519, see L<EVP_KEYMGMT-X25519(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item X448, see L<EVP_KEYMGMT-X448(7)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =head1 SELF TESTING | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | One of the requirements for the FIPS module is self testing. An optional callback | 
					
						
							|  |  |  | mechanism is available to return information to the user using | 
					
						
							| 
									
										
										
										
											2019-10-25 04:40:11 +08:00
										 |  |  | L<OSSL_SELF_TEST_set_callback(3)>. | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-03 12:02:36 +08:00
										 |  |  | The parameters passed to the callback are described in L<OSSL_SELF_TEST_new(3)> | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | The OpenSSL FIPS module uses the following mechanism to provide information | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | about the self tests as they run. | 
					
						
							|  |  |  | This is useful for debugging if a self test is failing. | 
					
						
							|  |  |  | The callback also allows forcing any self test to fail, in order to check that | 
					
						
							|  |  |  | it operates correctly on failure. | 
					
						
							|  |  |  | Note that all self tests run even if a self test failure occurs. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-03 12:02:36 +08:00
										 |  |  | The FIPS module passes the following type(s) to OSSL_SELF_TEST_onbegin(). | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "Module_Integrity" (B<OSSL_SELF_TEST_TYPE_MODULE_INTEGRITY>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Uses HMAC SHA256 on the module file to validate that the module has not been | 
					
						
							|  |  |  | modified. The integrity value is compared to a value written to a configuration | 
					
						
							|  |  |  | file during installation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "Install_Integrity" (B<OSSL_SELF_TEST_TYPE_INSTALL_INTEGRITY>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Uses HMAC SHA256 on a fixed string to validate that the installation process | 
					
						
							|  |  |  | has already been performed and the self test KATS have already been tested, | 
					
						
							|  |  |  | The integrity value is compared to a value written to a configuration | 
					
						
							|  |  |  | file after successfully running the self tests during installation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "KAT_Cipher" (B<OSSL_SELF_TEST_TYPE_KAT_CIPHER>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a symmetric cipher. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-16 12:10:23 +08:00
										 |  |  | =item "KAT_AsymmetricCipher" (B<OSSL_SELF_TEST_TYPE_KAT_ASYM_CIPHER>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a asymmetric cipher. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =item "KAT_Digest" (B<OSSL_SELF_TEST_TYPE_KAT_DIGEST>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a digest. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "KAT_Signature" (B<OSSL_SELF_TEST_TYPE_KAT_SIGNATURE>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a signature. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-21 08:59:56 +08:00
										 |  |  | =item "PCT_Signature" (B<OSSL_SELF_TEST_TYPE_PCT_SIGNATURE>) | 
					
						
							| 
									
										
										
										
											2021-08-30 07:59:54 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Pairwise Consistency check for a signature. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =item "KAT_KDF" (B<OSSL_SELF_TEST_TYPE_KAT_KDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a key derivation function. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "KAT_KA" (B<OSSL_SELF_TEST_TYPE_KAT_KA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for key agreement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "DRBG" (B<OSSL_SELF_TEST_TYPE_DRBG>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Known answer test for a Deterministic Random Bit Generator. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-30 07:59:54 +08:00
										 |  |  | =item "Conditional_PCT" (B<OSSL_SELF_TEST_TYPE_PCT>) | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Conditional test that is run during the generation of key pairs. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 07:08:09 +08:00
										 |  |  | =item "Continuous_RNG_Test" (B<OSSL_SELF_TEST_TYPE_CRNG>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Continuous random number generator test. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The "Module_Integrity" self test is always run at startup. | 
					
						
							|  |  |  | The "Install_Integrity" self test is used to check if the self tests have | 
					
						
							|  |  |  | already been run at installation time. If they have already run then the | 
					
						
							|  |  |  | self tests are not run on subsequent startups. | 
					
						
							|  |  |  | All other self test categories are run once at installation time, except for the | 
					
						
							|  |  |  | "Pairwise_Consistency_Test". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There is only one instance of the "Module_Integrity" and "Install_Integrity" | 
					
						
							|  |  |  | self tests. All other self tests may have multiple instances. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-03 12:02:36 +08:00
										 |  |  | The FIPS module passes the following descriptions(s) to OSSL_SELF_TEST_onbegin(). | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =over 4 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "HMAC" (B<OSSL_SELF_TEST_DESC_INTEGRITY_HMAC>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "Module_Integrity" and "Install_Integrity" use this. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "RSA" (B<OSSL_SELF_TEST_DESC_PCT_RSA_PKCS1>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "ECDSA" (B<OSSL_SELF_TEST_DESC_PCT_ECDSA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "DSA" (B<OSSL_SELF_TEST_DESC_PCT_DSA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Key generation tests used with the "Pairwise_Consistency_Test" type. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-16 12:10:23 +08:00
										 |  |  | =item "RSA_Encrypt" (B<OSSL_SELF_TEST_DESC_ASYM_RSA_ENC>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "RSA_Decrypt" (B<OSSL_SELF_TEST_DESC_ASYM_RSA_DEC>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "KAT_AsymmetricCipher" uses this to indicate an encrypt or decrypt KAT. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-21 12:01:36 +08:00
										 |  |  | =item "AES_GCM" (B<OSSL_SELF_TEST_DESC_CIPHER_AES_GCM>) | 
					
						
							| 
									
										
										
										
											2021-04-12 08:38:16 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item "AES_ECB_Decrypt" (B<OSSL_SELF_TEST_DESC_CIPHER_AES_ECB>) | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =item "TDES" (B<OSSL_SELF_TEST_DESC_CIPHER_TDES>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Symmetric cipher tests used with the "KAT_Cipher" type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "SHA1" (B<OSSL_SELF_TEST_DESC_MD_SHA1>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "SHA2" (B<OSSL_SELF_TEST_DESC_MD_SHA2>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "SHA3" (B<OSSL_SELF_TEST_DESC_MD_SHA3>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Digest tests used with the "KAT_Digest" type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "DSA" (B<OSSL_SELF_TEST_DESC_SIGN_DSA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "RSA" (B<OSSL_SELF_TEST_DESC_SIGN_RSA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "ECDSA" (B<OSSL_SELF_TEST_DESC_SIGN_ECDSA>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Signature tests used with the "KAT_Signature" type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "ECDH" (B<OSSL_SELF_TEST_DESC_KA_ECDH>) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 14:50:36 +08:00
										 |  |  | =item "DH" (B<OSSL_SELF_TEST_DESC_KA_DH>) | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Key agreement tests used with the "KAT_KA" type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "HKDF" (B<OSSL_SELF_TEST_DESC_KDF_HKDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-03 13:42:13 +08:00
										 |  |  | =item "TLS13_KDF_EXTRACT" (B<OSSL_SELF_TEST_DESC_KDF_TLS13_EXTRACT>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "TLS13_KDF_EXPAND" (B<OSSL_SELF_TEST_DESC_KDF_TLS13_EXPAND>) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-03 14:50:36 +08:00
										 |  |  | =item "SSKDF" (B<OSSL_SELF_TEST_DESC_KDF_SSKDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-23 12:55:48 +08:00
										 |  |  | =item "X963KDF" (B<OSSL_SELF_TEST_DESC_KDF_X963KDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "X942KDF" (B<OSSL_SELF_TEST_DESC_KDF_X942KDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "PBKDF2" (B<OSSL_SELF_TEST_DESC_KDF_PBKDF2>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "SSHKDF" (B<OSSL_SELF_TEST_DESC_KDF_SSHKDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "TLS12_PRF" (B<OSSL_SELF_TEST_DESC_KDF_TLS12_PRF>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "KBKDF" (B<OSSL_SELF_TEST_DESC_KDF_KBKDF>) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | Key Derivation Function tests used with the "KAT_KDF" type. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "CTR" (B<OSSL_SELF_TEST_DESC_DRBG_CTR>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "HASH" (B<OSSL_SELF_TEST_DESC_DRBG_HASH>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =item "HMAC" (B<OSSL_SELF_TEST_DESC_DRBG_HMAC>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DRBG tests used with the "DRBG" type. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-02 07:08:09 +08:00
										 |  |  | = item "RNG" (B<OSSL_SELF_TEST_DESC_RNG>) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | "Continuous_RNG_Test" uses this. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | =back | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 EXAMPLES | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A simple self test callback is shown below for illustrative purposes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   #include <openssl/self_test.h> | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   static OSSL_CALLBACK self_test_cb; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   static int self_test_cb(const OSSL_PARAM params[], void *arg) | 
					
						
							|  |  |  |   { | 
					
						
							|  |  |  |     int ret = 0; | 
					
						
							|  |  |  |     const OSSL_PARAM *p = NULL; | 
					
						
							|  |  |  |     const char *phase = NULL, *type = NULL, *desc = NULL; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     p = OSSL_PARAM_locate_const(params, OSSL_PROV_PARAM_SELF_TEST_PHASE); | 
					
						
							|  |  |  |     if (p == NULL || p->data_type != OSSL_PARAM_UTF8_STRING) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  |     phase = (const char *)p->data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     p = OSSL_PARAM_locate_const(params, OSSL_PROV_PARAM_SELF_TEST_DESC); | 
					
						
							|  |  |  |     if (p == NULL || p->data_type != OSSL_PARAM_UTF8_STRING) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  |     desc = (const char *)p->data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     p = OSSL_PARAM_locate_const(params, OSSL_PROV_PARAM_SELF_TEST_TYPE); | 
					
						
							|  |  |  |     if (p == NULL || p->data_type != OSSL_PARAM_UTF8_STRING) | 
					
						
							|  |  |  |         goto err; | 
					
						
							|  |  |  |     type = (const char *)p->data; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Do some logging */ | 
					
						
							|  |  |  |     if (strcmp(phase, OSSL_SELF_TEST_PHASE_START) == 0) | 
					
						
							|  |  |  |         BIO_printf(bio_out, "%s : (%s) : ", desc, type); | 
					
						
							|  |  |  |     if (strcmp(phase, OSSL_SELF_TEST_PHASE_PASS) == 0 | 
					
						
							|  |  |  |             || strcmp(phase, OSSL_SELF_TEST_PHASE_FAIL) == 0) | 
					
						
							|  |  |  |         BIO_printf(bio_out, "%s\n", phase); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /* Corrupt the SHA1 self test during the 'corrupt' phase by returning 0 */ | 
					
						
							|  |  |  |     if (strcmp(phase, OSSL_SELF_TEST_PHASE_CORRUPT) == 0 | 
					
						
							|  |  |  |             && strcmp(desc, OSSL_SELF_TEST_DESC_MD_SHA1) == 0) { | 
					
						
							|  |  |  |         BIO_printf(bio_out, "%s %s", phase, desc); | 
					
						
							|  |  |  |         return 0; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     ret = 1; | 
					
						
							|  |  |  |   err: | 
					
						
							|  |  |  |     return ret; | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 SEE ALSO | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | L<openssl-fipsinstall(1)>, | 
					
						
							|  |  |  | L<fips_config(5)>, | 
					
						
							| 
									
										
										
										
											2019-10-25 04:40:11 +08:00
										 |  |  | L<OSSL_SELF_TEST_set_callback(3)>, | 
					
						
							| 
									
										
										
										
											2020-03-03 12:02:36 +08:00
										 |  |  | L<OSSL_SELF_TEST_new(3)>, | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | L<OSSL_PARAM(3)>, | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | L<openssl-core.h(7)>, | 
					
						
							| 
									
										
										
										
											2020-06-21 07:21:19 +08:00
										 |  |  | L<openssl-core_dispatch.h(7)>, | 
					
						
							| 
									
										
										
										
											2020-03-06 21:25:42 +08:00
										 |  |  | L<provider(7)> | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | =head1 HISTORY | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The type and functions described here were added in OpenSSL 3.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =head1 COPYRIGHT | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-06-21 21:03:39 +08:00
										 |  |  | Copyright 2019-2022 The OpenSSL Project Authors. All Rights Reserved. | 
					
						
							| 
									
										
										
										
											2020-01-15 08:48:01 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  | Licensed under the Apache License 2.0 (the "License").  You may not use | 
					
						
							|  |  |  | this file except in compliance with the License.  You can obtain a copy | 
					
						
							|  |  |  | in the file LICENSE in the source distribution or at | 
					
						
							|  |  |  | L<https://www.openssl.org/source/license.html>. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | =cut |