aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <m@maandree.se>2026-05-20 20:29:04 +0200
committerMattias Andrée <m@maandree.se>2026-05-20 20:33:29 +0200
commit3454e0328d57f57852bf12d698b6b4a4736d0719 (patch)
treeb05330eabb10715b8fee2bbe022805ef386276b8
parentAdd librecrypt_is_enabled (diff)
downloadlibrecrypt-3454e0328d57f57852bf12d698b6b4a4736d0719.tar.gz
librecrypt-3454e0328d57f57852bf12d698b6b4a4736d0719.tar.bz2
librecrypt-3454e0328d57f57852bf12d698b6b4a4736d0719.tar.xz
Prepare for supporting custom algorithms
Signed-off-by: Mattias Andrée <m@maandree.se>
-rw-r--r--TODO2
-rw-r--r--argon2/hash.c2
-rw-r--r--argon2/test_supported.c2
-rw-r--r--common.h56
-rw-r--r--librecrypt_algorithms_.c2
-rw-r--r--librecrypt_check_settings_.c594
-rw-r--r--librecrypt_find_first_algorithm_.c6
-rw-r--r--librecrypt_get_encoding.c2
-rw-r--r--librecrypt_hash_.c2
-rw-r--r--librecrypt_make_settings.c2
-rw-r--r--librecrypt_settings_prefix.c8
-rw-r--r--librecrypt_test_supported.c2
12 files changed, 363 insertions, 317 deletions
diff --git a/TODO b/TODO
index d766a29..43a833f 100644
--- a/TODO
+++ b/TODO
@@ -16,5 +16,5 @@ Add support for bsdicrypt.
Add support for descrypt.
Add support for bigcrypt.
Add support for NT Hash.
-(Maybe) Add support for custom hash functions.
+Add support for custom hash functions.
Add support (via the "reserved" parameter) for pepper.
diff --git a/argon2/hash.c b/argon2/hash.c
index d06ec1e..2a41c69 100644
--- a/argon2/hash.c
+++ b/argon2/hash.c
@@ -106,7 +106,7 @@ librecrypt__argon2__hash(char *restrict out_buffer, size_t size, const char *phr
(void) reserved;
/* Parse `settings` */
- r = librecrypt_check_settings_(settings, prefix,
+ r = librecrypt_scan_settings_(settings, prefix,
"$argon2%^s$%^sm=%^p,t=%^p,p=%^p$%&b$%^h",
&type, "id", "i", "ds", "d", NULL, /* order partially matters */
&version, "v=19$", "v=16$", "", NULL, /* empty string last */
diff --git a/argon2/test_supported.c b/argon2/test_supported.c
index 7f47905..f41188a 100644
--- a/argon2/test_supported.c
+++ b/argon2/test_supported.c
@@ -20,7 +20,7 @@ librecrypt__argon2__test_supported(const char *phrase, size_t len, int text, con
(void) text;
/* Validate string format and parameters */
- r = librecrypt_check_settings_(settings, prefix,
+ r = librecrypt_scan_settings_(settings, prefix,
"$%*$%sm=%p,t=%p,p=%p$%b$%^h",
"v=16$", "v=19$", "", NULL,
RANGE(LIBAR2_MIN_M_COST, LIBAR2_MAX_M_COST),
diff --git a/common.h b/common.h
index 116ec17..b498943 100644
--- a/common.h
+++ b/common.h
@@ -110,8 +110,32 @@ enum action {
/**
* Hash algorithm information and implementation
+ *
+ * Current limitations:
+ *
+ * - The algorithm must not use the '*' symbol except
+ * in the way the librecrypt library uses '*' for
+ * specifying sizes, in bytes (after base64-decoding),
+ * of randomised data (salt) and the hash result
+ *
+ * - The algorithm must not use the '>' symbol
+ *
+ * - The hash must be att the end, immediately after
+ * the last '$' (some expections exists for legacy
+ * hash algorithms), and empty must be usable to
+ * specify default hash size
+ *
+ * - Salts and hashes must be encoded in some variant
+ * of base64 where the bytes (represented with the
+ * most significant bit first) a₇a₆a₅a₄a₃a₂a₁a₀,
+ * b₇b₆b₅b₄b₃b₂b₁b₀, and c₇c₆c₅c₄c₃c₂c₁c₀ are
+ * rearranged to a₇a₆a₅a₄a₃a₂, a₁a₀b₇b₆b₅b₄,
+ * b₃b₂b₁b₀c₇c₆, c₅c₄c₃c₂c₁c₀, and missing bits
+ * are set to 0; and padding if supported at all,
+ * is only allowed, up to 3 pad letters, at the
+ * end to pad the output to a multiple of 4 letters
*/
-struct algorithm {
+struct librecrypt_algorithm {
/**
* Determine if a password hash string
* selects the algorithm
@@ -186,7 +210,9 @@ struct algorithm {
* @param memcost See `librecrypt_make_settings`
* @param timecost See `librecrypt_make_settings`
* @param gensalt See `librecrypt_make_settings`
- * @param rng See `librecrypt_make_settings`
+ * @param rng See `librecrypt_make_settings`,
+ * except the function will not be called
+ * with `rng` set to `NULL`
* @param user See `librecrypt_make_settings`
* @return See `librecrypt_make_settings`
* @throws See `librecrypt_make_settings`
@@ -199,12 +225,21 @@ struct algorithm {
/**
* Expected argument for the `lut` parameter
* of the `librecrypt_encode` function
+ *
+ * This shall repeat a 64 character ASCII
+ * alphabet 4 times
*/
const char *encoding_lut;
/**
* Expected argument for the `lut` parameter
* of the `librecrypt_decode` function
+ *
+ * This shall unique map the letters in
+ * `.encoding_lut` to there initial position
+ * in `.encoding_lut` (that's, uniquely to
+ * the range [0, 63]). All other bytes
+ * (including `.pad`) shall map to `0xFFu`
*/
const unsigned char *decoding_lut;
@@ -223,12 +258,21 @@ struct algorithm {
/**
* Expected argument for the `strict_pad` parameter
* of the `librecrypt_decode` function
+ *
+ * Shall be either 1 (always pad when encoding,
+ * and require padding when decoding) or 0
+ * (do not pad when encoding, but allow padding
+ * (provided that `.pad != 0`) when decoding)
*/
signed char strict_pad;
/**
* Expected argument for the `pad` parameter
* of the `librecrypt_decode` function
+ *
+ * The pad character, used to pad base64-encoding
+ * to a multiple of 4 letters, shall be `'\0'` if
+ * not specified
*/
char pad;
};
@@ -286,7 +330,7 @@ struct algorithm {
* The list is terminated by `END_OF_ALGORITHMS`,
* which can be checked using `IS_END_OF_ALGORITHMS`
*/
-extern struct algorithm librecrypt_algorithms_[];
+extern struct librecrypt_algorithm librecrypt_algorithms_[];
/**
* This just points to memset(3), but the pointer is volalite
@@ -393,7 +437,7 @@ int librecrypt_fill_with_random_(void *out, size_t n, ssize_t (*rng)(void *out,
* This function is MT-Safe And AS-Safe
*/
LIBRECRYPT_READ_MEM__(1, 2) LIBRECRYPT_NONNULL__ LIBRECRYPT_WUR__ HIDDEN
-const struct algorithm *librecrypt_find_first_algorithm_(const char *settings, size_t len);
+const struct librecrypt_algorithm *librecrypt_find_first_algorithm_(const char *settings, size_t len);
/**
@@ -453,9 +497,11 @@ const struct algorithm *librecrypt_find_first_algorithm_(const char *settings, s
* "%^h" - Same as "%^b"
* "%&h" - Same as "%&b"
* @return 1 if `string` matches `fmt`, 0 otherwise
+ *
+ * This function will call abort(3) if misused.
*/
LIBRECRYPT_READ_MEM__(1, 2) LIBRECRYPT_NONNULL_I__(3) LIBRECRYPT_WUR__ HIDDEN
-int librecrypt_check_settings_(const char *settings, size_t len, const char *fmt, ...);
+int librecrypt_scan_settings_(const char *settings, size_t len, const char *fmt, ...);
diff --git a/librecrypt_algorithms_.c b/librecrypt_algorithms_.c
index 77dfe30..a2f9a04 100644
--- a/librecrypt_algorithms_.c
+++ b/librecrypt_algorithms_.c
@@ -19,7 +19,7 @@
#define X(ALGO) IF__##ALGO##__SUPPORTED(ENTRY(ALGO) COMMA)
-struct algorithm librecrypt_algorithms_[] = {
+struct librecrypt_algorithm librecrypt_algorithms_[] = {
LIST_ALGORITHMS(X)
END_OF_ALGORITHMS
};
diff --git a/librecrypt_check_settings_.c b/librecrypt_check_settings_.c
index 0cfed69..402b8b2 100644
--- a/librecrypt_check_settings_.c
+++ b/librecrypt_check_settings_.c
@@ -161,7 +161,7 @@ check_data(const char *settings, size_t *off, size_t len, uintmax_t min, uintmax
int
-librecrypt_check_settings_(const char *settings, size_t len, const char *fmt, ...)
+librecrypt_scan_settings_(const char *settings, size_t len, const char *fmt, ...)
{
size_t i = 0u;
uintmax_t *uout, umin, umax;
@@ -286,125 +286,125 @@ check_asterisk(char pad, int strict_pad)
uintmax_t u, u2;
const char *s, *s2;
- EXPECT(librecrypt_check_settings_("*012", 4u, "%b", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*200", 4u, "%b", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%b", BASE64(100, 200)) == 0);
- EXPECT(librecrypt_check_settings_("*0", 2u, "%b", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*00", 3u, "%b", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%b", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%b", BASE64(5, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%b", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*200", 4u, "%b", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%b", BASE64(100, 200)) == 0);
+ EXPECT(librecrypt_scan_settings_("*0", 2u, "%b", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*00", 3u, "%b", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%b", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%b", BASE64(5, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012.", 5u, "%b.", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*012-", 5u, "%b.", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%b.", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012.", 5u, "%b.", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012-", 5u, "%b.", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%b.", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*2*5", 4u, "%b%b", BASE64(2, 2), BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("*2*4", 4u, "%b%b", BASE64(2, 2), BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("*2*5", 4u, "%b%b", BASE64(2, 2), BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("*2*4", 4u, "%b%b", BASE64(2, 2), BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%h", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*200", 4u, "%h", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%h", BASE64(100, 200)) == 0);
- EXPECT(librecrypt_check_settings_("*0", 2u, "%h", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*00", 3u, "%h", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%h", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%h", BASE64(5, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%h", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*200", 4u, "%h", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%h", BASE64(100, 200)) == 0);
+ EXPECT(librecrypt_scan_settings_("*0", 2u, "%h", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*00", 3u, "%h", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%h", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%h", BASE64(5, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*012.", 5u, "%h.", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*012-", 5u, "%h.", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%h.", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012.", 5u, "%h.", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012-", 5u, "%h.", BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%h.", BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*2*5", 4u, "%h%h", BASE64(2, 2), BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("*2*4", 4u, "%h%h", BASE64(2, 2), BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("*2*5", 4u, "%h%h", BASE64(2, 2), BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("*2*4", 4u, "%h%h", BASE64(2, 2), BASE64(5, 5)) == 0);
u = 0u;
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^b", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^b", &u, BASE64(0, 100)) == 1);
EXPECT(u == 12u);
- EXPECT(librecrypt_check_settings_("*200", 4u, "%^b", &u, BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^b", &u, BASE64(100, 200)) == 0);
+ EXPECT(librecrypt_scan_settings_("*200", 4u, "%^b", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^b", &u, BASE64(100, 200)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("*0", 2u, "%^b", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*0", 2u, "%^b", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("*00", 3u, "%^b", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*00", 3u, "%^b", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^b", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^b", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
- EXPECT(librecrypt_check_settings_("", 0u, "%^b", &u, BASE64(5, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^b", &u, BASE64(5, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012.", 5u, "%^b.", &u, BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*012-", 5u, "%^b.", &u, BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^b.", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012.", 5u, "%^b.", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012-", 5u, "%^b.", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^b.", &u, BASE64(0, 100)) == 0);
u = u2 = 99u;
- EXPECT(librecrypt_check_settings_("*2*5", 4u, "%^b%^b", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("*2*5", 4u, "%^b%^b", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 1);
EXPECT(u == 2u);
EXPECT(u2 == 5u);
- EXPECT(librecrypt_check_settings_("*2*4", 4u, "%^b%^b", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("*2*4", 4u, "%^b%^b", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 0);
u = 0u;
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^h", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^h", &u, BASE64(0, 100)) == 1);
EXPECT(u == 12u);
- EXPECT(librecrypt_check_settings_("*200", 4u, "%^h", &u, BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^h", &u, BASE64(100, 200)) == 0);
+ EXPECT(librecrypt_scan_settings_("*200", 4u, "%^h", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^h", &u, BASE64(100, 200)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("*0", 2u, "%^h", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*0", 2u, "%^h", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("*00", 3u, "%^h", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*00", 3u, "%^h", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^h", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^h", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^h", &u, BASE64(5, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^h", &u, BASE64(5, 100)) == 1);
EXPECT(u == 0u);
- EXPECT(librecrypt_check_settings_("*012.", 5u, "%^h.", &u, BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("*012-", 5u, "%^h.", &u, BASE64(0, 100)) == 0);
- EXPECT(librecrypt_check_settings_("*012", 4u, "%^h.", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012.", 5u, "%^h.", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*012-", 5u, "%^h.", &u, BASE64(0, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("*012", 4u, "%^h.", &u, BASE64(0, 100)) == 0);
u = u2 = 99u;
- EXPECT(librecrypt_check_settings_("*2*5", 4u, "%^h%^h", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("*2*5", 4u, "%^h%^h", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 1);
EXPECT(u == 2u);
EXPECT(u2 == 5u);
- EXPECT(librecrypt_check_settings_("*2*4", 4u, "%^h%^h", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("*2*4", 4u, "%^h%^h", &u, BASE64(2, 2), &u2, BASE64(5, 5)) == 0);
s = "";
u = 99u;
- EXPECT(librecrypt_check_settings_("*5.", 3, "%&b.", &s, &u, BASE64(2, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*5.", 3, "%&b.", &s, &u, BASE64(2, 100)) == 1);
EXPECT(s == NULL);
EXPECT(u == 5u);
s = "";
u = 99u;
- EXPECT(librecrypt_check_settings_("*5", 2, "%&b", &s, &u, BASE64(2, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*5", 2, "%&b", &s, &u, BASE64(2, 100)) == 1);
EXPECT(s == NULL);
EXPECT(u == 5u);
- EXPECT(librecrypt_check_settings_("*5", 2, "%&b", &s, &u, BASE64(1, 4)) == 0);
- EXPECT(librecrypt_check_settings_("*5", 2, "%&b", &s, &u, BASE64(6, 9)) == 0);
+ EXPECT(librecrypt_scan_settings_("*5", 2, "%&b", &s, &u, BASE64(1, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("*5", 2, "%&b", &s, &u, BASE64(6, 9)) == 0);
s = s2 = "";
u = u2 = 99u;
- EXPECT(librecrypt_check_settings_("*5*10", 5, "%&b%&b", &s, &u, BASE64(2, 100), &s2, &u2, BASE64(2, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("*5*10", 5, "%&b%&b", &s, &u, BASE64(2, 100), &s2, &u2, BASE64(2, 100)) == 1);
EXPECT(s == NULL);
EXPECT(u == 5u);
EXPECT(s2 == NULL);
EXPECT(u2 == 10u);
- EXPECT(librecrypt_check_settings_("*", 1u, "%b", BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*", 1u, "%h", BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*", 1u, "%^b", &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*", 1u, "%^h", &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*", 1u, "%&b", &s, &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*", 1u, "%&h", &s, &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%b", BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%h", BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%^b", &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%^h", &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%&b", &s, &u, BASE64(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("*x", 2u, "%&h", &s, &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%b", BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%h", BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%^b", &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%^h", &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%&b", &s, &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*", 1u, "%&h", &s, &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%b", BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%h", BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%^b", &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%^h", &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%&b", &s, &u, BASE64(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("*x", 2u, "%&h", &s, &u, BASE64(0, 10)) == 0);
}
@@ -414,218 +414,218 @@ check_base64(char pad, int strict_pad)
uintmax_t u;
const char *s;
- EXPECT(librecrypt_check_settings_("", 0u, "%b", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%b", BASE64(1, 100)) == 0);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%b", BASE64(3, 3)) == 1);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%b", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%b", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%b", BASE64(1, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%b", BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%b", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("", 0u, "%h", BASE64(0, 100)) == 1);
- EXPECT(librecrypt_check_settings_("", 0u, "%h", BASE64(1, 100)) == 1);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%h", BASE64(3, 3)) == 1);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%h", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%h", BASE64(2, 2)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%h", BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%h", BASE64(1, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%h", BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%h", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%h", BASE64(2, 2)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^b", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^b", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
- EXPECT(librecrypt_check_settings_("", 0u, "%^b", &u, BASE64(1, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^b", &u, BASE64(1, 100)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^b", &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^b", &u, BASE64(3, 3)) == 1);
EXPECT(u == 3u);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^b", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^b", &u, BASE64(2, 2)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^b", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^b", &u, BASE64(2, 2)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^h", &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^h", &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("", 0u, "%^h", &u, BASE64(1, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^h", &u, BASE64(1, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^h", &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^h", &u, BASE64(3, 3)) == 1);
EXPECT(u == 3u);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^h", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcd", 4u, "%^h", &u, BASE64(2, 2)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^h", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcd", 4u, "%^h", &u, BASE64(2, 2)) == 0);
s = NULL;
u = 99u;
- EXPECT(librecrypt_check_settings_("_", 1u, "_%&b", &s, &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("_", 1u, "_%&b", &s, &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
EXPECT(s && !strcmp(s, ""));
- EXPECT(librecrypt_check_settings_("_", 1u, "_%&b", &s, &u, BASE64(1, 100)) == 0);
+ EXPECT(librecrypt_scan_settings_("_", 1u, "_%&b", &s, &u, BASE64(1, 100)) == 0);
s = NULL;
u = 99u;
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(3, 3)) == 1);
EXPECT(u == 4u);
EXPECT(s && !strcmp(s, "abcd"));
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(2, 2)) == 0);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&b", &s, &u, BASE64(2, 2)) == 0);
s = NULL;
u = 99u;
- EXPECT(librecrypt_check_settings_("_", 1u, "_%&h", &s, &u, BASE64(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("_", 1u, "_%&h", &s, &u, BASE64(0, 100)) == 1);
EXPECT(u == 0u);
EXPECT(s && !strcmp(s, ""));
s = NULL;
u = 99u;
- EXPECT(librecrypt_check_settings_("_", 1u, "_%&h", &s, &u, BASE64(1, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("_", 1u, "_%&h", &s, &u, BASE64(1, 100)) == 1);
EXPECT(u == 0u);
EXPECT(s && !strcmp(s, ""));
s = NULL;
u = 99u;
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(3, 3)) == 1);
EXPECT(u == 4u);
EXPECT(s && !strcmp(s, "abcd"));
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(2, 2)) == 0);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("_abcd", 5u, "_%&h", &s, &u, BASE64(2, 2)) == 0);
u = 99u;
- EXPECT(librecrypt_check_settings_("_abcd_", 6u, "_%&b_", &s, &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("_abcd_", 6u, "_%&b_", &s, &u, BASE64(3, 3)) == 1);
EXPECT(u == 4u);
EXPECT(s && !strcmp(s, "abcd_"));
u = 99u;
- EXPECT(librecrypt_check_settings_("_abcd_", 6u, "_%&h_", &s, &u, BASE64(3, 3)) == 1);
+ EXPECT(librecrypt_scan_settings_("_abcd_", 6u, "_%&h_", &s, &u, BASE64(3, 3)) == 1);
EXPECT(u == 4u);
EXPECT(s && !strcmp(s, "abcd_"));
u = 99u;
- EXPECT(librecrypt_check_settings_("abcdabcd", 8u, "%&b", &s, &u, BASE64(6, 6)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabcd", 8u, "%&b", &s, &u, BASE64(6, 6)) == 1);
EXPECT(u == 8u);
EXPECT(s && strlen(s) == u);
u = 99u;
- EXPECT(librecrypt_check_settings_("abcdabcd", 8u, "%&h", &s, &u, BASE64(6, 6)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabcd", 8u, "%&h", &s, &u, BASE64(6, 6)) == 1);
EXPECT(u == 8u);
EXPECT(s && strlen(s) == u);
- EXPECT(librecrypt_check_settings_("abcda", 5u, "%&b", &s, &u, BASE64(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("abcda---", 8u, "%&b", &s, &u, BASE64(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("abcda---", 8u, "%&b---", &s, &u, BASE64(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("abcda", 5u, "%&h", &s, &u, BASE64(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("abcda---", 8u, "%&h", &s, &u, BASE64(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("abcda---", 8u, "%&h---", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda", 5u, "%&b", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda---", 8u, "%&b", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda---", 8u, "%&b---", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda", 5u, "%&h", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda---", 8u, "%&h", &s, &u, BASE64(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcda---", 8u, "%&h---", &s, &u, BASE64(1, 10)) == 0);
if (pad && strict_pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 0);
} else if (pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 0);
} else {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&b", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%&h", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&b", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%&h", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h", &s, &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h", &s, &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&b--", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%&h--", &s, &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&b-", &s, &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%&h-", &s, &u, BASE64(5, 5)) == 1);
}
if (pad && strict_pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 0);
} else if (pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 0);
} else {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^b", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%^h", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^b", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%^h", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h", &u, BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h", &u, BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^b--", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%^h--", &u, BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^b-", &u, BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%^h-", &u, BASE64(5, 5)) == 1);
}
if (pad && strict_pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 0);
} else if (pad) {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 0);
} else {
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 0);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 1);
- EXPECT(librecrypt_check_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%b", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab", 6u, "%h", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%b", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc", 7u, "%h", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h", BASE64(4, 4)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h", BASE64(5, 5)) == 0);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%b--", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdab--", 8u, "%h--", BASE64(4, 4)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%b-", BASE64(5, 5)) == 1);
+ EXPECT(librecrypt_scan_settings_("abcdabc-", 8u, "%h-", BASE64(5, 5)) == 1);
}
}
@@ -645,133 +645,133 @@ main(void)
memset(lut, 255, sizeof(lut));
lut['a'] = lut['b'] = lut['c'] = lut['d'] = 0;
- EXPECT(librecrypt_check_settings_("", 0u, "") == 1);
- EXPECT(librecrypt_check_settings_("hej", 3u, "hej") == 1);
- EXPECT(librecrypt_check_settings_("hej", 2u, "hej") == 0);
- EXPECT(librecrypt_check_settings_("hej", 4u, "hej") == 0);
- EXPECT(librecrypt_check_settings_("tja", 3u, "hej") == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "") == 1);
+ EXPECT(librecrypt_scan_settings_("hej", 3u, "hej") == 1);
+ EXPECT(librecrypt_scan_settings_("hej", 2u, "hej") == 0);
+ EXPECT(librecrypt_scan_settings_("hej", 4u, "hej") == 0);
+ EXPECT(librecrypt_scan_settings_("tja", 3u, "hej") == 0);
- EXPECT(librecrypt_check_settings_("%", 1u, "%%") == 1);
- EXPECT(librecrypt_check_settings_("%", 0u, "%%") == 0);
- EXPECT(librecrypt_check_settings_("x", 1u, "%%") == 0);
+ EXPECT(librecrypt_scan_settings_("%", 1u, "%%") == 1);
+ EXPECT(librecrypt_scan_settings_("%", 0u, "%%") == 0);
+ EXPECT(librecrypt_scan_settings_("x", 1u, "%%") == 0);
- EXPECT(librecrypt_check_settings_("hello", 5u, "%*") == 1);
- EXPECT(librecrypt_check_settings_("hello$world", 11u, "%*$world") == 1);
- EXPECT(librecrypt_check_settings_("hello$world", 11u, "%*$WORLD") == 0);
+ EXPECT(librecrypt_scan_settings_("hello", 5u, "%*") == 1);
+ EXPECT(librecrypt_scan_settings_("hello$world", 11u, "%*$world") == 1);
+ EXPECT(librecrypt_scan_settings_("hello$world", 11u, "%*$WORLD") == 0);
- EXPECT(librecrypt_check_settings_("hej.", 4u, "%s.", "hej", "tja", NULL) == 1);
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%s.", "hej", "tja", NULL) == 1);
- EXPECT(librecrypt_check_settings_("bye.", 4u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hej-", 4u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("tja-", 4u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("bye-", 4u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hej.", 3u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("tja.", 3u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("bye.", 3u, "%s.", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hej.", 3u, "%s", "hej", "tja", NULL) == 1);
- EXPECT(librecrypt_check_settings_("tja.", 3u, "%s", "hej", "tja", NULL) == 1);
- EXPECT(librecrypt_check_settings_("bye.", 3u, "%s", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hej.", 4u, "%s", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%s", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("bye.", 4u, "%s", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_(".", 1u, "%s.", "hej", "tja", "", NULL) == 1);
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%s.", "hej", "tja", "", NULL) == 1);
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%s.", "", "hej", "tja", NULL) == 0);
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%s.", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej.", 4u, "%s.", "hej", "tja", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%s.", "hej", "tja", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("bye.", 4u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej-", 4u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("tja-", 4u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("bye-", 4u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej.", 3u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("tja.", 3u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("bye.", 3u, "%s.", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej.", 3u, "%s", "hej", "tja", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("tja.", 3u, "%s", "hej", "tja", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("bye.", 3u, "%s", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej.", 4u, "%s", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%s", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("bye.", 4u, "%s", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_(".", 1u, "%s.", "hej", "tja", "", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%s.", "hej", "tja", "", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%s.", "", "hej", "tja", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%s.", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hejsan", 1u, "%s", "hej", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hejsan", 3u, "%s", "hej", NULL) == 1);
- EXPECT(librecrypt_check_settings_("hejsan", 6u, "%s", "hej", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hejsan", 1u, "%s", "hej", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hejsan", 3u, "%s", "hej", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("hejsan", 6u, "%s", "hej", NULL) == 0);
s = NULL;
- EXPECT(librecrypt_check_settings_("hej.", 4u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("hej.", 4u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
EXPECT(s && !strcmp(s, "hej"));
s = NULL;
- EXPECT(librecrypt_check_settings_("tja.", 4u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("tja.", 4u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
EXPECT(s && !strcmp(s, "tja"));
s = NULL;
- EXPECT(librecrypt_check_settings_(".", 1u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_(".", 1u, "%^s.", &s, "hej", "tja", "", NULL) == 1);
EXPECT(s && !strcmp(s, ""));
- EXPECT(librecrypt_check_settings_("10.", 3u, "%p.", RANGE(1, 10)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%p.", RANGE(10, 20)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%p.", RANGE(1, 20)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%p.", RANGE(1, 9)) == 0);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%p.", RANGE(11, 20)) == 0);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%p.", RANGE(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%p.", RANGE(0, 10)) == 1);
- EXPECT(librecrypt_check_settings_("00.", 3u, "%p.", RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("010.", 4u, "%p.", RANGE(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%p.", RANGE(1, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%p.", RANGE(10, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%p.", RANGE(1, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%p.", RANGE(1, 9)) == 0);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%p.", RANGE(11, 20)) == 0);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%p.", RANGE(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%p.", RANGE(0, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("00.", 3u, "%p.", RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("010.", 4u, "%p.", RANGE(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%u.", RANGE(1, 10)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%u.", RANGE(10, 20)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%u.", RANGE(1, 20)) == 1);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%u.", RANGE(1, 9)) == 0);
- EXPECT(librecrypt_check_settings_("10.", 3u, "%u.", RANGE(11, 20)) == 0);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%u.", RANGE(1, 10)) == 0);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%u.", RANGE(0, 10)) == 1);
- EXPECT(librecrypt_check_settings_("00.", 3u, "%u.", RANGE(0, 10)) == 1);
- EXPECT(librecrypt_check_settings_("010.", 4u, "%u.", RANGE(1, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%u.", RANGE(1, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%u.", RANGE(10, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%u.", RANGE(1, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%u.", RANGE(1, 9)) == 0);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%u.", RANGE(11, 20)) == 0);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%u.", RANGE(1, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%u.", RANGE(0, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("00.", 3u, "%u.", RANGE(0, 10)) == 1);
+ EXPECT(librecrypt_scan_settings_("010.", 4u, "%u.", RANGE(1, 10)) == 1);
u = 99u;
- EXPECT(librecrypt_check_settings_("10.", 3u, "%^p.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%^p.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 10u);
- EXPECT(librecrypt_check_settings_("15.", 3u, "%^p.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("15.", 3u, "%^p.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 15u);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%^p.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%^p.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 0u);
u = 99u;
- EXPECT(librecrypt_check_settings_("10.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 10u);
- EXPECT(librecrypt_check_settings_("15.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("15.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 15u);
- EXPECT(librecrypt_check_settings_("0.", 2u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("0.", 2u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 0u);
- EXPECT(librecrypt_check_settings_("010.", 4u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("010.", 4u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 10u);
- EXPECT(librecrypt_check_settings_("015.", 4u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("015.", 4u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 15u);
- EXPECT(librecrypt_check_settings_("00.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
+ EXPECT(librecrypt_scan_settings_("00.", 3u, "%^u.", &u, RANGE(0, 100)) == 1);
EXPECT(u == 0u);
- EXPECT(librecrypt_check_settings_("10.15.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 1);
- EXPECT(librecrypt_check_settings_("10.10.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 0);
- EXPECT(librecrypt_check_settings_("15.10.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 0);
+ EXPECT(librecrypt_scan_settings_("10.15.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.10.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 0);
+ EXPECT(librecrypt_scan_settings_("15.10.", 6u, "%u.%u.", RANGE(1, 10), RANGE(11, 20)) == 0);
u = 99u;
u2 = 99u;
- EXPECT(librecrypt_check_settings_("10.15.", 6u, "%^u.%^u.", &u, RANGE(1, 10), &u2, RANGE(11, 20)) == 1);
+ EXPECT(librecrypt_scan_settings_("10.15.", 6u, "%^u.%^u.", &u, RANGE(1, 10), &u2, RANGE(11, 20)) == 1);
EXPECT(u == 10u);
EXPECT(u2 == 15u);
- EXPECT(librecrypt_check_settings_("", 0u, "%p", RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("a", 1u, "%p", RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("", 0u, "%u", RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("a", 1u, "%u", RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("", 0u, "%^p", &u, RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("a", 1u, "%^p", &u, RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("", 0u, "%^u", &u, RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("a", 1u, "%^u", &u, RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%p", RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("a", 1u, "%p", RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%u", RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("a", 1u, "%u", RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^p", &u, RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("a", 1u, "%^p", &u, RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("", 0u, "%^u", &u, RANGE(0, 10)) == 0);
+ EXPECT(librecrypt_scan_settings_("a", 1u, "%^u", &u, RANGE(0, 10)) == 0);
- EXPECT(librecrypt_check_settings_("hej.hello.", 10u, "%s.%s.", "hej", NULL, "hello", NULL) == 1);
- EXPECT(librecrypt_check_settings_("hello.hej.", 10u, "%s.%s.", "hej", NULL, "hello", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hej.hello.", 10u, "%s.%s.", "hej", NULL, "hello", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("hello.hej.", 10u, "%s.%s.", "hej", NULL, "hello", NULL) == 0);
- EXPECT(librecrypt_check_settings_("hejsan", 1u, "%^s", &s, "hej", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hejsan", 1u, "%^s", &s, "hej", NULL) == 0);
s = NULL;
- EXPECT(librecrypt_check_settings_("hejsan", 3u, "%^s", &s, "hej", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("hejsan", 3u, "%^s", &s, "hej", NULL) == 1);
EXPECT(s && !strcmp(s, "hej"));
- EXPECT(librecrypt_check_settings_("hejsan", 6u, "%^s", &s, "hej", NULL) == 0);
+ EXPECT(librecrypt_scan_settings_("hejsan", 6u, "%^s", &s, "hej", NULL) == 0);
s = NULL;
s2 = NULL;
- EXPECT(librecrypt_check_settings_("hej.hello.", 10u, "%^s.%^s.", &s, "x", "hej", NULL, &s2, "y", "hello", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("hej.hello.", 10u, "%^s.%^s.", &s, "x", "hej", NULL, &s2, "y", "hello", NULL) == 1);
EXPECT(s && !strcmp(s, "hej"));
EXPECT(s2 && !strcmp(s2, "hello"));
s = NULL;
s2 = NULL;
- EXPECT(librecrypt_check_settings_("x.y.", 4u, "%^s.%^s.", &s, "x", "hej", NULL, &s2, "y", "hello", NULL) == 1);
+ EXPECT(librecrypt_scan_settings_("x.y.", 4u, "%^s.%^s.", &s, "x", "hej", NULL, &s2, "y", "hello", NULL) == 1);
EXPECT(s && !strcmp(s, "x"));
EXPECT(s2 && !strcmp(s2, "y"));
@@ -787,9 +787,9 @@ main(void)
#define S(STR) (STR), (sizeof(STR) - 1u)
#define LARGE "999999999999999999999999999999999999999"
- EXPECT(librecrypt_check_settings_(S(LARGE LARGE LARGE LARGE), "%p", RANGE(0, UINTMAX_MAX)) == 0);
+ EXPECT(librecrypt_scan_settings_(S(LARGE LARGE LARGE LARGE), "%p", RANGE(0, UINTMAX_MAX)) == 0);
- EXPECT_ABORT(discarded_int = librecrypt_check_settings_("", 0u, "%\xFF", 0, 0, 0, 0, 0, 0, 0));
+ EXPECT_ABORT(discarded_int = librecrypt_scan_settings_("", 0u, "%\xFF", 0, 0, 0, 0, 0, 0, 0));
STOP_RESOURCE_TEST();
return 0;
diff --git a/librecrypt_find_first_algorithm_.c b/librecrypt_find_first_algorithm_.c
index 6bbfe70..2a33b5e 100644
--- a/librecrypt_find_first_algorithm_.c
+++ b/librecrypt_find_first_algorithm_.c
@@ -3,11 +3,11 @@
#ifndef TEST
-const struct algorithm *
+const struct librecrypt_algorithm *
librecrypt_find_first_algorithm_(const char *settings, size_t len)
{
unsigned r, priority = 0;
- const struct algorithm *algo, *found = NULL;
+ const struct librecrypt_algorithm *algo, *found = NULL;
size_t i;
for (i = 0u;; i++) {
@@ -55,7 +55,7 @@ librecrypt_find_first_algorithm_(const char *settings, size_t len)
int
main(void)
{
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
SET_UP_ALARM();
INIT_RESOURCE_TEST();
diff --git a/librecrypt_get_encoding.c b/librecrypt_get_encoding.c
index a977178..cad16df 100644
--- a/librecrypt_get_encoding.c
+++ b/librecrypt_get_encoding.c
@@ -7,7 +7,7 @@ const void *
librecrypt_get_encoding(const char *settings, size_t len, char *pad_out, int *strict_pad_out, int decoding, void *reserved)
{
size_t i, start = 0u;
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
/* Ensure the reserved parameter is NULL */
if (reserved != NULL) {
diff --git a/librecrypt_hash_.c b/librecrypt_hash_.c
index 95d8aea..e240c81 100644
--- a/librecrypt_hash_.c
+++ b/librecrypt_hash_.c
@@ -46,7 +46,7 @@ ssize_t
librecrypt_hash_(char *restrict out_buffer, size_t size, const char *phrase, size_t len,
const char *settings, void *reserved, enum action action)
{
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
ssize_t (*rng)(void *out, size_t n, void *user) = NULL;
char *settings_scratch = NULL;
char *phrase_scratches[2] = {NULL, NULL};
diff --git a/librecrypt_make_settings.c b/librecrypt_make_settings.c
index dc068e7..b883e4f 100644
--- a/librecrypt_make_settings.c
+++ b/librecrypt_make_settings.c
@@ -7,7 +7,7 @@ ssize_t
librecrypt_make_settings(char *out_buffer, size_t size, const char *algorithm, size_t memcost, uintmax_t timecost,
int gensalt, ssize_t (*rng)(void *out, size_t n, void *user), void *user, void *reserved)
{
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
/* Ensure the reserved parameter is NULL */
if (reserved != NULL) {
diff --git a/librecrypt_settings_prefix.c b/librecrypt_settings_prefix.c
index df1c56a..c8fed53 100644
--- a/librecrypt_settings_prefix.c
+++ b/librecrypt_settings_prefix.c
@@ -8,7 +8,7 @@ librecrypt_settings_prefix(const char *hash, size_t *hashsize_out, void *reserve
{
size_t i, len, ret = 0u;
size_t last_offset = 0u;
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
uintmax_t hashsize;
(void) reserved;
@@ -41,9 +41,9 @@ librecrypt_settings_prefix(const char *hash, size_t *hashsize_out, void *reserve
goto zero; /* $covered$ (TODO we currently don't have an algorithm to trigger this) */
/* Get the hash size */
- if (!librecrypt_check_settings_(&hash[ret], len - ret, "%^b",
- &hashsize, (uintmax_t)1u, (uintmax_t)SIZE_MAX,
- algo->decoding_lut, algo->pad, algo->strict_pad))
+ if (!librecrypt_scan_settings_(&hash[ret], len - ret, "%^b",
+ &hashsize, (uintmax_t)1u, (uintmax_t)SIZE_MAX,
+ algo->decoding_lut, algo->pad, algo->strict_pad))
goto zero;
*hashsize_out = (size_t)hashsize;
diff --git a/librecrypt_test_supported.c b/librecrypt_test_supported.c
index b063f47..6d2a7a6 100644
--- a/librecrypt_test_supported.c
+++ b/librecrypt_test_supported.c
@@ -6,7 +6,7 @@
int
librecrypt_test_supported(const char *phrase, size_t len, int text, const char *settings, void *reserved)
{
- const struct algorithm *algo;
+ const struct librecrypt_algorithm *algo;
size_t n;
(void) reserved;