Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Side by Side Diff: components/policy/core/common/cloud/cloud_policy_validator_unittest.cc

Issue 116273002: Added support for signed policy blobs on desktop. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix for ios. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <vector> 5 #include <vector>
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/memory/scoped_ptr.h" 8 #include "base/memory/scoped_ptr.h"
9 #include "base/message_loop/message_loop.h" 9 #include "base/message_loop/message_loop.h"
10 #include "base/message_loop/message_loop_proxy.h" 10 #include "base/message_loop/message_loop_proxy.h"
11 #include "base/stl_util.h"
11 #include "base/strings/string_util.h" 12 #include "base/strings/string_util.h"
12 #include "components/policy/core/common/cloud/cloud_policy_constants.h" 13 #include "components/policy/core/common/cloud/cloud_policy_constants.h"
13 #include "components/policy/core/common/cloud/cloud_policy_validator.h" 14 #include "components/policy/core/common/cloud/cloud_policy_validator.h"
14 #include "components/policy/core/common/cloud/policy_builder.h" 15 #include "components/policy/core/common/cloud/policy_builder.h"
15 #include "crypto/rsa_private_key.h" 16 #include "crypto/rsa_private_key.h"
16 #include "testing/gmock/include/gmock/gmock.h" 17 #include "testing/gmock/include/gmock/gmock.h"
17 #include "testing/gtest/include/gtest/gtest.h" 18 #include "testing/gtest/include/gtest/gtest.h"
18 19
19 namespace em = enterprise_management; 20 namespace em = enterprise_management;
20 21
(...skipping 29 matching lines...) Expand all
50 EXPECT_CALL(*this, ValidationCompletion(validator.get())).WillOnce( 51 EXPECT_CALL(*this, ValidationCompletion(validator.get())).WillOnce(
51 check_action); 52 check_action);
52 validator.release()->StartValidation( 53 validator.release()->StartValidation(
53 base::Bind(&CloudPolicyValidatorTest::ValidationCompletion, 54 base::Bind(&CloudPolicyValidatorTest::ValidationCompletion,
54 base::Unretained(this))); 55 base::Unretained(this)));
55 loop_.RunUntilIdle(); 56 loop_.RunUntilIdle();
56 Mock::VerifyAndClearExpectations(this); 57 Mock::VerifyAndClearExpectations(this);
57 } 58 }
58 59
59 scoped_ptr<UserCloudPolicyValidator> CreateValidator() { 60 scoped_ptr<UserCloudPolicyValidator> CreateValidator() {
60 std::vector<uint8> public_key; 61 std::vector<uint8> public_key_bytes;
61 EXPECT_TRUE( 62 EXPECT_TRUE(
62 PolicyBuilder::CreateTestSigningKey()->ExportPublicKey(&public_key)); 63 PolicyBuilder::CreateTestSigningKey()->ExportPublicKey(
64 &public_key_bytes));
63 policy_.Build(); 65 policy_.Build();
64 66
67 // Convert from bytes to string format (which is what ValidateSignature()
68 // takes).
69 std::string public_key = std::string(
70 reinterpret_cast<const char*>(vector_as_array(&public_key_bytes)),
71 public_key_bytes.size());
72
65 UserCloudPolicyValidator* validator = UserCloudPolicyValidator::Create( 73 UserCloudPolicyValidator* validator = UserCloudPolicyValidator::Create(
66 policy_.GetCopy(), base::MessageLoopProxy::current()); 74 policy_.GetCopy(), base::MessageLoopProxy::current());
67 validator->ValidateTimestamp(timestamp_, timestamp_, 75 validator->ValidateTimestamp(timestamp_, timestamp_,
68 timestamp_option_); 76 timestamp_option_);
69 validator->ValidateUsername(PolicyBuilder::kFakeUsername); 77 validator->ValidateUsername(PolicyBuilder::kFakeUsername);
70 validator->ValidateDomain(PolicyBuilder::kFakeDomain); 78 validator->ValidateDomain(PolicyBuilder::kFakeDomain);
71 validator->ValidateDMToken(existing_dm_token_, ignore_missing_dm_token_); 79 validator->ValidateDMToken(existing_dm_token_, ignore_missing_dm_token_);
72 validator->ValidatePolicyType(dm_protocol::kChromeUserPolicyType); 80 validator->ValidatePolicyType(dm_protocol::kChromeUserPolicyType);
73 validator->ValidatePayload(); 81 validator->ValidatePayload();
74 validator->ValidateSignature(public_key, allow_key_rotation_); 82 validator->ValidateSignature(public_key,
83 GetPolicyVerificationKey(),
84 PolicyBuilder::GetTestSigningKeySignature(),
85 allow_key_rotation_);
75 if (allow_key_rotation_) 86 if (allow_key_rotation_)
76 validator->ValidateInitialKey(); 87 validator->ValidateInitialKey(GetPolicyVerificationKey());
77 return make_scoped_ptr(validator); 88 return make_scoped_ptr(validator);
78 } 89 }
79 90
80 91
81 void CheckSuccessfulValidation(UserCloudPolicyValidator* validator) { 92 void CheckSuccessfulValidation(UserCloudPolicyValidator* validator) {
82 EXPECT_TRUE(validator->success()); 93 EXPECT_TRUE(validator->success());
83 EXPECT_EQ(policy_.policy().SerializeAsString(), 94 EXPECT_EQ(policy_.policy().SerializeAsString(),
84 validator->policy()->SerializeAsString()); 95 validator->policy()->SerializeAsString());
85 EXPECT_EQ(policy_.policy_data().SerializeAsString(), 96 EXPECT_EQ(policy_.policy_data().SerializeAsString(),
86 validator->policy_data()->SerializeAsString()); 97 validator->policy_data()->SerializeAsString());
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 298
288 TEST_F(CloudPolicyValidatorTest, NoRotation) { 299 TEST_F(CloudPolicyValidatorTest, NoRotation) {
289 allow_key_rotation_ = false; 300 allow_key_rotation_ = false;
290 policy_.UnsetNewSigningKey(); 301 policy_.UnsetNewSigningKey();
291 Validate(CheckStatus(CloudPolicyValidatorBase::VALIDATION_OK)); 302 Validate(CheckStatus(CloudPolicyValidatorBase::VALIDATION_OK));
292 } 303 }
293 304
294 } // namespace 305 } // namespace
295 306
296 } // namespace policy 307 } // namespace policy
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698