OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |