🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

@electron/asar

Package Overview
Dependencies
Maintainers
1
Versions
30
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@electron/asar - npm Package Compare versions

Comparing version
4.0.1
to
4.1.0
+65
lib/integrity-digest.d.ts
/**
* 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';

@@ -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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"}
{
"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

[![npm version](http://img.shields.io/npm/v/@electron/asar.svg)](https://npmjs.org/package/@electron/asar)
[![API docs](https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fregistry.npmjs.org%2F%40electron%2Fasar%2Flatest&query=%24.version&logo=typescript&logoColor=white&label=API%20Docs)](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