From 3a73ab675a19e2ea29b4cb1385db0188ce4997f8 Mon Sep 17 00:00:00 2001 From: Mattias Andrée Date: Sat, 24 Aug 2024 11:26:42 +0200 Subject: Make algorithms optional MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Mattias Andrée --- Makefile | 53 ++++++++++++++++++++++++++++++++++--- common.h | 34 ++++++++++++++++++------ config.mk | 41 +++++++++++++++++++++++++++- libhashsum.h | 34 +++++++++++++----------- libhashsum_init_md2_hasher.c | 12 +++++++++ libhashsum_init_md4_hasher.c | 12 +++++++++ libhashsum_init_md5_hasher.c | 12 +++++++++ libhashsum_init_ripemd_128_hasher.c | 12 +++++++++ libhashsum_init_ripemd_160_hasher.c | 12 +++++++++ libhashsum_init_ripemd_256_hasher.c | 12 +++++++++ libhashsum_init_ripemd_320_hasher.c | 12 +++++++++ libhashsum_init_sha0_hasher.c | 12 +++++++++ libhashsum_init_sha1_hasher.c | 12 +++++++++ libhashsum_init_sha2_hasher.c | 14 ++++++++++ md2.c | 11 ++++++-- md4.c | 11 ++++++-- md5.c | 11 ++++++-- mk/md2=no.mk | 1 + mk/md2=yes.mk | 1 + mk/md4=no.mk | 1 + mk/md4=yes.mk | 1 + mk/md5=no.mk | 1 + mk/md5=yes.mk | 1 + mk/no | 0 mk/ripemd-128=no.mk | 1 + mk/ripemd-128=yes.mk | 1 + mk/ripemd-160=no.mk | 1 + mk/ripemd-160=yes.mk | 1 + mk/ripemd-256=no.mk | 1 + mk/ripemd-256=yes.mk | 1 + mk/ripemd-320=no.mk | 1 + mk/ripemd-320=yes.mk | 1 + mk/sha1=no.mk | 1 + mk/sha1=yes.mk | 2 ++ mk/sha2=no.mk | 1 + mk/sha2=yes.mk | 2 ++ ripemd-128.c | 11 ++++++-- ripemd-160.c | 11 ++++++-- ripemd-256.c | 11 ++++++-- ripemd-320.c | 11 ++++++-- sha0.c | 11 ++++++-- sha1.c | 15 ++++++++--- sha_224.c | 15 ++++++++--- sha_256.c | 11 ++++++-- sha_384.c | 11 ++++++-- sha_512.c | 15 ++++++++--- sha_512_224.c | 11 ++++++-- sha_512_256.c | 11 ++++++-- 48 files changed, 416 insertions(+), 65 deletions(-) create mode 120000 mk/md2=no.mk create mode 100644 mk/md2=yes.mk create mode 120000 mk/md4=no.mk create mode 100644 mk/md4=yes.mk create mode 120000 mk/md5=no.mk create mode 100644 mk/md5=yes.mk create mode 100644 mk/no create mode 120000 mk/ripemd-128=no.mk create mode 100644 mk/ripemd-128=yes.mk create mode 120000 mk/ripemd-160=no.mk create mode 100644 mk/ripemd-160=yes.mk create mode 120000 mk/ripemd-256=no.mk create mode 100644 mk/ripemd-256=yes.mk create mode 120000 mk/ripemd-320=no.mk create mode 100644 mk/ripemd-320=yes.mk create mode 120000 mk/sha1=no.mk create mode 100644 mk/sha1=yes.mk create mode 120000 mk/sha2=no.mk create mode 100644 mk/sha2=yes.mk diff --git a/Makefile b/Makefile index f1cfb34..eb9004c 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,21 @@ .POSIX: + +# This are overwritten in $(CONFIGFILE), however they +# are added so that they are always defined even if +# the use has an out of date version of config.mk +DEFAULT_SUPPORT = yes +SUPPORT_SHA1 = $(DEFAULT_SUPPORT) +SUPPORT_SHA2 = $(DEFAULT_SUPPORT) +SUPPORT_MD2 = $(DEFAULT_SUPPORT) +SUPPORT_MD4 = $(DEFAULT_SUPPORT) +SUPPORT_MD5 = $(DEFAULT_SUPPORT) +SUPPORT_RIPEMD_128 = $(DEFAULT_SUPPORT) +SUPPORT_RIPEMD_160 = $(DEFAULT_SUPPORT) +SUPPORT_RIPEMD_256 = $(DEFAULT_SUPPORT) +SUPPORT_RIPEMD_320 = $(DEFAULT_SUPPORT) + + CONFIGFILE = config.mk include $(CONFIGFILE) @@ -16,6 +32,35 @@ LIB_VERSION = $(LIB_MAJOR).$(LIB_MINOR) LIB_NAME = hashsum +include mk/md2=$(SUPPORT_MD2).mk +include mk/md4=$(SUPPORT_MD4).mk +include mk/md5=$(SUPPORT_MD5).mk +include mk/ripemd-128=$(SUPPORT_RIPEMD_128).mk +include mk/ripemd-160=$(SUPPORT_RIPEMD_160).mk +include mk/ripemd-256=$(SUPPORT_RIPEMD_256).mk +include mk/ripemd-320=$(SUPPORT_RIPEMD_320).mk +include mk/sha1=$(SUPPORT_SHA1).mk +include mk/sha2=$(SUPPORT_SHA2).mk + + +CPPFLAGS_FULL =\ + $(CPPFLAGS)\ + $(CPPFLAGS_MD2)\ + $(CPPFLAGS_MD4)\ + $(CPPFLAGS_MD5)\ + $(CPPFLAGS_RIPEMD_128)\ + $(CPPFLAGS_RIPEMD_160)\ + $(CPPFLAGS_RIPEMD_256)\ + $(CPPFLAGS_RIPEMD_320)\ + $(CPPFLAGS_SHA1)\ + $(CPPFLAGS_SHA2) + +LDFLAGS_FULL =\ + $(LDFLAGS)\ + $(LDFLAGS_SHA1)\ + $(LDFLAGS_SHA2) + + OBJ =\ libhashsum_init_hasher.o\ libhashsum_init_md2_hasher.o\ @@ -68,16 +113,16 @@ $(TOBJ): $(HDR) $(TEST): libhashsum.a .c.o: - $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + $(CC) -c -o $@ $< $(CFLAGS) $(CPPFLAGS_FULL) .c.lo: - $(CC) -fPIC -c -o $@ $< $(CFLAGS) $(CPPFLAGS) + $(CC) -fPIC -c -o $@ $< $(CFLAGS) $(CPPFLAGS_FULL) .c.t: - $(CC) -o $@ $< libhashsum.a $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) + $(CC) -o $@ $< libhashsum.a $(CFLAGS) $(CPPFLAGS_FULL) $(LDFLAGS_FULL) .o.t: - $(CC) -o $@ $< libhashsum.a $(LDFLAGS) + $(CC) -o $@ $< libhashsum.a $(LDFLAGS_FULL) libhashsum.a: $(OBJ) @rm -f -- $@ diff --git a/common.h b/common.h index 3d0972c..f41ef53 100644 --- a/common.h +++ b/common.h @@ -160,17 +160,17 @@ run_tests(const char *name, enum libhashsum_algorithm algorithm, size_t hash_siz *p = '\0'; } if (testcases[i].input_repeat == 1) - printf("[\033[1;%s\033[m] %s(\"%s\"%s) = %s\n", - caseok ? "32mPASS" : "31mFAIL", name, input, bitstr, hexsum); + fprintf(stderr, "[\033[1;%s\033[m] %s(\"%s\"%s) = %s\n", + caseok ? "32mPASS" : "31mFAIL", name, input, bitstr, hexsum); else if (!testcases[i].input_repeat && *bitstr) - printf("[\033[1;%s\033[m] %s(%s) = %s\n", - caseok ? "32mPASS" : "31mFAIL", name, &bitstr[3], hexsum); + fprintf(stderr, "[\033[1;%s\033[m] %s(%s) = %s\n", + caseok ? "32mPASS" : "31mFAIL", name, &bitstr[3], hexsum); else if (!testcases[i].input_repeat) - printf("[\033[1;%s\033[m] %s(\"\") = %s\n", - caseok ? "32mPASS" : "31mFAIL", name, hexsum); + fprintf(stderr, "[\033[1;%s\033[m] %s(\"\") = %s\n", + caseok ? "32mPASS" : "31mFAIL", name, hexsum); else - printf("[\033[1;%s\033[m] %s(%zu * \"%s\"%s) = %s\n", - caseok ? "32mPASS" : "31mFAIL", name, testcases[i].input_repeat, input, bitstr, hexsum); + fprintf(stderr, "[\033[1;%s\033[m] %s(%zu * \"%s\"%s) = %s\n", + caseok ? "32mPASS" : "31mFAIL", name, testcases[i].input_repeat, input, bitstr, hexsum); free(input); } return !ok; @@ -182,3 +182,21 @@ run_tests(const char *name, enum libhashsum_algorithm algorithm, size_t hash_siz testcases, sizeof(testcases) / sizeof(*testcases), hexsum) #endif + + +#ifdef TEST_UNSUPPORTED +# include + +# define TEST_MAIN(NAME, ID)\ + struct libhashsum_hasher hasher;\ + if (!libhashsum_init_hasher(&hasher, LIBHASHSUM_##ID)) {\ + fprintf(stderr, "expected libhashsum_init_hasher to fail, but it returned successfully\n");\ + return 2;\ + }\ + if (errno != ENOSYS) {\ + perror("expected libhashsum_init_hasher to set errno to ENOSYS, but got");\ + return 2;\ + }\ + return 0; + +#endif diff --git a/config.mk b/config.mk index ff855ca..5b5e94f 100644 --- a/config.mk +++ b/config.mk @@ -5,4 +5,43 @@ CC = c99 CPPFLAGS = -D_DEFAULT_SOURCE -D_BSD_SOURCE -D_XOPEN_SOURCE=700 -D_GNU_SOURCE CFLAGS = -LDFLAGS = -lsha1 -lsha2 +LDFLAGS = + + +LDFLAGS_LIBSHA1 = -lsha1 +CPPFLAGS_LIBSHA1 = + +LDFLAGS_LIBSHA2 = -lsha2 +CPPFLAGS_LIBSHA2 = + + +DEFAULT_SUPPORT = yes +# Shall either be "yes" or "no", the same applies below where this macro is used + + +SUPPORT_SHA1 = $(DEFAULT_SUPPORT) +# Includes SHA0 and SHA1, requires libsha1 + +SUPPORT_SHA2 = $(DEFAULT_SUPPORT) +# Includes SHA-224, SHA-256, SHA-384, SHA-512, SHA-512/224, and SHA-512/256, requires libsha2 + +SUPPORT_MD2 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_MD4 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_MD5 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_RIPEMD_128 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_RIPEMD_160 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_RIPEMD_256 = $(DEFAULT_SUPPORT) +# Support is built in + +SUPPORT_RIPEMD_320 = $(DEFAULT_SUPPORT) +# Support is built in diff --git a/libhashsum.h b/libhashsum.h index 0bfb48a..1e453b3 100644 --- a/libhashsum.h +++ b/libhashsum.h @@ -382,7 +382,8 @@ struct libhashsum_hasher { * @param algorithm The hashing algorithm * @return 0 on success, -1 on failure * - * @throws EINVAL `algorithm` is unsupported + * @throws EINVAL `algorithm` is not recognised + * @throws ENOSYS Support for `algorithm` was excluded at compile time * * @since 1.0 */ @@ -396,7 +397,7 @@ int libhashsum_init_hasher(struct libhashsum_hasher *this, enum libhashsum_algor * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -410,7 +411,7 @@ int libhashsum_init_md2_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -424,7 +425,7 @@ int libhashsum_init_md4_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -438,7 +439,7 @@ int libhashsum_init_md5_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -452,7 +453,7 @@ int libhashsum_init_ripemd_128_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -466,7 +467,7 @@ int libhashsum_init_ripemd_160_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -480,7 +481,7 @@ int libhashsum_init_ripemd_256_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -494,7 +495,7 @@ int libhashsum_init_ripemd_320_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -508,7 +509,7 @@ int libhashsum_init_sha0_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -522,7 +523,7 @@ int libhashsum_init_sha1_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -536,7 +537,7 @@ int libhashsum_init_sha_224_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -550,7 +551,7 @@ int libhashsum_init_sha_256_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -564,7 +565,7 @@ int libhashsum_init_sha_384_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -578,7 +579,7 @@ int libhashsum_init_sha_512_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -592,7 +593,7 @@ int libhashsum_init_sha_512_224_hasher(struct libhashsum_hasher *this); * @param this The output parameter for the functions, details, and state * @return 0 on success, -1 on failure * - * Failure isn't actually possible, so this function always return 0 + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ @@ -612,6 +613,7 @@ int libhashsum_init_sha_512_256_hasher(struct libhashsum_hasher *this); * @throws EINVAL `hashbits` is invalid (neither 224, 256, 384, nor 512) * @throws EINVAL The combination of `algobits` and `hashbits` is invalid * (`hashbits` is 384 or 512 but `algobits` is 32) + * @throws ENOSYS Support was excluded at compile time * * @since 1.0 */ diff --git a/libhashsum_init_md2_hasher.c b/libhashsum_init_md2_hasher.c index e3e929e..dd20429 100644 --- a/libhashsum_init_md2_hasher.c +++ b/libhashsum_init_md2_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_MD2 static const unsigned char S[] = { @@ -143,3 +144,14 @@ libhashsum_init_md2_hasher(struct libhashsum_hasher *this) memset(&this->state.md2, 0, sizeof(this->state.md2)); return 0; } + + +#else +int +libhashsum_init_md2_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_md4_hasher.c b/libhashsum_init_md4_hasher.c index f3c26ac..fc4d5d9 100644 --- a/libhashsum_init_md4_hasher.c +++ b/libhashsum_init_md4_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_MD4 #define LETO32(X)\ @@ -190,3 +191,14 @@ libhashsum_init_md4_hasher(struct libhashsum_hasher *this) this->state.md4.h.h32[3] = UINT32_C(0x10325476); return 0; } + + +#else +int +libhashsum_init_md4_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_md5_hasher.c b/libhashsum_init_md5_hasher.c index 7bf19af..8c06527 100644 --- a/libhashsum_init_md5_hasher.c +++ b/libhashsum_init_md5_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_MD5 static const uint32_t S[64] = { @@ -205,3 +206,14 @@ libhashsum_init_md5_hasher(struct libhashsum_hasher *this) this->state.md5.h.h32[3] = UINT32_C(0x10325476); return 0; } + + +#else +int +libhashsum_init_md5_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_ripemd_128_hasher.c b/libhashsum_init_ripemd_128_hasher.c index ef9f215..699de97 100644 --- a/libhashsum_init_ripemd_128_hasher.c +++ b/libhashsum_init_ripemd_128_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_RIPEMD_128 #define LETO32(X)\ @@ -226,3 +227,14 @@ libhashsum_init_ripemd_128_hasher(struct libhashsum_hasher *this) this->state.ripemd_128.h.h32[3] = UINT32_C(0x10325476); return 0; } + + +#else +int +libhashsum_init_ripemd_128_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_ripemd_160_hasher.c b/libhashsum_init_ripemd_160_hasher.c index 001cbb8..b37aec8 100644 --- a/libhashsum_init_ripemd_160_hasher.c +++ b/libhashsum_init_ripemd_160_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_RIPEMD_160 #define LETO32(X)\ @@ -230,3 +231,14 @@ libhashsum_init_ripemd_160_hasher(struct libhashsum_hasher *this) this->state.ripemd_160.h.h32[4] = UINT32_C(0xc3d2e1f0); return 0; } + + +#else +int +libhashsum_init_ripemd_160_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_ripemd_256_hasher.c b/libhashsum_init_ripemd_256_hasher.c index f08acf7..beda29f 100644 --- a/libhashsum_init_ripemd_256_hasher.c +++ b/libhashsum_init_ripemd_256_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_RIPEMD_256 #define LETO32(X)\ @@ -241,3 +242,14 @@ libhashsum_init_ripemd_256_hasher(struct libhashsum_hasher *this) this->state.ripemd_256.h.h32[7] = UINT32_C(0x01234567); return 0; } + + +#else +int +libhashsum_init_ripemd_256_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_ripemd_320_hasher.c b/libhashsum_init_ripemd_320_hasher.c index 2f09ce7..c9cda07 100644 --- a/libhashsum_init_ripemd_320_hasher.c +++ b/libhashsum_init_ripemd_320_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_RIPEMD_320 #define LETO32(X)\ @@ -249,3 +250,14 @@ libhashsum_init_ripemd_320_hasher(struct libhashsum_hasher *this) this->state.ripemd_320.h.h32[9] = UINT32_C(0x3c2d1e0f); return 0; } + + +#else +int +libhashsum_init_ripemd_320_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_sha0_hasher.c b/libhashsum_init_sha0_hasher.c index 8f5854a..6efd8fc 100644 --- a/libhashsum_init_sha0_hasher.c +++ b/libhashsum_init_sha0_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_SHA0 LIBHASHSUM_1_NONNULL_ @@ -67,3 +68,14 @@ libhashsum_init_sha0_hasher(struct libhashsum_hasher *this) libsha1_init(&this->state.sha0.s, LIBSHA1_0); return 0; } + + +#else +int +libhashsum_init_sha0_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_sha1_hasher.c b/libhashsum_init_sha1_hasher.c index 8287429..a3aef8e 100644 --- a/libhashsum_init_sha1_hasher.c +++ b/libhashsum_init_sha1_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_SHA1 LIBHASHSUM_1_NONNULL_ @@ -67,3 +68,14 @@ libhashsum_init_sha1_hasher(struct libhashsum_hasher *this) libsha1_init(&this->state.sha1.s, LIBSHA1_1); return 0; } + + +#else +int +libhashsum_init_sha1_hasher(struct libhashsum_hasher *this) +{ + (void) this; + errno = ENOSYS; + return -1; +} +#endif diff --git a/libhashsum_init_sha2_hasher.c b/libhashsum_init_sha2_hasher.c index ab64517..9246e48 100644 --- a/libhashsum_init_sha2_hasher.c +++ b/libhashsum_init_sha2_hasher.c @@ -1,5 +1,6 @@ /* See LICENSE file for copyright and license details. */ #include "common.h" +#ifdef SUPPORT_SHA2 LIBHASHSUM_1_NONNULL_ @@ -91,3 +92,16 @@ libhashsum_init_sha2_hasher(struct libhashsum_hasher *this, unsigned algobits, s libsha2_init(&this->state.sha2.s, algo); return 0; } + + +#else +int +libhashsum_init_sha2_hasher(struct libhashsum_hasher *this, unsigned algobits, size_t hashbits) +{ + (void) this; + (void) algobits; + (void) hashbits; + errno = ENOSYS; + return -1; +} +#endif diff --git a/md2.c b/md2.c index baa2039..9c15cea 100644 --- a/md2.c +++ b/md2.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_MD2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -18,6 +19,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/md4.c b/md4.c index 948b848..065ca26 100644 --- a/md4.c +++ b/md4.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_MD4 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -18,6 +19,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/md5.c b/md5.c index 2ff159d..a56ecfc 100644 --- a/md5.c +++ b/md5.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_MD5 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -109,6 +110,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/mk/md2=no.mk b/mk/md2=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/md2=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/md2=yes.mk b/mk/md2=yes.mk new file mode 100644 index 0000000..b387519 --- /dev/null +++ b/mk/md2=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_MD2 = -DSUPPORT_MD2 diff --git a/mk/md4=no.mk b/mk/md4=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/md4=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/md4=yes.mk b/mk/md4=yes.mk new file mode 100644 index 0000000..71ea9db --- /dev/null +++ b/mk/md4=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_MD4 = -DSUPPORT_MD4 diff --git a/mk/md5=no.mk b/mk/md5=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/md5=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/md5=yes.mk b/mk/md5=yes.mk new file mode 100644 index 0000000..4a537e7 --- /dev/null +++ b/mk/md5=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_MD5 = -DSUPPORT_MD5 diff --git a/mk/no b/mk/no new file mode 100644 index 0000000..e69de29 diff --git a/mk/ripemd-128=no.mk b/mk/ripemd-128=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/ripemd-128=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/ripemd-128=yes.mk b/mk/ripemd-128=yes.mk new file mode 100644 index 0000000..20ccc01 --- /dev/null +++ b/mk/ripemd-128=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_RIPEMD_128 = -DSUPPORT_RIPEMD_128 diff --git a/mk/ripemd-160=no.mk b/mk/ripemd-160=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/ripemd-160=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/ripemd-160=yes.mk b/mk/ripemd-160=yes.mk new file mode 100644 index 0000000..a7bdaef --- /dev/null +++ b/mk/ripemd-160=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_RIPEMD_160 = -DSUPPORT_RIPEMD_160 diff --git a/mk/ripemd-256=no.mk b/mk/ripemd-256=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/ripemd-256=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/ripemd-256=yes.mk b/mk/ripemd-256=yes.mk new file mode 100644 index 0000000..5ad2c42 --- /dev/null +++ b/mk/ripemd-256=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_RIPEMD_256 = -DSUPPORT_RIPEMD_256 diff --git a/mk/ripemd-320=no.mk b/mk/ripemd-320=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/ripemd-320=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/ripemd-320=yes.mk b/mk/ripemd-320=yes.mk new file mode 100644 index 0000000..fefe259 --- /dev/null +++ b/mk/ripemd-320=yes.mk @@ -0,0 +1 @@ +CPPFLAGS_RIPEMD_320 = -DSUPPORT_RIPEMD_320 diff --git a/mk/sha1=no.mk b/mk/sha1=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/sha1=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/sha1=yes.mk b/mk/sha1=yes.mk new file mode 100644 index 0000000..c15ebc3 --- /dev/null +++ b/mk/sha1=yes.mk @@ -0,0 +1,2 @@ +CPPFLAGS_SHA1 = $(CPPFLAGS_LIBSHA1) -DSUPPORT_SHA0 -DSUPPORT_SHA1 +LDFLAGS_SHA1 = $(LDFLAGS_LIBSHA1) diff --git a/mk/sha2=no.mk b/mk/sha2=no.mk new file mode 120000 index 0000000..54299a4 --- /dev/null +++ b/mk/sha2=no.mk @@ -0,0 +1 @@ +no \ No newline at end of file diff --git a/mk/sha2=yes.mk b/mk/sha2=yes.mk new file mode 100644 index 0000000..cb26c08 --- /dev/null +++ b/mk/sha2=yes.mk @@ -0,0 +1,2 @@ +CPPFLAGS_SHA2 = $(CPPFLAGS_LIBSHA2) -DSUPPORT_SHA2 +LDFLAGS_SHA2 = $(LDFLAGS_LIBSHA2) diff --git a/ripemd-128.c b/ripemd-128.c index 8e15e07..993c031 100644 --- a/ripemd-128.c +++ b/ripemd-128.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_RIPEMD_128 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -16,6 +17,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/ripemd-160.c b/ripemd-160.c index a5c4111..9f3f4dd 100644 --- a/ripemd-160.c +++ b/ripemd-160.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_RIPEMD_160 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -16,6 +17,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/ripemd-256.c b/ripemd-256.c index 06f45ef..a892b2b 100644 --- a/ripemd-256.c +++ b/ripemd-256.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_RIPEMD_256 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -25,6 +26,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/ripemd-320.c b/ripemd-320.c index ea39bc6..6d9b954 100644 --- a/ripemd-320.c +++ b/ripemd-320.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_RIPEMD_320 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -25,6 +26,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha0.c b/sha0.c index 5ce216a..3627f61 100644 --- a/sha0.c +++ b/sha0.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA0 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -8,6 +9,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha1.c b/sha1.c index faeea45..eca40ba 100644 --- a/sha1.c +++ b/sha1.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA1 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -14,11 +15,11 @@ static struct testcase testcases[] = { {1, 0, "abc", "a9993e364706816aba3e25717850c26c9cd0d89d"}, {1, 0, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "84983e441c3bd26ebaae4aa1f95129e5e54670f1"}, -#ifdef MASSIVE_TESTS +# ifdef MASSIVE_TESTS {0x20000000UL, 0, "A", "df3f26fce8fa7bec2c61d0506749a320ac7dc942"}, {0x41000000UL, 8, "\0", "320c617b0b6ee1b6f9c3271eae135f40cae22c10"}, {0x6000003FUL, 0, "\x84", "b20aa99b62e6a480fd93b4d24b2c19ffac649bb8"}, -#endif +# endif {1000000UL, 8, "\0", "bef3595266a65a2ff36b700a75e8ed95c68210b6"}, {0, 1, "\x00", "bb6b3e18f0115b57925241676f5b1ae88747b08a"}, {0, 2, "\x01", "ec6b39952e1a3ec3ab3507185cf756181c84bbe2"}, @@ -30,6 +31,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_224.c b/sha_224.c index bffca4c..f0a9287 100644 --- a/sha_224.c +++ b/sha_224.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -12,11 +13,11 @@ static struct testcase testcases[] = { {1000UL, 0, "A", "a8d0c66b5c6fdfd836eb3c6d04d32dfe66c3b1f168b488bf4c9c66ce"}, {1005UL, 0, "\x99", "cb00ecd03788bf6c0908401e0eb053ac61f35e7e20a2cfd7bd96d640"}, {1000000UL, 8, "\0", "3a5d74b68f14f3a4b2be9289b8d370672d0b3d2f53bc303c59032df3"}, -#ifdef MASSIVE_TESTS +# ifdef MASSIVE_TESTS {0x20000000UL, 0, "A", "c4250083cf8230bf21065b3014baaaf9f76fecefc21f91cf237dedc9"}, {0x41000000UL, 8, "\0", "014674abc5cb980199935695af22fab683748f4261d4c6492b77c543"}, {0x6000003FUL, 0, "\x84", "a654b50b767a8323c5b519f467d8669837142881dc7ad368a7d5ef8f"}, -#endif +# endif {1, 0, "abc", "23097d223405d8228642a477bda255b32aadbce4bda0b3f7e36c9da7"}, {1, 0, "abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq", "75388b16512776cc5dba5da1fd890150b0c6455cb4f58b1952522525"}, @@ -30,6 +31,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_256.c b/sha_256.c index 23bf526..17dda3a 100644 --- a/sha_256.c +++ b/sha_256.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -26,6 +27,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_384.c b/sha_384.c index 754d8d1..802ace0 100644 --- a/sha_384.c +++ b/sha_384.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -37,6 +38,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_512.c b/sha_512.c index c3d07f1..01b9460 100644 --- a/sha_512.c +++ b/sha_512.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -31,7 +32,7 @@ static struct testcase testcases[] = { {1000000UL, 8, "\0", "ce044bc9fd43269d5bbc946cbebc3bb711341115cc4abdf2edbc3ff2c57ad4b1" "5deb699bda257fea5aef9c6e55fcf4cf9dc25a8c3ce25f2efe90908379bff7ed"}, -#ifdef MASSIVE_TESTS +# ifdef MASSIVE_TESTS {0x20000000UL, 0, "Z", "da172279f3ebbda95f6b6e1e5f0ebec682c25d3d93561a1624c2fa9009d64c7e" "9923f3b46bcaf11d39a531f43297992ba4155c7e827bd0f1e194ae7ed6de4cac"}, @@ -41,7 +42,7 @@ static struct testcase testcases[] = { {0x6000003EUL, 0, "B", "fd05e13eb771f05190bd97d62647157ea8f1f6949a52bb6daaedbad5f578ec59" "b1b8d6c4a7ecb2feca6892b4dc138771670a0f3bd577eea326aed40ab7dd58b1"}, -#endif +# endif {1, 0, "abc", "ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a" "2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f"}, @@ -52,6 +53,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_512_224.c b/sha_512_224.c index 8771f88..a95bf92 100644 --- a/sha_512_224.c +++ b/sha_512_224.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -12,6 +13,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { diff --git a/sha_512_256.c b/sha_512_256.c index 1f41597..f4b168b 100644 --- a/sha_512_256.c +++ b/sha_512_256.c @@ -1,6 +1,7 @@ /* See LICENSE file for copyright and license details. */ -#define TEST -#include "common.h" +#ifdef SUPPORT_SHA2 +# define TEST +# include "common.h" static struct testcase testcases[] = { @@ -12,6 +13,12 @@ static struct testcase testcases[] = { }; +#else +# define TEST_UNSUPPORTED +# include "common.h" +#endif + + int main(void) { -- cgit v1.2.3-70-g09d2