(signatureVersion, version, order, manifest)
| 129 | } |
| 130 | |
| 131 | async function createHashes(signatureVersion, version, order, manifest) { |
| 132 | const types = hashTypes(signatureVersion); |
| 133 | const destDir = getDestDir({debug: false, platform: 'firefox'}); |
| 134 | /** @type {Array<{archivePath: string; realPath?: string; isOptional?: boolean; integrity?: any}>} */ |
| 135 | const regular = [ |
| 136 | await fixManifest(manifest?.indent || 2, manifest?.settings), |
| 137 | ...(await enumerateStandardPaths(destDir, order)), |
| 138 | ]; |
| 139 | regular.push({ |
| 140 | realPath: `./integrity/firefox/${version}/mozilla-recommendation.json`, |
| 141 | archivePath: 'mozilla-recommendation.json', |
| 142 | isOptional: true, |
| 143 | }); |
| 144 | await calculateHashes(types, regular); |
| 145 | |
| 146 | const coseManifest = serializeHashManifest(regular); |
| 147 | if (await fileExists(`./integrity/firefox/${version}/cose.sig`)) { |
| 148 | await writeFile(`${destDir}/META-INF/cose.manifest`, coseManifest); |
| 149 | regular.push({ |
| 150 | archivePath: 'META-INF/cose.manifest', |
| 151 | integrity: calculateHashForData(types, coseManifest), |
| 152 | }); |
| 153 | regular.push({ |
| 154 | archivePath: 'META-INF/cose.sig', |
| 155 | integrity: await calculateHashesForFile(types, `./integrity/firefox/${version}/cose.sig`), |
| 156 | }); |
| 157 | } |
| 158 | |
| 159 | const manifestMf = serializeHashManifest(regular); |
| 160 | await writeFile(`${destDir}/META-INF/manifest.mf`, manifestMf); |
| 161 | |
| 162 | const mozillaSf = serializeSfManifest(types, manifestMf); |
| 163 | await writeFile(`${destDir}/META-INF/mozilla.sf`, mozillaSf); |
| 164 | } |
| 165 | |
| 166 | /** |
| 167 | * This utility function is written with readability in mind |
no test coverage detected