| 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 |