@electron/asar
Advanced tools
| /** | ||
| * An object that represents an integrity digest of a given version. | ||
| */ | ||
| type IntegrityDigest<Version extends number, AdditionalParams> = { | ||
| used: false; | ||
| } | ({ | ||
| used: true; | ||
| version: Version; | ||
| } & AdditionalParams); | ||
| /** | ||
| * A v1 integrity digest. | ||
| */ | ||
| type IntegrityDigestV1 = IntegrityDigest<1, { | ||
| sha256Digest: Buffer; | ||
| }>; | ||
| /** | ||
| * A map type of all integrity digest versions. | ||
| */ | ||
| type DigestByVersion = { | ||
| 1: IntegrityDigestV1; | ||
| }; | ||
| /** | ||
| * A union of all integrity digest versions. | ||
| */ | ||
| type AnyIntegrityDigest = DigestByVersion[keyof DigestByVersion]; | ||
| export declare class InvalidAppPathError extends Error { | ||
| constructor(); | ||
| } | ||
| export declare class InvalidAsarIntegrityError extends Error { | ||
| constructor(); | ||
| } | ||
| export declare class MissingIntegrityDigestError extends Error { | ||
| constructor(); | ||
| } | ||
| export declare class MultipleDifferentIntegrityDigestsError extends Error { | ||
| constructor(); | ||
| } | ||
| export declare class UnknownIntegrityDigestVersionError extends Error { | ||
| constructor(version: number); | ||
| } | ||
| /** | ||
| * Calculates the integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @param version - The version of the integrity digest to calculate. | ||
| * @returns The integrity digest for the app. | ||
| */ | ||
| export declare function calculateIntegrityDigestForApp<Version extends keyof DigestByVersion>(appPath: string, version: Version): DigestByVersion[Version]; | ||
| /** | ||
| * Gets the stored integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @returns The stored integrity digest for the app. | ||
| */ | ||
| export declare function getStoredIntegrityDigestForApp<T extends AnyIntegrityDigest>(appPath: string): T; | ||
| /** | ||
| * Sets the stored integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @param digest - The integrity digest to set. | ||
| * @returns The stored integrity digest for the app. | ||
| */ | ||
| export declare function setStoredIntegrityDigestForApp<T extends AnyIntegrityDigest>(appPath: string, digest: T): void; | ||
| export declare function enableIntegrityDigestForApp(appPath: string): Promise<void>; | ||
| export declare function disableIntegrityDigestForApp(appPath: string): Promise<void>; | ||
| export declare function printStoredIntegrityDigestForApp(appPath: string): Promise<void>; | ||
| export declare function verifyIntegrityDigestForApp(appPath: string): Promise<void>; | ||
| export {}; |
| import path from 'node:path'; | ||
| import crypto from 'node:crypto'; | ||
| import plist from 'plist'; | ||
| import { wrappedFs as fs } from './wrapped-fs.js'; | ||
| function isValidAsarIntegrity(asarIntegrity) { | ||
| if (typeof asarIntegrity !== 'object' || asarIntegrity === null) | ||
| return false; | ||
| if (Object.keys(asarIntegrity).length === 0) | ||
| return false; | ||
| for (const key of Object.keys(asarIntegrity)) { | ||
| if (typeof key !== 'string') | ||
| return false; | ||
| if (typeof asarIntegrity[key] !== 'object' || asarIntegrity[key] === null) | ||
| return false; | ||
| if (typeof asarIntegrity[key].algorithm !== 'string') | ||
| return false; | ||
| if (typeof asarIntegrity[key].hash !== 'string') | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| /** | ||
| * Calculates the v1 integrity digest for the app. | ||
| * @see https://github.com/electron/electron/blob/2d5597b1b0fa697905380184e26c9f0947e05c5d/shell/common/asar/integrity_digest.mm#L52-L66 | ||
| * @param asarIntegrity - The integrity information for the app. | ||
| * @returns The v1 integrity digest for the app. | ||
| * | ||
| */ | ||
| function calculateIntegrityDigestV1(asarIntegrity) { | ||
| const integrityHash = crypto.createHash('SHA256'); | ||
| for (const key of Object.keys(asarIntegrity).sort()) { | ||
| const { algorithm, hash } = asarIntegrity[key]; | ||
| integrityHash.update(key); | ||
| integrityHash.update(algorithm); | ||
| integrityHash.update(hash); | ||
| } | ||
| return { | ||
| used: true, | ||
| version: 1, | ||
| sha256Digest: integrityHash.digest(), | ||
| }; | ||
| } | ||
| /** | ||
| * Reads the integrity information from the Info.plist of the given app | ||
| * bundle and calculates the v1 integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @returns The v1 integrity digest for the app. | ||
| */ | ||
| function calculateIntegrityDigestV1ForApp(appPath) { | ||
| const plistPath = path.join(appPath, 'Contents', 'Info.plist'); | ||
| const plistBuffer = fs.readFileSync(plistPath); | ||
| const plistData = plist.parse(plistBuffer.toString()); | ||
| const asarIntegrity = plistData['ElectronAsarIntegrity']; | ||
| if (!isValidAsarIntegrity(asarIntegrity)) { | ||
| throw new InvalidAsarIntegrityError(); | ||
| } | ||
| return calculateIntegrityDigestV1(asarIntegrity); | ||
| } | ||
| /// Integrity digest handling errors (API) | ||
| export class InvalidAppPathError extends Error { | ||
| constructor() { | ||
| super('Invalid app path'); | ||
| this.name = 'InvalidAppPathError'; | ||
| } | ||
| } | ||
| export class InvalidAsarIntegrityError extends Error { | ||
| constructor() { | ||
| super('Invalid ASAR Integrity information in Info.plist'); | ||
| this.name = 'InvalidAsarIntegrityError'; | ||
| } | ||
| } | ||
| export class MissingIntegrityDigestError extends Error { | ||
| constructor() { | ||
| super('No integrity digest found in the binary'); | ||
| this.name = 'MissingIntegrityDigestError'; | ||
| } | ||
| } | ||
| export class MultipleDifferentIntegrityDigestsError extends Error { | ||
| constructor() { | ||
| super('Multiple different integrity digests found in the binary'); | ||
| this.name = 'MultipleDifferentIntegrityDigestsError'; | ||
| } | ||
| } | ||
| export class UnknownIntegrityDigestVersionError extends Error { | ||
| constructor(version) { | ||
| super(`Unknown integrity digest version: ${version}`); | ||
| this.name = 'UnknownIntegrityDigestVersionError'; | ||
| } | ||
| } | ||
| // Integrity digest storage and retrieval helpers | ||
| /** | ||
| * @see https://github.com/electron/electron/blob/2d5597b1b0fa697905380184e26c9f0947e05c5d/shell/common/asar/integrity_digest.mm#L24 | ||
| */ | ||
| const INTEGRITY_DIGEST_SENTINEL = 'AGbevlPCksUGKNL8TSn7wGmJEuJsXb2A'; | ||
| function pathToIntegrityDigestFile(appPath) { | ||
| if (appPath.endsWith('.app')) { | ||
| return path.resolve(appPath, 'Contents', 'Frameworks', 'Electron Framework.framework', 'Electron Framework'); | ||
| } | ||
| throw new InvalidAppPathError(); | ||
| } | ||
| function forEachSentinelInApp(appPath, callback, writeBack = false) { | ||
| const integrityFilePath = pathToIntegrityDigestFile(appPath); | ||
| const integrityFile = fs.readFileSync(integrityFilePath); | ||
| let searchCursor = 0; | ||
| const sentinelAsBuffer = Buffer.from(INTEGRITY_DIGEST_SENTINEL); | ||
| do { | ||
| const sentinelIndex = integrityFile.indexOf(sentinelAsBuffer, searchCursor); | ||
| if (sentinelIndex === -1) | ||
| break; | ||
| callback(sentinelIndex, integrityFile); | ||
| searchCursor = sentinelIndex + sentinelAsBuffer.length; | ||
| } while (true); | ||
| if (writeBack) { | ||
| fs.writeFileSync(integrityFilePath, integrityFile); | ||
| } | ||
| } | ||
| function doDigestsMatch(digestA, digestB) { | ||
| if (digestA.used !== digestB.used) | ||
| return false; | ||
| if (digestA.used && digestB.used) { | ||
| if (digestA.version !== digestB.version) | ||
| return false; | ||
| switch (digestA.version) { | ||
| case 1: | ||
| return digestA.sha256Digest.equals(digestB.sha256Digest); | ||
| default: | ||
| throw new UnknownIntegrityDigestVersionError(digestA.version); | ||
| } | ||
| } | ||
| else | ||
| return true; | ||
| } | ||
| function sentinelIndexToDigest(integrityFile, sentinelIndex) { | ||
| const used = integrityFile.readUInt8(sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length) === 1; | ||
| if (!used) { | ||
| return { used: false }; | ||
| } | ||
| else { | ||
| const version = integrityFile.readUInt8(sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 1); | ||
| switch (version) { | ||
| case 1: { | ||
| const sha256Digest = integrityFile.subarray(sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 2, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 2 + 32); | ||
| return { | ||
| used: true, | ||
| version: 1, | ||
| sha256Digest, | ||
| }; | ||
| } | ||
| default: | ||
| throw new UnknownIntegrityDigestVersionError(version); | ||
| } | ||
| } | ||
| } | ||
| // Integrity digest storage and retrieval functions (API) | ||
| /** | ||
| * Calculates the integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @param version - The version of the integrity digest to calculate. | ||
| * @returns The integrity digest for the app. | ||
| */ | ||
| export function calculateIntegrityDigestForApp(appPath, version) { | ||
| if (version !== 1) { | ||
| throw new UnknownIntegrityDigestVersionError(version); | ||
| } | ||
| switch (version) { | ||
| case 1: | ||
| return calculateIntegrityDigestV1ForApp(appPath); | ||
| default: | ||
| throw new UnknownIntegrityDigestVersionError(version); | ||
| } | ||
| } | ||
| /** | ||
| * Gets the stored integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @returns The stored integrity digest for the app. | ||
| */ | ||
| export function getStoredIntegrityDigestForApp(appPath) { | ||
| let lastDigestFound = null; | ||
| forEachSentinelInApp(appPath, (sentinelIndex, integrityFile) => { | ||
| const currentDigest = sentinelIndexToDigest(integrityFile, sentinelIndex); | ||
| if (lastDigestFound === null) { | ||
| lastDigestFound = currentDigest; | ||
| } | ||
| else if (!doDigestsMatch(currentDigest, lastDigestFound)) { | ||
| throw new MultipleDifferentIntegrityDigestsError(); | ||
| } | ||
| lastDigestFound = currentDigest; | ||
| }); | ||
| if (lastDigestFound === null) { | ||
| throw new MissingIntegrityDigestError(); | ||
| } | ||
| return lastDigestFound; | ||
| } | ||
| /** | ||
| * Sets the stored integrity digest for the app. | ||
| * @param appPath - The path to the app bundle. | ||
| * @param digest - The integrity digest to set. | ||
| * @returns The stored integrity digest for the app. | ||
| */ | ||
| export function setStoredIntegrityDigestForApp(appPath, digest) { | ||
| if (digest.used === true && digest.version !== 1) { | ||
| throw new UnknownIntegrityDigestVersionError(digest.version); | ||
| } | ||
| forEachSentinelInApp(appPath, (sentinelIndex, integrityFile) => { | ||
| integrityFile.writeUInt8(digest.used ? 1 : 0, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length); | ||
| const oldVersion = integrityFile.readUInt8(sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 1); | ||
| switch (oldVersion) { | ||
| case 1: | ||
| integrityFile.fill(0, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 2, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 2 + 32); | ||
| break; | ||
| } | ||
| if (digest.used) { | ||
| integrityFile.writeUInt8(digest.version, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 1); | ||
| switch (digest.version) { | ||
| case 1: { | ||
| const v1Digest = digest; | ||
| v1Digest.sha256Digest.copy(integrityFile, sentinelIndex + INTEGRITY_DIGEST_SENTINEL.length + 2); | ||
| break; | ||
| } | ||
| default: | ||
| throw new UnknownIntegrityDigestVersionError(digest.version); | ||
| } | ||
| } | ||
| }, true); | ||
| } | ||
| // High-level integrity digest management functions | ||
| function printDigest(digest, prefix = '') { | ||
| const digestLogger = prefix | ||
| ? (s, ...args) => console.log(prefix + s, ...args) | ||
| : console.log; | ||
| if (!digest.used) { | ||
| digestLogger('Integrity digest is OFF'); | ||
| return; | ||
| } | ||
| digestLogger('Integrity digest is ON (version: %d)', digest.version); | ||
| switch (digest.version) { | ||
| case 1: | ||
| digestLogger('\tDigest (SHA256): %s', digest.sha256Digest.toString('hex')); | ||
| break; | ||
| default: | ||
| digestLogger('\tUnexpected digest version: %d. Cannot print digest.', digest.version); | ||
| } | ||
| } | ||
| export async function enableIntegrityDigestForApp(appPath) { | ||
| try { | ||
| console.log('Calculating integrity digest...'); | ||
| const digest = calculateIntegrityDigestForApp(appPath, 1); | ||
| console.log('Turning integrity digest ON...'); | ||
| await setStoredIntegrityDigestForApp(appPath, digest); | ||
| console.log('Integrity digest turned ON'); | ||
| } | ||
| catch (e) { | ||
| const errorMessage = e instanceof Error ? e.message : String(e); | ||
| console.log('Failed to turn ON integrity digest: %s', errorMessage); | ||
| } | ||
| } | ||
| export async function disableIntegrityDigestForApp(appPath) { | ||
| try { | ||
| console.log('Turning integrity digest OFF...'); | ||
| await setStoredIntegrityDigestForApp(appPath, { used: false }); | ||
| console.log('Integrity digest turned OFF'); | ||
| } | ||
| catch (e) { | ||
| const errorMessage = e instanceof Error ? e.message : String(e); | ||
| console.log('Failed to turn OFF integrity digest: %s', errorMessage); | ||
| } | ||
| } | ||
| export async function printStoredIntegrityDigestForApp(appPath) { | ||
| try { | ||
| const storedDigest = await getStoredIntegrityDigestForApp(appPath); | ||
| printDigest(storedDigest); | ||
| } | ||
| catch (e) { | ||
| const errorMessage = e instanceof Error ? e.message : String(e); | ||
| console.log('Failed to read integrity digest: %s', errorMessage); | ||
| } | ||
| } | ||
| export async function verifyIntegrityDigestForApp(appPath) { | ||
| try { | ||
| const storedDigest = await getStoredIntegrityDigestForApp(appPath); | ||
| if (!storedDigest.used) { | ||
| console.log('Integrity digest is off, verification SKIPPED'); | ||
| return; | ||
| } | ||
| const calculatedDigest = calculateIntegrityDigestForApp(appPath, 1); | ||
| if (doDigestsMatch(storedDigest, calculatedDigest)) { | ||
| console.log('Integrity digest verification PASSED'); | ||
| } | ||
| else { | ||
| console.log('Integrity digest verification FAILED'); | ||
| console.log('Expected digest:'); | ||
| printDigest(calculatedDigest, '\t'); | ||
| console.log('Actual digest:'); | ||
| printDigest(storedDigest, '\t'); | ||
| } | ||
| } | ||
| catch (e) { | ||
| const errorMessage = e instanceof Error ? e.message : String(e); | ||
| console.log('Failed to verify integrity digest: %s', errorMessage); | ||
| } | ||
| } | ||
| //# sourceMappingURL=integrity-digest.js.map |
| {"version":3,"file":"integrity-digest.js","sourceRoot":"","sources":["../src/integrity-digest.ts"],"names":[],"mappings":"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"} |
+26
-0
@@ -5,2 +5,3 @@ #!/usr/bin/env node | ||
| import { createPackageWithOptions, listPackage, extractFile, extractAll } from '../lib/asar.js'; | ||
| import { enableIntegrityDigestForApp, disableIntegrityDigestForApp, verifyIntegrityDigestForApp, printStoredIntegrityDigestForApp } from '../lib/integrity-digest.js'; | ||
| import { program } from 'commander'; | ||
@@ -75,2 +76,27 @@ import fs from 'node:fs'; | ||
| program.command('integrity-digest <command> <app>') | ||
| .alias('id') | ||
| .description('manage integrity digest in app binary (macOS only)') | ||
| .action(async function (command, app) { | ||
| // No platform guard just in case users want to run this on other platforms | ||
| const allowedCommands = ['on', 'off', 'status', 'verify'] | ||
| switch (command) { | ||
| case 'on': | ||
| await enableIntegrityDigestForApp(app) | ||
| break | ||
| case 'off': | ||
| await disableIntegrityDigestForApp(app) | ||
| break | ||
| case 'status': | ||
| await printStoredIntegrityDigestForApp(app) | ||
| break | ||
| case 'verify': | ||
| await verifyIntegrityDigestForApp(app) | ||
| break | ||
| default: | ||
| console.log('Unknown integrity digest command: %s. Allowed commands are: %s', command, allowedCommands.join(', ')) | ||
| process.exit(1) | ||
| } | ||
| }) | ||
| program.command('*', { hidden: true}) | ||
@@ -77,0 +103,0 @@ .action(function (_cmd, args) { |
+1
-0
@@ -76,1 +76,2 @@ import { FilesystemEntry } from './filesystem.js'; | ||
| export { uncacheAll, uncacheFilesystem as uncache, FileRecord, DirectoryRecord } from './disk.js'; | ||
| export { calculateIntegrityDigestForApp, getStoredIntegrityDigestForApp, setStoredIntegrityDigestForApp, InvalidAppPathError, InvalidAsarIntegrityError, MissingIntegrityDigestError, MultipleDifferentIntegrityDigestsError, UnknownIntegrityDigestVersionError, } from './integrity-digest.js'; |
+1
-0
@@ -279,2 +279,3 @@ import path from 'node:path'; | ||
| export { uncacheAll, uncacheFilesystem as uncache } from './disk.js'; | ||
| export { calculateIntegrityDigestForApp, getStoredIntegrityDigestForApp, setStoredIntegrityDigestForApp, InvalidAppPathError, InvalidAsarIntegrityError, MissingIntegrityDigestError, MultipleDifferentIntegrityDigestsError, UnknownIntegrityDigestVersionError, } from './integrity-digest.js'; | ||
| //# sourceMappingURL=asar.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"asar.js","sourceRoot":"","sources":["../src/asar.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"asar.js","sourceRoot":"","sources":["../src/asar.ts"],"names":[],"mappings":"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"} |
+36
-21
| { | ||
| "name": "@electron/asar", | ||
| "description": "Creating Electron app packages", | ||
| "version": "4.0.1", | ||
| "version": "4.1.0", | ||
| "type": "module", | ||
| "exports": "./lib/asar.js", | ||
| "types": "./lib/asar.d.ts", | ||
| "bin": { | ||
| "asar": "./bin/asar.mjs" | ||
| }, | ||
| "bin": "./bin/asar.mjs", | ||
| "files": [ | ||
@@ -33,31 +31,48 @@ "bin", | ||
| "build:docs": "typedoc src/asar.ts", | ||
| "mocha": "xvfb-maybe electron-mocha && mocha", | ||
| "mocha:update": "mocha --update", | ||
| "mocha:watch": "mocha --watch", | ||
| "test": "yarn lint && yarn mocha", | ||
| "lint": "yarn prettier:check", | ||
| "prettier": "prettier \"src/**/*.ts\" \"test/**/*.js\" \"*.js\"", | ||
| "test": "yarn lint && yarn vitest run && xvfb-maybe electron node_modules/vitest/vitest.mjs run", | ||
| "test:typecheck": "cd test && tsc", | ||
| "test:watch": "vitest", | ||
| "test:ui": "vitest --ui", | ||
| "lint": "yarn prettier:check && yarn test:typecheck", | ||
| "prettier": "prettier \"src/**/*.{ts,cts,mts}\" \"test/**/*.{ts,cts,mts}\" \"*.{js,cjs,mjs}\"", | ||
| "prettier:check": "yarn prettier --check", | ||
| "prettier:write": "yarn prettier --write", | ||
| "prepare": "tsc" | ||
| "prepack": "yarn build", | ||
| "prepare": "husky" | ||
| }, | ||
| "dependencies": { | ||
| "commander": "^13.1.0", | ||
| "glob": "^11.0.1", | ||
| "minimatch": "^10.0.1" | ||
| "glob": "^13.0.2", | ||
| "minimatch": "^10.0.1", | ||
| "plist": "^3.1.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@electron/fuses": "^2.1.0", | ||
| "@electron/get": "^4.0.2", | ||
| "@tsconfig/node22": "^22.0.1", | ||
| "@types/mocha": "^10.0.10", | ||
| "@types/node": "~22.10.7", | ||
| "chai": "^5.2.0", | ||
| "electron": "^34.5.0", | ||
| "electron-mocha": "^13.1.0", | ||
| "mocha": "~11.0.2", | ||
| "mocha-chai-jest-snapshot": "^1.1.6", | ||
| "prettier": "^3.3.3", | ||
| "@types/node": "^22.12.0", | ||
| "@types/plist": "^3.0.5", | ||
| "@types/semver": "^7.7.1", | ||
| "electron": "^35.7.5", | ||
| "husky": "^9.1.7", | ||
| "lint-staged": "^16.2.7", | ||
| "prettier": "^3.8.1", | ||
| "semver": "^7.7.4", | ||
| "typedoc": "~0.25.13", | ||
| "typescript": "^5.5.4", | ||
| "vitest": "^3.2.4", | ||
| "xvfb-maybe": "^0.2.1" | ||
| }, | ||
| "packageManager": "yarn@4.10.3+sha512.c38cafb5c7bb273f3926d04e55e1d8c9dfa7d9c3ea1f36a4868fa028b9e5f72298f0b7f401ad5eb921749eb012eb1c3bb74bf7503df3ee43fd600d14a018266f", | ||
| "dependenciesMeta": { | ||
| "electron": { | ||
| "built": true | ||
| } | ||
| }, | ||
| "lint-staged": { | ||
| "*.{json,md}": "prettier --write --experimental-cli", | ||
| "*.{js,ts, cjs, mjs, cts, mts}": [ | ||
| "prettier --write --experimental-cli" | ||
| ] | ||
| } | ||
| } |
+50
-13
@@ -5,5 +5,6 @@ # @electron/asar - Electron Archive | ||
| [](https://npmjs.org/package/@electron/asar) | ||
| [](https://packages.electronjs.org/asar) | ||
| Asar is a simple extensive archive format, it works like `tar` that concatenates | ||
| all files together without compression, while having random access support. | ||
| ASAR is a simple extensive archive format. It concatenates all files together without compression | ||
| (like [`tar`](https://www.gnu.org/software/tar/)) while having random access support. | ||
@@ -13,6 +14,6 @@ ## Features | ||
| * Support random access | ||
| * Use JSON to store files' information | ||
| * Use JSON to store file information | ||
| * Very easy to write a parser | ||
| ## Command line utility | ||
| ## CLI | ||
@@ -24,3 +25,3 @@ ### Install | ||
| ```bash | ||
| $ npm install --engine-strict @electron/asar | ||
| npm install --engine-strict @electron/asar | ||
| ``` | ||
@@ -49,3 +50,6 @@ | ||
| integrity-digest|id <command> <app> | ||
| manage integrity digest in app binary (macOS only) | ||
| Options: | ||
@@ -60,4 +64,6 @@ | ||
| Given: | ||
| ``` | ||
| ```text | ||
| app | ||
@@ -75,18 +81,47 @@ (a) ├── x1 | ||
| Exclude: a, b | ||
| ```bash | ||
| $ asar pack app app.asar --unpack-dir "{x1,x2}" | ||
| asar pack app app.asar --unpack-dir "{x1,x2}" | ||
| ``` | ||
| Exclude: a, b, d, f | ||
| ```bash | ||
| $ asar pack app app.asar --unpack-dir "**/{x1,x2}" | ||
| asar pack app app.asar --unpack-dir "**/{x1,x2}" | ||
| ``` | ||
| Exclude: a, b, d, f, h | ||
| ```bash | ||
| $ asar pack app app.asar --unpack-dir "{**/x1,**/x2,z4/w1}" | ||
| asar pack app app.asar --unpack-dir "{**/x1,**/x2,z4/w1}" | ||
| ``` | ||
| ## Using programmatically | ||
| #### Integrity digest | ||
| The integrity digest is a macOS-specific feature that further hardens apps which utilize [ASAR Integrity](https://www.electronjs.org/docs/latest/tutorial/asar-integrity) from tampering by storing a hash of the integrity info within the code of the app itself. If you modify this hash, you ***must*** re-sign your app afterwards. By default, this feature is off. | ||
| To enable the integrity digest, run: | ||
| ```bash | ||
| asar integrity-digest on /path/to/YourApp.app | ||
| ``` | ||
| To disable the integrity digest, run: | ||
| ```bash | ||
| asar integrity-digest off /path/to/YourApp.app | ||
| ``` | ||
| To see the status of the integrity digest, run: | ||
| ```bash | ||
| asar integrity-digest status /path/to/YourApp.app | ||
| ``` | ||
| To verify the status of the integrity digest, run: | ||
| ```bash | ||
| asar integrity-digest verify /path/to/YourApp.app | ||
| ``` | ||
| ## Programmatic usage | ||
| For full API usage, see the [API documentation](https://packages.electronjs.org/asar). | ||
| ### Example | ||
@@ -107,2 +142,3 @@ | ||
| ### Transform | ||
| You can pass in a `transform` option, that is a function, which either returns | ||
@@ -132,3 +168,3 @@ nothing, or a `stream.Transform`. The latter will be used on files that will be | ||
| ``` | ||
| ```markdown | ||
| | UInt32: header_size | String: header | Bytes: file1 | ... | Bytes: file42 | | ||
@@ -211,7 +247,8 @@ ``` | ||
| `integrity` is an object consisting of a few keys: | ||
| * A hashing `algorithm`, currently only `SHA256` is supported. | ||
| * A hex encoded `hash` value representing the hash of the entire file. | ||
| * An array of hex encoded hashes for the `blocks` of the file. i.e. for a blockSize of 4KB this array contains the hash of every block if you split the file into N 4KB blocks. | ||
| * A integer value `blockSize` representing the size in bytes of each block in the `blocks` hashes above | ||
| * An array of hex encoded hashes for the `blocks` of the file (i.e. for a blockSize of 4KB, this array contains the hash of every block if you split the file into N 4KB blocks). | ||
| * A integer value `blockSize` representing the size in bytes of each block in the `blocks` hashes above. | ||
| [pickle]: https://chromium.googlesource.com/chromium/src/+/main/base/pickle.h |
117466
29.4%28
12%1639
31.75%246
17.7%4
33.33%15
25%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated