@@ -25,94 +25,9 @@ const UIStrings = {
2525} as const ;
2626const str_ = i18n . i18n . registerUIStrings ( 'models/issues_manager/SRIMessageSignatureIssue.ts' , UIStrings ) ;
2727const i18nLazyString = i18n . i18n . getLazilyComputedLocalizedString . bind ( undefined , str_ ) ;
28- const specLinks = [
29- {
30- link : 'https://www.rfc-editor.org/rfc/rfc9421.html' ,
31- linkTitle : i18nLazyString ( UIStrings . httpMessageSignatures ) ,
32- } ,
33- {
34- link : 'https://wicg.github.io/signature-based-sri/' ,
35- linkTitle : i18nLazyString ( UIStrings . signatureBasedIntegrity ) ,
36- }
37- ] ;
38-
39- export const enum IssueCode {
40- MISSING_SIGNATURE_HEADER = 'SRIMessageSignatureIssue::MissingSignatureHeader' ,
41- MISSING_SIGNATURE_INPUT_HEADER = 'SRIMessageSignatureIssue::MissingSignatureInputHeader' ,
42- INVALID_SIGNATURE_HEADER = 'SRIMessageSignatureIssue::InvalidSignatureHeader' ,
43- INVALID_SIGNATURE_INPUT_HEADER = 'SRIMessageSignatureIssue::InvalidSignatureInputHeader' ,
44- SIGNATURE_HEADER_VALUE_IS_NOT_BYTE_SEQUENCE = 'SRIMessageSignatureIssue::SignatureHeaderValueIsNotByteSequence' ,
45- SIGNATURE_HEADER_VALUE_IS_PARAMETERIZED = 'SRIMessageSignatureIssue::SignatureHeaderValueIsParameterized' ,
46- SIGNATURE_HEADER_VALUE_IS_INCORRECT_LENGTH = 'SRIMessageSignatureIssue::SignatureHeaderValueIsIncorrectLength' ,
47- SIGNATURE_INPUT_HEADER_MISSING_LABEL = 'SRIMessageSignatureIssue::SignatureInputHeaderMissingLabel' ,
48- SIGNATURE_INPUT_HEADER_VALUE_NOT_INNER_LIST = 'SRIMessageSignatureIssue::SignatureInputHeaderValueNotInnerList' ,
49- SIGNATURE_INPUT_HEADER_VALUE_MISSING_COMPONENTS =
50- 'SRIMessageSignatureIssue::SignatureInputHeaderValueMissingComponents' ,
51- SIGNATURE_INPUT_HEADER_INVALID_COMPONENT_TYPE = 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentType' ,
52- SIGNATURE_INPUT_HEADER_INVALID_COMPONENT_NAME = 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidComponentName' ,
53- SIGNATURE_INPUT_HEADER_INVALID_HEADER_COMPONENT_PARAMETER =
54- 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidHeaderComponentParameter' ,
55- SIGNATURE_INPUT_HEADER_INVALID_DERIVED_COMPONENT_PARAMETER =
56- 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidDerivedComponentParameter' ,
57- SIGNATURE_INPUT_HEADER_KEY_ID_LENGTH = 'SRIMessageSignatureIssue::SignatureInputHeaderKeyIdLength' ,
58- SIGNATURE_INPUT_HEADER_INVALID_PARAMETER = 'SRIMessageSignatureIssue::SignatureInputHeaderInvalidParameter' ,
59- SIGNATURE_INPUT_HEADER_MISSING_REQUIRED_PARAMETERS =
60- 'SRIMessageSignatureIssue::SignatureInputHeaderMissingRequiredParameters' ,
61- VALIDATION_FAILED_SIGNATURE_EXPIRED = 'SRIMessageSignatureIssue::ValidationFailedSignatureExpired' ,
62- VALIDATION_FAILED_INVALID_LENGTH = 'SRIMessageSignatureIssue::ValidationFailedInvalidLength' ,
63- VALIDATION_FAILED_SIGNATURE_MISMATCH = 'SRIMessageSignatureIssue::ValidationFailedSignatureMismatch' ,
64- VALIDATION_FAILED_INTEGRITY_MISMATCH = 'SRIMessageSignatureIssue::ValidationFailedIntegrityMismatch' ,
65- }
66-
67- function errorToIssueCode ( details : Protocol . Audits . SRIMessageSignatureIssueDetails ) : IssueCode {
68- switch ( details . error ) {
69- case Protocol . Audits . SRIMessageSignatureError . MissingSignatureHeader :
70- return IssueCode . MISSING_SIGNATURE_HEADER ;
71- case Protocol . Audits . SRIMessageSignatureError . MissingSignatureInputHeader :
72- return IssueCode . MISSING_SIGNATURE_INPUT_HEADER ;
73- case Protocol . Audits . SRIMessageSignatureError . InvalidSignatureHeader :
74- return IssueCode . INVALID_SIGNATURE_HEADER ;
75- case Protocol . Audits . SRIMessageSignatureError . InvalidSignatureInputHeader :
76- return IssueCode . INVALID_SIGNATURE_INPUT_HEADER ;
77- case Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsNotByteSequence :
78- return IssueCode . SIGNATURE_HEADER_VALUE_IS_NOT_BYTE_SEQUENCE ;
79- case Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsParameterized :
80- return IssueCode . SIGNATURE_HEADER_VALUE_IS_PARAMETERIZED ;
81- case Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsIncorrectLength :
82- return IssueCode . SIGNATURE_HEADER_VALUE_IS_INCORRECT_LENGTH ;
83- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderMissingLabel :
84- return IssueCode . SIGNATURE_INPUT_HEADER_MISSING_LABEL ;
85- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderValueNotInnerList :
86- return IssueCode . SIGNATURE_INPUT_HEADER_VALUE_NOT_INNER_LIST ;
87- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderValueMissingComponents :
88- return IssueCode . SIGNATURE_INPUT_HEADER_VALUE_MISSING_COMPONENTS ;
89- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidComponentType :
90- return IssueCode . SIGNATURE_INPUT_HEADER_INVALID_COMPONENT_TYPE ;
91- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidComponentName :
92- return IssueCode . SIGNATURE_INPUT_HEADER_INVALID_COMPONENT_NAME ;
93- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidHeaderComponentParameter :
94- return IssueCode . SIGNATURE_INPUT_HEADER_INVALID_HEADER_COMPONENT_PARAMETER ;
95- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidDerivedComponentParameter :
96- return IssueCode . SIGNATURE_INPUT_HEADER_INVALID_DERIVED_COMPONENT_PARAMETER ;
97- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderKeyIdLength :
98- return IssueCode . SIGNATURE_INPUT_HEADER_KEY_ID_LENGTH ;
99- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidParameter :
100- return IssueCode . SIGNATURE_INPUT_HEADER_INVALID_PARAMETER ;
101- case Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderMissingRequiredParameters :
102- return IssueCode . SIGNATURE_INPUT_HEADER_MISSING_REQUIRED_PARAMETERS ;
103- case Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureExpired :
104- return IssueCode . VALIDATION_FAILED_SIGNATURE_EXPIRED ;
105- case Protocol . Audits . SRIMessageSignatureError . ValidationFailedInvalidLength :
106- return IssueCode . VALIDATION_FAILED_INVALID_LENGTH ;
107- case Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureMismatch :
108- return IssueCode . VALIDATION_FAILED_SIGNATURE_MISMATCH ;
109- case Protocol . Audits . SRIMessageSignatureError . ValidationFailedIntegrityMismatch :
110- return IssueCode . VALIDATION_FAILED_INTEGRITY_MISMATCH ;
111- }
112- }
11328
11429function generateGroupingIssueCode ( details : Protocol . Audits . SRIMessageSignatureIssueDetails ) : string {
115- const issueCode = errorToIssueCode ( details ) ;
30+ const issueCode = ` ${ Protocol . Audits . InspectorIssueCode . SRIMessageSignatureIssue } :: ${ details . error } ` ;
11631 if ( details . error === Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureMismatch ) {
11732 // Signature mismatch errors should be grouped by "signature base".
11833 return issueCode + details . signatureBase ;
@@ -126,60 +41,67 @@ function generateGroupingIssueCode(details: Protocol.Audits.SRIMessageSignatureI
12641 return issueCode ;
12742}
12843
129- export class SRIMessageSignatureIssue extends Issue {
44+ export class SRIMessageSignatureIssue extends Issue < string > {
13045 readonly #issueDetails: Protocol . Audits . SRIMessageSignatureIssueDetails ;
13146
13247 constructor ( issueDetails : Protocol . Audits . SRIMessageSignatureIssueDetails , issuesModel : SDK . IssuesModel . IssuesModel ) {
13348 super (
13449 {
13550 code : generateGroupingIssueCode ( issueDetails ) ,
136- umaCode : [
137- Protocol . Audits . InspectorIssueCode . SRIMessageSignatureIssue ,
138- issueDetails . error ,
139- ] . join ( '::' ) ,
51+ umaCode : `${ Protocol . Audits . InspectorIssueCode . SRIMessageSignatureIssue } ::${ issueDetails . error } ` ,
14052 } ,
14153 issuesModel ) ;
14254 this . #issueDetails = issueDetails ;
14355 }
14456
145- override requests ( ) : Iterable < Protocol . Audits . AffectedRequest > {
146- if ( this . #issueDetails. request ) {
147- return [ this . #issueDetails. request ] ;
148- }
149- return [ ] ;
150- }
151-
152- getCategory ( ) : IssueCategory {
153- return IssueCategory . OTHER ;
154- }
155-
15657 details ( ) : Protocol . Audits . SRIMessageSignatureIssueDetails {
15758 return this . #issueDetails;
15859 }
15960
160- getDescription ( ) : MarkdownIssueDescription | null {
161- const description = issueDescriptions . get ( this . #issueDetails. error ) ;
162- if ( ! description ) {
163- return null ;
61+ // Overriding `Issue<String>`:
62+ override primaryKey ( ) : string {
63+ return JSON . stringify ( this . details ( ) ) ;
64+ }
65+
66+ override getDescription ( ) : MarkdownIssueDescription | null {
67+ const description : LazyMarkdownIssueDescription = {
68+ file : `sri${ this . details ( ) . error } .md` ,
69+ links : [
70+ {
71+ link : 'https://www.rfc-editor.org/rfc/rfc9421.html' ,
72+ linkTitle : i18nLazyString ( UIStrings . httpMessageSignatures ) ,
73+ } ,
74+ {
75+ link : 'https://wicg.github.io/signature-based-sri/' ,
76+ linkTitle : i18nLazyString ( UIStrings . signatureBasedIntegrity ) ,
77+ }
78+ ] ,
79+ substitutions : new Map ( )
80+ } ;
81+ if ( this . #issueDetails. error === Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureMismatch ) {
82+ description . substitutions ?. set ( 'PLACEHOLDER_signatureBase' , ( ) => this . #issueDetails. signatureBase ) ;
16483 }
165- if ( this . #issueDetails. signatureBase !== '' ) {
166- description . substitutions = new Map ( [ [ 'PLACEHOLDER_signatureBase' , ( ) => this . #issueDetails. signatureBase ] ] ) ;
167- } else if ( this . #issueDetails. integrityAssertions . length ) {
168- description . substitutions = new Map ( [
169- [ 'PLACEHOLDER_integrityAssertions' , ( ) => '\n<li>' + this . #issueDetails. integrityAssertions . join ( '\n<li>' ) ]
170- ] ) ;
84+ if ( this . #issueDetails. error === Protocol . Audits . SRIMessageSignatureError . ValidationFailedIntegrityMismatch ) {
85+ description . substitutions ?. set ( 'PLACEHOLDER_integrityAssertions' , ( ) => {
86+ const prefix = '\n<li>' ;
87+ return prefix + this . details ( ) . integrityAssertions . join ( prefix ) ;
88+ } ) ;
17189 }
17290 return resolveLazyDescription ( description ) ;
17391 }
17492
175- primaryKey ( ) : string {
176- return JSON . stringify ( this . #issueDetails ) ;
93+ override getCategory ( ) : IssueCategory {
94+ return IssueCategory . OTHER ;
17795 }
17896
179- getKind ( ) : IssueKind {
97+ override getKind ( ) : IssueKind {
18098 return IssueKind . PAGE_ERROR ;
18199 }
182100
101+ override requests ( ) : Iterable < Protocol . Audits . AffectedRequest > {
102+ return this . details ( ) . request ? [ this . details ( ) . request ] : [ ] ;
103+ }
104+
183105 static fromInspectorIssue ( issuesModel : SDK . IssuesModel . IssuesModel , inspectorIssue : Protocol . Audits . InspectorIssue ) :
184106 SRIMessageSignatureIssue [ ] {
185107 const details = inspectorIssue . details . sriMessageSignatureIssueDetails ;
@@ -190,153 +112,3 @@ export class SRIMessageSignatureIssue extends Issue {
190112 return [ new SRIMessageSignatureIssue ( details , issuesModel ) ] ;
191113 }
192114}
193-
194- const issueDescriptions = new Map < Protocol . Audits . SRIMessageSignatureError , LazyMarkdownIssueDescription > ( [
195- [
196- Protocol . Audits . SRIMessageSignatureError . MissingSignatureHeader ,
197- {
198- file : 'sriMissingSignatureHeader.md' ,
199- links : specLinks ,
200- } ,
201- ] ,
202- [
203- Protocol . Audits . SRIMessageSignatureError . MissingSignatureInputHeader ,
204- {
205- file : 'sriMissingSignatureInputHeader.md' ,
206- links : specLinks ,
207- } ,
208- ] ,
209- [
210- Protocol . Audits . SRIMessageSignatureError . InvalidSignatureHeader ,
211- {
212- file : 'sriInvalidSignatureHeader.md' ,
213- links : specLinks ,
214- } ,
215- ] ,
216- [
217- Protocol . Audits . SRIMessageSignatureError . InvalidSignatureInputHeader ,
218- {
219- file : 'sriInvalidSignatureInputHeader.md' ,
220- links : specLinks ,
221- } ,
222- ] ,
223- [
224- Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsNotByteSequence ,
225- {
226- file : 'sriSignatureHeaderValueIsNotByteSequence.md' ,
227- links : specLinks ,
228- } ,
229- ] ,
230- [
231- Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsParameterized ,
232- {
233- file : 'sriSignatureHeaderValueIsParameterized.md' ,
234- links : specLinks ,
235- } ,
236- ] ,
237- [
238- Protocol . Audits . SRIMessageSignatureError . SignatureHeaderValueIsIncorrectLength ,
239- {
240- file : 'sriSignatureHeaderValueIsIncorrectLength.md' ,
241- links : specLinks ,
242- } ,
243- ] ,
244- [
245- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderMissingLabel ,
246- {
247- file : 'sriSignatureInputHeaderMissingLabel.md' ,
248- links : specLinks ,
249- } ,
250- ] ,
251- [
252- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderValueNotInnerList ,
253- {
254- file : 'sriSignatureInputHeaderValueNotInnerList.md' ,
255- links : specLinks ,
256- } ,
257- ] ,
258- [
259- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderValueMissingComponents ,
260- {
261- file : 'sriSignatureInputHeaderValueMissingComponents.md' ,
262- links : specLinks ,
263- } ,
264- ] ,
265- [
266- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidComponentType ,
267- {
268- file : 'sriSignatureInputHeaderInvalidComponentType.md' ,
269- links : specLinks ,
270- } ,
271- ] ,
272- [
273- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidComponentName ,
274- {
275- file : 'sriSignatureInputHeaderInvalidComponentName.md' ,
276- links : specLinks ,
277- } ,
278- ] ,
279- [
280- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidHeaderComponentParameter ,
281- {
282- file : 'sriSignatureInputHeaderInvalidHeaderComponentParameter.md' ,
283- links : specLinks ,
284- } ,
285- ] ,
286- [
287- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidDerivedComponentParameter ,
288- {
289- file : 'sriSignatureInputHeaderInvalidDerivedComponentParameter.md' ,
290- links : specLinks ,
291- } ,
292- ] ,
293- [
294- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderKeyIdLength ,
295- {
296- file : 'sriSignatureInputHeaderKeyIdLength.md' ,
297- links : specLinks ,
298- } ,
299- ] ,
300- [
301- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderInvalidParameter ,
302- {
303- file : 'sriSignatureInputHeaderInvalidParameter.md' ,
304- links : specLinks ,
305- } ,
306- ] ,
307- [
308- Protocol . Audits . SRIMessageSignatureError . SignatureInputHeaderMissingRequiredParameters ,
309- {
310- file : 'sriSignatureInputHeaderMissingRequiredParameters.md' ,
311- links : specLinks ,
312- } ,
313- ] ,
314- [
315- Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureExpired ,
316- {
317- file : 'sriValidationFailedSignatureExpired.md' ,
318- links : specLinks ,
319- } ,
320- ] ,
321- [
322- Protocol . Audits . SRIMessageSignatureError . ValidationFailedInvalidLength ,
323- {
324- file : 'sriValidationFailedInvalidLength.md' ,
325- links : specLinks ,
326- } ,
327- ] ,
328- [
329- Protocol . Audits . SRIMessageSignatureError . ValidationFailedIntegrityMismatch ,
330- {
331- file : 'sriValidationFailedIntegrityMismatch.md' ,
332- links : specLinks ,
333- } ,
334- ] ,
335- [
336- Protocol . Audits . SRIMessageSignatureError . ValidationFailedSignatureMismatch ,
337- {
338- file : 'sriValidationFailedSignatureMismatch.md' ,
339- links : specLinks ,
340- } ,
341- ] ,
342- ] ) ;
0 commit comments