Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de4e6563 authored by Eric Biggers's avatar Eric Biggers Committed by Automerger Merge Worker
Browse files

Merge "Test that the password isn't truncated" am: 51b8d29e am: 1285a868

parents c08cc2b7 1285a868
Loading
Loading
Loading
Loading
+41 −0
Original line number Diff line number Diff line
@@ -243,6 +243,47 @@ TEST_P(GatekeeperHidlTest, VerifySuccess) {
  ALOGI("Testing Enroll+Verify done");
}

/**
 * Ensure that passwords containing a NUL byte aren't truncated
 */
TEST_P(GatekeeperHidlTest, PasswordIsBinaryData) {
  GatekeeperResponse enrollRsp;
  GatekeeperResponse verifyRsp;
  hidl_vec<uint8_t> rightPassword = {'A', 'B', 'C', '\0', 'D', 'E', 'F'};
  hidl_vec<uint8_t> wrongPassword = {'A', 'B', 'C', '\0', '\0', '\0', '\0'};

  ALOGI("Testing Enroll+Verify of password with embedded NUL (expected success)");
  enrollNewPassword(rightPassword, enrollRsp, true);
  verifyPassword(rightPassword, enrollRsp.data, 1, verifyRsp, true);

  ALOGI("Testing Verify of wrong password (expected failure)");
  verifyPassword(wrongPassword, enrollRsp.data, 1, verifyRsp, false);

  ALOGI("PasswordIsBinaryData test done");
}

/**
 * Ensure that long passwords aren't truncated
 */
TEST_P(GatekeeperHidlTest, LongPassword) {
  GatekeeperResponse enrollRsp;
  GatekeeperResponse verifyRsp;
  hidl_vec<uint8_t> password;

  password.resize(64); // maximum length used by Android
  memset(password.data(), 'A', password.size());

  ALOGI("Testing Enroll+Verify of long password (expected success)");
  enrollNewPassword(password, enrollRsp, true);
  verifyPassword(password, enrollRsp.data, 1, verifyRsp, true);

  ALOGI("Testing Verify of wrong password (expected failure)");
  password[password.size() - 1] ^= 1;
  verifyPassword(password, enrollRsp.data, 1, verifyRsp, false);

  ALOGI("LongPassword test done");
}

/**
 * Ensure we can securely update password (keep the same
 * secure user_id) if we prove we know old password