Commit f3edc417 authored by Daniel Vogelheim's avatar Daniel Vogelheim Committed by Commit Bot

Add use counters for signature-based SRI.

Add use counter to support an upcoming origin trial. Count how many signatures
are being checked, and how many of those were checked successfully.

Change-Id: I12fdeb9e4c3444d2920ff87d6fff681c98eba40b
Reviewed-on: https://chromium-review.googlesource.com/883804
Commit-Queue: Daniel Vogelheim <vogelheim@chromium.org>
Reviewed-by: default avatarMike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#532830}
parent b695a488
...@@ -25,6 +25,12 @@ WebFeature GetWebFeature( ...@@ -25,6 +25,12 @@ WebFeature GetWebFeature(
case SubresourceIntegrity::ReportInfo::UseCounterFeature:: case SubresourceIntegrity::ReportInfo::UseCounterFeature::
kSRIElementWithUnparsableIntegrityAttribute: kSRIElementWithUnparsableIntegrityAttribute:
return WebFeature::kSRIElementWithUnparsableIntegrityAttribute; return WebFeature::kSRIElementWithUnparsableIntegrityAttribute;
case SubresourceIntegrity::ReportInfo::UseCounterFeature::
kSRISignatureCheck:
return WebFeature::kSRISignatureCheck;
case SubresourceIntegrity::ReportInfo::UseCounterFeature::
kSRISignatureSuccess:
return WebFeature::kSRISignatureSuccess;
} }
NOTREACHED(); NOTREACHED();
return WebFeature::kSRIElementWithUnparsableIntegrityAttribute; return WebFeature::kSRIElementWithUnparsableIntegrityAttribute;
......
...@@ -149,11 +149,19 @@ bool SubresourceIntegrity::CheckSubresourceIntegrityImpl( ...@@ -149,11 +149,19 @@ bool SubresourceIntegrity::CheckSubresourceIntegrityImpl(
// Check any of the "strongest" integrity constraints. // Check any of the "strongest" integrity constraints.
IntegrityAlgorithm max_algorithm = FindBestAlgorithm(metadata_set); IntegrityAlgorithm max_algorithm = FindBestAlgorithm(metadata_set);
CheckFunction checker = GetCheckFunctionForAlgorithm(max_algorithm); CheckFunction checker = GetCheckFunctionForAlgorithm(max_algorithm);
bool report_ed25519 = max_algorithm == IntegrityAlgorithm::kEd25519;
if (report_ed25519) {
report_info.AddUseCount(ReportInfo::UseCounterFeature::kSRISignatureCheck);
}
for (const IntegrityMetadata& metadata : metadata_set) { for (const IntegrityMetadata& metadata : metadata_set) {
if (metadata.Algorithm() == max_algorithm && if (metadata.Algorithm() == max_algorithm &&
(*checker)(metadata, content, size, integrity_header)) { (*checker)(metadata, content, size, integrity_header)) {
report_info.AddUseCount(ReportInfo::UseCounterFeature:: report_info.AddUseCount(ReportInfo::UseCounterFeature::
kSRIElementWithMatchingIntegrityAttribute); kSRIElementWithMatchingIntegrityAttribute);
if (report_ed25519) {
report_info.AddUseCount(
ReportInfo::UseCounterFeature::kSRISignatureSuccess);
}
return true; return true;
} }
} }
......
...@@ -28,6 +28,8 @@ class PLATFORM_EXPORT SubresourceIntegrity final { ...@@ -28,6 +28,8 @@ class PLATFORM_EXPORT SubresourceIntegrity final {
kSRIElementWithNonMatchingIntegrityAttribute, kSRIElementWithNonMatchingIntegrityAttribute,
kSRIElementIntegrityAttributeButIneligible, kSRIElementIntegrityAttributeButIneligible,
kSRIElementWithUnparsableIntegrityAttribute, kSRIElementWithUnparsableIntegrityAttribute,
kSRISignatureCheck,
kSRISignatureSuccess,
}; };
void AddUseCount(UseCounterFeature); void AddUseCount(UseCounterFeature);
......
...@@ -1862,6 +1862,8 @@ enum WebFeature { ...@@ -1862,6 +1862,8 @@ enum WebFeature {
kV8HTMLElement_Autocapitalize_AttributeGetter = 2349, kV8HTMLElement_Autocapitalize_AttributeGetter = 2349,
kV8HTMLElement_Autocapitalize_AttributeSetter = 2350, kV8HTMLElement_Autocapitalize_AttributeSetter = 2350,
kCSSLegacyAlignment = 2351, kCSSLegacyAlignment = 2351,
kSRISignatureCheck = 2352,
kSRISignatureSuccess = 2353,
// Add new features immediately above this line. Don't change assigned // Add new features immediately above this line. Don't change assigned
// numbers of any item, and don't reuse removed slots. // numbers of any item, and don't reuse removed slots.
......
...@@ -17581,8 +17581,7 @@ Called by update_net_error_codes.py.--> ...@@ -17581,8 +17581,7 @@ Called by update_net_error_codes.py.-->
<int value="2228" label="DocumentPageShowRegistered"/> <int value="2228" label="DocumentPageShowRegistered"/>
<int value="2229" label="DocumentPageShowFired"/> <int value="2229" label="DocumentPageShowFired"/>
<int value="2230" label="ReplaceCharsetInXHR"/> <int value="2230" label="ReplaceCharsetInXHR"/>
<int value="2231" <int value="2231" label="RespondToSameOriginRequestWithCrossOriginResponse"/>
label="RespondToSameOriginRequestWithCrossOriginResponse (obsolete)"/>
<int value="2232" label="LinkRelModulePreload"/> <int value="2232" label="LinkRelModulePreload"/>
<int value="2233" label="PerformanceMeasurePassedInObject"/> <int value="2233" label="PerformanceMeasurePassedInObject"/>
<int value="2234" label="PerformanceMeasurePassedInNavigationTiming"/> <int value="2234" label="PerformanceMeasurePassedInNavigationTiming"/>
...@@ -17705,6 +17704,8 @@ Called by update_net_error_codes.py.--> ...@@ -17705,6 +17704,8 @@ Called by update_net_error_codes.py.-->
<int value="2349" label="V8HTMLElement_Autocapitalize_AttributeGetter"/> <int value="2349" label="V8HTMLElement_Autocapitalize_AttributeGetter"/>
<int value="2350" label="V8HTMLElement_Autocapitalize_AttributeSetter"/> <int value="2350" label="V8HTMLElement_Autocapitalize_AttributeSetter"/>
<int value="2351" label="CSSLegacyAlignment"/> <int value="2351" label="CSSLegacyAlignment"/>
<int value="2352" label="SRISignatureCheck"/>
<int value="2353" label="SRISignatureSuccess"/>
</enum> </enum>
<enum name="FeedbackSource"> <enum name="FeedbackSource">
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment