diff options
| author | Mattias Andrée <m@maandree.se> | 2026-05-01 17:45:39 +0200 |
|---|---|---|
| committer | Mattias Andrée <m@maandree.se> | 2026-05-01 17:45:39 +0200 |
| commit | adfa8e1265f6155d1a582baa9929af198bb5d4de (patch) | |
| tree | e3cee62aa5a8768621cd294295f787b8cc54141b /argon2/is_algorithm.c | |
| parent | Add librecrypt.7 and README (diff) | |
| download | librecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.gz librecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.bz2 librecrypt-adfa8e1265f6155d1a582baa9929af198bb5d4de.tar.xz | |
Misc
Signed-off-by: Mattias Andrée <m@maandree.se>
Diffstat (limited to 'argon2/is_algorithm.c')
| -rw-r--r-- | argon2/is_algorithm.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/argon2/is_algorithm.c b/argon2/is_algorithm.c new file mode 100644 index 0000000..96a889a --- /dev/null +++ b/argon2/is_algorithm.c @@ -0,0 +1,81 @@ +/* See LICENSE file for copyright and license details. */ +#include "../common.h" +#ifndef TEST + + +#define DECLARE_IS_ALGORITHM(ALGO)\ + unsigned\ + librecrypt__##ALGO##__is_algorithm(const char *settings, size_t len)\ + {\ + return len >= sizeof("$"#ALGO"$") - 1u && !strncmp(settings, "$"#ALGO"$", sizeof("$"#ALGO"$") - 1u);\ + } + +IF__argon2i__SUPPORTED(DECLARE_IS_ALGORITHM(argon2i)) +IF__argon2d__SUPPORTED(DECLARE_IS_ALGORITHM(argon2d)) +IF__argon2id__SUPPORTED(DECLARE_IS_ALGORITHM(argon2id)) +IF__argon2ds__SUPPORTED(DECLARE_IS_ALGORITHM(argon2ds)) + + +#else + + +#define CHECK(ALGO, PREFIX, SUFFIX, RET)\ + EXPECT(librecrypt__##ALGO##__is_algorithm(PREFIX SUFFIX, sizeof(PREFIX) - 1u) == (RET)) + + +int +main(void) +{ +#if defined(SUPPORT_ARGON2I) + CHECK(argon2i, "", "", 0u); + CHECK(argon2i, "$argon2$", "", 0u); + CHECK(argon2i, "$argon2i", "$", 0u); + CHECK(argon2i, "$argon2i$", "", 1u); + CHECK(argon2i, "$ARGON2I$", "", 0u); + CHECK(argon2i, "$argon2i$x", "", 1u); + CHECK(argon2i, "$argon2d$", "", 0u); + CHECK(argon2i, "$argon2id$", "", 0u); + CHECK(argon2i, "$argon2ds$", "", 0u); +#endif + +#if defined(SUPPORT_ARGON2D) + CHECK(argon2d, "", "", 0u); + CHECK(argon2d, "$argon2$", "", 0u); + CHECK(argon2d, "$argon2d", "$", 0u); + CHECK(argon2d, "$argon2d$", "", 1u); + CHECK(argon2d, "$ARGON2D$", "", 0u); + CHECK(argon2d, "$argon2d$x", "", 1u); + CHECK(argon2d, "$argon2i$", "", 0u); + CHECK(argon2d, "$argon2id$", "", 0u); + CHECK(argon2d, "$argon2ds$", "", 0u); +#endif + +#if defined(SUPPORT_ARGON2ID) + CHECK(argon2id, "", "", 0u); + CHECK(argon2id, "$argon2$", "", 0u); + CHECK(argon2id, "$argon2id", "$", 0u); + CHECK(argon2id, "$argon2id$", "", 1u); + CHECK(argon2id, "$ARGON2ID$", "", 0u); + CHECK(argon2id, "$argon2id$x", "", 1u); + CHECK(argon2id, "$argon2i$", "", 0u); + CHECK(argon2id, "$argon2d$", "", 0u); + CHECK(argon2id, "$argon2ds$", "", 0u); +#endif + +#if defined(SUPPORT_ARGON2DS) + CHECK(argon2ds, "", "", 0u); + CHECK(argon2ds, "$argon2$", "", 0u); + CHECK(argon2ds, "$argon2ds", "$", 0u); + CHECK(argon2ds, "$argon2ds$", "", 1u); + CHECK(argon2ds, "$ARGON2DS$", "", 0u); + CHECK(argon2ds, "$argon2ds$x", "", 1u); + CHECK(argon2ds, "$argon2i$", "", 0u); + CHECK(argon2ds, "$argon2d$", "", 0u); + CHECK(argon2ds, "$argon2id$", "", 0u); +#endif + + return 0; +} + + +#endif |
