static grub_err_t check_password (const char *user, const char *entered, void *pin) { grub_uint8_t *buf; struct pbkdf2_password *pass = pin; gcry_err_code_t err; buf = grub_malloc (pass->buflen); if (!buf) return grub_crypto_gcry_error (GPG_ERR_OUT_OF_MEMORY); err = grub_crypto_pbkdf2 (GRUB_MD_SHA512, (grub_uint8_t *) entered, grub_strlen (entered), pass->salt, pass->saltlen, pass->c, buf, pass->buflen); if (err) { grub_free (buf); return grub_crypto_gcry_error (err); } if (grub_crypto_memcmp (buf, pass->expected, pass->buflen) != 0) return GRUB_ACCESS_DENIED; grub_auth_authenticate (user); return GRUB_ERR_NONE; }
static grub_err_t check_password (const char *user, const char *entered, void *password) { if (grub_crypto_memcmp (entered, password, GRUB_AUTH_MAX_PASSLEN) != 0) return GRUB_ACCESS_DENIED; grub_auth_authenticate (user); return GRUB_ERR_NONE; }