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