10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
45f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "chrome/browser/chromeos/login/supervised/supervised_user_authentication.h"
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/values.h"
7cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "chrome/browser/chromeos/login/users/supervised_user_manager.h"
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "chromeos/login/auth/key.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "testing/gtest/include/gtest/gtest.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace chromeos {
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass SupervisedUserAuthenticationTest : public testing::Test {
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch protected:
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  SupervisedUserAuthenticationTest();
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual ~SupervisedUserAuthenticationTest();
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  // testing::Test:
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void SetUp() OVERRIDE;
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void TearDown() OVERRIDE;
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(SupervisedUserAuthenticationTest);
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
250529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochSupervisedUserAuthenticationTest::SupervisedUserAuthenticationTest() {}
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
270529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochSupervisedUserAuthenticationTest::~SupervisedUserAuthenticationTest() {}
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid SupervisedUserAuthenticationTest::SetUp() {}
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochvoid SupervisedUserAuthenticationTest::TearDown() {}
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
330529e5d033099cbfc42635f6f6183833b09dff6eBen MurdochTEST_F(SupervisedUserAuthenticationTest, SignatureGeneration) {
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string password = "password";
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  int revision = 1;
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string salt =
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      "204cc733ebe526ea9a84885de904eb7a578d86a4c385d252dce275d9d9675c37";
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string expected_salted_password =
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      "OSL3HZZSfK+mDQTYUh3lXhgAzJNWhYz52ax0Bleny7Q=";
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string signature_key = "p5TR/34XX0R7IMuffH14BiL1vcdSD8EajPzdIg09z9M=";
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string expected_signature =
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      "KOPQmmJcMr9iMkr36N1cX+G9gDdBBu7zutAxNayPMN4=";
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
44cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  Key key(password);
45cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  key.Transform(Key::KEY_TYPE_SALTED_PBKDF2_AES256_1234, salt);
46cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  ASSERT_EQ(expected_salted_password, key.GetSecret());
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  std::string signature = SupervisedUserAuthentication::BuildPasswordSignature(
48cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      key.GetSecret(), revision, signature_key);
490529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ASSERT_EQ(expected_signature, signature);
500529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}
510529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
520529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  //  namespace chromeos
53