MCPcopy Index your code
hub / github.com/darkreader/darkreader / firefoxExtractHashMetaInfOrder

Function firefoxExtractHashMetaInfOrder

tasks/integrity.js:46–142  ·  view source on GitHub ↗
(manifest)

Source from the content-addressed store, hash-verified

44}
45
46function firefoxExtractHashMetaInfOrder(manifest) {
47 function getDigestAlgos(lines) {
48 const digestHeader = lines[3];
49 if (digestHeader === 'Digest-Algorithms: MD5 SHA1') {
50 return {
51 type: 0,
52 lineCount: 5,
53 digestFormat: {
54 digestHeader,
55 digestLines: [
56 'MD5-Digest: ',
57 'SHA1-Digest: ',
58 ],
59 digestLinesLengths: [36, 41],
60 },
61 };
62 } else if (digestHeader === 'Digest-Algorithms: MD5 SHA1 SHA256') {
63 return {
64 type: 1,
65 lineCount: 6,
66 digestFormat: {
67 digestHeader,
68 digestLines: [
69 'MD5-Digest: ',
70 'SHA1-Digest: ',
71 'SHA256-Digest: ',
72 ],
73 digestLinesLengths: [36, 41, 59],
74 },
75 };
76 } else if (digestHeader === 'Digest-Algorithms: SHA1 SHA256') {
77 return {
78 type: 2,
79 lineCount: 5,
80 digestFormat: {
81 digestHeader,
82 digestLines: [
83 'SHA1-Digest: ',
84 'SHA256-Digest: ',
85 ],
86 digestLinesLengths: [41, 59],
87 },
88 };
89 }
90 throw new Error('Unknown combination of digest algorithms');
91 }
92
93 function getFileName(lines, fileIndex, lineCount, digestFormat) {
94 const lineIndex = 2 + fileIndex * lineCount;
95 assert(lines[lineIndex - 1] === '');
96 assert(lines[lineIndex].startsWith('Name: '));
97 assert(lines[lineIndex + 1] === digestFormat.digestHeader);
98 for (let i = 0; i < digestFormat.digestLines.length; i++) {
99 const line = lines[lineIndex + i + 2];
100 assert(line.startsWith(digestFormat.digestLines[i]));
101 assert(line.length === digestFormat.digestLinesLengths[i]);
102 }
103 const fileName = lines[lineIndex].substring('Name: '.length);

Callers 1

firefoxFetchAllMetadataFunction · 0.85

Calls 5

assertFunction · 0.85
getDigestAlgosFunction · 0.85
getFileCountFunction · 0.85
getFileNameFunction · 0.85
isSortedFunction · 0.85

Tested by

no test coverage detected