From 201fe0bb55ddb5a7270c45aa58bcb91258c0a9ce Mon Sep 17 00:00:00 2001 From: Kees Cook Date: Tue, 22 May 2012 18:05:53 -0700 Subject: cryptolib: rename SHA* function to avoid openssl collision When linking tools that need OpenSSL functions on the target, the resolution of SHA* functions was being redirected to the firmware cryptolib instead of the OpenSSL implementations, which was causing OpenSSL calls to crash. This renames the internal implementations to avoid the collision. BUG=None TEST=make runtests passes, mount-encrypted runs on target again. Change-Id: Ica4fb04faf203ae3b4118c540f18d40239753810 Signed-off-by: Kees Cook Reviewed-on: https://gerrit.chromium.org/gerrit/23305 Reviewed-by: Bill Richardson --- firmware/lib/cryptolib/include/sha.h | 6 +++--- firmware/lib/cryptolib/sha1.c | 2 +- firmware/lib/cryptolib/sha256.c | 2 +- firmware/lib/cryptolib/sha512.c | 2 +- firmware/lib/cryptolib/sha_utility.c | 26 +++++++++++++------------- tests/sha_benchmark.c | 6 +++--- tests/sha_tests.c | 6 +++--- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/firmware/lib/cryptolib/include/sha.h b/firmware/lib/cryptolib/include/sha.h index a8164710..3ff2b5b2 100644 --- a/firmware/lib/cryptolib/include/sha.h +++ b/firmware/lib/cryptolib/include/sha.h @@ -69,19 +69,19 @@ uint8_t* SHA512_final(SHA512_CTX* ctx); * and stores it into [digest]. [digest] should be pre-allocated to * SHA1_DIGEST_SIZE bytes. */ -uint8_t* SHA1(const uint8_t* data, uint64_t len, uint8_t* digest); +uint8_t* internal_SHA1(const uint8_t* data, uint64_t len, uint8_t* digest); /* Convenience function for SHA-256. Computes hash on [data] of length [len]. * and stores it into [digest]. [digest] should be pre-allocated to * SHA256_DIGEST_SIZE bytes. */ -uint8_t* SHA256(const uint8_t* data, uint64_t len, uint8_t* digest); +uint8_t* internal_SHA256(const uint8_t* data, uint64_t len, uint8_t* digest); /* Convenience function for SHA-512. Computes hash on [data] of length [len]. * and stores it into [digest]. [digest] should be pre-allocated to * SHA512_DIGEST_SIZE bytes. */ -uint8_t* SHA512(const uint8_t* data, uint64_t len, uint8_t* digest); +uint8_t* internal_SHA512(const uint8_t* data, uint64_t len, uint8_t* digest); /*---- Utility functions/wrappers for message digests. */ diff --git a/firmware/lib/cryptolib/sha1.c b/firmware/lib/cryptolib/sha1.c index 897742c5..fa7e6653 100644 --- a/firmware/lib/cryptolib/sha1.c +++ b/firmware/lib/cryptolib/sha1.c @@ -273,7 +273,7 @@ void SHA1_init(SHA1_CTX* ctx) { ctx->count = 0; } -uint8_t* SHA1(const uint8_t *data, uint64_t len, uint8_t *digest) { +uint8_t* internal_SHA1(const uint8_t *data, uint64_t len, uint8_t *digest) { const uint8_t *p; int i; SHA1_CTX ctx; diff --git a/firmware/lib/cryptolib/sha256.c b/firmware/lib/cryptolib/sha256.c index fdd570f3..9b01380c 100644 --- a/firmware/lib/cryptolib/sha256.c +++ b/firmware/lib/cryptolib/sha256.c @@ -310,7 +310,7 @@ uint8_t* SHA256_final(SHA256_CTX* ctx) { return ctx->buf; } -uint8_t* SHA256(const uint8_t* data, uint64_t len, uint8_t* digest) { +uint8_t* internal_SHA256(const uint8_t* data, uint64_t len, uint8_t* digest) { const uint8_t* input_ptr; const uint8_t* result; uint64_t remaining_len; diff --git a/firmware/lib/cryptolib/sha512.c b/firmware/lib/cryptolib/sha512.c index 851cca89..25dcd387 100644 --- a/firmware/lib/cryptolib/sha512.c +++ b/firmware/lib/cryptolib/sha512.c @@ -336,7 +336,7 @@ uint8_t* SHA512_final(SHA512_CTX* ctx) } -uint8_t* SHA512(const uint8_t* data, uint64_t len, uint8_t* digest) { +uint8_t* internal_SHA512(const uint8_t* data, uint64_t len, uint8_t* digest) { const uint8_t* input_ptr; const uint8_t* result; uint64_t remaining_len; diff --git a/firmware/lib/cryptolib/sha_utility.c b/firmware/lib/cryptolib/sha_utility.c index c676040b..bd7e1400 100644 --- a/firmware/lib/cryptolib/sha_utility.c +++ b/firmware/lib/cryptolib/sha_utility.c @@ -91,24 +91,24 @@ uint8_t* DigestBuf(const uint8_t* buf, uint64_t len, int sig_algorithm) { 0, 0, 0, /* RSA 4096 */ - SHA256, + internal_SHA256, 0, 0, /* RSA 8192 */ 0, 0, #else - SHA1, /* RSA 1024 */ - SHA256, - SHA512, - SHA1, /* RSA 2048 */ - SHA256, - SHA512, - SHA1, /* RSA 4096 */ - SHA256, - SHA512, - SHA1, /* RSA 8192 */ - SHA256, - SHA512, + internal_SHA1, /* RSA 1024 */ + internal_SHA256, + internal_SHA512, + internal_SHA1, /* RSA 2048 */ + internal_SHA256, + internal_SHA512, + internal_SHA1, /* RSA 4096 */ + internal_SHA256, + internal_SHA512, + internal_SHA1, /* RSA 8192 */ + internal_SHA256, + internal_SHA512, #endif }; /* Call the appropriate hash function. */ diff --git a/tests/sha_benchmark.c b/tests/sha_benchmark.c index 9f4da367..a5bfc538 100644 --- a/tests/sha_benchmark.c +++ b/tests/sha_benchmark.c @@ -21,9 +21,9 @@ typedef struct HashFxTable { } HashFxTable; HashFxTable hash_functions[NUM_HASH_ALGORITHMS] = { - {SHA1, "sha1"}, - {SHA256, "sha256"}, - {SHA512, "sha512"} + {internal_SHA1, "sha1"}, + {internal_SHA256, "sha256"}, + {internal_SHA512, "sha512"} }; int main(int argc, char* argv[]) { diff --git a/tests/sha_tests.c b/tests/sha_tests.c index 65cbb462..6cc7e0f6 100644 --- a/tests/sha_tests.c +++ b/tests/sha_tests.c @@ -21,7 +21,7 @@ int SHA1_tests(void) { test_inputs[2] = (uint8_t *) long_msg; for (i = 0; i < 3; i++) { - SHA1(test_inputs[i], strlen((char *)test_inputs[i]), + internal_SHA1(test_inputs[i], strlen((char *)test_inputs[i]), sha1_digest); if (!memcmp(sha1_digest, sha1_results[i], SHA1_DIGEST_SIZE)) { fprintf(stderr, "Test vector %d PASSED for SHA-1\n", i+1); @@ -43,7 +43,7 @@ int SHA256_tests(void) { test_inputs[2] = (uint8_t *) long_msg; for (i = 0; i < 3; i++) { - SHA256(test_inputs[i], strlen((char *)test_inputs[i]), + internal_SHA256(test_inputs[i], strlen((char *)test_inputs[i]), sha256_digest); if (!memcmp(sha256_digest, sha256_results[i], SHA256_DIGEST_SIZE)) { fprintf(stderr, "Test vector %d PASSED for SHA-256\n", i+1); @@ -65,7 +65,7 @@ int SHA512_tests(void) { test_inputs[2] = (uint8_t *) long_msg; for (i = 0; i < 3; i++) { - SHA512(test_inputs[i], strlen((char *)test_inputs[i]), + internal_SHA512(test_inputs[i], strlen((char *)test_inputs[i]), sha512_digest); if (!memcmp(sha512_digest, sha512_results[i], SHA512_DIGEST_SIZE)) { fprintf(stderr, "Test vector %d PASSED for SHA-512\n", i+1); -- cgit v1.2.1