Implement FIPS CMAC. * fips/cmac/*: Implement the basis for FIPS CMAC, using FIPS HMAC as an example. * crypto/cmac/cmac.c: Enable the FIPS API. Change to use M_EVP macros where possible. * crypto/evp/evp.h: (some of the macros get added with this change) * fips/fips.h, fips/utl/fips_enc.c: Add a few needed functions and use macros to have cmac.c use these functions. * Makefile.org, fips/Makefile, fips/fips.c: Hook it in.
diff --git a/fips/fips.h b/fips/fips.h index 6dadc1e..110ee3c 100644 --- a/fips/fips.h +++ b/fips/fips.h
@@ -95,6 +95,7 @@ int FIPS_selftest_rng(void); int FIPS_selftest_hmac(void); int FIPS_selftest_drbg(void); +int FIPS_selftest_cmac(void); unsigned int FIPS_incore_fingerprint(unsigned char *sig,unsigned int len); int FIPS_check_incore_fingerprint(void); @@ -159,6 +160,8 @@ #define EVP_CIPHER_CTX_ctrl FIPS_cipher_ctx_ctrl #define EVP_CIPHER_CTX_new FIPS_cipher_ctx_new #define EVP_CIPHER_CTX_free FIPS_cipher_ctx_free +#define EVP_CIPHER_CTX_copy FIPS_cipher_ctx_copy +#define EVP_CIPHER_CTX_set_key_length FIPS_cipher_ctx_set_key_length #define DSA_SIG_new FIPS_dsa_sig_new #define DSA_SIG_free FIPS_dsa_sig_free @@ -205,6 +208,7 @@ #define FIPS_F_FIPS_PKEY_SIGNATURE_TEST 109 #define FIPS_F_FIPS_SELFTEST_AES 110 #define FIPS_F_FIPS_SELFTEST_AES_GCM 130 +#define FIPS_F_FIPS_SELFTEST_CMAC 139 #define FIPS_F_FIPS_SELFTEST_DES 111 #define FIPS_F_FIPS_SELFTEST_DSA 112 #define FIPS_F_FIPS_SELFTEST_ECDSA 131