Index: chrome/browser/policy/cloud/cloud_policy_validator.h |
diff --git a/chrome/browser/policy/cloud/cloud_policy_validator.h b/chrome/browser/policy/cloud/cloud_policy_validator.h |
index d53a0c6f91327664d10a157818a61085a7a542e0..9907dac9305fb66ca071e6b38c6c55f01c241432 100644 |
--- a/chrome/browser/policy/cloud/cloud_policy_validator.h |
+++ b/chrome/browser/policy/cloud/cloud_policy_validator.h |
@@ -101,6 +101,12 @@ class CloudPolicyValidatorBase { |
return policy_data_; |
} |
+ // If ValidateHashValue() is called, the hash value of the policy value can |
+ // be read with this method after completion has been signaled. |
+ uint32 hash_value() const { |
+ return hash_value_; |
+ } |
+ |
// Instructs the validator to check that the policy timestamp is not before |
// |not_before| and not after |now| + grace interval. If |
// |timestamp_option| is set to TIMESTAMP_REQUIRED, then the policy will fail |
@@ -145,6 +151,10 @@ class CloudPolicyValidatorBase { |
// check against. |
void ValidateInitialKey(); |
+ // Causes the validator to calculate the hash value of the policy value. |
+ // This can be used to determine if two policies are different. |
+ void ValidateHashValue(); |
+ |
// Convenience helper that configures timestamp and token validation based on |
// the current policy blob. |policy_data| may be NULL, in which case the |
// timestamp validation will drop the lower bound. |dm_token_option| |
@@ -182,6 +192,7 @@ class CloudPolicyValidatorBase { |
VALIDATE_PAYLOAD = 1 << 6, |
VALIDATE_SIGNATURE = 1 << 7, |
VALIDATE_INITIAL_KEY = 1 << 8, |
+ VALIDATE_HASH_VALUE = 1 << 9, |
}; |
// Performs validation, called on a background thread. |
@@ -207,6 +218,7 @@ class CloudPolicyValidatorBase { |
Status CheckPayload(); |
Status CheckSignature(); |
Status CheckInitialKey(); |
+ Status CheckHashValue(); |
// Verifies the SHA1/RSA |signature| on |data| against |key|. |
static bool VerifySignature(const std::string& data, |
@@ -217,6 +229,7 @@ class CloudPolicyValidatorBase { |
scoped_ptr<enterprise_management::PolicyFetchResponse> policy_; |
scoped_ptr<enterprise_management::PolicyData> policy_data_; |
google::protobuf::MessageLite* payload_; |
+ uint32 hash_value_; |
int validation_flags_; |
int64 timestamp_not_before_; |