Skip to content

Commit

Permalink
refactor: remove unused evp support for md5+sha1 (aws#5106)
Browse files Browse the repository at this point in the history
  • Loading branch information
lrstewart authored Feb 12, 2025
1 parent e4a5a74 commit f3ae011
Show file tree
Hide file tree
Showing 26 changed files with 109 additions and 129 deletions.
51 changes: 46 additions & 5 deletions crypto/s2n_evp_signing.c
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
#include "crypto/s2n_evp_signing.h"

#include "crypto/s2n_evp.h"
#include "crypto/s2n_fips.h"
#include "crypto/s2n_pkey.h"
#include "crypto/s2n_rsa_pss.h"
#include "error/s2n_errno.h"
Expand Down Expand Up @@ -50,18 +51,58 @@ static S2N_RESULT s2n_evp_pkey_set_rsa_pss_saltlen(EVP_PKEY_CTX *pctx)
#endif
}

bool s2n_evp_signing_supported()
static bool s2n_evp_md5_sha1_is_supported()
{
#if defined(S2N_LIBCRYPTO_SUPPORTS_EVP_MD5_SHA1_HASH)
return true;
#else
return false;
#endif
}

static bool s2n_evp_md_ctx_set_pkey_ctx_is_supported()
{
#ifdef S2N_LIBCRYPTO_SUPPORTS_EVP_MD_CTX_SET_PKEY_CTX
/* We can only use EVP signing if the hash state has an EVP_MD_CTX
* that we can pass to the EVP signing methods.
*/
return s2n_hash_evp_fully_supported();
return true;
#else
return false;
#endif
}

bool s2n_evp_signing_supported()
{
/* We must use the FIPS-approved EVP APIs in FIPS mode,
* but we could also use the EVP APIs outside of FIPS mode.
* Only using the EVP APIs in FIPS mode was a choice made to reduce
* the impact of adding support for the EVP APIs.
* We should consider instead making the EVP APIs the default.
*/
if (!s2n_is_in_fips_mode()) {
return false;
}

/* Our EVP signing logic is intended to support FIPS 140-3.
* FIPS 140-3 does not allow externally calculated digests (except for
* signing, but not verifying, with ECDSA).
* See https://csrc.nist.gov/Projects/Cryptographic-Algorithm-Validation-Program/Digital-Signatures,
* and note that "component" tests only exist for ECDSA sign.
*
* We currently work around that restriction by calling EVP_MD_CTX_set_pkey_ctx,
* which lets us set a key on an existing hash state. This is important
* when we need to handle signing the TLS1.2 client cert verify message,
* which requires signing the entire message transcript. If EVP_MD_CTX_set_pkey_ctx
* is unavailable (true for openssl-1.0.2), our current EVP logic will not work.
*
* FIPS 140-3 is also not possible if EVP_md5_sha1() isn't available
* (again true for openssl-1.0.2). In that case, we use two separate hash
* states to track the md5 and sha1 parts of the hash separately. That means
* that we also have to calculate the digests separately, then combine the
* result. We therefore only have an externally calculated digest available
* for signing or verifying.
*/
return s2n_evp_md_ctx_set_pkey_ctx_is_supported() && s2n_evp_md5_sha1_is_supported();
}

/* If using EVP signing, override the sign and verify pkey methods.
* The EVP methods can handle all pkey types / signature algorithms.
*/
Expand Down
75 changes: 9 additions & 66 deletions crypto/s2n_hash.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,29 +15,22 @@

#include "crypto/s2n_hash.h"

#include "crypto/s2n_fips.h"
#include "crypto/s2n_evp_signing.h"
#include "crypto/s2n_hmac.h"
#include "crypto/s2n_openssl.h"
#include "error/s2n_errno.h"
#include "utils/s2n_safety.h"

static bool s2n_use_custom_md5_sha1()
{
#if defined(S2N_LIBCRYPTO_SUPPORTS_EVP_MD5_SHA1_HASH)
return false;
#else
return true;
#endif
}

static bool s2n_use_evp_impl()
{
return s2n_is_in_fips_mode();
}

bool s2n_hash_evp_fully_supported()
{
return s2n_use_evp_impl() && !s2n_use_custom_md5_sha1();
/* Our current EVP signing implementation requires EVP hashing.
*
* We could use the EVP hashing impl with legacy signing, but that would
* unnecessarily complicate the logic. The only known libcrypto that
* doesn't support EVP signing is openssl-1.0.2. Just let legacy
* libcryptos use legacy methods.
*/
return s2n_evp_signing_supported();
}

const EVP_MD *s2n_hash_alg_to_evp_md(s2n_hash_algorithm alg)
Expand Down Expand Up @@ -289,13 +282,8 @@ static int s2n_low_level_hash_free(struct s2n_hash_state *state)
static int s2n_evp_hash_new(struct s2n_hash_state *state)
{
POSIX_ENSURE_REF(state->digest.high_level.evp.ctx = S2N_EVP_MD_CTX_NEW());
if (s2n_use_custom_md5_sha1()) {
POSIX_ENSURE_REF(state->digest.high_level.evp_md5_secondary.ctx = S2N_EVP_MD_CTX_NEW());
}

state->is_ready_for_input = 0;
state->currently_in_hash = 0;

return S2N_SUCCESS;
}

Expand All @@ -311,13 +299,6 @@ static int s2n_evp_hash_init(struct s2n_hash_state *state, s2n_hash_algorithm al
return S2N_SUCCESS;
}

if (alg == S2N_HASH_MD5_SHA1 && s2n_use_custom_md5_sha1()) {
POSIX_ENSURE_REF(state->digest.high_level.evp_md5_secondary.ctx);
POSIX_GUARD_OSSL(EVP_DigestInit_ex(state->digest.high_level.evp.ctx, EVP_sha1(), NULL), S2N_ERR_HASH_INIT_FAILED);
POSIX_GUARD_OSSL(EVP_DigestInit_ex(state->digest.high_level.evp_md5_secondary.ctx, EVP_md5(), NULL), S2N_ERR_HASH_INIT_FAILED);
return S2N_SUCCESS;
}

POSIX_ENSURE_REF(s2n_hash_alg_to_evp_md(alg));
POSIX_GUARD_OSSL(EVP_DigestInit_ex(state->digest.high_level.evp.ctx, s2n_hash_alg_to_evp_md(alg), NULL), S2N_ERR_HASH_INIT_FAILED);
return S2N_SUCCESS;
Expand All @@ -335,12 +316,6 @@ static int s2n_evp_hash_update(struct s2n_hash_state *state, const void *data, u

POSIX_ENSURE_REF(EVP_MD_CTX_md(state->digest.high_level.evp.ctx));
POSIX_GUARD_OSSL(EVP_DigestUpdate(state->digest.high_level.evp.ctx, data, size), S2N_ERR_HASH_UPDATE_FAILED);

if (state->alg == S2N_HASH_MD5_SHA1 && s2n_use_custom_md5_sha1()) {
POSIX_ENSURE_REF(EVP_MD_CTX_md(state->digest.high_level.evp_md5_secondary.ctx));
POSIX_GUARD_OSSL(EVP_DigestUpdate(state->digest.high_level.evp_md5_secondary.ctx, data, size), S2N_ERR_HASH_UPDATE_FAILED);
}

return S2N_SUCCESS;
}

Expand All @@ -362,23 +337,6 @@ static int s2n_evp_hash_digest(struct s2n_hash_state *state, void *out, uint32_t

POSIX_ENSURE_REF(EVP_MD_CTX_md(state->digest.high_level.evp.ctx));

if (state->alg == S2N_HASH_MD5_SHA1 && s2n_use_custom_md5_sha1()) {
POSIX_ENSURE_REF(EVP_MD_CTX_md(state->digest.high_level.evp_md5_secondary.ctx));

uint8_t sha1_digest_size = 0;
POSIX_GUARD(s2n_hash_digest_size(S2N_HASH_SHA1, &sha1_digest_size));

unsigned int sha1_primary_digest_size = sha1_digest_size;
unsigned int md5_secondary_digest_size = digest_size - sha1_primary_digest_size;

POSIX_ENSURE(EVP_MD_CTX_size(state->digest.high_level.evp.ctx) <= sha1_digest_size, S2N_ERR_HASH_DIGEST_FAILED);
POSIX_ENSURE((size_t) EVP_MD_CTX_size(state->digest.high_level.evp_md5_secondary.ctx) <= md5_secondary_digest_size, S2N_ERR_HASH_DIGEST_FAILED);

POSIX_GUARD_OSSL(EVP_DigestFinal_ex(state->digest.high_level.evp.ctx, ((uint8_t *) out) + MD5_DIGEST_LENGTH, &sha1_primary_digest_size), S2N_ERR_HASH_DIGEST_FAILED);
POSIX_GUARD_OSSL(EVP_DigestFinal_ex(state->digest.high_level.evp_md5_secondary.ctx, out, &md5_secondary_digest_size), S2N_ERR_HASH_DIGEST_FAILED);
return S2N_SUCCESS;
}

POSIX_ENSURE((size_t) EVP_MD_CTX_size(state->digest.high_level.evp.ctx) <= digest_size, S2N_ERR_HASH_DIGEST_FAILED);
POSIX_GUARD_OSSL(EVP_DigestFinal_ex(state->digest.high_level.evp.ctx, out, &digest_size), S2N_ERR_HASH_DIGEST_FAILED);
return S2N_SUCCESS;
Expand All @@ -397,21 +355,12 @@ static int s2n_evp_hash_copy(struct s2n_hash_state *to, struct s2n_hash_state *f

POSIX_ENSURE_REF(to->digest.high_level.evp.ctx);
POSIX_GUARD_OSSL(EVP_MD_CTX_copy_ex(to->digest.high_level.evp.ctx, from->digest.high_level.evp.ctx), S2N_ERR_HASH_COPY_FAILED);

if (from->alg == S2N_HASH_MD5_SHA1 && s2n_use_custom_md5_sha1()) {
POSIX_ENSURE_REF(to->digest.high_level.evp_md5_secondary.ctx);
POSIX_GUARD_OSSL(EVP_MD_CTX_copy_ex(to->digest.high_level.evp_md5_secondary.ctx, from->digest.high_level.evp_md5_secondary.ctx), S2N_ERR_HASH_COPY_FAILED);
}

return S2N_SUCCESS;
}

static int s2n_evp_hash_reset(struct s2n_hash_state *state)
{
POSIX_GUARD_OSSL(S2N_EVP_MD_CTX_RESET(state->digest.high_level.evp.ctx), S2N_ERR_HASH_WIPE_FAILED);
if (state->alg == S2N_HASH_MD5_SHA1 && s2n_use_custom_md5_sha1()) {
POSIX_GUARD_OSSL(S2N_EVP_MD_CTX_RESET(state->digest.high_level.evp_md5_secondary.ctx), S2N_ERR_HASH_WIPE_FAILED);
}

/* hash_init resets the ready_for_input and currently_in_hash fields. */
return s2n_evp_hash_init(state, state->alg);
Expand All @@ -421,12 +370,6 @@ static int s2n_evp_hash_free(struct s2n_hash_state *state)
{
S2N_EVP_MD_CTX_FREE(state->digest.high_level.evp.ctx);
state->digest.high_level.evp.ctx = NULL;

if (s2n_use_custom_md5_sha1()) {
S2N_EVP_MD_CTX_FREE(state->digest.high_level.evp_md5_secondary.ctx);
state->digest.high_level.evp_md5_secondary.ctx = NULL;
}

state->is_ready_for_input = 0;
return S2N_SUCCESS;
}
Expand Down
2 changes: 0 additions & 2 deletions crypto/s2n_hash.h
Original file line number Diff line number Diff line change
Expand Up @@ -54,8 +54,6 @@ union s2n_hash_low_level_digest {
/* The evp_digest stores all OpenSSL structs to be used with OpenSSL's EVP hash API's. */
struct s2n_hash_evp_digest {
struct s2n_evp_digest evp;
/* Always store a secondary evp_digest to allow resetting a hash_state to MD5_SHA1 from another alg. */
struct s2n_evp_digest evp_md5_secondary;
};

/* s2n_hash_state stores the s2n_hash implementation being used (low-level or EVP),
Expand Down
5 changes: 0 additions & 5 deletions tests/cbmc/include/cbmc_proof/cbmc_utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,13 +47,8 @@ struct rc_keys_from_evp_pkey_ctx {
int pkey_eckey_refs;
};

/**
* In the `rc_keys_from_hash_state`, we store two `rc_keys_from_evp_pkey_ctx` objects:
* one for the `evp` field and another for `evp_md5_secondary` field.
*/
struct rc_keys_from_hash_state {
struct rc_keys_from_evp_pkey_ctx evp;
struct rc_keys_from_evp_pkey_ctx evp_md5;
};

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ HARNESS_FILE = $(HARNESS_ENTRY).c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c

Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_copy/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/ec_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/evp_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
PROJECT_SOURCES += $(SRCDIR)/utils/s2n_ensure.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_digest/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/md5_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/sha_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
PROJECT_SOURCES += $(SRCDIR)/utils/s2n_safety.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_free/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/ec_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/evp_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/cbmc_utils.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
Expand Down
10 changes: 4 additions & 6 deletions tests/cbmc/proofs/s2n_hash_free/s2n_hash_free_harness.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
* permissions and limitations under the License.
*/

#include "crypto/s2n_fips.h"
#include "crypto/s2n_evp_signing.h"
#include "crypto/s2n_hash.h"

#include <cbmc_proof/make_common_datastructures.h>
Expand All @@ -35,9 +35,8 @@ void s2n_hash_free_harness()
assert(s2n_hash_free(state) == S2N_SUCCESS);
if (state != NULL) {
assert(state->hash_impl->free != NULL);
if (s2n_is_in_fips_mode()) {
if (s2n_evp_signing_supported()) {
assert(state->digest.high_level.evp.ctx == NULL);
assert(state->digest.high_level.evp_md5_secondary.ctx == NULL);
assert_rc_decrement_on_hash_state(&saved_hash_state);
} else {
assert_rc_unchanged_on_hash_state(&saved_hash_state);
Expand All @@ -47,11 +46,10 @@ void s2n_hash_free_harness()

/* Cleanup after expected error cases, for memory leak check. */
if (state != NULL) {
/* 1. `free` leftover EVP_MD_CTX objects if `s2n_is_in_fips_mode`,
/* 1. `free` leftover EVP_MD_CTX objects if `s2n_evp_signing_supported`,
since `s2n_hash_free` is a NO-OP in that case. */
if (!s2n_is_in_fips_mode()) {
if (!s2n_evp_signing_supported()) {
S2N_EVP_MD_CTX_FREE(state->digest.high_level.evp.ctx);
S2N_EVP_MD_CTX_FREE(state->digest.high_level.evp_md5_secondary.ctx);
}

/* 2. `free` leftover reference-counted keys (i.e. those with non-zero ref-count),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ HARNESS_FILE = $(HARNESS_ENTRY).c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c

Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_init/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/md5_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/sha_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_new/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ HARNESS_FILE = $(HARNESS_ENTRY).c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/evp_override.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c

Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_reset/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/md5_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/sha_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
PROJECT_SOURCES += $(SRCDIR)/utils/s2n_safety.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hash_update/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/md5_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/sha_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
PROJECT_SOURCES += $(SRCDIR)/utils/s2n_safety.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hmac_copy/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/ec_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/evp_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hmac_digest/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ HARNESS_FILE = $(HARNESS_ENTRY).c

PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_copy.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_digest.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_update.c
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ HARNESS_FILE = $(HARNESS_ENTRY).c

PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_calculate_stacktrace.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_copy.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_digest.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_hash_reset.c
Expand Down
2 changes: 1 addition & 1 deletion tests/cbmc/proofs/s2n_hmac_free/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ PROOF_SOURCES += $(OPENSSL_SOURCE)/ec_override.c
PROOF_SOURCES += $(OPENSSL_SOURCE)/evp_override.c
PROOF_SOURCES += $(PROOF_SOURCE)/make_common_datastructures.c
PROOF_SOURCES += $(PROOF_SOURCE)/cbmc_utils.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_is_in_fips_mode.c
PROOF_SOURCES += $(PROOF_STUB)/s2n_evp_signing_supported.c
PROOF_SOURCES += $(PROOFDIR)/$(HARNESS_FILE)

PROJECT_SOURCES += $(SRCDIR)/crypto/s2n_hash.c
Expand Down
Loading

0 comments on commit f3ae011

Please sign in to comment.