export function defaultParseCRX()

in src/io/crx.ts [8:29]


export function defaultParseCRX(buf: Buffer): Buffer {
  if (buf.readUInt32BE(0) !== 0x43723234) {
    throw new Error('Invalid header: Does not start with Cr24.');
  }

  const version = buf.readUInt32LE(4);

  if (version === 2) {
    const publicKeyLength = buf.readUInt32LE(8);
    const signatureLength = buf.readUInt32LE(12);
    // 16 = Magic number (4), CRX format version (4), lengths (2x4)
    return buf.slice(16 + publicKeyLength + signatureLength);
  }

  if (version === 3) {
    const crx3HeaderLength = buf.readUInt32LE(8);
    // 12 = Magic number (4), CRX format version (4), header length (4)
    return buf.slice(12 + crx3HeaderLength);
  }

  throw new Error('Unexpected crx format version number.');
}