@futpib/parser 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/allSettledStream.js +32 -14
- package/build/allSettledStream.test.js +32 -0
- package/build/androidPackage.d.ts +39 -0
- package/build/androidPackageParser.d.ts +17 -0
- package/build/androidPackageParser.js +183 -0
- package/build/{apkParser.test.js → androidPackageParser.test.js} +7 -7
- package/build/androidPackageUnparser.d.ts +4 -0
- package/build/androidPackageUnparser.js +90 -0
- package/build/androidPackageUnparser.test.js +26 -0
- package/build/arbitrarilySlicedAsyncInterable.d.ts +3 -1
- package/build/arbitrarilySlicedAsyncInterable.js +3 -3
- package/build/arbitraryFileSystemEntry.js +1 -1
- package/build/arbitraryZip.d.ts +1 -1
- package/build/arbitraryZip.js +13 -19
- package/build/arbitraryZipPermissions.d.ts +1 -8
- package/build/arbitraryZipPermissions.js +1 -16
- package/build/arbitraryZipStream.d.ts +1 -1
- package/build/arbitraryZipStream.js +3 -3
- package/build/arrayParser.d.ts +1 -1
- package/build/arrayParser.js +2 -2
- package/build/arrayParser.test.js +4 -4
- package/build/arrayUnparser.d.ts +2 -0
- package/build/arrayUnparser.js +8 -0
- package/build/backsmali.d.ts +1 -0
- package/build/backsmali.js +22 -0
- package/build/bsonParser.js +6 -2
- package/build/bsonParser.test.js +2 -2
- package/build/{parserInvariant.d.ts → customInvariant.d.ts} +1 -1
- package/build/{parserInvariant.js → customInvariant.js} +1 -1
- package/build/dalvikBytecodeParser/formatParsers.d.ts +97 -0
- package/build/dalvikBytecodeParser/formatParsers.js +169 -0
- package/build/dalvikBytecodeParser.d.ts +107 -0
- package/build/dalvikBytecodeParser.js +836 -0
- package/build/dalvikExecutable.d.ts +158 -0
- package/build/dalvikExecutable.js +20 -0
- package/build/dalvikExecutableParser/stringSyntaxParser.d.ts +4 -0
- package/build/dalvikExecutableParser/stringSyntaxParser.js +76 -0
- package/build/dalvikExecutableParser/typeParsers.d.ts +10 -0
- package/build/dalvikExecutableParser/typeParsers.js +34 -0
- package/build/dalvikExecutableParser/typedNumbers.d.ts +90 -0
- package/build/dalvikExecutableParser/typedNumbers.js +19 -0
- package/build/dalvikExecutableParser.d.ts +5 -0
- package/build/dalvikExecutableParser.js +1439 -0
- package/build/dalvikExecutableParser.test.js +70 -0
- package/build/dalvikExecutableParserAgainstSmaliParser.test.js +298 -0
- package/build/debugLogInputParser.d.ts +4 -0
- package/build/debugLogInputParser.js +16 -0
- package/build/debugLogParser.d.ts +1 -1
- package/build/debugLogParser.js +15 -4
- package/build/disjunctionParser.d.ts +2 -1
- package/build/disjunctionParser.js +4 -2
- package/build/elementParser.d.ts +2 -2
- package/build/elementParser.js +1 -1
- package/build/elementTerminatedArrayParser.d.ts +3 -0
- package/build/elementTerminatedArrayParser.js +18 -0
- package/build/elementTerminatedArrayParser.test.js +52 -0
- package/build/elementTerminatedSequenceArrayParser.d.ts +3 -0
- package/build/elementTerminatedSequenceArrayParser.js +32 -0
- package/build/elementTerminatedSequenceArrayParser.test.js +34 -0
- package/build/elementTerminatedSequenceParser.d.ts +3 -0
- package/build/elementTerminatedSequenceParser.js +27 -0
- package/build/elementTerminatedSequenceParser.test.js +34 -0
- package/build/endOfInputParser.d.ts +2 -2
- package/build/exactElementParser.d.ts +1 -1
- package/build/exactElementParser.js +10 -5
- package/build/exactSequenceParser.d.ts +2 -1
- package/build/exactSequenceParser.js +12 -2
- package/build/fetchCid.d.ts +1 -0
- package/build/fetchCid.js +107 -0
- package/build/fixedLengthSequenceParser.d.ts +1 -0
- package/build/fixedLengthSequenceParser.js +18 -1
- package/build/fixedLengthSequenceParser.test.js +41 -0
- package/build/hasExecutable.d.ts +1 -0
- package/build/hasExecutable.js +8 -0
- package/build/highResolutionTimer.d.ts +16 -0
- package/build/highResolutionTimer.js +42 -0
- package/build/index.d.ts +5 -2
- package/build/index.js +3 -0
- package/build/inputReader.d.ts +14 -3
- package/build/inputReader.js +43 -6
- package/build/inputReader.test.js +172 -7
- package/build/inputReaderState.d.ts +10 -0
- package/build/inputReaderState.js +16 -0
- package/build/inspect.d.ts +1 -0
- package/build/inspect.js +7 -0
- package/build/javaKeyStoreParser.d.ts +2 -0
- package/build/javaKeyStoreParser.js +67 -0
- package/build/javaKeyStoreParser.test.d.ts +1 -0
- package/build/javaKeyStoreParser.test.js +16 -0
- package/build/jsonParser.d.ts +2 -0
- package/build/jsonParser.js +13 -15
- package/build/jsonParser.test.js +2 -2
- package/build/leb128Parser.d.ts +7 -0
- package/build/leb128Parser.js +82 -0
- package/build/leb128Parser.test.d.ts +1 -0
- package/build/leb128Parser.test.js +107 -0
- package/build/listParser.d.ts +1 -1
- package/build/listParser.js +5 -5
- package/build/lookaheadParser.d.ts +2 -0
- package/build/lookaheadParser.js +14 -0
- package/build/{negativeLookahead.d.ts → negativeLookaheadParser.d.ts} +1 -1
- package/build/negativeLookaheadParser.js +24 -0
- package/build/negativeLookaheadParser.test.d.ts +1 -0
- package/build/negativeLookaheadParser.test.js +30 -0
- package/build/nonEmptyArrayParser.d.ts +2 -0
- package/build/nonEmptyArrayParser.js +32 -0
- package/build/nonEmptyArrayParser.test.d.ts +1 -0
- package/build/nonEmptyArrayParser.test.js +16 -0
- package/build/optionalParser.d.ts +1 -1
- package/build/optionalParser.js +2 -2
- package/build/parser.d.ts +13 -4
- package/build/parser.js +67 -32
- package/build/parser.test.js +94 -27
- package/build/parserAccessorParser.d.ts +1 -1
- package/build/parserAccessorParser.js +9 -1
- package/build/parserConsumedSequenceParser.d.ts +2 -0
- package/build/parserConsumedSequenceParser.js +22 -0
- package/build/parserContext.d.ts +20 -6
- package/build/parserContext.js +70 -40
- package/build/parserContext.test.js +34 -7
- package/build/parserCreatorCompose.d.ts +4 -3
- package/build/parserCreatorCompose.js +9 -3
- package/build/parserError.d.ts +6 -0
- package/build/parserError.js +6 -6
- package/build/parserImplementationInvariant.d.ts +1 -1
- package/build/parserImplementationInvariant.js +2 -2
- package/build/parserInputCompanion.d.ts +35 -0
- package/build/parserInputCompanion.js +68 -0
- package/build/promiseCompose.d.ts +1 -1
- package/build/promiseCompose.js +12 -1
- package/build/promiseSettled.d.ts +1 -0
- package/build/promiseSettled.js +4 -0
- package/build/quantifierParser.d.ts +2 -0
- package/build/quantifierParser.js +17 -0
- package/build/separatedArrayParser.d.ts +2 -0
- package/build/separatedArrayParser.js +39 -0
- package/build/separatedArrayParser.test.d.ts +1 -0
- package/build/separatedArrayParser.test.js +21 -0
- package/build/sequenceBuffer.d.ts +13 -3
- package/build/sequenceBuffer.js +60 -8
- package/build/sequenceBuffer.test.js +59 -2
- package/build/sequenceTerminatedSequenceParser.d.ts +5 -0
- package/build/sequenceTerminatedSequenceParser.js +32 -0
- package/build/sequenceTerminatedSequenceParser.test.d.ts +1 -0
- package/build/sequenceTerminatedSequenceParser.test.js +37 -0
- package/build/sequenceUnparser.d.ts +2 -0
- package/build/sequenceUnparser.js +6 -0
- package/build/skipParser.d.ts +1 -1
- package/build/skipParser.js +4 -2
- package/build/skipToParser.d.ts +2 -0
- package/build/skipToParser.js +11 -0
- package/build/sliceBoundedParser.d.ts +2 -2
- package/build/sliceBoundedParser.js +8 -3
- package/build/sliceBoundedParser.test.js +37 -3
- package/build/smali.d.ts +1 -0
- package/build/smali.js +17 -0
- package/build/smaliParser.d.ts +12 -0
- package/build/smaliParser.js +656 -0
- package/build/smaliParser.test.d.ts +1 -0
- package/build/smaliParser.test.js +115 -0
- package/build/terminatedArrayParser.d.ts +4 -2
- package/build/terminatedArrayParser.js +82 -5
- package/build/terminatedArrayParser.test.d.ts +1 -0
- package/build/terminatedArrayParser.test.js +131 -0
- package/build/toAsyncIterable.d.ts +1 -0
- package/build/toAsyncIterable.js +7 -0
- package/build/toAsyncIterator.d.ts +1 -0
- package/build/toAsyncIterator.js +33 -0
- package/build/tupleParser.d.ts +4 -0
- package/build/tupleParser.js +1 -5
- package/build/uint8Array.d.ts +1 -0
- package/build/uint8Array.js +7 -0
- package/build/unionParser.d.ts +2 -1
- package/build/unionParser.js +27 -12
- package/build/unionParser.test.d.ts +1 -0
- package/build/unionParser.test.js +60 -0
- package/build/unparser.d.ts +8 -0
- package/build/unparser.js +104 -0
- package/build/unparser.test.d.ts +1 -0
- package/build/unparser.test.js +150 -0
- package/build/unparserContext.d.ts +31 -0
- package/build/unparserContext.js +74 -0
- package/build/unparserError.d.ts +9 -0
- package/build/unparserError.js +9 -0
- package/build/unparserImplementationInvariant.d.ts +2 -0
- package/build/unparserImplementationInvariant.js +5 -0
- package/build/unparserOutputCompanion.d.ts +15 -0
- package/build/unparserOutputCompanion.js +13 -0
- package/build/zip.d.ts +9 -17
- package/build/zipParser.d.ts +20 -12
- package/build/zipParser.js +83 -71
- package/build/zipParser.test.js +2 -7
- package/build/zipUnparser.d.ts +8 -0
- package/build/zipUnparser.js +200 -0
- package/build/zipUnparser.test.d.ts +1 -0
- package/build/zipUnparser.test.js +80 -0
- package/package.json +26 -8
- package/src/allSettledStream.test.ts +40 -0
- package/src/allSettledStream.ts +47 -15
- package/src/androidPackage.ts +48 -0
- package/src/{apkParser.test.ts → androidPackageParser.test.ts} +7 -8
- package/src/androidPackageParser.test.ts.md +271 -0
- package/src/androidPackageParser.test.ts.snap +0 -0
- package/src/androidPackageParser.ts +440 -0
- package/src/androidPackageUnparser.test.ts +36 -0
- package/src/androidPackageUnparser.ts +120 -0
- package/src/arbitrarilySlicedAsyncInterable.ts +7 -2
- package/src/arbitraryFileSystemEntry.ts +2 -4
- package/src/arbitraryZip.ts +20 -27
- package/src/arbitraryZipPermissions.ts +0 -25
- package/src/arbitraryZipStream.ts +4 -4
- package/src/arrayParser.test.ts +4 -4
- package/src/arrayParser.ts +3 -2
- package/src/arrayUnparser.ts +13 -0
- package/src/backsmali.ts +30 -0
- package/src/bsonParser.test.ts +2 -2
- package/src/bsonParser.ts +16 -5
- package/src/{parserInvariant.ts → customInvariant.ts} +2 -2
- package/src/dalvikBytecodeParser/formatParsers.ts +421 -0
- package/src/dalvikBytecodeParser.ts +2074 -0
- package/src/dalvikExecutable.ts +220 -0
- package/src/dalvikExecutableParser/stringSyntaxParser.ts +145 -0
- package/src/dalvikExecutableParser/typeParsers.ts +65 -0
- package/src/dalvikExecutableParser/typedNumbers.ts +57 -0
- package/src/dalvikExecutableParser.test.ts +89 -0
- package/src/dalvikExecutableParser.test.ts.md +634 -0
- package/src/dalvikExecutableParser.test.ts.snap +0 -0
- package/src/dalvikExecutableParser.ts +2768 -0
- package/src/dalvikExecutableParserAgainstSmaliParser.test.ts +346 -0
- package/src/debugLogInputParser.ts +28 -0
- package/src/debugLogParser.ts +20 -4
- package/src/disjunctionParser.ts +10 -5
- package/src/elementParser.ts +3 -3
- package/src/elementTerminatedArrayParser.test.ts +99 -0
- package/src/elementTerminatedArrayParser.ts +31 -0
- package/src/elementTerminatedSequenceArrayParser.test.ts +54 -0
- package/src/elementTerminatedSequenceArrayParser.ts +52 -0
- package/src/elementTerminatedSequenceParser.test.ts +54 -0
- package/src/elementTerminatedSequenceParser.ts +43 -0
- package/src/endOfInputParser.ts +4 -4
- package/src/exactElementParser.ts +18 -12
- package/src/exactSequenceParser.ts +24 -3
- package/src/fetchCid.ts +125 -0
- package/src/fixedLengthSequenceParser.test.ts +77 -0
- package/src/fixedLengthSequenceParser.ts +28 -1
- package/src/hasExecutable.ts +11 -0
- package/src/highResolutionTimer.ts +49 -0
- package/src/index.ts +15 -2
- package/src/inputReader.test.ts +216 -7
- package/src/inputReader.ts +80 -5
- package/src/inputReaderState.ts +33 -0
- package/src/inspect.ts +9 -0
- package/src/javaKeyStore.ts +0 -0
- package/src/javaKeyStoreParser.test.ts +22 -0
- package/src/javaKeyStoreParser.test.ts.md +103 -0
- package/src/javaKeyStoreParser.test.ts.snap +0 -0
- package/src/javaKeyStoreParser.ts +136 -0
- package/src/jsonParser.test.ts +2 -2
- package/src/jsonParser.ts +23 -34
- package/src/leb128Parser.test.ts +171 -0
- package/src/leb128Parser.ts +125 -0
- package/src/listParser.ts +6 -6
- package/src/lookaheadParser.ts +19 -0
- package/src/negativeLookaheadParser.test.ts +53 -0
- package/src/negativeLookaheadParser.ts +36 -0
- package/src/nonEmptyArrayParser.test.ts +20 -0
- package/src/nonEmptyArrayParser.ts +44 -0
- package/src/optionalParser.ts +4 -3
- package/src/parser.test.ts +148 -27
- package/src/parser.test.ts.md +21 -21
- package/src/parser.test.ts.snap +0 -0
- package/src/parser.ts +153 -49
- package/src/parserAccessorParser.ts +12 -2
- package/src/parserConsumedSequenceParser.ts +29 -0
- package/src/parserContext.test.ts +38 -7
- package/src/parserContext.ts +127 -51
- package/src/parserCreatorCompose.ts +25 -7
- package/src/parserError.ts +9 -6
- package/src/parserImplementationInvariant.ts +2 -2
- package/src/parserInputCompanion.ts +102 -0
- package/src/promiseCompose.ts +17 -3
- package/src/promiseSettled.ts +6 -0
- package/src/quantifierParser.ts +25 -0
- package/src/separatedArrayParser.test.ts +34 -0
- package/src/separatedArrayParser.ts +55 -0
- package/src/sequenceBuffer.test.ts +72 -2
- package/src/sequenceBuffer.ts +93 -7
- package/src/sequenceTerminatedSequenceParser.test.ts +60 -0
- package/src/sequenceTerminatedSequenceParser.ts +62 -0
- package/src/sequenceUnparser.ts +9 -0
- package/src/skipParser.ts +7 -5
- package/src/skipToParser.ts +16 -0
- package/src/sliceBoundedParser.test.ts +45 -3
- package/src/sliceBoundedParser.ts +21 -3
- package/src/smali.ts +24 -0
- package/src/smaliParser.test.ts +132 -0
- package/src/smaliParser.test.ts.md +2320 -0
- package/src/smaliParser.test.ts.snap +0 -0
- package/src/smaliParser.ts +1166 -0
- package/src/terminatedArrayParser.test.ts +258 -0
- package/src/terminatedArrayParser.ts +111 -6
- package/src/toAsyncIterable.ts +7 -0
- package/src/toAsyncIterator.ts +48 -0
- package/src/tupleParser.ts +8 -5
- package/src/uint8Array.ts +10 -0
- package/src/unionParser.test.ts +79 -0
- package/src/unionParser.ts +44 -16
- package/src/unparser.test.ts +221 -0
- package/src/unparser.ts +209 -0
- package/src/unparserContext.ts +127 -0
- package/src/unparserError.ts +12 -0
- package/src/unparserImplementationInvariant.ts +6 -0
- package/src/unparserOutputCompanion.ts +24 -0
- package/src/zip.ts +10 -22
- package/src/zipParser.test.ts +2 -8
- package/src/zipParser.ts +223 -146
- package/src/zipUnparser.test.ts +119 -0
- package/src/zipUnparser.ts +300 -0
- package/build/apk.d.ts +0 -13
- package/build/apkParser.d.ts +0 -3
- package/build/apkParser.js +0 -135
- package/build/arbitraryDosDate.d.ts +0 -2
- package/build/arbitraryDosDate.js +0 -8
- package/build/arbitraryZipEntry.d.ts +0 -3
- package/build/arbitraryZipEntry.js +0 -26
- package/build/createDisjunctionParser.d.ts +0 -2
- package/build/createDisjunctionParser.js +0 -47
- package/build/createExactParser.d.ts +0 -2
- package/build/createExactParser.js +0 -12
- package/build/createSequentialUnionParser.d.ts +0 -2
- package/build/createSequentialUnionParser.js +0 -69
- package/build/fixedLengthChunkParser.d.ts +0 -2
- package/build/fixedLengthChunkParser.js +0 -12
- package/build/fixedLengthParser.d.ts +0 -2
- package/build/fixedLengthParser.js +0 -12
- package/build/inputChunkBuffer.d.ts +0 -15
- package/build/inputChunkBuffer.js +0 -40
- package/build/inputChunkBuffer.test.js +0 -34
- package/build/inputCompanion.d.ts +0 -18
- package/build/inputCompanion.js +0 -28
- package/build/invariantDefined.d.ts +0 -1
- package/build/invariantDefined.js +0 -5
- package/build/invariantIdentity.d.ts +0 -3
- package/build/invariantIdentity.js +0 -5
- package/build/jsonParser2.d.ts +0 -3
- package/build/jsonParser2.js +0 -52
- package/build/jsonParser2.test.js +0 -22
- package/build/negativeLookahead.js +0 -20
- package/build/parserCompose.d.ts +0 -3
- package/build/parserCompose.js +0 -7
- package/build/parserImplementationInvariantInvariant.d.ts +0 -3
- package/build/parserImplementationInvariantInvariant.js +0 -15
- package/build/promiseFish.d.ts +0 -1
- package/build/promiseFish.js +0 -3
- package/build/sequenceParser.d.ts +0 -3
- package/build/sequenceParser.js +0 -10
- package/build/terminatedSequenceParser.d.ts +0 -2
- package/build/terminatedSequenceParser.js +0 -24
- package/build/zipEntry.d.ts +0 -28
- package/build/zipFile.d.ts +0 -32
- package/build/zipFileEntry.d.ts +0 -6
- package/src/apk.ts +0 -16
- package/src/apkParser.test.ts.md +0 -268
- package/src/apkParser.test.ts.snap +0 -0
- package/src/apkParser.ts +0 -327
- package/src/inputCompanion.ts +0 -43
- package/src/invariantDefined.ts +0 -6
- package/src/invariantIdentity.ts +0 -8
- package/src/negativeLookahead.ts +0 -26
- /package/build/{apk.js → androidPackage.js} +0 -0
- /package/build/{apkParser.test.d.ts → androidPackageParser.test.d.ts} +0 -0
- /package/build/{arbitraryDosPermissions.d.ts → androidPackageUnparser.test.d.ts} +0 -0
- /package/build/{arbitraryDosPermissions.js → dalvikExecutableParser.test.d.ts} +0 -0
- /package/build/{inputChunkBuffer.test.d.ts → dalvikExecutableParserAgainstSmaliParser.test.d.ts} +0 -0
- /package/build/{jsonParser2.test.d.ts → elementTerminatedArrayParser.test.d.ts} +0 -0
- /package/build/{parserParsingInvariant.d.ts → elementTerminatedSequenceArrayParser.test.d.ts} +0 -0
- /package/build/{parserParsingInvariant.js → elementTerminatedSequenceParser.test.d.ts} +0 -0
- /package/build/{zipEntry.js → fixedLengthSequenceParser.test.d.ts} +0 -0
- /package/build/{zipFile.js → javaKeyStore.d.ts} +0 -0
- /package/build/{zipFileEntry.js → javaKeyStore.js} +0 -0
package/src/apkParser.test.ts.md
DELETED
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
# Snapshot report for `src/apkParser.test.ts`
|
|
2
|
-
|
|
3
|
-
The actual snapshot is saved in `apkParser.test.ts.snap`.
|
|
4
|
-
|
|
5
|
-
Generated by [AVA](https://avajs.dev).
|
|
6
|
-
|
|
7
|
-
## apk bafkreicckcmzrdxwoc3w2in3tivpyxrdtcfpct4zwauq3igew3nkpvfapu
|
|
8
|
-
|
|
9
|
-
> Snapshot 1
|
|
10
|
-
|
|
11
|
-
{
|
|
12
|
-
comment: '',
|
|
13
|
-
entries: [
|
|
14
|
-
{
|
|
15
|
-
comment: '',
|
|
16
|
-
compression: 'deflate',
|
|
17
|
-
content: Uint8Array [
|
|
18
|
-
38
|
|
19
|
-
],
|
|
20
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
21
|
-
path: 'META-INF/com/android/build/gradle/app-metadata.properties',
|
|
22
|
-
permissions: {
|
|
23
|
-
type: 'unix',
|
|
24
|
-
unixPermissions: 420,
|
|
25
|
-
},
|
|
26
|
-
type: 'file',
|
|
27
|
-
},
|
|
28
|
-
{
|
|
29
|
-
comment: '',
|
|
30
|
-
compression: 'deflate',
|
|
31
|
-
content: Uint8Array [
|
|
32
|
-
04
|
|
33
|
-
],
|
|
34
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
35
|
-
path: 'classes.dex',
|
|
36
|
-
permissions: {
|
|
37
|
-
type: 'unix',
|
|
38
|
-
unixPermissions: 420,
|
|
39
|
-
},
|
|
40
|
-
type: 'file',
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
comment: '',
|
|
44
|
-
compression: 'deflate',
|
|
45
|
-
content: Uint8Array [
|
|
46
|
-
24
|
|
47
|
-
],
|
|
48
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
49
|
-
path: 'AndroidManifest.xml',
|
|
50
|
-
permissions: {
|
|
51
|
-
dosPermissions: 0,
|
|
52
|
-
type: 'dos',
|
|
53
|
-
},
|
|
54
|
-
type: 'file',
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
comment: '',
|
|
58
|
-
compression: 'store',
|
|
59
|
-
content: Uint8Array [
|
|
60
|
-
28
|
|
61
|
-
],
|
|
62
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
63
|
-
path: 'resources.arsc',
|
|
64
|
-
permissions: {
|
|
65
|
-
dosPermissions: 0,
|
|
66
|
-
type: 'dos',
|
|
67
|
-
},
|
|
68
|
-
type: 'file',
|
|
69
|
-
},
|
|
70
|
-
{
|
|
71
|
-
comment: '',
|
|
72
|
-
compression: 'deflate',
|
|
73
|
-
content: Uint8Array [
|
|
74
|
-
c2
|
|
75
|
-
],
|
|
76
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
77
|
-
path: 'META-INF/CERT.SF',
|
|
78
|
-
permissions: {
|
|
79
|
-
type: 'unix',
|
|
80
|
-
unixPermissions: 420,
|
|
81
|
-
},
|
|
82
|
-
type: 'file',
|
|
83
|
-
},
|
|
84
|
-
{
|
|
85
|
-
comment: '',
|
|
86
|
-
compression: 'deflate',
|
|
87
|
-
content: Uint8Array [
|
|
88
|
-
87
|
|
89
|
-
],
|
|
90
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
91
|
-
path: 'META-INF/CERT.RSA',
|
|
92
|
-
permissions: {
|
|
93
|
-
type: 'unix',
|
|
94
|
-
unixPermissions: 420,
|
|
95
|
-
},
|
|
96
|
-
type: 'file',
|
|
97
|
-
},
|
|
98
|
-
{
|
|
99
|
-
comment: '',
|
|
100
|
-
compression: 'deflate',
|
|
101
|
-
content: Uint8Array [
|
|
102
|
-
8b
|
|
103
|
-
],
|
|
104
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
105
|
-
path: 'META-INF/MANIFEST.MF',
|
|
106
|
-
permissions: {
|
|
107
|
-
type: 'unix',
|
|
108
|
-
unixPermissions: 420,
|
|
109
|
-
},
|
|
110
|
-
type: 'file',
|
|
111
|
-
},
|
|
112
|
-
],
|
|
113
|
-
signingBlock: {
|
|
114
|
-
pairs: [],
|
|
115
|
-
signatureV2: [
|
|
116
|
-
{
|
|
117
|
-
publicKey: Uint8Array [
|
|
118
|
-
30820122 300d0609 2a864886 f70d0101 01050003 82010f00 3082010a 02820101
|
|
119
|
-
00d9e80b 234a3d22 9edb5b29 dc6304b4 af9cfebf ff1428ad dfdc39d8 98630c66
|
|
120
|
-
5fbf2761 3fa9e68a 481986b1 fbf2d261 e9601586 6d00cb32 da998310 bd6ed4f7
|
|
121
|
-
1eb43aad 8300b6a6 10c674fc a2e18424 49e43b30 958e7384 38da6185 8c1fa3ae
|
|
122
|
-
443062e7 0e08cc98 7ed316b0 d449691f f7ddb30a 5dc0a76e 63541180 24adb323
|
|
123
|
-
41865189 6f88092c 7e510d64 4a58b8e6 008a7e80 821fa071 a40bb6dc 03109c18
|
|
124
|
-
d48b8304 d0e34576 9d21a329 71c349d3 ad4f44d1 2469e132 632f16ef 37e2c5d0
|
|
125
|
-
fcfd1297 6f76b4b7 3be5a412 db8e9b84 877f05ab d6bb7406 e9ed1df6 94a8185f
|
|
126
|
-
2425dfda 330e9d83 7be2c34c 403ddb1b f0fbffdd b5e444aa 8cbbc76b 55ef718d
|
|
127
|
-
e7020301 0001
|
|
128
|
-
],
|
|
129
|
-
signatures: [
|
|
130
|
-
{
|
|
131
|
-
signature: Uint8Array [
|
|
132
|
-
afe9f1db ef788d9c b374f659 00f6e1f2 d2fd3179 4614443a b00798ad d4808873
|
|
133
|
-
cf91a1fc ffdd68c2 c4c035b4 22ec2c87 676626ab bb72ea1e cc9eed9e feeb7e4f
|
|
134
|
-
b1ff0800 cabc5cd4 06a66f97 59d97d5c 0be5a4af df99e873 702c76c8 3f99c319
|
|
135
|
-
f61870dc a47c2f4a be5f63f4 9935050a 1811a6c0 c97c3f84 a69f741d 510d6add
|
|
136
|
-
65e180a5 d7e9ec63 f04797a8 4f177cc3 ec240d43 776335de 77f57d90 e9e9c99b
|
|
137
|
-
0fb38afc 271b30e3 476ce4f0 5b6ca04c eace914c b4583031 f8038506 07a7c872
|
|
138
|
-
ba8959d6 faea789a a8d96ded 0ea8aed4 29022190 543817c1 619fbf18 597106dd
|
|
139
|
-
7f97b127 9504a7a6 1ac6d1af 4d4ff633 cff1efa9 46d88682 b4201810 1ec50c53
|
|
140
|
-
],
|
|
141
|
-
signatureAlgorithmId: 259,
|
|
142
|
-
},
|
|
143
|
-
],
|
|
144
|
-
signedData: {
|
|
145
|
-
additionalAttributes: [],
|
|
146
|
-
certificates: [
|
|
147
|
-
Uint8Array [
|
|
148
|
-
308202e4 308201cc 02010130 0d06092a 864886f7 0d010105 05003037 31163014
|
|
149
|
-
06035504 030c0d41 6e64726f 69642044 65627567 3110300e 06035504 0a0c0741
|
|
150
|
-
6e64726f 6964310b 30090603 55040613 02555330 20170d32 31303532 35313033
|
|
151
|
-
3934395a 180f3230 35313035 31383130 33393439 5a303731 16301406 03550403
|
|
152
|
-
0c0d416e 64726f69 64204465 62756731 10300e06 0355040a 0c07416e 64726f69
|
|
153
|
-
64310b30 09060355 04061302 55533082 0122300d 06092a86 4886f70d 01010105
|
|
154
|
-
00038201 0f003082 010a0282 010100d9 e80b234a 3d229edb 5b29dc63 04b4af9c
|
|
155
|
-
febfff14 28addfdc 39d89863 0c665fbf 27613fa9 e68a4819 86b1fbf2 d261e960
|
|
156
|
-
15866d00 cb32da99 8310bd6e d4f71eb4 3aad8300 b6a610c6 74fca2e1 842449e4
|
|
157
|
-
3b30958e 738438da 61858c1f a3ae4430 62e70e08 cc987ed3 16b0d449 691ff7dd
|
|
158
|
-
b30a5dc0 a76e6354 118024ad b3234186 51896f88 092c7e51 0d644a58 b8e6008a
|
|
159
|
-
7e80821f a071a40b b6dc0310 9c18d48b 8304d0e3 45769d21 a32971c3 49d3ad4f
|
|
160
|
-
44d12469 e132632f 16ef37e2 c5d0fcfd 12976f76 b4b73be5 a412db8e 9b84877f
|
|
161
|
-
05abd6bb 7406e9ed 1df694a8 185f2425 dfda330e 9d837be2 c34c403d db1bf0fb
|
|
162
|
-
ffddb5e4 44aa8cbb c76b55ef 718de702 03010001 300d0609 2a864886 f70d0101
|
|
163
|
-
05050003 82010100 a46b928b e1ebab3e 96f01510 c4c08aa7 1fc7e430 9e61057d
|
|
164
|
-
a2992615 5abc1388 256617fb 6ece2fb6 9855c225 de33b828 a78b5796 a8e66f20
|
|
165
|
-
62b22568 171d4501 61f5de61 2eb3d75e 3367127d a6feb30d 3764cd44 c9dc2e0c
|
|
166
|
-
19b07260 154ff2aa 78c0d7f6 87e3417f 8694ecfd cdb448d9 cc4959f3 3face106
|
|
167
|
-
258b7c12 e863e397 79a6d6fa f9b08d77 061beb87 7c2e36ce 7e69e564 66d7685b
|
|
168
|
-
8460462e b8f0106c bf03eb18 dfcfef11 b7f9f7b5 b8ae6c0f b8cdbc0e ce7c1c68
|
|
169
|
-
17d6c538 7acaf796 2189c4ec fe569d1c 3c0d12bd a7630669 095e2727 4c549e76
|
|
170
|
-
ed05d76f eaf75631 d93d80b3 14f03e53 1b1a3493 ccf756cf 023794f1 40bf9005
|
|
171
|
-
c5ec180d 9dcbf468
|
|
172
|
-
],
|
|
173
|
-
],
|
|
174
|
-
digests: [
|
|
175
|
-
{
|
|
176
|
-
digest: Uint8Array [
|
|
177
|
-
52308ebb b8a0f50c e32daa36 41a7640d 09d07ab5 9bbdbe18 9605d4a7 1897b69e
|
|
178
|
-
],
|
|
179
|
-
signatureAlgorithmId: 259,
|
|
180
|
-
},
|
|
181
|
-
],
|
|
182
|
-
},
|
|
183
|
-
},
|
|
184
|
-
],
|
|
185
|
-
zeroPaddingLength: 2650,
|
|
186
|
-
},
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
## apk bafkreidqycbgrtp7ywhevsgtm464dqpamxsijpaqfcfz2k3ymc3wrzsb5m
|
|
190
|
-
|
|
191
|
-
> Snapshot 1
|
|
192
|
-
|
|
193
|
-
{
|
|
194
|
-
comment: '',
|
|
195
|
-
entries: [
|
|
196
|
-
{
|
|
197
|
-
comment: '',
|
|
198
|
-
compression: 'deflate',
|
|
199
|
-
content: Uint8Array [
|
|
200
|
-
38
|
|
201
|
-
],
|
|
202
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
203
|
-
path: 'META-INF/com/android/build/gradle/app-metadata.properties',
|
|
204
|
-
permissions: {
|
|
205
|
-
type: 'unix',
|
|
206
|
-
unixPermissions: 420,
|
|
207
|
-
},
|
|
208
|
-
type: 'file',
|
|
209
|
-
},
|
|
210
|
-
{
|
|
211
|
-
comment: '',
|
|
212
|
-
compression: 'deflate',
|
|
213
|
-
content: Uint8Array [
|
|
214
|
-
78
|
|
215
|
-
],
|
|
216
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
217
|
-
path: 'META-INF/version-control-info.textproto',
|
|
218
|
-
permissions: {
|
|
219
|
-
type: 'unix',
|
|
220
|
-
unixPermissions: 420,
|
|
221
|
-
},
|
|
222
|
-
type: 'file',
|
|
223
|
-
},
|
|
224
|
-
{
|
|
225
|
-
comment: '',
|
|
226
|
-
compression: 'deflate',
|
|
227
|
-
content: Uint8Array [
|
|
228
|
-
88
|
|
229
|
-
],
|
|
230
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
231
|
-
path: 'classes.dex',
|
|
232
|
-
permissions: {
|
|
233
|
-
type: 'unix',
|
|
234
|
-
unixPermissions: 420,
|
|
235
|
-
},
|
|
236
|
-
type: 'file',
|
|
237
|
-
},
|
|
238
|
-
{
|
|
239
|
-
comment: '',
|
|
240
|
-
compression: 'deflate',
|
|
241
|
-
content: Uint8Array [
|
|
242
|
-
f0
|
|
243
|
-
],
|
|
244
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
245
|
-
path: 'AndroidManifest.xml',
|
|
246
|
-
permissions: {
|
|
247
|
-
dosPermissions: 0,
|
|
248
|
-
type: 'dos',
|
|
249
|
-
},
|
|
250
|
-
type: 'file',
|
|
251
|
-
},
|
|
252
|
-
{
|
|
253
|
-
comment: '',
|
|
254
|
-
compression: 'store',
|
|
255
|
-
content: Uint8Array [
|
|
256
|
-
28
|
|
257
|
-
],
|
|
258
|
-
date: Date 1981-01-01 01:01:02 UTC {},
|
|
259
|
-
path: 'resources.arsc',
|
|
260
|
-
permissions: {
|
|
261
|
-
dosPermissions: 0,
|
|
262
|
-
type: 'dos',
|
|
263
|
-
},
|
|
264
|
-
type: 'file',
|
|
265
|
-
},
|
|
266
|
-
],
|
|
267
|
-
signingBlock: undefined,
|
|
268
|
-
}
|
|
Binary file
|
package/src/apkParser.ts
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
import { createArrayParser } from "./arrayParser.js";
|
|
2
|
-
import { createOptionalParser } from "./optionalParser.js";
|
|
3
|
-
import { Parser, setParserName } from "./parser.js";
|
|
4
|
-
import { promiseCompose } from "./promiseCompose.js";
|
|
5
|
-
import { createTupleParser } from "./tupleParser.js";
|
|
6
|
-
import { zip64EndOfCentralDirectoryLocatorParser, zip64EndOfCentralDirectoryRecordParser, zipArchiveDecryptionHeaderParser, zipArchiveExtraDataRecordParser, zipCentralDirectoryHeaderParser, zipEndOfCentralDirectoryRecordParser, zipFromZipSegments, zipLocalFileParser } from "./zipParser.js";
|
|
7
|
-
import { Apk, ApkSigningBlock, ApkSigningBlockPair } from "./apk.js";
|
|
8
|
-
import { createFixedLengthSequenceParser } from "./fixedLengthSequenceParser.js";
|
|
9
|
-
import { parserCreatorCompose } from "./parserCreatorCompose.js";
|
|
10
|
-
import { createExactSequenceParser } from "./exactSequenceParser.js";
|
|
11
|
-
import { createSliceBoundedParser } from "./sliceBoundedParser.js";
|
|
12
|
-
import { createDisjunctionParser } from "./disjunctionParser.js";
|
|
13
|
-
import invariant from "invariant";
|
|
14
|
-
import { createExactElementParser } from "./exactElementParser.js";
|
|
15
|
-
|
|
16
|
-
// https://source.android.com/docs/security/features/apksigning/v2#apk-signing-block
|
|
17
|
-
|
|
18
|
-
const uint32LEParser: Parser<number, Uint8Array> = promiseCompose(
|
|
19
|
-
createFixedLengthSequenceParser(4),
|
|
20
|
-
array => Buffer.from(array).readUInt32LE(),
|
|
21
|
-
);
|
|
22
|
-
|
|
23
|
-
setParserName(uint32LEParser, 'uint32LEParser');
|
|
24
|
-
|
|
25
|
-
const uint64LEParser: Parser<bigint, Uint8Array> = promiseCompose(
|
|
26
|
-
createFixedLengthSequenceParser(8),
|
|
27
|
-
array => Buffer.from(array).readBigUInt64LE(),
|
|
28
|
-
);
|
|
29
|
-
|
|
30
|
-
setParserName(uint64LEParser, 'uint64LEParser');
|
|
31
|
-
|
|
32
|
-
const createUint32LengthPrefixedParser = <T>(createInnerParser: (length: number) => Parser<T, Uint8Array>): Parser<T, Uint8Array> => parserCreatorCompose(
|
|
33
|
-
() => uint32LEParser,
|
|
34
|
-
length => createInnerParser(length),
|
|
35
|
-
)();
|
|
36
|
-
|
|
37
|
-
const createUint64LengthPrefixedParser = <T>(createInnerParser: (length: bigint) => Parser<T, Uint8Array>): Parser<T, Uint8Array> => parserCreatorCompose(
|
|
38
|
-
() => uint64LEParser,
|
|
39
|
-
length => createInnerParser(length),
|
|
40
|
-
)();
|
|
41
|
-
|
|
42
|
-
const createUint32LengthPrefixedSliceBoundedParser = <T>(innerParser: Parser<T, Uint8Array>): Parser<T, Uint8Array> => createUint32LengthPrefixedParser(
|
|
43
|
-
length => createSliceBoundedParser(innerParser, length),
|
|
44
|
-
);
|
|
45
|
-
|
|
46
|
-
const createUint32LengthPrefixedSliceBoundedArrayParser = <T>(innerParser: Parser<T, Uint8Array>): Parser<T[], Uint8Array> => createUint32LengthPrefixedSliceBoundedParser(createArrayParser(innerParser));
|
|
47
|
-
|
|
48
|
-
type ApkSigningBlockZeroPaddingPair = {
|
|
49
|
-
type: 'zeroPadding',
|
|
50
|
-
length: number,
|
|
51
|
-
};
|
|
52
|
-
|
|
53
|
-
const createApkSigningBlockZeroPaddingPairInnerParser = (length: number): Parser<ApkSigningBlockZeroPaddingPair, Uint8Array> => promiseCompose(
|
|
54
|
-
createTupleParser([
|
|
55
|
-
createExactSequenceParser<Uint8Array>(Buffer.from('77657242', 'hex')),
|
|
56
|
-
createFixedLengthSequenceParser(length - 4),
|
|
57
|
-
]),
|
|
58
|
-
([ _magic, zeroPadding ]) => ({ type: 'zeroPadding', length: zeroPadding.length }),
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
type ApkSigningBlockSignatureV2Pair = {
|
|
62
|
-
type: 'signatureV2',
|
|
63
|
-
signers: ApkSignatureSchemeV2Signer[],
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
const createApkSigningBlockSignatureV2PairInnerParser = (length: number): Parser<ApkSigningBlockSignatureV2Pair, Uint8Array> => {
|
|
67
|
-
const apkSigningBlockSignatureV2PairInnerParser = promiseCompose(
|
|
68
|
-
createTupleParser([
|
|
69
|
-
createExactSequenceParser<Uint8Array>(Buffer.from('1a870971', 'hex')),
|
|
70
|
-
apkSignatureSchemeV2SignersParser,
|
|
71
|
-
]),
|
|
72
|
-
([ _magic, signers = [] ]) => ({ type: 'signatureV2' as const, signers }),
|
|
73
|
-
);
|
|
74
|
-
|
|
75
|
-
return setParserName(apkSigningBlockSignatureV2PairInnerParser, 'apkSigningBlockSignatureV2PairInnerParser');
|
|
76
|
-
};
|
|
77
|
-
|
|
78
|
-
type ApkSigningBlockGenericPair = {
|
|
79
|
-
type: 'generic',
|
|
80
|
-
pair: ApkSigningBlockPair,
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
const createApkSigningBlockGenericPairInnerParser = (length: number): Parser<ApkSigningBlockGenericPair, Uint8Array> => promiseCompose(
|
|
84
|
-
createTupleParser([
|
|
85
|
-
uint32LEParser,
|
|
86
|
-
createFixedLengthSequenceParser(length - 4),
|
|
87
|
-
]),
|
|
88
|
-
([ id, value ]) => ({ type: 'generic', pair: { id, value } }),
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
type ApkSigningBlockPairType =
|
|
92
|
-
| ApkSigningBlockZeroPaddingPair
|
|
93
|
-
| ApkSigningBlockSignatureV2Pair
|
|
94
|
-
| ApkSigningBlockGenericPair
|
|
95
|
-
;
|
|
96
|
-
|
|
97
|
-
const createApkSigningBlockPairInnerParser = (length: number): Parser<ApkSigningBlockPairType, Uint8Array> => createDisjunctionParser([
|
|
98
|
-
createApkSigningBlockZeroPaddingPairInnerParser(length),
|
|
99
|
-
createApkSigningBlockSignatureV2PairInnerParser(length),
|
|
100
|
-
createApkSigningBlockGenericPairInnerParser(length),
|
|
101
|
-
]);
|
|
102
|
-
|
|
103
|
-
const apkSigningBlockPairParser: Parser<ApkSigningBlockPairType, Uint8Array> = createUint64LengthPrefixedParser(
|
|
104
|
-
length => createApkSigningBlockPairInnerParser(Number(length)),
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
setParserName(apkSigningBlockPairParser, 'apkSigningBlockPairParser');
|
|
108
|
-
|
|
109
|
-
const apkSigningBlockPairsParser: Parser<ApkSigningBlockPairType[], Uint8Array> = createArrayParser(apkSigningBlockPairParser);
|
|
110
|
-
|
|
111
|
-
const apkSigningBlockParser: Parser<ApkSigningBlock, Uint8Array> = createUint64LengthPrefixedParser(
|
|
112
|
-
sizeOfBlock => promiseCompose(
|
|
113
|
-
createTupleParser([
|
|
114
|
-
apkSigningBlockPairsParser,
|
|
115
|
-
uint64LEParser,
|
|
116
|
-
createExactSequenceParser<Uint8Array>(Buffer.from('APK Sig Block 42', 'utf8')),
|
|
117
|
-
]),
|
|
118
|
-
async ([ pairs, sizeOfBlockRepeated, _magic ]) => {
|
|
119
|
-
invariant(sizeOfBlock === sizeOfBlockRepeated, 'Size of block mismatch: %s !== %s.', sizeOfBlock, sizeOfBlockRepeated);
|
|
120
|
-
|
|
121
|
-
const zeroPaddingPair = pairs.find(pair => pair.type === 'zeroPadding');
|
|
122
|
-
const signatureV2Pair = pairs.find(pair => pair.type === 'signatureV2');
|
|
123
|
-
|
|
124
|
-
const genericPairs = (
|
|
125
|
-
pairs
|
|
126
|
-
.filter(pair => (
|
|
127
|
-
pair !== zeroPaddingPair
|
|
128
|
-
&& pair !== signatureV2Pair
|
|
129
|
-
))
|
|
130
|
-
.map(pair => {
|
|
131
|
-
invariant(pair.type === 'generic', 'Expected generic pair, got %s.', pair.type);
|
|
132
|
-
return pair.pair;
|
|
133
|
-
})
|
|
134
|
-
);
|
|
135
|
-
|
|
136
|
-
return {
|
|
137
|
-
zeroPaddingLength: zeroPaddingPair?.length,
|
|
138
|
-
signatureV2: signatureV2Pair?.signers,
|
|
139
|
-
pairs: genericPairs,
|
|
140
|
-
};
|
|
141
|
-
},
|
|
142
|
-
),
|
|
143
|
-
);
|
|
144
|
-
|
|
145
|
-
type ApkSignatureSchemeV2Digest = {
|
|
146
|
-
signatureAlgorithmId: number,
|
|
147
|
-
digest: Uint8Array,
|
|
148
|
-
};
|
|
149
|
-
|
|
150
|
-
const apkSignatureSchemeV2DigestParser = createUint32LengthPrefixedParser<ApkSignatureSchemeV2Digest>(
|
|
151
|
-
pairLength => promiseCompose(
|
|
152
|
-
createTupleParser([
|
|
153
|
-
uint32LEParser,
|
|
154
|
-
createUint32LengthPrefixedParser(
|
|
155
|
-
digestLength => createFixedLengthSequenceParser(digestLength),
|
|
156
|
-
),
|
|
157
|
-
]),
|
|
158
|
-
([ signatureAlgorithmId, digest ]) => ({ signatureAlgorithmId, digest }),
|
|
159
|
-
),
|
|
160
|
-
);
|
|
161
|
-
|
|
162
|
-
const apkSignatureSchemeV2DigestsParser = createUint32LengthPrefixedSliceBoundedArrayParser(
|
|
163
|
-
apkSignatureSchemeV2DigestParser
|
|
164
|
-
);
|
|
165
|
-
|
|
166
|
-
const apkSignatureSchemeV2CertificateParser = createUint32LengthPrefixedParser(
|
|
167
|
-
certificateLength => createFixedLengthSequenceParser(certificateLength),
|
|
168
|
-
);
|
|
169
|
-
|
|
170
|
-
const apkSignatureSchemeV2CertificatesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
|
|
171
|
-
apkSignatureSchemeV2CertificateParser,
|
|
172
|
-
);
|
|
173
|
-
|
|
174
|
-
type ApkSignatureSchemeV2AdditionalAttribute = {
|
|
175
|
-
id: number,
|
|
176
|
-
value: Uint8Array,
|
|
177
|
-
};
|
|
178
|
-
|
|
179
|
-
const apkSignatureSchemeV2AdditionalAttributeParser = createUint32LengthPrefixedParser<ApkSignatureSchemeV2AdditionalAttribute>(
|
|
180
|
-
pairLength => promiseCompose(
|
|
181
|
-
createTupleParser([
|
|
182
|
-
uint32LEParser,
|
|
183
|
-
createFixedLengthSequenceParser(pairLength - 4),
|
|
184
|
-
]),
|
|
185
|
-
([ id, value ]) => ({ id, value }),
|
|
186
|
-
),
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
const apkSignatureSchemeV2AdditionalAttributesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
|
|
190
|
-
apkSignatureSchemeV2AdditionalAttributeParser,
|
|
191
|
-
);
|
|
192
|
-
|
|
193
|
-
type ApkSignatureSchemeV2SignedData = {
|
|
194
|
-
digests: ApkSignatureSchemeV2Digest[],
|
|
195
|
-
certificates: Uint8Array[],
|
|
196
|
-
additionalAttributes: ApkSignatureSchemeV2AdditionalAttribute[],
|
|
197
|
-
};
|
|
198
|
-
|
|
199
|
-
const apkSignatureSchemeV2SignedDataParser = createUint32LengthPrefixedSliceBoundedParser(
|
|
200
|
-
promiseCompose(
|
|
201
|
-
createTupleParser([
|
|
202
|
-
apkSignatureSchemeV2DigestsParser,
|
|
203
|
-
apkSignatureSchemeV2CertificatesParser,
|
|
204
|
-
createOptionalParser(apkSignatureSchemeV2AdditionalAttributesParser),
|
|
205
|
-
createArrayParser(createExactElementParser(0)),
|
|
206
|
-
]),
|
|
207
|
-
([
|
|
208
|
-
digests = [],
|
|
209
|
-
certificates = [],
|
|
210
|
-
additionalAttributes = [],
|
|
211
|
-
]): ApkSignatureSchemeV2SignedData => ({
|
|
212
|
-
digests,
|
|
213
|
-
certificates,
|
|
214
|
-
additionalAttributes,
|
|
215
|
-
}),
|
|
216
|
-
),
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
setParserName(apkSignatureSchemeV2SignedDataParser, 'apkSignatureSchemeV2SignedDataParser');
|
|
220
|
-
|
|
221
|
-
type ApkSignatureSchemeV2Signature = {
|
|
222
|
-
signatureAlgorithmId: number,
|
|
223
|
-
signature: Uint8Array,
|
|
224
|
-
};
|
|
225
|
-
|
|
226
|
-
const apkSignatureSchemeV2SignatureParser = createUint32LengthPrefixedParser(
|
|
227
|
-
signatureLength => promiseCompose(
|
|
228
|
-
createTupleParser([
|
|
229
|
-
uint32LEParser,
|
|
230
|
-
createUint32LengthPrefixedParser(
|
|
231
|
-
signatureLength => createFixedLengthSequenceParser(signatureLength),
|
|
232
|
-
),
|
|
233
|
-
]),
|
|
234
|
-
([
|
|
235
|
-
signatureAlgorithmId,
|
|
236
|
-
signature,
|
|
237
|
-
]): ApkSignatureSchemeV2Signature => ({
|
|
238
|
-
signatureAlgorithmId,
|
|
239
|
-
signature,
|
|
240
|
-
}),
|
|
241
|
-
),
|
|
242
|
-
);
|
|
243
|
-
|
|
244
|
-
const apkSignatureSchemeV2SignaturesParser = createUint32LengthPrefixedSliceBoundedArrayParser(
|
|
245
|
-
apkSignatureSchemeV2SignatureParser,
|
|
246
|
-
);
|
|
247
|
-
|
|
248
|
-
setParserName(apkSignatureSchemeV2SignaturesParser, 'apkSignatureSchemeV2SignaturesParser');
|
|
249
|
-
|
|
250
|
-
const apkSignatureSchemeV2PublicKeyParser = createUint32LengthPrefixedParser(
|
|
251
|
-
publicKeyLength => createFixedLengthSequenceParser(publicKeyLength),
|
|
252
|
-
);
|
|
253
|
-
|
|
254
|
-
setParserName(apkSignatureSchemeV2PublicKeyParser, 'apkSignatureSchemeV2PublicKeyParser');
|
|
255
|
-
|
|
256
|
-
type ApkSignatureSchemeV2Signer = {
|
|
257
|
-
signedData: ApkSignatureSchemeV2SignedData,
|
|
258
|
-
signatures: ApkSignatureSchemeV2Signature[],
|
|
259
|
-
publicKey?: Uint8Array,
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
const apkSignatureSchemeV2SignerParser = createUint32LengthPrefixedSliceBoundedParser(
|
|
263
|
-
promiseCompose(
|
|
264
|
-
createTupleParser([
|
|
265
|
-
apkSignatureSchemeV2SignedDataParser,
|
|
266
|
-
apkSignatureSchemeV2SignaturesParser,
|
|
267
|
-
apkSignatureSchemeV2PublicKeyParser,
|
|
268
|
-
]),
|
|
269
|
-
([
|
|
270
|
-
signedData,
|
|
271
|
-
signatures = [],
|
|
272
|
-
publicKey
|
|
273
|
-
]): ApkSignatureSchemeV2Signer => ({
|
|
274
|
-
signedData,
|
|
275
|
-
signatures,
|
|
276
|
-
publicKey,
|
|
277
|
-
}),
|
|
278
|
-
),
|
|
279
|
-
);
|
|
280
|
-
|
|
281
|
-
setParserName(apkSignatureSchemeV2SignerParser, 'apkSignatureSchemeV2SignerParser');
|
|
282
|
-
|
|
283
|
-
const apkSignatureSchemeV2SignersParser = createUint32LengthPrefixedSliceBoundedArrayParser(
|
|
284
|
-
apkSignatureSchemeV2SignerParser,
|
|
285
|
-
);
|
|
286
|
-
|
|
287
|
-
setParserName(apkSignatureSchemeV2SignersParser, 'apkSignatureSchemeV2SignersParser');
|
|
288
|
-
|
|
289
|
-
const apkParser_ = createTupleParser([
|
|
290
|
-
createArrayParser(zipLocalFileParser),
|
|
291
|
-
createOptionalParser(zipArchiveDecryptionHeaderParser),
|
|
292
|
-
createOptionalParser(zipArchiveExtraDataRecordParser),
|
|
293
|
-
createOptionalParser(apkSigningBlockParser),
|
|
294
|
-
createArrayParser(zipCentralDirectoryHeaderParser),
|
|
295
|
-
createOptionalParser(zip64EndOfCentralDirectoryRecordParser),
|
|
296
|
-
createOptionalParser(zip64EndOfCentralDirectoryLocatorParser),
|
|
297
|
-
zipEndOfCentralDirectoryRecordParser,
|
|
298
|
-
]);
|
|
299
|
-
|
|
300
|
-
setParserName(apkParser_, 'apkParser_');
|
|
301
|
-
|
|
302
|
-
export const apkParser: Parser<Apk, Uint8Array> = promiseCompose(
|
|
303
|
-
apkParser_,
|
|
304
|
-
async ([
|
|
305
|
-
zipLocalFiles,
|
|
306
|
-
zipArchiveDecryptionHeader,
|
|
307
|
-
zipArchiveExtraDataRecord,
|
|
308
|
-
apkSigningBlock,
|
|
309
|
-
zipCentralDirectoryHeaders,
|
|
310
|
-
zip64EndOfCentralDirectoryRecord,
|
|
311
|
-
zip64EndOfCentralDirectoryLocator,
|
|
312
|
-
zipEndOfCentralDirectoryRecord,
|
|
313
|
-
]) => {
|
|
314
|
-
const zip = await zipFromZipSegments({
|
|
315
|
-
zipLocalFiles,
|
|
316
|
-
zipCentralDirectoryHeaders,
|
|
317
|
-
zipEndOfCentralDirectoryRecord,
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
return {
|
|
321
|
-
...zip,
|
|
322
|
-
signingBlock: apkSigningBlock,
|
|
323
|
-
};
|
|
324
|
-
},
|
|
325
|
-
);
|
|
326
|
-
|
|
327
|
-
setParserName(apkParser, 'apkParser');
|
package/src/inputCompanion.ts
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
export type InputCompanion<Sequence, Element> = {
|
|
3
|
-
is(value: unknown): value is Sequence;
|
|
4
|
-
from(elements: Element[]): Sequence;
|
|
5
|
-
length(sequence: Sequence): number;
|
|
6
|
-
at(sequence: Sequence, index: number): Element | undefined;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export const stringInputCompanion = new class StringInputCompanion implements InputCompanion<string, string> {
|
|
10
|
-
is(value: unknown): value is string {
|
|
11
|
-
return typeof value === 'string';
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
from(elements: string[]): string {
|
|
15
|
-
return elements.join('');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
length(sequence: string): number {
|
|
19
|
-
return sequence.length;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
at(sequence: string, index: number): string | undefined {
|
|
23
|
-
return sequence.at(index);
|
|
24
|
-
}
|
|
25
|
-
}();
|
|
26
|
-
|
|
27
|
-
export const uint8ArrayInputCompanion = new class Uint8ArrayInputCompanion implements InputCompanion<Uint8Array, number> {
|
|
28
|
-
is(value: unknown): value is Uint8Array {
|
|
29
|
-
return value instanceof Uint8Array
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
from(elements: number[]): Uint8Array {
|
|
33
|
-
return new Uint8Array(elements);
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
length(sequence: Uint8Array): number {
|
|
37
|
-
return sequence.length;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
at(sequence: Uint8Array, index: number): number | undefined {
|
|
41
|
-
return sequence.at(index);
|
|
42
|
-
}
|
|
43
|
-
}();
|
package/src/invariantDefined.ts
DELETED
package/src/invariantIdentity.ts
DELETED
package/src/negativeLookahead.ts
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { getParserName, Parser } from "./parser.js";
|
|
2
|
-
import { ParserParsingFailedError } from "./parserError.js";
|
|
3
|
-
|
|
4
|
-
export const createNegativeLookaheadParser = <Sequence>(
|
|
5
|
-
childParser: Parser<unknown, Sequence>,
|
|
6
|
-
): Parser<void, Sequence> => {
|
|
7
|
-
return async parserContext => {
|
|
8
|
-
const childParserContext = parserContext.lookahead();
|
|
9
|
-
try {
|
|
10
|
-
await childParser(childParserContext);
|
|
11
|
-
parserContext.invariant(
|
|
12
|
-
false,
|
|
13
|
-
'Negative lookahead assertion failed for child parser %s.',
|
|
14
|
-
getParserName(childParser),
|
|
15
|
-
);
|
|
16
|
-
} catch (error) {
|
|
17
|
-
if (error instanceof ParserParsingFailedError) {
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
throw error;
|
|
22
|
-
} finally {
|
|
23
|
-
childParserContext.dispose();
|
|
24
|
-
}
|
|
25
|
-
};
|
|
26
|
-
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/build/{inputChunkBuffer.test.d.ts → dalvikExecutableParserAgainstSmaliParser.test.d.ts}
RENAMED
|
File without changes
|
|
File without changes
|
/package/build/{parserParsingInvariant.d.ts → elementTerminatedSequenceArrayParser.test.d.ts}
RENAMED
|
File without changes
|