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

Commit 51b8d29e authored by Eric Biggers's avatar Eric Biggers Committed by Gerrit Code Review
Browse files

Merge "Test that the password isn't truncated"

parents a867aa20 1396f237
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