+10
.editorconfig
+10
.editorconfig
+9
-5
.github/workflows/node.js.yml
+9
-5
.github/workflows/node.js.yml
···
12
13
strategy:
14
matrix:
15
-
node-version: [ 12.20.0, latest ]
16
17
steps:
18
- uses: actions/checkout@v4
19
- name: Use Node.js ${{ matrix.node-version }}
20
uses: actions/setup-node@v4
21
with:
22
node-version: ${{ matrix.node-version }}
23
-
- run: npm test all
24
-
- run: npm install
25
-
if: matrix.node-version == 'latest'
26
-
- run: npm run lint
27
if: matrix.node-version == 'latest'
···
12
13
strategy:
14
matrix:
15
+
node-version: [ 14.6.0, latest ]
16
17
steps:
18
- uses: actions/checkout@v4
19
+
- name: Use pnpm
20
+
uses: pnpm/action-setup@v4
21
+
with:
22
+
run_install: false
23
- name: Use Node.js ${{ matrix.node-version }}
24
uses: actions/setup-node@v4
25
with:
26
node-version: ${{ matrix.node-version }}
27
+
cache: pnpm
28
+
- run: pnpm install
29
+
- run: node test all
30
+
- run: pnpm run lint
31
if: matrix.node-version == 'latest'
-1
.gitignore
-1
.gitignore
-1
.mtn-ignore
-1
.mtn-ignore
+25
-1
.vscode/launch.json
+25
-1
.vscode/launch.json
···
7
{
8
"type": "node",
9
"request": "launch",
10
+
"name": "test",
11
+
"skipFiles": [
12
+
"<node_internals>/**"
13
+
],
14
+
"program": "${workspaceFolder}/test.js",
15
+
"args": []
16
+
},
17
+
{
18
+
"type": "node",
19
+
"request": "launch",
20
"name": "dumpASN1",
21
"skipFiles": [
22
"<node_internals>/**"
···
42
{
43
"type": "node",
44
"request": "launch",
45
+
"name": "dumpASN1 X.509",
46
+
"skipFiles": [
47
+
"<node_internals>/**"
48
+
],
49
+
"program": "${workspaceFolder}/dumpASN1.js",
50
+
"args": [
51
+
"examples/ed25519.cer",
52
+
"1.3.6.1.5.5.7.0.18",
53
+
"Certificate"
54
+
]
55
+
},
56
+
{
57
+
"type": "node",
58
+
"request": "launch",
59
+
"name": "dumpASN1 CRL",
60
"skipFiles": [
61
"<node_internals>/**"
62
],
+2
-2
.vscode/settings.json
+2
-2
.vscode/settings.json
+27
CHANGELOG.md
+27
CHANGELOG.md
···
···
1
+
# ChangeLog
2
+
3
+
## 2.1.0 - 2025-08-03
4
+
5
+
### Changed
6
+
7
+
- when fields are CHOICEs now both the field name and the choice name are shown (fixes GitHub #102)
8
+
- upgrade minimum NodeJS version supported from 12.20.0 to 14.6.0 due to usage of ?. and ?? operators in defs.js (ECMAScript 2020); older code is still linted against ECMAScript 2015 for now
9
+
10
+
### Added
11
+
12
+
- add tests to check expected decoding
13
+
14
+
## 2.0.6 - 2025-07-29
15
+
16
+
### Added
17
+
18
+
- add proper support for standard Base64 (we previously only supported Base64url) (fixes GitHub #99)
19
+
- improve test harness
20
+
21
+
## 2.0.5 - 2025-04-12
22
+
23
+
### Added
24
+
25
+
- add `index-local.html` for local `file://` usage without needing a web server
26
+
- add definitions support for `LDAPMessage`
27
+
- #TODO continue producing old ChangeLog entries
+1
README.md
+1
README.md
···
105
- [dedicated domain](https://asn1js.eu/)
106
- [InDefero tracker](http://idf.lapo.it/p/asn1js/)
107
- [GitHub mirror](https://github.com/lapo-luchini/asn1js)
108
+
- [ChangeLog on GitHub](https://github.com/lapo-luchini/asn1js/blob/trunk/CHANGELOG.md)
109
- [Ohloh code stats](https://www.openhub.net/p/asn1js)
+5
-2
asn1.js
+5
-2
asn1.js
···
295
s = this.parseStringUTF(start, end, maxLength);
296
checkPrintable(s.str);
297
return { size: end - start, str: s.str };
298
-
} catch (e) {
299
// ignore
300
}
301
maxLength /= 2; // we work in bytes
···
461
}
462
switch (this.tag.tagNumber) {
463
case 0x01: // BOOLEAN
464
return (this.stream.get(content) === 0) ? 'false' : 'true';
465
case 0x02: // INTEGER
466
return this.stream.parseInteger(content, content + len);
467
case 0x03: { // BIT_STRING
468
let d = recurse(this, 'parseBitString', maxLength);
469
return '(' + d.size + ' bit)\n' + d.str;
470
}
471
case 0x04: { // OCTET_STRING
472
let d = recurse(this, 'parseOctetString', maxLength);
473
return '(' + d.size + ' byte)\n' + d.str;
474
}
···
638
throw new Error('Unable to parse content: ' + e);
639
}
640
}
641
-
} catch (e) {
642
// but silently ignore when they don't
643
sub = null;
644
//DEBUG console.log('Could not decode structure at ' + start + ':', e);
···
295
s = this.parseStringUTF(start, end, maxLength);
296
checkPrintable(s.str);
297
return { size: end - start, str: s.str };
298
+
} catch (ignore) {
299
// ignore
300
}
301
maxLength /= 2; // we work in bytes
···
461
}
462
switch (this.tag.tagNumber) {
463
case 0x01: // BOOLEAN
464
+
if (len === 0) return 'invalid length 0';
465
return (this.stream.get(content) === 0) ? 'false' : 'true';
466
case 0x02: // INTEGER
467
+
if (len === 0) return 'invalid length 0';
468
return this.stream.parseInteger(content, content + len);
469
case 0x03: { // BIT_STRING
470
let d = recurse(this, 'parseBitString', maxLength);
471
return '(' + d.size + ' bit)\n' + d.str;
472
}
473
case 0x04: { // OCTET_STRING
474
+
if (len === 0) return 'invalid length 0';
475
let d = recurse(this, 'parseOctetString', maxLength);
476
return '(' + d.size + ' byte)\n' + d.str;
477
}
···
641
throw new Error('Unable to parse content: ' + e);
642
}
643
}
644
+
} catch (ignore) {
645
// but silently ignore when they don't
646
sub = null;
647
//DEBUG console.log('Could not decode structure at ' + start + ':', e);
+8
-6
defs.js
+8
-6
defs.js
···
23
try {
24
// hope current OIDs contain the type name (will need to parse from RFC itself)
25
def = Defs.searchType(firstUpper(stats.defs[def.definedBy][1]));
26
-
} catch (e) { /*ignore*/ }
27
while (def?.type == 'defined' || def?.type?.type == 'defined') {
28
const name = def?.type?.type ? def.type.name : def.name;
29
def = Object.assign({}, def);
···
35
c = translate(c);
36
if (tn == c.type.name || tn == c.name) {
37
def = Object.assign({}, def);
38
-
if (c.id) def.id = c.id;
39
def.type = c.type.name ? c.type : c;
40
break;
41
}
···
69
70
static match(value, def, stats = { total: 0, recognized: 0, defs: {} }) {
71
value.def = {};
72
-
let tn = value.typeName().replaceAll('_', ' ');
73
def = translate(def, tn, stats);
74
++stats.total;
75
if (def?.type) {
···
90
if (def.typeOf)
91
type = def.content[0];
92
else {
93
-
let tn = subval.typeName().replaceAll('_', ' ');
94
for (;;) {
95
type = def.content[j++];
96
if (!type || typeof type != 'object') break;
97
if (type?.type?.type)
98
-
type = type.type;
99
if (type.type == 'defined') {
100
let t2 = translate(type, tn);
101
if (t2.type.name == tn) break; // exact match
···
113
} else if (type?.definedBy && stats.defs?.[type.definedBy]?.[1]) { // hope current OIDs contain the type name (will need to parse from RFC itself)
114
try {
115
type = Defs.searchType(firstUpper(stats.defs[type.definedBy][1]));
116
-
} catch (e) { /*ignore*/ }
117
}
118
}
119
}
···
23
try {
24
// hope current OIDs contain the type name (will need to parse from RFC itself)
25
def = Defs.searchType(firstUpper(stats.defs[def.definedBy][1]));
26
+
} catch (ignore) { /*ignore*/ }
27
while (def?.type == 'defined' || def?.type?.type == 'defined') {
28
const name = def?.type?.type ? def.type.name : def.name;
29
def = Object.assign({}, def);
···
35
c = translate(c);
36
if (tn == c.type.name || tn == c.name) {
37
def = Object.assign({}, def);
38
+
if (c.id) // show the CHOICE id, but add it to existing one if present
39
+
def.id = def.id ? def.id + ' ' + c.id : c.id;
40
def.type = c.type.name ? c.type : c;
41
break;
42
}
···
70
71
static match(value, def, stats = { total: 0, recognized: 0, defs: {} }) {
72
value.def = {};
73
+
let tn = value.typeName().replace(/_/g, ' ');
74
def = translate(def, tn, stats);
75
++stats.total;
76
if (def?.type) {
···
91
if (def.typeOf)
92
type = def.content[0];
93
else {
94
+
let tn = subval.typeName().replace(/_/g, ' ');
95
for (;;) {
96
type = def.content[j++];
97
if (!type || typeof type != 'object') break;
98
if (type?.type?.type)
99
+
// type = type.type;
100
+
type = Object.assign({}, type.type, {id: type.id});
101
if (type.type == 'defined') {
102
let t2 = translate(type, tn);
103
if (t2.type.name == tn) break; // exact match
···
115
} else if (type?.definedBy && stats.defs?.[type.definedBy]?.[1]) { // hope current OIDs contain the type name (will need to parse from RFC itself)
116
try {
117
type = Defs.searchType(firstUpper(stats.defs[type.definedBy][1]));
118
+
} catch (ignore) { /*ignore*/ }
119
}
120
}
121
}
+1
-1
dumpASN1.js
+1
-1
dumpASN1.js
+69
eslint.config.js
+69
eslint.config.js
···
···
1
+
import globals from 'globals';
2
+
import js from '@eslint/js';
3
+
4
+
export default [
5
+
js.configs.recommended,
6
+
{
7
+
languageOptions: {
8
+
globals: {
9
+
...globals.browser,
10
+
...globals.node,
11
+
Uint8Array: 'readonly',
12
+
},
13
+
ecmaVersion: 2015,
14
+
},
15
+
rules: {
16
+
indent: ['error', 4],
17
+
'no-trailing-spaces': ['error'],
18
+
'linebreak-style': ['error', 'unix'],
19
+
'eol-last': ['error', 'always'],
20
+
semi: ['warn', 'always'],
21
+
quotes: [ 'error', 'single', {
22
+
avoidEscape: true,
23
+
}],
24
+
'no-var': ['warn'],
25
+
'comma-dangle': ['error', 'always-multiline'],
26
+
'no-unused-vars': ['error', {
27
+
caughtErrorsIgnorePattern: 'ignore',
28
+
}],
29
+
},
30
+
},
31
+
{
32
+
files: ['defs.js'],
33
+
languageOptions: {
34
+
ecmaVersion: 2020, // by use of optional chaining operator (?.) and null coalesching operator (??)
35
+
},
36
+
},
37
+
{
38
+
files: ['oids.js'],
39
+
rules: {
40
+
indent: 'off',
41
+
quotes: ['warn', 'double'],
42
+
},
43
+
},
44
+
{
45
+
files: ['tags.js', 'rfcdef.js'],
46
+
rules: {
47
+
indent: [
48
+
'error',
49
+
2,
50
+
{
51
+
ignoredNodes: [
52
+
"Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement > ExpressionStatement[directive='use strict']:first-child",
53
+
],
54
+
},
55
+
],
56
+
'comma-dangle': 'off',
57
+
quotes: ['warn', 'double'],
58
+
},
59
+
},
60
+
{
61
+
files: ['test.js', 'parseRFC.js', 'dumpASN1.js', 'testDefs.js', 'eslint.config.js'],
62
+
languageOptions: {
63
+
ecmaVersion: 'latest',
64
+
},
65
+
rules: {
66
+
strict: ['error', 'global'],
67
+
},
68
+
},
69
+
];
+45
examples/crl-rfc5280.b64.dump
+45
examples/crl-rfc5280.b64.dump
···
···
1
+
CertificateList SEQUENCE @0+352 (constructed): (3 elem)
2
+
tbsCertList TBSCertList SEQUENCE @4+202 (constructed): (7 elem)
3
+
version Version INTEGER @7+1: 1
4
+
signature AlgorithmIdentifier SEQUENCE @10+13 (constructed): (2 elem)
5
+
algorithm OBJECT_IDENTIFIER @12+9: 1.2.840.113549.1.1.5|sha1WithRSAEncryption|PKCS #1
6
+
parameters ANY NULL @23+0
7
+
issuer rdnSequence Name SEQUENCE @25+67 (constructed): (3 elem)
8
+
RelativeDistinguishedName SET @27+19 (constructed): (1 elem)
9
+
AttributeTypeAndValue SEQUENCE @29+17 (constructed): (2 elem)
10
+
type AttributeType OBJECT_IDENTIFIER @31+10: 0.9.2342.19200300.100.1.25|domainComponent|Men are from Mars, this OID is from Pluto
11
+
value AttributeValue [?] IA5String @43+3: com
12
+
RelativeDistinguishedName SET @48+23 (constructed): (1 elem)
13
+
AttributeTypeAndValue SEQUENCE @50+21 (constructed): (2 elem)
14
+
type AttributeType OBJECT_IDENTIFIER @52+10: 0.9.2342.19200300.100.1.25|domainComponent|Men are from Mars, this OID is from Pluto
15
+
value AttributeValue [?] IA5String @64+7: example
16
+
RelativeDistinguishedName SET @73+19 (constructed): (1 elem)
17
+
AttributeTypeAndValue SEQUENCE @75+17 (constructed): (2 elem)
18
+
type AttributeType OBJECT_IDENTIFIER @77+3: 2.5.4.3|commonName|X.520 DN component
19
+
value AttributeValue [?] PrintableString @82+10: Example CA
20
+
thisUpdate utcTime Time UTCTime @94+13: 2005-02-05 12:00:00 UTC
21
+
nextUpdate utcTime Time UTCTime @109+13: 2005-02-06 12:00:00 UTC
22
+
revokedCertificates SEQUENCE @124+34 (constructed): (1 elem)
23
+
SEQUENCE @126+32 (constructed): (3 elem)
24
+
userCertificate CertificateSerialNumber INTEGER @128+1: 18
25
+
revocationDate utcTime Time UTCTime @131+13: 2004-11-19 15:57:03 UTC
26
+
crlEntryExtensions Extensions SEQUENCE @146+12 (constructed): (1 elem)
27
+
Extension SEQUENCE @148+10 (constructed): (2 elem)
28
+
extnID OBJECT_IDENTIFIER @150+3: 2.5.29.21|cRLReason|X.509 extension
29
+
extnValue OCTET_STRING @155+3 (encapsulates): (3 byte)|0A0101
30
+
ENUMERATED @157+1: 1
31
+
crlExtensions [0] @160+47 (constructed): (1 elem)
32
+
Extensions SEQUENCE @162+45 (constructed): (2 elem)
33
+
Extension SEQUENCE @164+31 (constructed): (2 elem)
34
+
extnID OBJECT_IDENTIFIER @166+3: 2.5.29.35|authorityKeyIdentifier|X.509 extension
35
+
extnValue OCTET_STRING @171+24 (encapsulates): (24 byte)|301680140868AF8533C8394A7AF882938E706A4A20842C32
36
+
SEQUENCE @173+22 (constructed): (1 elem)
37
+
[0] @175+20: (20 byte)|0868AF8533C8394A7AF882938E706A4A20842C32
38
+
Extension SEQUENCE @197+10 (constructed): (2 elem)
39
+
extnID OBJECT_IDENTIFIER @199+3: 2.5.29.20|cRLNumber|X.509 extension
40
+
extnValue OCTET_STRING @204+3 (encapsulates): (3 byte)|02010C
41
+
INTEGER @206+1: 12
42
+
signatureAlgorithm AlgorithmIdentifier SEQUENCE @209+13 (constructed): (2 elem)
43
+
algorithm OBJECT_IDENTIFIER @211+9: 1.2.840.113549.1.1.5|sha1WithRSAEncryption|PKCS #1
44
+
parameters ANY NULL @222+0
45
+
signature BIT_STRING @224+129: (1024 bit)|0010001011011100000110000111110111110111000010001100111011001100011101011101000011010000011010101001101110101101000100001111010001110110001000111011010010000001011011101011010101101101101111100000111011111011000101010001010001101100110010000001011101101101000111111110111010010000000101111010001001101111011000001110010010111101101010101000110001010101110111101000111010000100011011111001001011111000100111110001000000010010001001111010111101001010110101000010111110000101111000100011011001000100011111011010101010100011010011000010010100111000000101011111111100000000111111010011111001111110111011100011110100100110000100101110101111011000111001110010101101100010111000100010101111000011010001101000000011101111011110001000001011010001000101011100011011010000100111000111001001101010110010111100111001111010111011010110011110011001100010110110111001110000100000010111110101000011010000100111010011000001101001101010111111000001010101010001011110100010001100110100110011010110000001101001100000101011101001001111110000101110
+60
examples/ed25519.cer.dump
+60
examples/ed25519.cer.dump
···
···
1
+
Certificate SEQUENCE @0+383 (constructed): (3 elem)
2
+
tbsCertificate TBSCertificate SEQUENCE @4+305 (constructed): (8 elem)
3
+
version [0] @8+3 (constructed): (1 elem)
4
+
Version INTEGER @10+1: 2
5
+
serialNumber CertificateSerialNumber INTEGER @13+20: (159 bit)|711090297755414526861352146244170174161660335942
6
+
signature AlgorithmIdentifier SEQUENCE @35+5 (constructed): (1 elem)
7
+
algorithm OBJECT_IDENTIFIER @37+3: 1.3.101.112|curveEd25519|EdDSA 25519 signature algorithm
8
+
issuer rdnSequence Name SEQUENCE @42+53 (constructed): (3 elem)
9
+
RelativeDistinguishedName SET @44+11 (constructed): (1 elem)
10
+
AttributeTypeAndValue SEQUENCE @46+9 (constructed): (2 elem)
11
+
type AttributeType OBJECT_IDENTIFIER @48+3: 2.5.4.6|countryName|X.520 DN component
12
+
value AttributeValue [?] PrintableString @53+2: IT
13
+
RelativeDistinguishedName SET @57+15 (constructed): (1 elem)
14
+
AttributeTypeAndValue SEQUENCE @59+13 (constructed): (2 elem)
15
+
type AttributeType OBJECT_IDENTIFIER @61+3: 2.5.4.7|localityName|X.520 DN component
16
+
value AttributeValue [?] UTF8String @66+6: Milano
17
+
RelativeDistinguishedName SET @74+21 (constructed): (1 elem)
18
+
AttributeTypeAndValue SEQUENCE @76+19 (constructed): (2 elem)
19
+
type AttributeType OBJECT_IDENTIFIER @78+3: 2.5.4.3|commonName|X.520 DN component
20
+
value AttributeValue [?] UTF8String @83+12: Test ed25519
21
+
validity Validity SEQUENCE @97+30 (constructed): (2 elem)
22
+
notBefore utcTime Time UTCTime @99+13: 2020-09-02 13:25:26 UTC
23
+
notAfter utcTime Time UTCTime @114+13: 2030-09-02 13:25:26 UTC
24
+
subject rdnSequence Name SEQUENCE @129+53 (constructed): (3 elem)
25
+
RelativeDistinguishedName SET @131+11 (constructed): (1 elem)
26
+
AttributeTypeAndValue SEQUENCE @133+9 (constructed): (2 elem)
27
+
type AttributeType OBJECT_IDENTIFIER @135+3: 2.5.4.6|countryName|X.520 DN component
28
+
value AttributeValue [?] PrintableString @140+2: IT
29
+
RelativeDistinguishedName SET @144+15 (constructed): (1 elem)
30
+
AttributeTypeAndValue SEQUENCE @146+13 (constructed): (2 elem)
31
+
type AttributeType OBJECT_IDENTIFIER @148+3: 2.5.4.7|localityName|X.520 DN component
32
+
value AttributeValue [?] UTF8String @153+6: Milano
33
+
RelativeDistinguishedName SET @161+21 (constructed): (1 elem)
34
+
AttributeTypeAndValue SEQUENCE @163+19 (constructed): (2 elem)
35
+
type AttributeType OBJECT_IDENTIFIER @165+3: 2.5.4.3|commonName|X.520 DN component
36
+
value AttributeValue [?] UTF8String @170+12: Test ed25519
37
+
subjectPublicKeyInfo SubjectPublicKeyInfo SEQUENCE @184+42 (constructed): (2 elem)
38
+
algorithm AlgorithmIdentifier SEQUENCE @186+5 (constructed): (1 elem)
39
+
algorithm OBJECT_IDENTIFIER @188+3: 1.3.101.112|curveEd25519|EdDSA 25519 signature algorithm
40
+
subjectPublicKey BIT_STRING @193+33: (256 bit)|0011101110101001001011111111110111001011000101110110011011011110010000001010001010010010111101111001001111011110001100001111100000001010001000111010100000110001001000010101110111010000000001111101100001100011001001000010111011111111011010000010000110000101
41
+
extensions [3] @228+83 (constructed): (1 elem)
42
+
Extensions SEQUENCE @230+81 (constructed): (3 elem)
43
+
Extension SEQUENCE @232+29 (constructed): (2 elem)
44
+
extnID OBJECT_IDENTIFIER @234+3: 2.5.29.14|subjectKeyIdentifier|X.509 extension
45
+
extnValue OCTET_STRING @239+22 (encapsulates): (22 byte)|04146BA5BDCF9DFA235978126417AE1E72D89A804AE8
46
+
OCTET_STRING @241+20: (20 byte)|6BA5BDCF9DFA235978126417AE1E72D89A804AE8
47
+
Extension SEQUENCE @263+31 (constructed): (2 elem)
48
+
extnID OBJECT_IDENTIFIER @265+3: 2.5.29.35|authorityKeyIdentifier|X.509 extension
49
+
extnValue OCTET_STRING @270+24 (encapsulates): (24 byte)|301680146BA5BDCF9DFA235978126417AE1E72D89A804AE8
50
+
SEQUENCE @272+22 (constructed): (1 elem)
51
+
[0] @274+20: (20 byte)|6BA5BDCF9DFA235978126417AE1E72D89A804AE8
52
+
Extension SEQUENCE @296+15 (constructed): (3 elem)
53
+
extnID OBJECT_IDENTIFIER @298+3: 2.5.29.19|basicConstraints|X.509 extension
54
+
critical BOOLEAN @303+1: true
55
+
extnValue OCTET_STRING @306+5 (encapsulates): (5 byte)|30030101FF
56
+
SEQUENCE @308+3 (constructed): (1 elem)
57
+
BOOLEAN @310+1: true
58
+
signatureAlgorithm AlgorithmIdentifier SEQUENCE @313+5 (constructed): (1 elem)
59
+
algorithm OBJECT_IDENTIFIER @315+3: 1.3.101.112|curveEd25519|EdDSA 25519 signature algorithm
60
+
signature BIT_STRING @320+65: (512 bit)|01101111011100110111011110111110001010001001011001011010001100110011011011010111111001010011010011111101100100001111001111111101010000000111111100011111000000101111100100000000010101111111001000010110000011110001011001101011000001001011111101100101100001001011011010011000110100101101000011010010101111110100110011010110011011110000111010110110111000101110100010011101000001001010001111100000100110010101000011111001110000100110110111011110011100111010110100011101001101010101011110000101011001011000011000000110
+7
examples/ldapmessage.b64.dump
+7
examples/ldapmessage.b64.dump
···
···
1
+
LDAPMessage SEQUENCE @0+53 (constructed): (3 elem)
2
+
messageID MessageID INTEGER @2+1: 5
3
+
protocolOp delRequest CHOICE Application_10 @5+17: (17 byte)|dc=example,dc=com
4
+
Controls [?] [0] @24+29 (constructed): (1 elem)
5
+
AttributeTypeAndValue SEQUENCE @26+27 (constructed): (2 elem)
6
+
type AttributeType [?] OCTET_STRING @28+22: (22 byte)|1.2.840.113556.1.4.805
7
+
value AttributeValue [?] BOOLEAN @52+1: true
+10
examples/pkcs1.pem.dump
+10
examples/pkcs1.pem.dump
···
···
1
+
RSAPrivateKey SEQUENCE @0+605 (constructed): (9 elem)
2
+
version Version INTEGER @4+1: 0
3
+
modulus INTEGER @7+129: (1024 bit)|117127183230921204401013393277767517103803021018182691416238029726599496957198017684901559383009459523071384847726671610377559004781710040051270748910270447756432733966622455162759462672603884318432883204215291756888413811504344870556870978773843838353155520698675084344179957236491745093327422201227604749459
4
+
publicExponent INTEGER @139+3: 65537
5
+
privateExponent INTEGER @144+129: (1024 bit)|92276282475226568589241550905865273709561889943250510752753436239739158443231274686159532997597455087892667385718350070754140814118578097684166368734227728473322161416664690885212698653195373932779792506838124961141214987311742627151011567342689730655630521241854903774681567286735997541758916977964830429313
6
+
prime1 INTEGER @276+65: (512 bit)|10896821561662485361386011233938116142526936125648167362054539174681694465821232677159478832161550957167298418313068706031799276527005193877616679381489381
7
+
prime2 INTEGER @343+65: (512 bit)|10748747473575365133625210720374663113238804836624829882840358384492696273600075746246298849279878235356215808273663889910189484797595139778277124898735639
8
+
exponent1 INTEGER @410+64: (511 bit)|6091625365131581796315047890165719534213640521161662994088715561328917102465668272778610952193459304175325574129665657306361751287362700277617869028176853
9
+
exponent2 INTEGER @476+65: (512 bit)|9619864112105977791898517014707043200694399482542575521432448550956476604540013165392532656448448632323473488540572223305800601817570919153380021725291669
10
+
coefficient INTEGER @543+64: (511 bit)|4162468593383244686217782691133418477400302049612992866028022118893358867845916127581019785866484075341057799618361552573853678007698434146811407259880551
+16
examples/pkcs8-rsa.pem.dump
+16
examples/pkcs8-rsa.pem.dump
···
···
1
+
PrivateKeyInfo SEQUENCE @0+631 (constructed): (3 elem)
2
+
version Version INTEGER @4+1: 0
3
+
privateKeyAlgorithm AlgorithmIdentifier SEQUENCE @7+13 (constructed): (2 elem)
4
+
algorithm OBJECT_IDENTIFIER @9+9: 1.2.840.113549.1.1.1|rsaEncryption|PKCS #1
5
+
parameters ANY NULL @20+0
6
+
privateKey PrivateKey OCTET_STRING @22+609 (encapsulates): (609 byte)|3082025D02010002818100A6CB6DE27CDF698B92CEE0C4772D4854D2FF8B666BFBF07FA377E47A90571665FD6A5B8C9F2930E4AF28E32E522162AC66CD70AA1B26888E3EEE268A2B59FECA7E4C693AE26B878B3027F5868429FD8BEBE85BFED3B0E5DF0E9D72AAB1216902B074FA2DD59001EFC4CDB1E7305FF48E0D310C0A4F798EFC758F9703C4F96C930203010001028181008367E1BA7E06C57060C8FBEBCCB8B033A3C8105B30D7DC31B2E7D1E97DAE1EC75B4F5FB0F9F3C9C160FE257D68D74495EEA80C0AF838F37C9DB7A24558C21E28C49D57470B002D90A383CAEBB5821A59583D15502F0012C9235F806C62C97F1E3CAFBC72118FCF60743168125801E06CC7293CDE64D241339AAD516E7BCC1081024100D00E8DE65F7C32094B732A5628CEFEDC35ED796B7CEA6297614545DF71D8DBC67EA14565534BFC9BC5F1A680239227189C2D493924A5BD64641169533201D6E5024100CD3AC881CC47AA776A9829C0E529E3D0DBB5A43C366842578341A051DAFAF4F6164F2DC0E72A3BD3B33F8B2F84A6CF35F0781E7C466E677FF8E553DE5C92C6170240744F3E9A83D4AD302F02B1AF3ADF04F0DC20E698E55B2E448C372AA9903E78164E221FE6561B8B9B159C52C51D9D8DC79F3F5DC8D928E268A5DC69F1FD69B3D5024100B7ACEA92B05F5B8370D52A5947400C727A90C0A25B174878C6324FE7B29273F662D50E5FDD04017360B3784058FA69ED1E8082D83AB8C8CCD1D77D0E3FCFE49502404F79B900CE9185833573BBA54E1B1D157EDFE8C37FC328D2520CCE7CC804A9A28B58D937626EBAD5FDE96534BBEE4E292EE8010CFFC8DB1E546C99FC517B4C67
7
+
SEQUENCE @26+605 (constructed): (9 elem)
8
+
INTEGER @30+1: 0
9
+
INTEGER @33+129: (1024 bit)|117127183230921204401013393277767517103803021018182691416238029726599496957198017684901559383009459523071384847726671610377559004781710040051270748910270447756432733966622455162759462672603884318432883204215291756888413811504344870556870978773843838353155520698675084344179957236491745093327422201227604749459
10
+
INTEGER @165+3: 65537
11
+
INTEGER @170+129: (1024 bit)|92276282475226568589241550905865273709561889943250510752753436239739158443231274686159532997597455087892667385718350070754140814118578097684166368734227728473322161416664690885212698653195373932779792506838124961141214987311742627151011567342689730655630521241854903774681567286735997541758916977964830429313
12
+
INTEGER @302+65: (512 bit)|10896821561662485361386011233938116142526936125648167362054539174681694465821232677159478832161550957167298418313068706031799276527005193877616679381489381
13
+
INTEGER @369+65: (512 bit)|10748747473575365133625210720374663113238804836624829882840358384492696273600075746246298849279878235356215808273663889910189484797595139778277124898735639
14
+
INTEGER @436+64: (511 bit)|6091625365131581796315047890165719534213640521161662994088715561328917102465668272778610952193459304175325574129665657306361751287362700277617869028176853
15
+
INTEGER @502+65: (512 bit)|9619864112105977791898517014707043200694399482542575521432448550956476604540013165392532656448448632323473488540572223305800601817570919153380021725291669
16
+
INTEGER @569+64: (511 bit)|4162468593383244686217782691133418477400302049612992866028022118893358867845916127581019785866484075341057799618361552573853678007698434146811407259880551
+118
examples/sig-p256-der.p7m.dump
+118
examples/sig-p256-der.p7m.dump
···
···
1
+
ContentInfo SEQUENCE @0+10868 (constructed): (2 elem)
2
+
contentType ContentType OBJECT_IDENTIFIER @4+9: 1.2.840.113549.1.7.2|signedData|PKCS #7
3
+
content [0] @15+10853 (constructed): (1 elem)
4
+
SignedData SEQUENCE @19+10849 (constructed): (5 elem)
5
+
version CMSVersion INTEGER @23+1: 1
6
+
digestAlgorithms DigestAlgorithmIdentifiers SET @26+15 (constructed): (1 elem)
7
+
DigestAlgorithmIdentifier SEQUENCE @28+13 (constructed): (2 elem)
8
+
algorithm OBJECT_IDENTIFIER @30+9: 2.16.840.1.101.3.4.2.1|sha-256|NIST Algorithm
9
+
parameters ANY NULL @41+0
10
+
encapContentInfo EncapsulatedContentInfo SEQUENCE @43+10053 (constructed): (2 elem)
11
+
eContentType ContentType OBJECT_IDENTIFIER @47+9: 1.2.840.113549.1.7.1|data|PKCS #7
12
+
eContent [0] @58+10038 (constructed): (1 elem)
13
+
OCTET_STRING @62+10034: (10034 byte)|Inizio contenuto.|AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|Fine contenuto.
14
+
CertificateSet [?] [0] @10100+370 (constructed): (1 elem)
15
+
certificate CertificateChoices SEQUENCE @10104+366 (constructed): (3 elem)
16
+
tbsCertificate TBSCertificate SEQUENCE @10108+276 (constructed): (8 elem)
17
+
version [0] @10112+3 (constructed): (1 elem)
18
+
Version INTEGER @10114+1: 2
19
+
serialNumber CertificateSerialNumber INTEGER @10117+16: (127 bit)|128087855099855233032551836648087377254
20
+
signature AlgorithmIdentifier SEQUENCE @10135+10 (constructed): (1 elem)
21
+
algorithm OBJECT_IDENTIFIER @10137+8: 1.2.840.10045.4.3.2|ecdsaWithSHA256|ANSI X9.62 ECDSA algorithm with SHA256
22
+
issuer rdnSequence Name SEQUENCE @10147+15 (constructed): (1 elem)
23
+
RelativeDistinguishedName SET @10149+13 (constructed): (1 elem)
24
+
AttributeTypeAndValue SEQUENCE @10151+11 (constructed): (2 elem)
25
+
type AttributeType OBJECT_IDENTIFIER @10153+3: 2.5.4.3|commonName|X.520 DN component
26
+
value AttributeValue [?] UTF8String @10158+4: Test
27
+
validity Validity SEQUENCE @10164+30 (constructed): (2 elem)
28
+
notBefore utcTime Time UTCTime @10166+13: 2018-07-16 14:56:35 UTC
29
+
notAfter utcTime Time UTCTime @10181+13: 2019-07-16 14:56:35 UTC
30
+
subject rdnSequence Name SEQUENCE @10196+15 (constructed): (1 elem)
31
+
RelativeDistinguishedName SET @10198+13 (constructed): (1 elem)
32
+
AttributeTypeAndValue SEQUENCE @10200+11 (constructed): (2 elem)
33
+
type AttributeType OBJECT_IDENTIFIER @10202+3: 2.5.4.3|commonName|X.520 DN component
34
+
value AttributeValue [?] UTF8String @10207+4: Test
35
+
subjectPublicKeyInfo SubjectPublicKeyInfo SEQUENCE @10213+89 (constructed): (2 elem)
36
+
algorithm AlgorithmIdentifier SEQUENCE @10215+19 (constructed): (2 elem)
37
+
algorithm OBJECT_IDENTIFIER @10217+7: 1.2.840.10045.2.1|ecPublicKey|ANSI X9.62 public key type
38
+
parameters ANY OBJECT_IDENTIFIER @10226+8: 1.2.840.10045.3.1.7|prime256v1|ANSI X9.62 named elliptic curve
39
+
subjectPublicKey BIT_STRING @10236+66: (520 bit)|0000010000100100010011001011011011001100000111000110100100100001111111110100100111011000101111100010011000111110000010110111110011010000010110100010100001100101010110101000010001101100100000100101111011001010111001101110110011100110100110100110101000100001110001001110010011110010001000000010010011000000111010011111010011100100011101001001110010011000101000011010110111110010010111111001000011011110011011101111100101001000001010110110011100011000100000111010011100001110101101001011011110101011100111110000011001000011
40
+
extensions [3] @10304+82 (constructed): (1 elem)
41
+
Extensions SEQUENCE @10306+80 (constructed): (3 elem)
42
+
Extension SEQUENCE @10308+14 (constructed): (3 elem)
43
+
extnID OBJECT_IDENTIFIER @10310+3: 2.5.29.15|keyUsage|X.509 extension
44
+
critical BOOLEAN @10315+1: true
45
+
extnValue OCTET_STRING @10318+4 (encapsulates): (4 byte)|030204F0
46
+
BIT_STRING @10320+2: (4 bit)|1111
47
+
Extension SEQUENCE @10324+29 (constructed): (2 elem)
48
+
extnID OBJECT_IDENTIFIER @10326+3: 2.5.29.14|subjectKeyIdentifier|X.509 extension
49
+
extnValue OCTET_STRING @10331+22 (encapsulates): (22 byte)|0414C3C084DF7B040DB038AF518CE397F6EC20D626E6
50
+
OCTET_STRING @10333+20: (20 byte)|C3C084DF7B040DB038AF518CE397F6EC20D626E6
51
+
Extension SEQUENCE @10355+31 (constructed): (2 elem)
52
+
extnID OBJECT_IDENTIFIER @10357+3: 2.5.29.35|authorityKeyIdentifier|X.509 extension
53
+
extnValue OCTET_STRING @10362+24 (encapsulates): (24 byte)|30168014C3C084DF7B040DB038AF518CE397F6EC20D626E6
54
+
SEQUENCE @10364+22 (constructed): (1 elem)
55
+
[0] @10366+20: (20 byte)|C3C084DF7B040DB038AF518CE397F6EC20D626E6
56
+
signatureAlgorithm AlgorithmIdentifier SEQUENCE @10388+10 (constructed): (1 elem)
57
+
algorithm OBJECT_IDENTIFIER @10390+8: 1.2.840.10045.4.3.2|ecdsaWithSHA256|ANSI X9.62 ECDSA algorithm with SHA256
58
+
signature BIT_STRING @10400+72 (encapsulates): (568 bit)|0011000001000101000000100010000100000000110111100110000000011110010101110011110110101111101101011001101111000101010100011101010110001110001111100111101110011110110110100000011000010010110111010000000100010010100000000101101000100010000101111011011100110100011101011001101110001000010001000001011100000010001000000110011111000011111111011110011000000111100000001101010000011100000111010111101000111011100100000010100100011111001111010011100111000100110111000010111100100000011011011100110010111010001011111001100000101100000001101011011001111100000010011011001000110010
59
+
SEQUENCE @10403+69 (constructed): (2 elem)
60
+
INTEGER @10405+33: (256 bit)|100583279108105959323277080420227859612360091217401498640290749528265835693079
61
+
INTEGER @10440+32: (255 bit)|46934510925111877438867701170553238261516280994969183555881415710868278719026
62
+
signerInfos SignerInfos SET @10474+394 (constructed): (1 elem)
63
+
SignerInfo SEQUENCE @10478+390 (constructed): (6 elem)
64
+
version CMSVersion INTEGER @10482+1: 1
65
+
sid issuerAndSerialNumber SignerIdentifier SEQUENCE @10485+35 (constructed): (2 elem)
66
+
issuer rdnSequence Name SEQUENCE @10487+15 (constructed): (1 elem)
67
+
RelativeDistinguishedName SET @10489+13 (constructed): (1 elem)
68
+
AttributeTypeAndValue SEQUENCE @10491+11 (constructed): (2 elem)
69
+
type AttributeType OBJECT_IDENTIFIER @10493+3: 2.5.4.3|commonName|X.520 DN component
70
+
value AttributeValue [?] UTF8String @10498+4: Test
71
+
serialNumber CertificateSerialNumber INTEGER @10504+16: (127 bit)|128087855099855233032551836648087377254
72
+
digestAlgorithm DigestAlgorithmIdentifier SEQUENCE @10522+13 (constructed): (2 elem)
73
+
algorithm OBJECT_IDENTIFIER @10524+9: 2.16.840.1.101.3.4.2.1|sha-256|NIST Algorithm
74
+
parameters ANY NULL @10535+0
75
+
SignedAttributes [?] [0] @10537+247 (constructed): (5 elem)
76
+
Attribute SEQUENCE @10540+24 (constructed): (2 elem)
77
+
type AttributeType OBJECT_IDENTIFIER @10542+9: 1.2.840.113549.1.9.3|contentType|PKCS #9
78
+
values SET @10553+11 (constructed): (1 elem)
79
+
AttributeValue [?] OBJECT_IDENTIFIER @10555+9: 1.2.840.113549.1.7.1|data|PKCS #7
80
+
Attribute SEQUENCE @10566+28 (constructed): (2 elem)
81
+
type AttributeType OBJECT_IDENTIFIER @10568+9: 1.2.840.113549.1.9.5|signingTime|PKCS #9
82
+
values SET @10579+15 (constructed): (1 elem)
83
+
AttributeValue [?] UTCTime @10581+13: 2018-07-16 14:56:35 UTC
84
+
Attribute SEQUENCE @10596+42 (constructed): (2 elem)
85
+
type AttributeType OBJECT_IDENTIFIER @10598+9: 1.2.840.113549.1.9.52|cmsAlgorithmProtection|RFC 6211
86
+
values SET @10609+29 (constructed): (1 elem)
87
+
AttributeValue [?] SEQUENCE @10611+27 (constructed): (2 elem)
88
+
SEQUENCE @10613+13 (constructed): (2 elem)
89
+
OBJECT_IDENTIFIER @10615+9: 2.16.840.1.101.3.4.2.1|sha-256|NIST Algorithm
90
+
NULL @10626+0
91
+
[1] @10628+10 (constructed): (1 elem)
92
+
OBJECT_IDENTIFIER @10630+8: 1.2.840.10045.4.3.2|ecdsaWithSHA256|ANSI X9.62 ECDSA algorithm with SHA256
93
+
Attribute SEQUENCE @10640+47 (constructed): (2 elem)
94
+
type AttributeType OBJECT_IDENTIFIER @10642+9: 1.2.840.113549.1.9.4|messageDigest|PKCS #9
95
+
values SET @10653+34 (constructed): (1 elem)
96
+
AttributeValue [?] OCTET_STRING @10655+32: (32 byte)|724C51BBE76DA05AFB20CBE8EB037CDAE1AFD713125D2DC13D552DA9F442D24D
97
+
Attribute SEQUENCE @10689+96 (constructed): (2 elem)
98
+
type AttributeType OBJECT_IDENTIFIER @10691+11: 1.2.840.113549.1.9.16.2.47|signingCertificateV2|S/MIME Authenticated Attributes
99
+
values SET @10704+81 (constructed): (1 elem)
100
+
AttributeValue [?] SEQUENCE @10706+79 (constructed): (1 elem)
101
+
SEQUENCE @10708+77 (constructed): (1 elem)
102
+
SEQUENCE @10710+75 (constructed): (2 elem)
103
+
OCTET_STRING @10712+32: (32 byte)|BABC08434C58267301E006861D27ECA125670E792797248E76A5717A5BF993C2
104
+
SEQUENCE @10746+39 (constructed): (2 elem)
105
+
SEQUENCE @10748+19 (constructed): (1 elem)
106
+
[4] @10750+17 (constructed): (1 elem)
107
+
SEQUENCE @10752+15 (constructed): (1 elem)
108
+
SET @10754+13 (constructed): (1 elem)
109
+
SEQUENCE @10756+11 (constructed): (2 elem)
110
+
OBJECT_IDENTIFIER @10758+3: 2.5.4.3|commonName|X.520 DN component
111
+
UTF8String @10763+4: Test
112
+
INTEGER @10769+16: (127 bit)|128087855099855233032551836648087377254
113
+
signatureAlgorithm SignatureAlgorithmIdentifier SEQUENCE @10787+10 (constructed): (1 elem)
114
+
algorithm OBJECT_IDENTIFIER @10789+8: 1.2.840.10045.4.3.2|ecdsaWithSHA256|ANSI X9.62 ECDSA algorithm with SHA256
115
+
signature SignatureValue OCTET_STRING @10799+71 (encapsulates): (71 byte)|3045022100F104302EABB428ECC8E71CE2E38F6CBED848A8E9A2B5D5DA19933E485C83CC7102200CBB40A0B7B9B2E048920622FB286FD14695F24CF650BDAA40B885F84C34BBB9
116
+
SEQUENCE @10801+69 (constructed): (2 elem)
117
+
INTEGER @10803+33: (256 bit)|109014796438891021115527318269695135443977065935278579101750090430030910049393
118
+
INTEGER @10838+32: (252 bit)|5758600628818957274240888478952309319266088628943097300803726649607194983353
+1
-3
index.css
+1
-3
index.css
···
1
html {
2
--main-bg-color: #C0C0C0;
3
--main-text-color: #000000;
4
-
--id-text-color: #7d5900;
5
--headline-text-color: #8be9fd;
6
--button-border-color: #767676;
7
--button-bg-color: #efefef;
···
36
html[data-theme="dark"] {
37
--main-bg-color: #0d1116;
38
--main-text-color: #f8f8f2;
39
-
--id-text-color: #9d7c2d;
40
--headline-text-color: #8be9fd;
41
--button-border-color: #505050;
42
--button-bg-color: #303030;
···
188
color: var(--preview-border-color);
189
}
190
.name.id {
191
-
color: var(--id-text-color);
192
}
193
.value {
194
display: none;
···
1
html {
2
--main-bg-color: #C0C0C0;
3
--main-text-color: #000000;
4
--headline-text-color: #8be9fd;
5
--button-border-color: #767676;
6
--button-bg-color: #efefef;
···
35
html[data-theme="dark"] {
36
--main-bg-color: #0d1116;
37
--main-text-color: #f8f8f2;
38
--headline-text-color: #8be9fd;
39
--button-border-color: #505050;
40
--button-bg-color: #303030;
···
186
color: var(--preview-border-color);
187
}
188
.name.id {
189
+
color: var(--main-text-color);
190
}
191
.value {
192
display: none;
+1
index.html
+1
index.html
···
107
<li>previous versions on githack: <select id="tags"><option>[select tag]</option></select></li>
108
<li><a href="http://idf.lapo.it/p/asn1js/">InDefero tracker</a> (currently offline)</li>
109
<li><a href="https://github.com/lapo-luchini/asn1js">github mirror</a></li>
110
<li><a href="https://www.openhub.net/p/asn1js">OpenHub code stats</a></li>
111
</ul>
112
</div>
···
107
<li>previous versions on githack: <select id="tags"><option>[select tag]</option></select></li>
108
<li><a href="http://idf.lapo.it/p/asn1js/">InDefero tracker</a> (currently offline)</li>
109
<li><a href="https://github.com/lapo-luchini/asn1js">github mirror</a></li>
110
+
<li><a href="https://github.com/lapo-luchini/asn1js/blob/trunk/CHANGELOG.md">ChangeLog on GitHub</a></li>
111
<li><a href="https://www.openhub.net/p/asn1js">OpenHub code stats</a></li>
112
</ul>
113
</div>
+2
-2
index.js
+2
-2
index.js
···
86
if (area.value === '') area.value = Base64.pretty(b64);
87
try {
88
window.location.hash = hash = '#' + b64;
89
-
} catch (e) {
90
// fails with "Access Denied" on IE with URLs longer than ~2048 chars
91
window.location.hash = hash = '#';
92
}
···
122
else if (Base64.re.test(str)) der = Base64.unarmor(str);
123
else der = str;
124
decode(der);
125
-
} catch (e) {
126
text(tree, 'Cannot decode file.');
127
dump.innerHTML = '';
128
}
···
86
if (area.value === '') area.value = Base64.pretty(b64);
87
try {
88
window.location.hash = hash = '#' + b64;
89
+
} catch (ignore) {
90
// fails with "Access Denied" on IE with URLs longer than ~2048 chars
91
window.location.hash = hash = '#';
92
}
···
122
else if (Base64.re.test(str)) der = Base64.unarmor(str);
123
else der = str;
124
decode(der);
125
+
} catch (ignore) {
126
text(tree, 'Cannot decode file.');
127
dump.innerHTML = '';
128
}
+31
-74
package.json
+31
-74
package.json
···
1
{
2
"name": "@lapo/asn1js",
3
-
"version": "2.0.6",
4
"description": "Generic ASN.1 parser/decoder that can decode any valid ASN.1 DER or BER structures.",
5
"type": "module",
6
"main": "asn1.js",
···
8
"type": "git",
9
"url": "git+https://github.com/lapo-luchini/asn1js.git"
10
},
11
-
"keywords": [ "asn1", "ber", "der", "pem" ],
12
"author": "Lapo Luchini <lapo@lapo.it>",
13
"license": "ISC",
14
-
"bugs": { "url": "https://github.com/lapo-luchini/asn1js/issues" },
15
"homepage": "https://lapo.it/asn1js/",
16
-
"files": [ "asn1.js", "base64.js", "hex.js", "int10.js", "dom.js", "defs.js", "oids.js", "rfcdef.js", "dumpASN1.js" ],
17
"scripts": {
18
"lint": "npx eslint asn1.js base64.js hex.js int10.js dom.js defs.js oids.js rfcdef.js tags.js context.js index.js parseRFC.js dumpASN1.js test.js testDefs.js vite.config.js theme.js",
19
"lint-action": "npx @action-validator/cli .github/workflows/node.js.yml",
···
26
"dumpASN1": "./dumpASN1.js"
27
},
28
"engines": {
29
-
"node": ">=12.20.0"
30
},
31
"devDependencies": {
32
-
"@rollup/wasm-node": "^4.25.0",
33
-
"eslint": "^8.57.1",
34
"htmlparser2": "^9.1.0",
35
-
"vite": "^5.4.10",
36
"vite-plugin-dom": "^1.0.4",
37
-
"vite-plugin-singlefile": "^2.0.3"
38
},
39
"overrides": {
40
"rollup": "npm:@rollup/wasm-node"
···
43
"overrides": {
44
"rollup": "npm:@rollup/wasm-node"
45
}
46
-
},
47
-
"eslintConfig": {
48
-
"env": {
49
-
"es6": true,
50
-
"browser": true,
51
-
"node": true
52
-
},
53
-
"parserOptions": {
54
-
"ecmaVersion": 2015,
55
-
"sourceType": "module"
56
-
},
57
-
"extends": [ "eslint:recommended" ],
58
-
"globals": {
59
-
"Uint8Array": "readonly"
60
-
},
61
-
"rules": {
62
-
"strict": [ "error", "function" ],
63
-
"indent": [ "error", 4 ],
64
-
"no-trailing-spaces": [ "error" ],
65
-
"linebreak-style": [ "error", "unix" ],
66
-
"eol-last": [ "error", "always" ],
67
-
"semi": [ "warn", "always" ],
68
-
"quotes": [ "error", "single", { "avoidEscape": true } ],
69
-
"no-var": [ "warn" ],
70
-
"comma-dangle": [ "error", "always-multiline" ]
71
-
},
72
-
"overrides": [
73
-
{
74
-
"files": [ "defs.js" ],
75
-
"parserOptions": {
76
-
"ecmaVersion": 2020
77
-
}
78
-
}, {
79
-
"files": [ "test.js", "parseRFC.js", "dumpASN1.js" ],
80
-
"parserOptions": {
81
-
"ecmaVersion": 2021
82
-
},
83
-
"rules": {
84
-
"strict": [ "error", "global" ]
85
-
}
86
-
}, {
87
-
"files": [ "oids.js" ],
88
-
"rules": {
89
-
"indent": "off",
90
-
"quotes": [ "warn", "double" ]
91
-
}
92
-
}, {
93
-
"files": [ "tags.js", "rfcdef.js" ],
94
-
"rules": {
95
-
"indent": [ "error", 2, { "ignoredNodes": [ "Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement > ExpressionStatement[directive='use strict']:first-child" ] } ],
96
-
"comma-dangle": "off",
97
-
"quotes": [ "warn", "double" ]
98
-
}
99
-
}, {
100
-
"files": [ "defs.js" ],
101
-
"parserOptions": {
102
-
"ecmaVersion": 2021
103
-
}
104
-
}, {
105
-
"files": [ "testDefs.js" ],
106
-
"parserOptions": {
107
-
"ecmaVersion": 2022
108
-
}
109
-
}
110
-
]
111
}
112
}
···
1
{
2
"name": "@lapo/asn1js",
3
+
"version": "2.1.0",
4
"description": "Generic ASN.1 parser/decoder that can decode any valid ASN.1 DER or BER structures.",
5
"type": "module",
6
"main": "asn1.js",
···
8
"type": "git",
9
"url": "git+https://github.com/lapo-luchini/asn1js.git"
10
},
11
+
"keywords": [
12
+
"asn1",
13
+
"ber",
14
+
"der",
15
+
"pem"
16
+
],
17
"author": "Lapo Luchini <lapo@lapo.it>",
18
"license": "ISC",
19
+
"bugs": {
20
+
"url": "https://github.com/lapo-luchini/asn1js/issues"
21
+
},
22
"homepage": "https://lapo.it/asn1js/",
23
+
"files": [
24
+
"asn1.js",
25
+
"base64.js",
26
+
"hex.js",
27
+
"int10.js",
28
+
"dom.js",
29
+
"defs.js",
30
+
"oids.js",
31
+
"rfcdef.js",
32
+
"dumpASN1.js"
33
+
],
34
"scripts": {
35
"lint": "npx eslint asn1.js base64.js hex.js int10.js dom.js defs.js oids.js rfcdef.js tags.js context.js index.js parseRFC.js dumpASN1.js test.js testDefs.js vite.config.js theme.js",
36
"lint-action": "npx @action-validator/cli .github/workflows/node.js.yml",
···
43
"dumpASN1": "./dumpASN1.js"
44
},
45
"engines": {
46
+
"node": ">=14.6.0"
47
},
48
+
"packageManager": "pnpm@7.33.7",
49
"devDependencies": {
50
+
"@eslint/eslintrc": "^3.3.1",
51
+
"@eslint/js": "^9.32.0",
52
+
"@rollup/wasm-node": "^4.46.2",
53
+
"diff": "^8.0.2",
54
+
"eslint": "^9.32.0",
55
+
"globals": "^16.3.0",
56
"htmlparser2": "^9.1.0",
57
+
"vite": "^5.4.19",
58
"vite-plugin-dom": "^1.0.4",
59
+
"vite-plugin-singlefile": "^2.3.0"
60
},
61
"overrides": {
62
"rollup": "npm:@rollup/wasm-node"
···
65
"overrides": {
66
"rollup": "npm:@rollup/wasm-node"
67
}
68
}
69
}
+4
-4
parseRFC.js
+4
-4
parseRFC.js
···
213
tryToken(expect) {
214
let p = this.pos;
215
let t;
216
-
try { t = this.parseToken(); } catch (e) { /*ignore*/ }
217
// console.log('[debug] tryToken(' + expect + ') = ' + t);
218
if (t == expect)
219
return true;
···
371
let p = this.pos;
372
try {
373
return this.parseBuiltinType();
374
-
} catch (e) {
375
// console.log('[debug] parseAssignment failed on parseType', e);
376
this.pos = p;
377
let x = {
···
442
case 'NULL':
443
return null;
444
}
445
-
} catch (e) {
446
this.pos = p;
447
}
448
p = this.pos;
449
try {
450
return this.parseIdentifier();
451
-
} catch (e) {
452
this.pos = p;
453
}
454
this.exception('Unknown value type.');
···
213
tryToken(expect) {
214
let p = this.pos;
215
let t;
216
+
try { t = this.parseToken(); } catch (ignore) { /*ignore*/ }
217
// console.log('[debug] tryToken(' + expect + ') = ' + t);
218
if (t == expect)
219
return true;
···
371
let p = this.pos;
372
try {
373
return this.parseBuiltinType();
374
+
} catch (ignore) {
375
// console.log('[debug] parseAssignment failed on parseType', e);
376
this.pos = p;
377
let x = {
···
442
case 'NULL':
443
return null;
444
}
445
+
} catch (ignore) {
446
this.pos = p;
447
}
448
p = this.pos;
449
try {
450
return this.parseIdentifier();
451
+
} catch (ignore) {
452
this.pos = p;
453
}
454
this.exception('Unknown value type.');
+1348
pnpm-lock.yaml
+1348
pnpm-lock.yaml
···
···
1
+
lockfileVersion: '9.0'
2
+
3
+
settings:
4
+
autoInstallPeers: true
5
+
excludeLinksFromLockfile: false
6
+
7
+
overrides:
8
+
rollup: npm:@rollup/wasm-node
9
+
10
+
importers:
11
+
12
+
.:
13
+
devDependencies:
14
+
'@eslint/eslintrc':
15
+
specifier: ^3.3.1
16
+
version: 3.3.1
17
+
'@eslint/js':
18
+
specifier: ^9.32.0
19
+
version: 9.32.0
20
+
'@rollup/wasm-node':
21
+
specifier: ^4.46.2
22
+
version: 4.46.2
23
+
diff:
24
+
specifier: ^8.0.2
25
+
version: 8.0.2
26
+
eslint:
27
+
specifier: ^9.32.0
28
+
version: 9.32.0
29
+
globals:
30
+
specifier: ^16.3.0
31
+
version: 16.3.0
32
+
htmlparser2:
33
+
specifier: ^9.1.0
34
+
version: 9.1.0
35
+
vite:
36
+
specifier: ^5.4.19
37
+
version: 5.4.19
38
+
vite-plugin-dom:
39
+
specifier: ^1.0.4
40
+
version: 1.0.4(vite@5.4.19)
41
+
vite-plugin-singlefile:
42
+
specifier: ^2.3.0
43
+
version: 2.3.0(rollup@4.46.2)(vite@5.4.19)
44
+
45
+
packages:
46
+
47
+
'@esbuild/aix-ppc64@0.21.5':
48
+
resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
49
+
engines: {node: '>=12'}
50
+
cpu: [ppc64]
51
+
os: [aix]
52
+
53
+
'@esbuild/android-arm64@0.21.5':
54
+
resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
55
+
engines: {node: '>=12'}
56
+
cpu: [arm64]
57
+
os: [android]
58
+
59
+
'@esbuild/android-arm@0.21.5':
60
+
resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
61
+
engines: {node: '>=12'}
62
+
cpu: [arm]
63
+
os: [android]
64
+
65
+
'@esbuild/android-x64@0.21.5':
66
+
resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
67
+
engines: {node: '>=12'}
68
+
cpu: [x64]
69
+
os: [android]
70
+
71
+
'@esbuild/darwin-arm64@0.21.5':
72
+
resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
73
+
engines: {node: '>=12'}
74
+
cpu: [arm64]
75
+
os: [darwin]
76
+
77
+
'@esbuild/darwin-x64@0.21.5':
78
+
resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
79
+
engines: {node: '>=12'}
80
+
cpu: [x64]
81
+
os: [darwin]
82
+
83
+
'@esbuild/freebsd-arm64@0.21.5':
84
+
resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
85
+
engines: {node: '>=12'}
86
+
cpu: [arm64]
87
+
os: [freebsd]
88
+
89
+
'@esbuild/freebsd-x64@0.21.5':
90
+
resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
91
+
engines: {node: '>=12'}
92
+
cpu: [x64]
93
+
os: [freebsd]
94
+
95
+
'@esbuild/linux-arm64@0.21.5':
96
+
resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
97
+
engines: {node: '>=12'}
98
+
cpu: [arm64]
99
+
os: [linux]
100
+
101
+
'@esbuild/linux-arm@0.21.5':
102
+
resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
103
+
engines: {node: '>=12'}
104
+
cpu: [arm]
105
+
os: [linux]
106
+
107
+
'@esbuild/linux-ia32@0.21.5':
108
+
resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
109
+
engines: {node: '>=12'}
110
+
cpu: [ia32]
111
+
os: [linux]
112
+
113
+
'@esbuild/linux-loong64@0.21.5':
114
+
resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
115
+
engines: {node: '>=12'}
116
+
cpu: [loong64]
117
+
os: [linux]
118
+
119
+
'@esbuild/linux-mips64el@0.21.5':
120
+
resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
121
+
engines: {node: '>=12'}
122
+
cpu: [mips64el]
123
+
os: [linux]
124
+
125
+
'@esbuild/linux-ppc64@0.21.5':
126
+
resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
127
+
engines: {node: '>=12'}
128
+
cpu: [ppc64]
129
+
os: [linux]
130
+
131
+
'@esbuild/linux-riscv64@0.21.5':
132
+
resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
133
+
engines: {node: '>=12'}
134
+
cpu: [riscv64]
135
+
os: [linux]
136
+
137
+
'@esbuild/linux-s390x@0.21.5':
138
+
resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
139
+
engines: {node: '>=12'}
140
+
cpu: [s390x]
141
+
os: [linux]
142
+
143
+
'@esbuild/linux-x64@0.21.5':
144
+
resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
145
+
engines: {node: '>=12'}
146
+
cpu: [x64]
147
+
os: [linux]
148
+
149
+
'@esbuild/netbsd-x64@0.21.5':
150
+
resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
151
+
engines: {node: '>=12'}
152
+
cpu: [x64]
153
+
os: [netbsd]
154
+
155
+
'@esbuild/openbsd-x64@0.21.5':
156
+
resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
157
+
engines: {node: '>=12'}
158
+
cpu: [x64]
159
+
os: [openbsd]
160
+
161
+
'@esbuild/sunos-x64@0.21.5':
162
+
resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
163
+
engines: {node: '>=12'}
164
+
cpu: [x64]
165
+
os: [sunos]
166
+
167
+
'@esbuild/win32-arm64@0.21.5':
168
+
resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
169
+
engines: {node: '>=12'}
170
+
cpu: [arm64]
171
+
os: [win32]
172
+
173
+
'@esbuild/win32-ia32@0.21.5':
174
+
resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
175
+
engines: {node: '>=12'}
176
+
cpu: [ia32]
177
+
os: [win32]
178
+
179
+
'@esbuild/win32-x64@0.21.5':
180
+
resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
181
+
engines: {node: '>=12'}
182
+
cpu: [x64]
183
+
os: [win32]
184
+
185
+
'@eslint-community/eslint-utils@4.7.0':
186
+
resolution: {integrity: sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==}
187
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
188
+
peerDependencies:
189
+
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
190
+
191
+
'@eslint-community/regexpp@4.12.1':
192
+
resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==}
193
+
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
194
+
195
+
'@eslint/config-array@0.21.0':
196
+
resolution: {integrity: sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==}
197
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
198
+
199
+
'@eslint/config-helpers@0.3.0':
200
+
resolution: {integrity: sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==}
201
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
202
+
203
+
'@eslint/core@0.15.1':
204
+
resolution: {integrity: sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==}
205
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
206
+
207
+
'@eslint/eslintrc@3.3.1':
208
+
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
209
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
210
+
211
+
'@eslint/js@9.32.0':
212
+
resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==}
213
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
214
+
215
+
'@eslint/object-schema@2.1.6':
216
+
resolution: {integrity: sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==}
217
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
218
+
219
+
'@eslint/plugin-kit@0.3.4':
220
+
resolution: {integrity: sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==}
221
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
222
+
223
+
'@humanfs/core@0.19.1':
224
+
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
225
+
engines: {node: '>=18.18.0'}
226
+
227
+
'@humanfs/node@0.16.6':
228
+
resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==}
229
+
engines: {node: '>=18.18.0'}
230
+
231
+
'@humanwhocodes/module-importer@1.0.1':
232
+
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
233
+
engines: {node: '>=12.22'}
234
+
235
+
'@humanwhocodes/retry@0.3.1':
236
+
resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==}
237
+
engines: {node: '>=18.18'}
238
+
239
+
'@humanwhocodes/retry@0.4.3':
240
+
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
241
+
engines: {node: '>=18.18'}
242
+
243
+
'@rollup/rollup-android-arm-eabi@4.46.2':
244
+
resolution: {integrity: sha512-Zj3Hl6sN34xJtMv7Anwb5Gu01yujyE/cLBDB2gnHTAHaWS1Z38L7kuSG+oAh0giZMqG060f/YBStXtMH6FvPMA==}
245
+
cpu: [arm]
246
+
os: [android]
247
+
248
+
'@rollup/rollup-android-arm64@4.46.2':
249
+
resolution: {integrity: sha512-nTeCWY83kN64oQ5MGz3CgtPx8NSOhC5lWtsjTs+8JAJNLcP3QbLCtDDgUKQc/Ro/frpMq4SHUaHN6AMltcEoLQ==}
250
+
cpu: [arm64]
251
+
os: [android]
252
+
253
+
'@rollup/rollup-darwin-arm64@4.46.2':
254
+
resolution: {integrity: sha512-HV7bW2Fb/F5KPdM/9bApunQh68YVDU8sO8BvcW9OngQVN3HHHkw99wFupuUJfGR9pYLLAjcAOA6iO+evsbBaPQ==}
255
+
cpu: [arm64]
256
+
os: [darwin]
257
+
258
+
'@rollup/rollup-darwin-x64@4.46.2':
259
+
resolution: {integrity: sha512-SSj8TlYV5nJixSsm/y3QXfhspSiLYP11zpfwp6G/YDXctf3Xkdnk4woJIF5VQe0of2OjzTt8EsxnJDCdHd2xMA==}
260
+
cpu: [x64]
261
+
os: [darwin]
262
+
263
+
'@rollup/rollup-freebsd-arm64@4.46.2':
264
+
resolution: {integrity: sha512-ZyrsG4TIT9xnOlLsSSi9w/X29tCbK1yegE49RYm3tu3wF1L/B6LVMqnEWyDB26d9Ecx9zrmXCiPmIabVuLmNSg==}
265
+
cpu: [arm64]
266
+
os: [freebsd]
267
+
268
+
'@rollup/rollup-freebsd-x64@4.46.2':
269
+
resolution: {integrity: sha512-pCgHFoOECwVCJ5GFq8+gR8SBKnMO+xe5UEqbemxBpCKYQddRQMgomv1104RnLSg7nNvgKy05sLsY51+OVRyiVw==}
270
+
cpu: [x64]
271
+
os: [freebsd]
272
+
273
+
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
274
+
resolution: {integrity: sha512-EtP8aquZ0xQg0ETFcxUbU71MZlHaw9MChwrQzatiE8U/bvi5uv/oChExXC4mWhjiqK7azGJBqU0tt5H123SzVA==}
275
+
cpu: [arm]
276
+
os: [linux]
277
+
278
+
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
279
+
resolution: {integrity: sha512-qO7F7U3u1nfxYRPM8HqFtLd+raev2K137dsV08q/LRKRLEc7RsiDWihUnrINdsWQxPR9jqZ8DIIZ1zJJAm5PjQ==}
280
+
cpu: [arm]
281
+
os: [linux]
282
+
283
+
'@rollup/rollup-linux-arm64-gnu@4.46.2':
284
+
resolution: {integrity: sha512-3dRaqLfcOXYsfvw5xMrxAk9Lb1f395gkoBYzSFcc/scgRFptRXL9DOaDpMiehf9CO8ZDRJW2z45b6fpU5nwjng==}
285
+
cpu: [arm64]
286
+
os: [linux]
287
+
288
+
'@rollup/rollup-linux-arm64-musl@4.46.2':
289
+
resolution: {integrity: sha512-fhHFTutA7SM+IrR6lIfiHskxmpmPTJUXpWIsBXpeEwNgZzZZSg/q4i6FU4J8qOGyJ0TR+wXBwx/L7Ho9z0+uDg==}
290
+
cpu: [arm64]
291
+
os: [linux]
292
+
293
+
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
294
+
resolution: {integrity: sha512-i7wfGFXu8x4+FRqPymzjD+Hyav8l95UIZ773j7J7zRYc3Xsxy2wIn4x+llpunexXe6laaO72iEjeeGyUFmjKeA==}
295
+
cpu: [loong64]
296
+
os: [linux]
297
+
298
+
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
299
+
resolution: {integrity: sha512-B/l0dFcHVUnqcGZWKcWBSV2PF01YUt0Rvlurci5P+neqY/yMKchGU8ullZvIv5e8Y1C6wOn+U03mrDylP5q9Yw==}
300
+
cpu: [ppc64]
301
+
os: [linux]
302
+
303
+
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
304
+
resolution: {integrity: sha512-32k4ENb5ygtkMwPMucAb8MtV8olkPT03oiTxJbgkJa7lJ7dZMr0GCFJlyvy+K8iq7F/iuOr41ZdUHaOiqyR3iQ==}
305
+
cpu: [riscv64]
306
+
os: [linux]
307
+
308
+
'@rollup/rollup-linux-riscv64-musl@4.46.2':
309
+
resolution: {integrity: sha512-t5B2loThlFEauloaQkZg9gxV05BYeITLvLkWOkRXogP4qHXLkWSbSHKM9S6H1schf/0YGP/qNKtiISlxvfmmZw==}
310
+
cpu: [riscv64]
311
+
os: [linux]
312
+
313
+
'@rollup/rollup-linux-s390x-gnu@4.46.2':
314
+
resolution: {integrity: sha512-YKjekwTEKgbB7n17gmODSmJVUIvj8CX7q5442/CK80L8nqOUbMtf8b01QkG3jOqyr1rotrAnW6B/qiHwfcuWQA==}
315
+
cpu: [s390x]
316
+
os: [linux]
317
+
318
+
'@rollup/rollup-linux-x64-gnu@4.46.2':
319
+
resolution: {integrity: sha512-Jj5a9RUoe5ra+MEyERkDKLwTXVu6s3aACP51nkfnK9wJTraCC8IMe3snOfALkrjTYd2G1ViE1hICj0fZ7ALBPA==}
320
+
cpu: [x64]
321
+
os: [linux]
322
+
323
+
'@rollup/rollup-linux-x64-musl@4.46.2':
324
+
resolution: {integrity: sha512-7kX69DIrBeD7yNp4A5b81izs8BqoZkCIaxQaOpumcJ1S/kmqNFjPhDu1LHeVXv0SexfHQv5cqHsxLOjETuqDuA==}
325
+
cpu: [x64]
326
+
os: [linux]
327
+
328
+
'@rollup/rollup-win32-arm64-msvc@4.46.2':
329
+
resolution: {integrity: sha512-wiJWMIpeaak/jsbaq2HMh/rzZxHVW1rU6coyeNNpMwk5isiPjSTx0a4YLSlYDwBH/WBvLz+EtsNqQScZTLJy3g==}
330
+
cpu: [arm64]
331
+
os: [win32]
332
+
333
+
'@rollup/rollup-win32-ia32-msvc@4.46.2':
334
+
resolution: {integrity: sha512-gBgaUDESVzMgWZhcyjfs9QFK16D8K6QZpwAaVNJxYDLHWayOta4ZMjGm/vsAEy3hvlS2GosVFlBlP9/Wb85DqQ==}
335
+
cpu: [ia32]
336
+
os: [win32]
337
+
338
+
'@rollup/rollup-win32-x64-msvc@4.46.2':
339
+
resolution: {integrity: sha512-CvUo2ixeIQGtF6WvuB87XWqPQkoFAFqW+HUo/WzHwuHDvIwZCtjdWXoYCcr06iKGydiqTclC4jU/TNObC/xKZg==}
340
+
cpu: [x64]
341
+
os: [win32]
342
+
343
+
'@rollup/wasm-node@4.46.2':
344
+
resolution: {integrity: sha512-lZRiZl+B1R3VhqZgORtuUpc2YYbgIv+X6g3LgQHS5sjlf1ENiK1HZ6N5e8pEZ04nAWiwYM0JX7rP0eyxflkJRg==}
345
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
346
+
hasBin: true
347
+
348
+
'@types/estree@1.0.8':
349
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
350
+
351
+
'@types/json-schema@7.0.15':
352
+
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
353
+
354
+
acorn-jsx@5.3.2:
355
+
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
356
+
peerDependencies:
357
+
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
358
+
359
+
acorn@8.15.0:
360
+
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
361
+
engines: {node: '>=0.4.0'}
362
+
hasBin: true
363
+
364
+
ajv@6.12.6:
365
+
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
366
+
367
+
ansi-styles@4.3.0:
368
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
369
+
engines: {node: '>=8'}
370
+
371
+
argparse@2.0.1:
372
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
373
+
374
+
balanced-match@1.0.2:
375
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
376
+
377
+
brace-expansion@1.1.12:
378
+
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
379
+
380
+
braces@3.0.3:
381
+
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
382
+
engines: {node: '>=8'}
383
+
384
+
callsites@3.1.0:
385
+
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
386
+
engines: {node: '>=6'}
387
+
388
+
chalk@4.1.2:
389
+
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
390
+
engines: {node: '>=10'}
391
+
392
+
color-convert@2.0.1:
393
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
394
+
engines: {node: '>=7.0.0'}
395
+
396
+
color-name@1.1.4:
397
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
398
+
399
+
concat-map@0.0.1:
400
+
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
401
+
402
+
cross-spawn@7.0.6:
403
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
404
+
engines: {node: '>= 8'}
405
+
406
+
debug@4.4.1:
407
+
resolution: {integrity: sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==}
408
+
engines: {node: '>=6.0'}
409
+
peerDependencies:
410
+
supports-color: '*'
411
+
peerDependenciesMeta:
412
+
supports-color:
413
+
optional: true
414
+
415
+
deep-is@0.1.4:
416
+
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
417
+
418
+
diff@8.0.2:
419
+
resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
420
+
engines: {node: '>=0.3.1'}
421
+
422
+
dom-serializer@2.0.0:
423
+
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
424
+
425
+
domelementtype@2.3.0:
426
+
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
427
+
428
+
domhandler@5.0.3:
429
+
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
430
+
engines: {node: '>= 4'}
431
+
432
+
domutils@3.2.2:
433
+
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
434
+
435
+
entities@4.5.0:
436
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
437
+
engines: {node: '>=0.12'}
438
+
439
+
esbuild@0.21.5:
440
+
resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
441
+
engines: {node: '>=12'}
442
+
hasBin: true
443
+
444
+
escape-string-regexp@4.0.0:
445
+
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
446
+
engines: {node: '>=10'}
447
+
448
+
eslint-scope@8.4.0:
449
+
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
450
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
451
+
452
+
eslint-visitor-keys@3.4.3:
453
+
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
454
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
455
+
456
+
eslint-visitor-keys@4.2.1:
457
+
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
458
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
459
+
460
+
eslint@9.32.0:
461
+
resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==}
462
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
463
+
hasBin: true
464
+
peerDependencies:
465
+
jiti: '*'
466
+
peerDependenciesMeta:
467
+
jiti:
468
+
optional: true
469
+
470
+
espree@10.4.0:
471
+
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
472
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
473
+
474
+
esquery@1.6.0:
475
+
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
476
+
engines: {node: '>=0.10'}
477
+
478
+
esrecurse@4.3.0:
479
+
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
480
+
engines: {node: '>=4.0'}
481
+
482
+
estraverse@5.3.0:
483
+
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
484
+
engines: {node: '>=4.0'}
485
+
486
+
esutils@2.0.3:
487
+
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
488
+
engines: {node: '>=0.10.0'}
489
+
490
+
fast-deep-equal@3.1.3:
491
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
492
+
493
+
fast-json-stable-stringify@2.1.0:
494
+
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
495
+
496
+
fast-levenshtein@2.0.6:
497
+
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
498
+
499
+
file-entry-cache@8.0.0:
500
+
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
501
+
engines: {node: '>=16.0.0'}
502
+
503
+
fill-range@7.1.1:
504
+
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
505
+
engines: {node: '>=8'}
506
+
507
+
find-up@5.0.0:
508
+
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
509
+
engines: {node: '>=10'}
510
+
511
+
flat-cache@4.0.1:
512
+
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
513
+
engines: {node: '>=16'}
514
+
515
+
flatted@3.3.3:
516
+
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
517
+
518
+
fsevents@2.3.3:
519
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
520
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
521
+
os: [darwin]
522
+
523
+
glob-parent@6.0.2:
524
+
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
525
+
engines: {node: '>=10.13.0'}
526
+
527
+
globals@14.0.0:
528
+
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
529
+
engines: {node: '>=18'}
530
+
531
+
globals@16.3.0:
532
+
resolution: {integrity: sha512-bqWEnJ1Nt3neqx2q5SFfGS8r/ahumIakg3HcwtNlrVlwXIeNumWn/c7Pn/wKzGhf6SaW6H6uWXLqC30STCMchQ==}
533
+
engines: {node: '>=18'}
534
+
535
+
has-flag@4.0.0:
536
+
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
537
+
engines: {node: '>=8'}
538
+
539
+
htmlparser2@9.1.0:
540
+
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
541
+
542
+
ignore@5.3.2:
543
+
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
544
+
engines: {node: '>= 4'}
545
+
546
+
import-fresh@3.3.1:
547
+
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
548
+
engines: {node: '>=6'}
549
+
550
+
imurmurhash@0.1.4:
551
+
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
552
+
engines: {node: '>=0.8.19'}
553
+
554
+
is-extglob@2.1.1:
555
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
556
+
engines: {node: '>=0.10.0'}
557
+
558
+
is-glob@4.0.3:
559
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
560
+
engines: {node: '>=0.10.0'}
561
+
562
+
is-number@7.0.0:
563
+
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
564
+
engines: {node: '>=0.12.0'}
565
+
566
+
isexe@2.0.0:
567
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
568
+
569
+
js-yaml@4.1.0:
570
+
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
571
+
hasBin: true
572
+
573
+
json-buffer@3.0.1:
574
+
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
575
+
576
+
json-schema-traverse@0.4.1:
577
+
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
578
+
579
+
json-stable-stringify-without-jsonify@1.0.1:
580
+
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
581
+
582
+
keyv@4.5.4:
583
+
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
584
+
585
+
levn@0.4.1:
586
+
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
587
+
engines: {node: '>= 0.8.0'}
588
+
589
+
locate-path@6.0.0:
590
+
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
591
+
engines: {node: '>=10'}
592
+
593
+
lodash.merge@4.6.2:
594
+
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
595
+
596
+
micromatch@4.0.8:
597
+
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
598
+
engines: {node: '>=8.6'}
599
+
600
+
minimatch@3.1.2:
601
+
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
602
+
603
+
ms@2.1.3:
604
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
605
+
606
+
nanoid@3.3.11:
607
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
608
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
609
+
hasBin: true
610
+
611
+
natural-compare@1.4.0:
612
+
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
613
+
614
+
optionator@0.9.4:
615
+
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
616
+
engines: {node: '>= 0.8.0'}
617
+
618
+
p-limit@3.1.0:
619
+
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
620
+
engines: {node: '>=10'}
621
+
622
+
p-locate@5.0.0:
623
+
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
624
+
engines: {node: '>=10'}
625
+
626
+
parent-module@1.0.1:
627
+
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
628
+
engines: {node: '>=6'}
629
+
630
+
path-exists@4.0.0:
631
+
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
632
+
engines: {node: '>=8'}
633
+
634
+
path-key@3.1.1:
635
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
636
+
engines: {node: '>=8'}
637
+
638
+
picocolors@1.1.1:
639
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
640
+
641
+
picomatch@2.3.1:
642
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
643
+
engines: {node: '>=8.6'}
644
+
645
+
postcss@8.5.6:
646
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
647
+
engines: {node: ^10 || ^12 || >=14}
648
+
649
+
prelude-ls@1.2.1:
650
+
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
651
+
engines: {node: '>= 0.8.0'}
652
+
653
+
punycode@2.3.1:
654
+
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
655
+
engines: {node: '>=6'}
656
+
657
+
resolve-from@4.0.0:
658
+
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
659
+
engines: {node: '>=4'}
660
+
661
+
rollup@4.46.2:
662
+
resolution: {integrity: sha512-WMmLFI+Boh6xbop+OAGo9cQ3OgX9MIg7xOQjn+pTCwOkk+FNDAeAemXkJ3HzDJrVXleLOFVa1ipuc1AmEx1Dwg==}
663
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
664
+
hasBin: true
665
+
666
+
shebang-command@2.0.0:
667
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
668
+
engines: {node: '>=8'}
669
+
670
+
shebang-regex@3.0.0:
671
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
672
+
engines: {node: '>=8'}
673
+
674
+
source-map-js@1.2.1:
675
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
676
+
engines: {node: '>=0.10.0'}
677
+
678
+
strip-json-comments@3.1.1:
679
+
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
680
+
engines: {node: '>=8'}
681
+
682
+
supports-color@7.2.0:
683
+
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
684
+
engines: {node: '>=8'}
685
+
686
+
to-regex-range@5.0.1:
687
+
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
688
+
engines: {node: '>=8.0'}
689
+
690
+
type-check@0.4.0:
691
+
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
692
+
engines: {node: '>= 0.8.0'}
693
+
694
+
uri-js@4.4.1:
695
+
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
696
+
697
+
vite-plugin-dom@1.0.4:
698
+
resolution: {integrity: sha512-GkmDAsVDo0Aabb7RmGTGWZNDowV5K+IkrhmJfrgMpgjHdE7F8H1OsTk48DQmnQ/2llM5UvP4z5h0icdsnL/C/g==}
699
+
peerDependencies:
700
+
vite: '>=4.0.0'
701
+
702
+
vite-plugin-singlefile@2.3.0:
703
+
resolution: {integrity: sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==}
704
+
engines: {node: '>18.0.0'}
705
+
peerDependencies:
706
+
rollup: ^4.44.1
707
+
vite: ^5.4.11 || ^6.0.0 || ^7.0.0
708
+
709
+
vite@5.4.19:
710
+
resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
711
+
engines: {node: ^18.0.0 || >=20.0.0}
712
+
hasBin: true
713
+
peerDependencies:
714
+
'@types/node': ^18.0.0 || >=20.0.0
715
+
less: '*'
716
+
lightningcss: ^1.21.0
717
+
sass: '*'
718
+
sass-embedded: '*'
719
+
stylus: '*'
720
+
sugarss: '*'
721
+
terser: ^5.4.0
722
+
peerDependenciesMeta:
723
+
'@types/node':
724
+
optional: true
725
+
less:
726
+
optional: true
727
+
lightningcss:
728
+
optional: true
729
+
sass:
730
+
optional: true
731
+
sass-embedded:
732
+
optional: true
733
+
stylus:
734
+
optional: true
735
+
sugarss:
736
+
optional: true
737
+
terser:
738
+
optional: true
739
+
740
+
which@2.0.2:
741
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
742
+
engines: {node: '>= 8'}
743
+
hasBin: true
744
+
745
+
word-wrap@1.2.5:
746
+
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
747
+
engines: {node: '>=0.10.0'}
748
+
749
+
yocto-queue@0.1.0:
750
+
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
751
+
engines: {node: '>=10'}
752
+
753
+
snapshots:
754
+
755
+
'@esbuild/aix-ppc64@0.21.5':
756
+
optional: true
757
+
758
+
'@esbuild/android-arm64@0.21.5':
759
+
optional: true
760
+
761
+
'@esbuild/android-arm@0.21.5':
762
+
optional: true
763
+
764
+
'@esbuild/android-x64@0.21.5':
765
+
optional: true
766
+
767
+
'@esbuild/darwin-arm64@0.21.5':
768
+
optional: true
769
+
770
+
'@esbuild/darwin-x64@0.21.5':
771
+
optional: true
772
+
773
+
'@esbuild/freebsd-arm64@0.21.5':
774
+
optional: true
775
+
776
+
'@esbuild/freebsd-x64@0.21.5':
777
+
optional: true
778
+
779
+
'@esbuild/linux-arm64@0.21.5':
780
+
optional: true
781
+
782
+
'@esbuild/linux-arm@0.21.5':
783
+
optional: true
784
+
785
+
'@esbuild/linux-ia32@0.21.5':
786
+
optional: true
787
+
788
+
'@esbuild/linux-loong64@0.21.5':
789
+
optional: true
790
+
791
+
'@esbuild/linux-mips64el@0.21.5':
792
+
optional: true
793
+
794
+
'@esbuild/linux-ppc64@0.21.5':
795
+
optional: true
796
+
797
+
'@esbuild/linux-riscv64@0.21.5':
798
+
optional: true
799
+
800
+
'@esbuild/linux-s390x@0.21.5':
801
+
optional: true
802
+
803
+
'@esbuild/linux-x64@0.21.5':
804
+
optional: true
805
+
806
+
'@esbuild/netbsd-x64@0.21.5':
807
+
optional: true
808
+
809
+
'@esbuild/openbsd-x64@0.21.5':
810
+
optional: true
811
+
812
+
'@esbuild/sunos-x64@0.21.5':
813
+
optional: true
814
+
815
+
'@esbuild/win32-arm64@0.21.5':
816
+
optional: true
817
+
818
+
'@esbuild/win32-ia32@0.21.5':
819
+
optional: true
820
+
821
+
'@esbuild/win32-x64@0.21.5':
822
+
optional: true
823
+
824
+
'@eslint-community/eslint-utils@4.7.0(eslint@9.32.0)':
825
+
dependencies:
826
+
eslint: 9.32.0
827
+
eslint-visitor-keys: 3.4.3
828
+
829
+
'@eslint-community/regexpp@4.12.1': {}
830
+
831
+
'@eslint/config-array@0.21.0':
832
+
dependencies:
833
+
'@eslint/object-schema': 2.1.6
834
+
debug: 4.4.1
835
+
minimatch: 3.1.2
836
+
transitivePeerDependencies:
837
+
- supports-color
838
+
839
+
'@eslint/config-helpers@0.3.0': {}
840
+
841
+
'@eslint/core@0.15.1':
842
+
dependencies:
843
+
'@types/json-schema': 7.0.15
844
+
845
+
'@eslint/eslintrc@3.3.1':
846
+
dependencies:
847
+
ajv: 6.12.6
848
+
debug: 4.4.1
849
+
espree: 10.4.0
850
+
globals: 14.0.0
851
+
ignore: 5.3.2
852
+
import-fresh: 3.3.1
853
+
js-yaml: 4.1.0
854
+
minimatch: 3.1.2
855
+
strip-json-comments: 3.1.1
856
+
transitivePeerDependencies:
857
+
- supports-color
858
+
859
+
'@eslint/js@9.32.0': {}
860
+
861
+
'@eslint/object-schema@2.1.6': {}
862
+
863
+
'@eslint/plugin-kit@0.3.4':
864
+
dependencies:
865
+
'@eslint/core': 0.15.1
866
+
levn: 0.4.1
867
+
868
+
'@humanfs/core@0.19.1': {}
869
+
870
+
'@humanfs/node@0.16.6':
871
+
dependencies:
872
+
'@humanfs/core': 0.19.1
873
+
'@humanwhocodes/retry': 0.3.1
874
+
875
+
'@humanwhocodes/module-importer@1.0.1': {}
876
+
877
+
'@humanwhocodes/retry@0.3.1': {}
878
+
879
+
'@humanwhocodes/retry@0.4.3': {}
880
+
881
+
'@rollup/rollup-android-arm-eabi@4.46.2':
882
+
optional: true
883
+
884
+
'@rollup/rollup-android-arm64@4.46.2':
885
+
optional: true
886
+
887
+
'@rollup/rollup-darwin-arm64@4.46.2':
888
+
optional: true
889
+
890
+
'@rollup/rollup-darwin-x64@4.46.2':
891
+
optional: true
892
+
893
+
'@rollup/rollup-freebsd-arm64@4.46.2':
894
+
optional: true
895
+
896
+
'@rollup/rollup-freebsd-x64@4.46.2':
897
+
optional: true
898
+
899
+
'@rollup/rollup-linux-arm-gnueabihf@4.46.2':
900
+
optional: true
901
+
902
+
'@rollup/rollup-linux-arm-musleabihf@4.46.2':
903
+
optional: true
904
+
905
+
'@rollup/rollup-linux-arm64-gnu@4.46.2':
906
+
optional: true
907
+
908
+
'@rollup/rollup-linux-arm64-musl@4.46.2':
909
+
optional: true
910
+
911
+
'@rollup/rollup-linux-loongarch64-gnu@4.46.2':
912
+
optional: true
913
+
914
+
'@rollup/rollup-linux-ppc64-gnu@4.46.2':
915
+
optional: true
916
+
917
+
'@rollup/rollup-linux-riscv64-gnu@4.46.2':
918
+
optional: true
919
+
920
+
'@rollup/rollup-linux-riscv64-musl@4.46.2':
921
+
optional: true
922
+
923
+
'@rollup/rollup-linux-s390x-gnu@4.46.2':
924
+
optional: true
925
+
926
+
'@rollup/rollup-linux-x64-gnu@4.46.2':
927
+
optional: true
928
+
929
+
'@rollup/rollup-linux-x64-musl@4.46.2':
930
+
optional: true
931
+
932
+
'@rollup/rollup-win32-arm64-msvc@4.46.2':
933
+
optional: true
934
+
935
+
'@rollup/rollup-win32-ia32-msvc@4.46.2':
936
+
optional: true
937
+
938
+
'@rollup/rollup-win32-x64-msvc@4.46.2':
939
+
optional: true
940
+
941
+
'@rollup/wasm-node@4.46.2':
942
+
dependencies:
943
+
'@types/estree': 1.0.8
944
+
optionalDependencies:
945
+
fsevents: 2.3.3
946
+
947
+
'@types/estree@1.0.8': {}
948
+
949
+
'@types/json-schema@7.0.15': {}
950
+
951
+
acorn-jsx@5.3.2(acorn@8.15.0):
952
+
dependencies:
953
+
acorn: 8.15.0
954
+
955
+
acorn@8.15.0: {}
956
+
957
+
ajv@6.12.6:
958
+
dependencies:
959
+
fast-deep-equal: 3.1.3
960
+
fast-json-stable-stringify: 2.1.0
961
+
json-schema-traverse: 0.4.1
962
+
uri-js: 4.4.1
963
+
964
+
ansi-styles@4.3.0:
965
+
dependencies:
966
+
color-convert: 2.0.1
967
+
968
+
argparse@2.0.1: {}
969
+
970
+
balanced-match@1.0.2: {}
971
+
972
+
brace-expansion@1.1.12:
973
+
dependencies:
974
+
balanced-match: 1.0.2
975
+
concat-map: 0.0.1
976
+
977
+
braces@3.0.3:
978
+
dependencies:
979
+
fill-range: 7.1.1
980
+
981
+
callsites@3.1.0: {}
982
+
983
+
chalk@4.1.2:
984
+
dependencies:
985
+
ansi-styles: 4.3.0
986
+
supports-color: 7.2.0
987
+
988
+
color-convert@2.0.1:
989
+
dependencies:
990
+
color-name: 1.1.4
991
+
992
+
color-name@1.1.4: {}
993
+
994
+
concat-map@0.0.1: {}
995
+
996
+
cross-spawn@7.0.6:
997
+
dependencies:
998
+
path-key: 3.1.1
999
+
shebang-command: 2.0.0
1000
+
which: 2.0.2
1001
+
1002
+
debug@4.4.1:
1003
+
dependencies:
1004
+
ms: 2.1.3
1005
+
1006
+
deep-is@0.1.4: {}
1007
+
1008
+
diff@8.0.2: {}
1009
+
1010
+
dom-serializer@2.0.0:
1011
+
dependencies:
1012
+
domelementtype: 2.3.0
1013
+
domhandler: 5.0.3
1014
+
entities: 4.5.0
1015
+
1016
+
domelementtype@2.3.0: {}
1017
+
1018
+
domhandler@5.0.3:
1019
+
dependencies:
1020
+
domelementtype: 2.3.0
1021
+
1022
+
domutils@3.2.2:
1023
+
dependencies:
1024
+
dom-serializer: 2.0.0
1025
+
domelementtype: 2.3.0
1026
+
domhandler: 5.0.3
1027
+
1028
+
entities@4.5.0: {}
1029
+
1030
+
esbuild@0.21.5:
1031
+
optionalDependencies:
1032
+
'@esbuild/aix-ppc64': 0.21.5
1033
+
'@esbuild/android-arm': 0.21.5
1034
+
'@esbuild/android-arm64': 0.21.5
1035
+
'@esbuild/android-x64': 0.21.5
1036
+
'@esbuild/darwin-arm64': 0.21.5
1037
+
'@esbuild/darwin-x64': 0.21.5
1038
+
'@esbuild/freebsd-arm64': 0.21.5
1039
+
'@esbuild/freebsd-x64': 0.21.5
1040
+
'@esbuild/linux-arm': 0.21.5
1041
+
'@esbuild/linux-arm64': 0.21.5
1042
+
'@esbuild/linux-ia32': 0.21.5
1043
+
'@esbuild/linux-loong64': 0.21.5
1044
+
'@esbuild/linux-mips64el': 0.21.5
1045
+
'@esbuild/linux-ppc64': 0.21.5
1046
+
'@esbuild/linux-riscv64': 0.21.5
1047
+
'@esbuild/linux-s390x': 0.21.5
1048
+
'@esbuild/linux-x64': 0.21.5
1049
+
'@esbuild/netbsd-x64': 0.21.5
1050
+
'@esbuild/openbsd-x64': 0.21.5
1051
+
'@esbuild/sunos-x64': 0.21.5
1052
+
'@esbuild/win32-arm64': 0.21.5
1053
+
'@esbuild/win32-ia32': 0.21.5
1054
+
'@esbuild/win32-x64': 0.21.5
1055
+
1056
+
escape-string-regexp@4.0.0: {}
1057
+
1058
+
eslint-scope@8.4.0:
1059
+
dependencies:
1060
+
esrecurse: 4.3.0
1061
+
estraverse: 5.3.0
1062
+
1063
+
eslint-visitor-keys@3.4.3: {}
1064
+
1065
+
eslint-visitor-keys@4.2.1: {}
1066
+
1067
+
eslint@9.32.0:
1068
+
dependencies:
1069
+
'@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0)
1070
+
'@eslint-community/regexpp': 4.12.1
1071
+
'@eslint/config-array': 0.21.0
1072
+
'@eslint/config-helpers': 0.3.0
1073
+
'@eslint/core': 0.15.1
1074
+
'@eslint/eslintrc': 3.3.1
1075
+
'@eslint/js': 9.32.0
1076
+
'@eslint/plugin-kit': 0.3.4
1077
+
'@humanfs/node': 0.16.6
1078
+
'@humanwhocodes/module-importer': 1.0.1
1079
+
'@humanwhocodes/retry': 0.4.3
1080
+
'@types/estree': 1.0.8
1081
+
'@types/json-schema': 7.0.15
1082
+
ajv: 6.12.6
1083
+
chalk: 4.1.2
1084
+
cross-spawn: 7.0.6
1085
+
debug: 4.4.1
1086
+
escape-string-regexp: 4.0.0
1087
+
eslint-scope: 8.4.0
1088
+
eslint-visitor-keys: 4.2.1
1089
+
espree: 10.4.0
1090
+
esquery: 1.6.0
1091
+
esutils: 2.0.3
1092
+
fast-deep-equal: 3.1.3
1093
+
file-entry-cache: 8.0.0
1094
+
find-up: 5.0.0
1095
+
glob-parent: 6.0.2
1096
+
ignore: 5.3.2
1097
+
imurmurhash: 0.1.4
1098
+
is-glob: 4.0.3
1099
+
json-stable-stringify-without-jsonify: 1.0.1
1100
+
lodash.merge: 4.6.2
1101
+
minimatch: 3.1.2
1102
+
natural-compare: 1.4.0
1103
+
optionator: 0.9.4
1104
+
transitivePeerDependencies:
1105
+
- supports-color
1106
+
1107
+
espree@10.4.0:
1108
+
dependencies:
1109
+
acorn: 8.15.0
1110
+
acorn-jsx: 5.3.2(acorn@8.15.0)
1111
+
eslint-visitor-keys: 4.2.1
1112
+
1113
+
esquery@1.6.0:
1114
+
dependencies:
1115
+
estraverse: 5.3.0
1116
+
1117
+
esrecurse@4.3.0:
1118
+
dependencies:
1119
+
estraverse: 5.3.0
1120
+
1121
+
estraverse@5.3.0: {}
1122
+
1123
+
esutils@2.0.3: {}
1124
+
1125
+
fast-deep-equal@3.1.3: {}
1126
+
1127
+
fast-json-stable-stringify@2.1.0: {}
1128
+
1129
+
fast-levenshtein@2.0.6: {}
1130
+
1131
+
file-entry-cache@8.0.0:
1132
+
dependencies:
1133
+
flat-cache: 4.0.1
1134
+
1135
+
fill-range@7.1.1:
1136
+
dependencies:
1137
+
to-regex-range: 5.0.1
1138
+
1139
+
find-up@5.0.0:
1140
+
dependencies:
1141
+
locate-path: 6.0.0
1142
+
path-exists: 4.0.0
1143
+
1144
+
flat-cache@4.0.1:
1145
+
dependencies:
1146
+
flatted: 3.3.3
1147
+
keyv: 4.5.4
1148
+
1149
+
flatted@3.3.3: {}
1150
+
1151
+
fsevents@2.3.3:
1152
+
optional: true
1153
+
1154
+
glob-parent@6.0.2:
1155
+
dependencies:
1156
+
is-glob: 4.0.3
1157
+
1158
+
globals@14.0.0: {}
1159
+
1160
+
globals@16.3.0: {}
1161
+
1162
+
has-flag@4.0.0: {}
1163
+
1164
+
htmlparser2@9.1.0:
1165
+
dependencies:
1166
+
domelementtype: 2.3.0
1167
+
domhandler: 5.0.3
1168
+
domutils: 3.2.2
1169
+
entities: 4.5.0
1170
+
1171
+
ignore@5.3.2: {}
1172
+
1173
+
import-fresh@3.3.1:
1174
+
dependencies:
1175
+
parent-module: 1.0.1
1176
+
resolve-from: 4.0.0
1177
+
1178
+
imurmurhash@0.1.4: {}
1179
+
1180
+
is-extglob@2.1.1: {}
1181
+
1182
+
is-glob@4.0.3:
1183
+
dependencies:
1184
+
is-extglob: 2.1.1
1185
+
1186
+
is-number@7.0.0: {}
1187
+
1188
+
isexe@2.0.0: {}
1189
+
1190
+
js-yaml@4.1.0:
1191
+
dependencies:
1192
+
argparse: 2.0.1
1193
+
1194
+
json-buffer@3.0.1: {}
1195
+
1196
+
json-schema-traverse@0.4.1: {}
1197
+
1198
+
json-stable-stringify-without-jsonify@1.0.1: {}
1199
+
1200
+
keyv@4.5.4:
1201
+
dependencies:
1202
+
json-buffer: 3.0.1
1203
+
1204
+
levn@0.4.1:
1205
+
dependencies:
1206
+
prelude-ls: 1.2.1
1207
+
type-check: 0.4.0
1208
+
1209
+
locate-path@6.0.0:
1210
+
dependencies:
1211
+
p-locate: 5.0.0
1212
+
1213
+
lodash.merge@4.6.2: {}
1214
+
1215
+
micromatch@4.0.8:
1216
+
dependencies:
1217
+
braces: 3.0.3
1218
+
picomatch: 2.3.1
1219
+
1220
+
minimatch@3.1.2:
1221
+
dependencies:
1222
+
brace-expansion: 1.1.12
1223
+
1224
+
ms@2.1.3: {}
1225
+
1226
+
nanoid@3.3.11: {}
1227
+
1228
+
natural-compare@1.4.0: {}
1229
+
1230
+
optionator@0.9.4:
1231
+
dependencies:
1232
+
deep-is: 0.1.4
1233
+
fast-levenshtein: 2.0.6
1234
+
levn: 0.4.1
1235
+
prelude-ls: 1.2.1
1236
+
type-check: 0.4.0
1237
+
word-wrap: 1.2.5
1238
+
1239
+
p-limit@3.1.0:
1240
+
dependencies:
1241
+
yocto-queue: 0.1.0
1242
+
1243
+
p-locate@5.0.0:
1244
+
dependencies:
1245
+
p-limit: 3.1.0
1246
+
1247
+
parent-module@1.0.1:
1248
+
dependencies:
1249
+
callsites: 3.1.0
1250
+
1251
+
path-exists@4.0.0: {}
1252
+
1253
+
path-key@3.1.1: {}
1254
+
1255
+
picocolors@1.1.1: {}
1256
+
1257
+
picomatch@2.3.1: {}
1258
+
1259
+
postcss@8.5.6:
1260
+
dependencies:
1261
+
nanoid: 3.3.11
1262
+
picocolors: 1.1.1
1263
+
source-map-js: 1.2.1
1264
+
1265
+
prelude-ls@1.2.1: {}
1266
+
1267
+
punycode@2.3.1: {}
1268
+
1269
+
resolve-from@4.0.0: {}
1270
+
1271
+
rollup@4.46.2:
1272
+
dependencies:
1273
+
'@types/estree': 1.0.8
1274
+
optionalDependencies:
1275
+
'@rollup/rollup-android-arm-eabi': 4.46.2
1276
+
'@rollup/rollup-android-arm64': 4.46.2
1277
+
'@rollup/rollup-darwin-arm64': 4.46.2
1278
+
'@rollup/rollup-darwin-x64': 4.46.2
1279
+
'@rollup/rollup-freebsd-arm64': 4.46.2
1280
+
'@rollup/rollup-freebsd-x64': 4.46.2
1281
+
'@rollup/rollup-linux-arm-gnueabihf': 4.46.2
1282
+
'@rollup/rollup-linux-arm-musleabihf': 4.46.2
1283
+
'@rollup/rollup-linux-arm64-gnu': 4.46.2
1284
+
'@rollup/rollup-linux-arm64-musl': 4.46.2
1285
+
'@rollup/rollup-linux-loongarch64-gnu': 4.46.2
1286
+
'@rollup/rollup-linux-ppc64-gnu': 4.46.2
1287
+
'@rollup/rollup-linux-riscv64-gnu': 4.46.2
1288
+
'@rollup/rollup-linux-riscv64-musl': 4.46.2
1289
+
'@rollup/rollup-linux-s390x-gnu': 4.46.2
1290
+
'@rollup/rollup-linux-x64-gnu': 4.46.2
1291
+
'@rollup/rollup-linux-x64-musl': 4.46.2
1292
+
'@rollup/rollup-win32-arm64-msvc': 4.46.2
1293
+
'@rollup/rollup-win32-ia32-msvc': 4.46.2
1294
+
'@rollup/rollup-win32-x64-msvc': 4.46.2
1295
+
fsevents: 2.3.3
1296
+
1297
+
shebang-command@2.0.0:
1298
+
dependencies:
1299
+
shebang-regex: 3.0.0
1300
+
1301
+
shebang-regex@3.0.0: {}
1302
+
1303
+
source-map-js@1.2.1: {}
1304
+
1305
+
strip-json-comments@3.1.1: {}
1306
+
1307
+
supports-color@7.2.0:
1308
+
dependencies:
1309
+
has-flag: 4.0.0
1310
+
1311
+
to-regex-range@5.0.1:
1312
+
dependencies:
1313
+
is-number: 7.0.0
1314
+
1315
+
type-check@0.4.0:
1316
+
dependencies:
1317
+
prelude-ls: 1.2.1
1318
+
1319
+
uri-js@4.4.1:
1320
+
dependencies:
1321
+
punycode: 2.3.1
1322
+
1323
+
vite-plugin-dom@1.0.4(vite@5.4.19):
1324
+
dependencies:
1325
+
htmlparser2: 9.1.0
1326
+
vite: 5.4.19
1327
+
1328
+
vite-plugin-singlefile@2.3.0(rollup@4.46.2)(vite@5.4.19):
1329
+
dependencies:
1330
+
micromatch: 4.0.8
1331
+
rollup: 4.46.2
1332
+
vite: 5.4.19
1333
+
1334
+
vite@5.4.19:
1335
+
dependencies:
1336
+
esbuild: 0.21.5
1337
+
postcss: 8.5.6
1338
+
rollup: '@rollup/wasm-node@4.46.2'
1339
+
optionalDependencies:
1340
+
fsevents: 2.3.3
1341
+
1342
+
which@2.0.2:
1343
+
dependencies:
1344
+
isexe: 2.0.0
1345
+
1346
+
word-wrap@1.2.5: {}
1347
+
1348
+
yocto-queue@0.1.0: {}
+1
-1
release.sh
+1
-1
release.sh
+53
-6
test.js
+53
-6
test.js
···
1
#!/usr/bin/env node
2
3
import { ASN1, Stream } from './asn1.js';
4
import { Hex } from './hex.js';
5
import { Base64 } from './base64.js';
6
import { Int10 } from './int10.js';
7
8
const all = (process.argv[2] == 'all');
9
···
15
error: 0,
16
};
17
18
/**
19
* A class for managing and executing tests.
20
*/
21
class Tests {
22
/**
23
* An array to store test data.
24
* @type {Array<unknown>}
25
*/
···
33
34
/**
35
* Constructs a new Tests instance.
36
* @param {Function} checkRow - A function to check each row of data.
37
* @param {Array<unknown>} data - The test data to be processed.
38
*/
39
-
constructor(checkRow, data) {
40
this.checkRow = checkRow;
41
this.data = data;
42
}
···
45
* Executes the tests and checks their results for all rows.
46
*/
47
checkAll() {
48
for (const t of this.data)
49
this.checkRow(t);
50
}
···
62
} else {
63
++stats.error;
64
console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment);
65
-
console.log(' \x1B[1m\x1B[34mEXP\x1B[39m\x1B[22m ' + expected.toString().replace(/\n/g, '\n '));
66
-
console.log(' \x1B[1m\x1B[33mGOT\x1B[39m\x1B[22m ' + result.replace(/\n/g, '\n '));
67
}
68
}
69
}
70
71
-
tests.push(new Tests(function (t) {
72
const input = t[0],
73
expected = t[1],
74
comment = t[2];
···
170
['171E83C1B251803F86DD01E9CFA886BE89A7316D8372649AC2231EC669F81A84', /^Exception:\nError: Unrecognized time: /, 'Invalid UTCTime'], // GitHub issue #79
171
]));
172
173
-
tests.push(new Tests(function (t) {
174
let bin = Base64.decode(t);
175
let url = new Stream(bin, 0).b64Dump(0, bin.length);
176
// check base64url encoding
···
191
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQR\nSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456w==',
192
]));
193
194
-
tests.push(new Tests(function (t) {
195
this.row = (0|this.row) + 1;
196
this.num = this.num || new Int10();
197
this.num.mulAdd(t[0], t[1]);
···
1
#!/usr/bin/env node
2
3
+
import * as fs from 'fs'; // 'node:fs' doesn't work on NodeJS 14.5.0
4
import { ASN1, Stream } from './asn1.js';
5
+
import { Defs } from './defs.js';
6
import { Hex } from './hex.js';
7
import { Base64 } from './base64.js';
8
import { Int10 } from './int10.js';
9
+
import { createPatch } from 'diff';
10
11
const all = (process.argv[2] == 'all');
12
···
18
error: 0,
19
};
20
21
+
function diff(str1, str2) {
22
+
let s = createPatch('test', str1, str2, null, null, { context: 2 });
23
+
s = s.slice(s.indexOf('@@'), -1);
24
+
s = s.replace(/^@@.*/mg, '\x1B[34m$&\x1B[39m');
25
+
s = s.replace(/^-.*/mg, '\x1B[31m$&\x1B[39m');
26
+
s = s.replace(/^\+.*/mg, '\x1B[32m$&\x1B[39m');
27
+
return s;
28
+
}
29
+
30
/**
31
* A class for managing and executing tests.
32
*/
33
class Tests {
34
/**
35
+
* The title of the test suite.
36
+
* @type {string}
37
+
*/
38
+
title;
39
+
40
+
/**
41
* An array to store test data.
42
* @type {Array<unknown>}
43
*/
···
51
52
/**
53
* Constructs a new Tests instance.
54
+
* @param {string} title - The title of the test suite.
55
* @param {Function} checkRow - A function to check each row of data.
56
* @param {Array<unknown>} data - The test data to be processed.
57
*/
58
+
constructor(title, checkRow, data) {
59
+
this.title = title;
60
this.checkRow = checkRow;
61
this.data = data;
62
}
···
65
* Executes the tests and checks their results for all rows.
66
*/
67
checkAll() {
68
+
if (all) console.log('\x1B[1m\x1B[34m' + this.title + '\x1B[39m\x1B[22m');
69
for (const t of this.data)
70
this.checkRow(t);
71
}
···
83
} else {
84
++stats.error;
85
console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment);
86
+
if (result.length > 100) {
87
+
console.log(' \x1B[1m\x1B[34mDIF\x1B[39m\x1B[22m ' + diff(result, expected.toString()).replace(/\n/g, '\n '));
88
+
} else {
89
+
console.log(' \x1B[1m\x1B[34mEXP\x1B[39m\x1B[22m ' + expected.toString().replace(/\n/g, '\n '));
90
+
console.log(' \x1B[1m\x1B[33mGOT\x1B[39m\x1B[22m ' + result.replace(/\n/g, '\n '));
91
+
}
92
}
93
}
94
}
95
96
+
tests.push(new Tests('ASN.1', function (t) {
97
const input = t[0],
98
expected = t[1],
99
comment = t[2];
···
195
['171E83C1B251803F86DD01E9CFA886BE89A7316D8372649AC2231EC669F81A84', /^Exception:\nError: Unrecognized time: /, 'Invalid UTCTime'], // GitHub issue #79
196
]));
197
198
+
tests.push(new Tests('Dump of examples', function () {
199
+
const examples = fs.readdirSync('examples/').filter(f => f.endsWith('.dump'));
200
+
for (const example of examples) {
201
+
const filename = example.slice(0, -5); // Remove '.dump' suffix
202
+
const expected = fs.readFileSync('examples/' + example, 'utf8');
203
+
let data = fs.readFileSync('examples/' + filename);
204
+
data = Base64.unarmor(data);
205
+
let node = ASN1.decode(data);
206
+
const types = Defs.commonTypes
207
+
.map(type => {
208
+
const stats = Defs.match(node, type);
209
+
return { type, match: stats.recognized / stats.total };
210
+
})
211
+
.sort((a, b) => b.match - a.match);
212
+
Defs.match(node, types[0].type);
213
+
let result = node.toPrettyString();
214
+
this.checkResult(result, expected, 'Dump of examples/' + filename);
215
+
}
216
+
}, [
217
+
[0],
218
+
]));
219
+
220
+
tests.push(new Tests('Base64', function (t) {
221
let bin = Base64.decode(t);
222
let url = new Stream(bin, 0).b64Dump(0, bin.length);
223
// check base64url encoding
···
238
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQR\nSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456w==',
239
]));
240
241
+
tests.push(new Tests('Int10', function (t) {
242
this.row = (0|this.row) + 1;
243
this.num = this.num || new Int10();
244
this.num.mulAdd(t[0], t[1]);
+1
-1
testDefs.js
+1
-1
testDefs.js