Looks good. Reviewed-by: Vladimir Serbinenko<phco...@gmail.com> Regards Vladimir 'phcoder' Serbinenko
Le mer. 6 août 2025, 10:16, Gary Lin <g...@suse.com> a écrit : > Refactor the Argon2 tests to enable the module build and integrate the > tests into function_test. > > Signed-off-by: Gary Lin <g...@suse.com> > Tested-By: Waldemar Brodkorb <w...@openadk.org> > --- > grub-core/Makefile.core.def | 5 ++ > grub-core/tests/argon2_test.c | 104 +++++++++++++------------- > grub-core/tests/lib/functional_test.c | 1 + > 3 files changed, 57 insertions(+), 53 deletions(-) > > diff --git a/grub-core/Makefile.core.def b/grub-core/Makefile.core.def > index 16166b1ed..fb96f92a5 100644 > --- a/grub-core/Makefile.core.def > +++ b/grub-core/Makefile.core.def > @@ -2222,6 +2222,11 @@ module = { > common = tests/pbkdf2_test.c; > }; > > +module = { > + name = argon2_test; > + common = tests/argon2_test.c; > +}; > + > module = { > name = legacy_password_test; > common = tests/legacy_password_test.c; > diff --git a/grub-core/tests/argon2_test.c b/grub-core/tests/argon2_test.c > index d2f70166a..8318a0962 100644 > --- a/grub-core/tests/argon2_test.c > +++ b/grub-core/tests/argon2_test.c > @@ -1,23 +1,50 @@ > +/* > + * GRUB -- GRand Unified Bootloader > + * Copyright (C) 2025 Free Software Foundation, Inc. > + * > + * GRUB is free software: you can redistribute it and/or modify > + * it under the terms of the GNU General Public License as published by > + * the Free Software Foundation, either version 3 of the License, or > + * (at your option) any later version. > + * > + * GRUB is distributed in the hope that it will be useful, > + * but WITHOUT ANY WARRANTY; without even the implied warranty of > + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > + * GNU General Public License for more details. > + * > + * You should have received a copy of the GNU General Public License > + * along with GRUB. If not, see <http://www.gnu.org/licenses/>. > + */ > + > +#include <grub/test.h> > +#include <grub/dl.h> > +#include <grub/misc.h> > +#include <grub/crypto.h> > + > +GRUB_MOD_LICENSE ("GPLv3+"); > + > +#define DIM(v) (sizeof(v)/sizeof((v)[0])) > + > static void > -check_argon2 (void) > +argon2_test (void) > { > gcry_error_t err; > static struct { > int subalgo; > unsigned long param[4]; > - size_t passlen; > + grub_size_t passlen; > const char *pass; > - size_t saltlen; > + grub_size_t saltlen; > const char *salt; > - size_t keylen; > + grub_size_t keylen; > const char *key; > - size_t adlen; > + grub_size_t adlen; > const char *ad; > - size_t dklen; > + grub_size_t dklen; > const char *dk; > } tv[] = { > { > - GCRY_KDF_ARGON2D, > + GRUB_GCRY_KDF_ARGON2D, > { 32, 3, 32, 4 }, > 32, > "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" > @@ -33,7 +60,7 @@ check_argon2 (void) > "\xf8\x68\xe3\xbe\x39\x84\xf3\xc1\xa1\x3a\x4d\xb9\xfa\xbe\x4a\xcb" > }, > { > - GCRY_KDF_ARGON2I, > + GRUB_GCRY_KDF_ARGON2I, > { 32, 3, 32, 4 }, > 32, > "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" > @@ -49,7 +76,7 @@ check_argon2 (void) > "\xc8\xde\x6b\x01\x6d\xd3\x88\xd2\x99\x52\xa4\xc4\x67\x2b\x6c\xe8" > }, > { > - GCRY_KDF_ARGON2ID, > + GRUB_GCRY_KDF_ARGON2ID, > { 32, 3, 32, 4 }, > 32, > "\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01" > @@ -66,7 +93,7 @@ check_argon2 (void) > }, > { > /* empty password */ > - GCRY_KDF_ARGON2I, > + GRUB_GCRY_KDF_ARGON2I, > { 32, 3, 128, 1 }, > 0, NULL, > 16, > @@ -79,7 +106,7 @@ check_argon2 (void) > }, > { > /* empty password */ > - GCRY_KDF_ARGON2ID, > + GRUB_GCRY_KDF_ARGON2ID, > { 32, 3, 128, 1 }, > 0, NULL, > 16, > @@ -92,50 +119,21 @@ check_argon2 (void) > }, > }; > unsigned char out[32]; > - int i; > - int count; > + unsigned int count; > > for (count = 0; count < DIM(tv); count++) > { > - if (verbose) > - fprintf (stderr, "checking ARGON2 test vector %d\n", count); > - > - err = my_kdf_derive (0, GCRY_KDF_ARGON2, > - tv[count].subalgo, tv[count].param, 4, > - tv[count].pass, tv[count].passlen, > - tv[count].salt, tv[count].saltlen, > - tv[count].key, tv[count].keylen, > - tv[count].ad, tv[count].adlen, > - tv[count].dklen, out); > - if (err) > - fail ("argon2 test %d failed: %s\n", count*2+0, gpg_strerror > (err)); > - else if (memcmp (out, tv[count].dk, tv[count].dklen)) > - { > - fail ("argon2 test %d failed: mismatch\n", count*2+0); > - fputs ("got:", stderr); > - for (i=0; i < tv[count].dklen; i++) > - fprintf (stderr, " %02x", out[i]); > - putc ('\n', stderr); > - } > - > -#ifdef HAVE_PTHREAD > - err = my_kdf_derive (1, GCRY_KDF_ARGON2, > - tv[count].subalgo, tv[count].param, 4, > - tv[count].pass, tv[count].passlen, > - tv[count].salt, tv[count].saltlen, > - tv[count].key, tv[count].keylen, > - tv[count].ad, tv[count].adlen, > - tv[count].dklen, out); > - if (err) > - fail ("argon2 test %d failed: %s\n", count*2+1, gpg_strerror > (err)); > - else if (memcmp (out, tv[count].dk, tv[count].dklen)) > - { > - fail ("argon2 test %d failed: mismatch\n", count*2+1); > - fputs ("got:", stderr); > - for (i=0; i < tv[count].dklen; i++) > - fprintf (stderr, " %02x", out[i]); > - putc ('\n', stderr); > - } > -#endif > + err = grub_crypto_argon2 (tv[count].subalgo, > + tv[count].param, 4, > + tv[count].pass, tv[count].passlen, > + tv[count].salt, tv[count].saltlen, > + tv[count].key, tv[count].keylen, > + tv[count].ad, tv[count].adlen, > + tv[count].dklen, out); > + grub_test_assert (err == 0, "argon2 test %d failed: %d", count, > err); > + grub_test_assert (grub_memcmp (out, tv[count].dk, tv[count].dklen) > == 0, > + "argon2 test %d failed: mismatch", count); > } > } > + > +GRUB_FUNCTIONAL_TEST (argon2_test, argon2_test); > diff --git a/grub-core/tests/lib/functional_test.c > b/grub-core/tests/lib/functional_test.c > index 38e981f2c..0289ff38f 100644 > --- a/grub-core/tests/lib/functional_test.c > +++ b/grub-core/tests/lib/functional_test.c > @@ -80,6 +80,7 @@ grub_functional_all_tests (grub_extcmd_context_t ctxt > __attribute__ ((unused)), > grub_dl_load ("mul_test"); > grub_dl_load ("shift_test"); > grub_dl_load ("asn1_test"); > + grub_dl_load ("argon2_test"); > > FOR_LIST_ELEMENTS (test, grub_test_list) > ok = !grub_test_run (test) && ok; > -- > 2.43.0 > >
_______________________________________________ Grub-devel mailing list Grub-devel@gnu.org https://lists.gnu.org/mailman/listinfo/grub-devel