Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}