+10
.editorconfig
+10
.editorconfig
+31
.github/workflows/node.js.yml
+31
.github/workflows/node.js.yml
···
1
+
# This workflow will do a clean install of node dependencies, build the source code and run tests across different versions of node
2
+
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
3
+
4
+
name: Node.js CI
5
+
6
+
on: [push, pull_request]
7
+
8
+
jobs:
9
+
build:
10
+
11
+
runs-on: ubuntu-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'
+17
.gitignore
+17
.gitignore
···
1
+
_MTN/
2
+
.DS_Store/
3
+
.vscode/
4
+
node_modules/
5
+
dist/
6
+
package-lock.json
7
+
# Artifacts from release.sh
8
+
index-local.html
9
+
sha256sums.asc
10
+
asn1js.zip
11
+
# Artifacts from mirror_to_github.sh
12
+
git-*.txt
13
+
# Artifacts from updateOID.sh
14
+
dumpasn1.cfg
15
+
# Artifacts from parseRFC.js
16
+
rfc/
17
+
rfcdef.json
+16
.mtn-ignore
+16
.mtn-ignore
···
1
+
[.]DS_Store$
2
+
[.]vscode$
3
+
node_modules$
4
+
dist$
5
+
package-lock[.]json
6
+
# Artifacts from release.sh
7
+
index-local.html
8
+
sha256sums[.]asc
9
+
asn1js[.]zip
10
+
# Artifacts from mirror_to_github.sh
11
+
git-[^.]*[.]txt
12
+
# Artifacts from updateOID.sh
13
+
dumpasn1[.]cfg
14
+
# Artifacts from updateRFC.sh / parseRFC.js
15
+
rfc$
16
+
rfcdef[.]json
+99
.vscode/launch.json
+99
.vscode/launch.json
···
1
+
{
2
+
// Use IntelliSense to learn about possible attributes.
3
+
// Hover to view descriptions of existing attributes.
4
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
5
+
"version": "0.2.0",
6
+
"configurations": [
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>/**"
23
+
],
24
+
"program": "${workspaceFolder}/dumpASN1.js",
25
+
"args": [
26
+
"examples/ed25519.cer"
27
+
]
28
+
},
29
+
{
30
+
"type": "node",
31
+
"request": "launch",
32
+
"name": "parseRFC",
33
+
"skipFiles": [
34
+
"<node_internals>/**"
35
+
],
36
+
"program": "${workspaceFolder}/parseRFC.js",
37
+
"args": [
38
+
"rfc/rfc4511.txt",
39
+
"rfcdef.json"
40
+
]
41
+
},
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
+
],
63
+
"program": "${workspaceFolder}/dumpASN1.js",
64
+
"args": [
65
+
"data:base64,MIG9AgEBMA0GCSqGSIb3DQEBCwUAMEExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxUUjM0IFNhbXBsZXMxGzAZBgNVBAMTElRSMzQgU2FtcGxlIENBIEtESBcNMTAxMTAyMTczMzMwWhcNMTAxMjAyMTczMzMwWjBIMBYCBTQAAAAIFw0xMDExMDIxNzI4MTNaMBYCBTQAAAAKFw0xMDExMDIxNzMxNDZaMBYCBTQAAAALFw0xMDExMDIxNzMzMjVa",
66
+
"1.3.6.1.5.5.7.0.18",
67
+
"TBSCertList"
68
+
]
69
+
},
70
+
{
71
+
"type": "node",
72
+
"request": "launch",
73
+
"name": "dumpASN1 CMS",
74
+
"skipFiles": [
75
+
"<node_internals>/**"
76
+
],
77
+
"program": "${workspaceFolder}/dumpASN1.js",
78
+
"args": [
79
+
"examples/cms-password.p7m",
80
+
"1.2.840.113549.1.9.16.0.14",
81
+
"ContentInfo"
82
+
]
83
+
},
84
+
{
85
+
"type": "node",
86
+
"request": "launch",
87
+
"name": "dumpASN1 LDAP",
88
+
"skipFiles": [
89
+
"<node_internals>/**"
90
+
],
91
+
"program": "${workspaceFolder}/dumpASN1.js",
92
+
"args": [
93
+
"data:base64,MDMCAQFjLgQACgEACgEAAgEAAgEAAQEAoA+jDQQFTnRWZXIEBAEAAAAwCgQITmV0bG9nb24===",
94
+
"1.3.6.1.1.18",
95
+
"LDAPMessage"
96
+
]
97
+
}
98
+
]
99
+
}
+9
.vscode/settings.json
+9
.vscode/settings.json
+38
CHANGELOG.md
+38
CHANGELOG.md
···
1
+
# ChangeLog
2
+
3
+
## 2.1.1 - 2025-10-24
4
+
5
+
### Changed
6
+
7
+
- update dev dependencies
8
+
- fix test suite that was reporting no error with empty responses
9
+
10
+
### Added
11
+
12
+
- add content length check for BOOLEAN, INTEGER, OID ([GitHub #104](https://github.com/lapo-luchini/asn1js/pull/104))
13
+
14
+
## 2.1.0 - 2025-08-03
15
+
16
+
### Changed
17
+
18
+
- when fields are CHOICEs now both the field name and the choice name are shown (fixes [GitHub #102](https://github.com/lapo-luchini/asn1js/issues/102))
19
+
- 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
20
+
21
+
### Added
22
+
23
+
- add tests to check expected decoding
24
+
25
+
## 2.0.6 - 2025-07-29
26
+
27
+
### Added
28
+
29
+
- add proper support for standard Base64 (we previously only supported Base64url) (fixes [GitHub #99](https://github.com/lapo-luchini/asn1js/pull/99))
30
+
- improve test harness
31
+
32
+
## 2.0.5 - 2025-04-12
33
+
34
+
### Added
35
+
36
+
- add `index-local.html` for local `file://` usage without needing a web server
37
+
- add definitions support for `LDAPMessage`
38
+
- #TODO continue producing old ChangeLog entries
+3
-2
LICENSE
+3
-2
LICENSE
···
1
-
ASN.1 JavaScript decoder Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
1
+
ISC License
2
+
3
+
Copyright (c) 2008-2025 Lapo Luchini <lapo@lapo.it>
2
4
3
5
Permission to use, copy, modify, and/or distribute this software for any
4
6
purpose with or without fee is hereby granted, provided that the above
···
11
13
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
12
14
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
13
15
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
14
-
+84
-5
README.md
+84
-5
README.md
···
3
3
4
4
asn1js is a JavaScript generic ASN.1 parser/decoder that can decode any valid ASN.1 DER or BER structures.
5
5
6
-
An example page that can decode Base64-encoded (raw base64, PEM armoring and `begin-base64` are recognized) or Hex-encoded (or local files with some browsers) is included and can be used both [online on the official website](https://lapo.it/asn1js/) or [offline (ZIP file)](https://lapo.it/asn1js/asn1js.zip).
6
+
An example page that can decode Base64-encoded (raw base64, PEM armoring and `begin-base64` are recognized) or Hex-encoded (or local files with some browsers) is included and can be used both [online on the official website](https://asn1js.eu/) or [offline (ZIP file)](https://lapo.it/asn1js/asn1js.zip) by opening `index-local.html`.
7
+
8
+
Usage with `nodejs`
9
+
-------------------
10
+
11
+
This package can be installed with either npm or yarn via the following commands:
12
+
13
+
```sh
14
+
npm install @lapo/asn1js
15
+
# or other tools
16
+
pnpm install @lapo/asn1js
17
+
yarn add @lapo/asn1js
18
+
```
19
+
20
+
You can import the classes like this:
21
+
22
+
```js
23
+
import { ASN1 } from '@lapo/asn1js';
24
+
```
25
+
26
+
A submodule of this package can also be imported:
27
+
28
+
```js
29
+
import { Hex } from '@lapo/asn1js/hex.js';
30
+
```
31
+
32
+
If your code is still not using ES6 Modules (and is using CommonJS) you can `require` it normally [since NodeJS 22](https://joyeecheung.github.io/blog/2024/03/18/require-esm-in-node-js/) (with parameter `--experimental-require-module`):
33
+
34
+
```js
35
+
const
36
+
{ ASN1 } = require('@lapo/asn1js'),
37
+
{ Hex } = require('@lapo/asn1js/hex.js');
38
+
console.log(ASN1.decode(Hex.decode('06032B6570')).content());
39
+
```
40
+
41
+
On older NodeJS you instead need to use async `import`:
42
+
43
+
```js
44
+
async function main() {
45
+
const
46
+
{ ASN1 } = await import('@lapo/asn1js'),
47
+
{ Hex } = await import('@lapo/asn1js/hex.js');
48
+
console.log(ASN1.decode(Hex.decode('06032B6570')).content());
49
+
}
50
+
main();
51
+
```
52
+
53
+
Usage on the web
54
+
--------------------
55
+
56
+
Can be [tested on JSFiddle](https://jsfiddle.net/lapo/y6t2wo7q/).
57
+
58
+
```html
59
+
<script>
60
+
import { ASN1 } from 'https://unpkg.com/@lapo/asn1js@2.0.0/asn1.js';
61
+
import { Hex } from 'https://unpkg.com/@lapo/asn1js@2.0.0/hex.js';
62
+
63
+
document.body.innerText = ASN1.decode(Hex.decode('06032B6570')).content();
64
+
</script>
65
+
```
66
+
67
+
Local usage
68
+
--------------------
69
+
70
+
Since unfortunately ESM modules are not working on `file:` protocol due to [CORS issues](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules#other_differences_between_modules_and_standard_scripts), there is a bundled [single-file version working locally](https://asn1js.eu/index-local.html). It doesn't work online (due to [CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) restrictions about inline content) but can be saved locally and opened in a browser.
71
+
72
+
Usage from CLI
73
+
--------------------
74
+
75
+
You can dump an ASN.1 structure from the command line using the following command (no need to even install it):
76
+
77
+
```sh
78
+
npx @lapo/asn1js ed25519.cer
79
+
```
7
80
8
81
ISC license
9
82
-----------
10
83
11
-
ASN.1 JavaScript decoder Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
84
+
ASN.1 JavaScript decoder Copyright (c) 2008-2025 Lapo Luchini <lapo@lapo.it>
12
85
13
86
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
14
87
···
21
94
- BMPString support added by [Felipe Gasper](https://github.com/FGasper)
22
95
- extended tag support added by [Pรฉter Budai](https://www.peterbudai.eu/)
23
96
- patches by [Gergely Nagy](https://github.com/ngg)
97
+
- Relative OID support added by [Mistial Developer](https://github.com/mistial-dev)
98
+
- dark mode and other UI improvements by [Oliver Burgmaier](https://github.com/olibu/)
99
+
- patches by [Nicolai Sรธborg](https://github.com/NicolaiSoeborg)
24
100
25
101
links
26
102
-----
27
103
28
-
- [official website](https://lapo.it/asn1js/)
29
-
- [InDefero tracker](http://idf.lapo.it/p/asn1js/)
104
+
- [official website](https://asn1js.eu/)
105
+
- [alternate website](https://lapo.it/asn1js/)
106
+
- [single-file version working locally](https://asn1js.eu/index-local.html) (just save this link)
107
+
- [InDefero tracker](http://idf.lapo.it/p/asn1js/) (currently offline)
30
108
- [GitHub mirror](https://github.com/lapo-luchini/asn1js)
31
-
- [Ohloh code stats](https://www.ohloh.net/p/asn1js)
109
+
- [ChangeLog on GitHub](https://github.com/lapo-luchini/asn1js/blob/trunk/CHANGELOG.md)
110
+
- [Ohloh code stats](https://www.openhub.net/p/asn1js)
+802
-438
asn1.js
+802
-438
asn1.js
···
1
1
// ASN.1 JavaScript decoder
2
-
// Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
2
+
// Copyright (c) 2008 Lapo Luchini <lapo@lapo.it>
3
3
4
4
// Permission to use, copy, modify, and/or distribute this software for any
5
5
// purpose with or without fee is hereby granted, provided that the above
6
6
// copyright notice and this permission notice appear in all copies.
7
-
//
7
+
//
8
8
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
9
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
10
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
···
13
13
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
16
-
(function (undefined) {
17
-
"use strict";
16
+
import { oids } from './oids.js';
18
17
19
-
var Int10 = (typeof module !== 'undefined') ? require('./int10.js') : window.Int10,
20
-
oids = (typeof module !== 'undefined') ? require('./oids.js') : window.oids,
21
-
ellipsis = "\u2026",
22
-
reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/,
23
-
reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|[-+](?:[0]\d|1[0-2])([0-5]\d)?)?$/;
18
+
const
19
+
ellipsis = '\u2026',
20
+
reTimeS = /^(\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|(-(?:0\d|1[0-2])|[+](?:0\d|1[0-4]))([0-5]\d)?)?$/,
21
+
reTimeL = /^(\d\d\d\d)(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])([01]\d|2[0-3])(?:([0-5]\d)(?:([0-5]\d)(?:[.,](\d{1,3}))?)?)?(Z|(-(?:0\d|1[0-2])|[+](?:0\d|1[0-4]))([0-5]\d)?)?$/,
22
+
hexDigits = '0123456789ABCDEF',
23
+
b64Std = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
24
+
b64URL = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_',
25
+
tableT61 = [
26
+
['', ''],
27
+
['AEIOUaeiou', 'รรรรรร รจรฌรฒรน'], // Grave
28
+
['ACEILNORSUYZacegilnorsuyz', 'รฤรรฤนลรลลรรลนรกฤรฉฤฃรญฤบลรณลลรบรฝลบ'], // Acute
29
+
['ACEGHIJOSUWYaceghijosuwy', 'รฤรฤฤครฤดรลรลดลถรขฤรชฤฤฅรฎฤตรดลรปลตลท'], // Circumflex
30
+
['AINOUainou', 'รฤจรรลจรฃฤฉรฑรตลฉ'], // Tilde
31
+
['AEIOUaeiou', 'ฤฤฤชลลชฤฤฤซลลซ'], // Macron
32
+
['AGUagu', 'ฤฤลฌฤฤลญ'], // Breve
33
+
['CEGIZcegz', 'ฤฤฤ ฤฐลปฤฤฤกลผ'], // Dot
34
+
['AEIOUYaeiouy', 'รรรรรลธรครซรฏรถรผรฟ'], // Umlaut or diรฆresis
35
+
['', ''],
36
+
['AUau', 'ร
ลฎรฅลฏ'], // Ring
37
+
['CGKLNRSTcklnrst', 'รฤขฤถฤปล
ลลลขรงฤทฤผลลลลฃ'], // Cedilla
38
+
['', ''],
39
+
['OUou', 'ลลฐลลฑ'], // Double Acute
40
+
['AEIUaeiu', 'ฤฤฤฎลฒฤ
ฤฤฏลณ'], // Ogonek
41
+
['CDELNRSTZcdelnrstz', 'ฤฤฤฤฝลลล ลคลฝฤฤฤฤพลลลกลฅลพ'], // Caron
42
+
];
24
43
44
+
/**
45
+
* Truncates a string to a specified length and adds an ellipsis if needed.
46
+
* @param {string} str - The input string to truncate
47
+
* @param {number} len - The maximum length of the string
48
+
* @returns {string} The truncated string
49
+
*/
25
50
function stringCut(str, len) {
26
51
if (str.length > len)
27
52
str = str.substring(0, len) + ellipsis;
28
53
return str;
29
54
}
30
55
31
-
function Stream(enc, pos) {
32
-
if (enc instanceof Stream) {
33
-
this.enc = enc.enc;
34
-
this.pos = enc.pos;
35
-
} else {
36
-
// enc should be an array or a binary string
37
-
this.enc = enc;
38
-
this.pos = pos;
56
+
/**
57
+
* Checks if a string contains only printable characters (ASCII 32-126, plus tab, newline, carriage return)
58
+
* @param {string} s - The string to check
59
+
* @throws {Error} If an unprintable character is found
60
+
*/
61
+
function checkPrintable(s) {
62
+
let i, v;
63
+
for (i = 0; i < s.length; ++i) {
64
+
v = s.charCodeAt(i);
65
+
if (v < 32 && v != 9 && v != 10 && v != 13) // [\t\r\n] are (kinda) printable
66
+
throw new Error('Unprintable character at index ' + i + ' (code ' + s.str.charCodeAt(i) + ')');
39
67
}
40
68
}
41
-
Stream.prototype.get = function (pos) {
42
-
if (pos === undefined)
43
-
pos = this.pos++;
44
-
if (pos >= this.enc.length)
45
-
throw 'Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length;
46
-
return (typeof this.enc == "string") ? this.enc.charCodeAt(pos) : this.enc[pos];
47
-
};
48
-
Stream.prototype.hexDigits = "0123456789ABCDEF";
49
-
Stream.prototype.hexByte = function (b) {
50
-
return this.hexDigits.charAt((b >> 4) & 0xF) + this.hexDigits.charAt(b & 0xF);
51
-
};
52
-
Stream.prototype.hexDump = function (start, end, raw) {
53
-
var s = "";
54
-
for (var i = start; i < end; ++i) {
55
-
s += this.hexByte(this.get(i));
56
-
if (raw !== true)
57
-
switch (i & 0xF) {
58
-
case 0x7: s += " "; break;
59
-
case 0xF: s += "\n"; break;
60
-
default: s += " ";
61
-
}
69
+
70
+
/**
71
+
* Class to manage a stream of bytes, with a zero-copy approach.
72
+
* It uses an existing array or binary string and advances a position index.
73
+
*/
74
+
export class Stream {
75
+
76
+
/**
77
+
* Creates a new Stream object.
78
+
* @param {Stream|array|string} enc data (will not be copied)
79
+
* @param {?number} pos starting position (mandatory when `end` is not a Stream)
80
+
*/
81
+
constructor(enc, pos) {
82
+
if (enc instanceof Stream) {
83
+
this.enc = enc.enc;
84
+
this.pos = enc.pos;
85
+
} else {
86
+
this.enc = enc;
87
+
this.pos = pos;
88
+
}
89
+
if (typeof this.pos != 'number')
90
+
throw new Error('"pos" must be a numeric value');
91
+
// Set up the raw byte access function based on the type of data
92
+
if (typeof this.enc == 'string')
93
+
this.getRaw = pos => this.enc.charCodeAt(pos);
94
+
else if (typeof this.enc[0] == 'number')
95
+
this.getRaw = pos => this.enc[pos];
96
+
else
97
+
throw new Error('"enc" must be a numeric array or a string');
62
98
}
63
-
return s;
64
-
};
65
-
var b64Safe = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
66
-
Stream.prototype.b64Dump = function (start, end) {
67
-
var extra = (end - start) % 3,
68
-
s = '',
69
-
i, c;
70
-
for (i = start; i + 2 < end; i += 3) {
71
-
c = this.get(i) << 16 | this.get(i + 1) << 8 | this.get(i + 2);
72
-
s += b64Safe.charAt(c >> 18 & 0x3F);
73
-
s += b64Safe.charAt(c >> 12 & 0x3F);
74
-
s += b64Safe.charAt(c >> 6 & 0x3F);
75
-
s += b64Safe.charAt(c & 0x3F);
99
+
100
+
/**
101
+
* Get the byte at current position (and increment it) or at a specified position (and avoid moving current position).
102
+
* @param {?number} pos read position if specified, else current position (and increment it)
103
+
* @returns {number} The byte value at the specified position
104
+
*/
105
+
get(pos) {
106
+
if (pos === undefined)
107
+
pos = this.pos++;
108
+
if (pos >= this.enc.length)
109
+
throw new Error('Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length);
110
+
return this.getRaw(pos);
76
111
}
77
-
if (extra > 0) {
78
-
c = this.get(i) << 16;
79
-
if (extra > 1) c |= this.get(i + 1) << 8;
80
-
s += b64Safe.charAt(c >> 18 & 0x3F);
81
-
s += b64Safe.charAt(c >> 12 & 0x3F);
82
-
if (extra == 2) s += b64Safe.charAt(c >> 6 & 0x3F);
112
+
113
+
/**
114
+
* Convert a single byte to a hexadecimal string (of length 2).
115
+
* @param {number} b - The byte to convert
116
+
* @returns {string} Hexadecimal representation of the byte
117
+
*/
118
+
static hexByte(b) {
119
+
return hexDigits.charAt((b >> 4) & 0xF) + hexDigits.charAt(b & 0xF);
83
120
}
84
-
return s;
85
-
};
86
-
Stream.prototype.isASCII = function (start, end) {
87
-
for (var i = start; i < end; ++i) {
88
-
var c = this.get(i);
89
-
if (c < 32 || c > 176)
90
-
return false;
121
+
122
+
/**
123
+
* Hexadecimal dump of a specified region of the stream.
124
+
* @param {number} start - starting position (included)
125
+
* @param {number} end - ending position (excluded)
126
+
* @param {string} type - 'raw', 'byte' or 'dump' (default)
127
+
* @returns {string} Hexadecimal representation of the data
128
+
*/
129
+
hexDump(start, end, type = 'dump') {
130
+
let s = '';
131
+
for (let i = start; i < end; ++i) {
132
+
if (type == 'byte' && i > start)
133
+
s += ' ';
134
+
s += Stream.hexByte(this.get(i));
135
+
if (type == 'dump')
136
+
switch (i & 0xF) {
137
+
case 0x7: s += ' '; break;
138
+
case 0xF: s += '\n'; break;
139
+
default: s += ' ';
140
+
}
141
+
}
142
+
return s;
91
143
}
92
-
return true;
93
-
};
94
-
Stream.prototype.parseStringISO = function (start, end) {
95
-
var s = "";
96
-
for (var i = start; i < end; ++i)
97
-
s += String.fromCharCode(this.get(i));
98
-
return s;
99
-
};
100
-
Stream.prototype.parseStringUTF = function (start, end) {
101
-
var s = "";
102
-
for (var i = start; i < end; ) {
103
-
var c = this.get(i++);
104
-
if (c < 128)
105
-
s += String.fromCharCode(c);
106
-
else if ((c > 191) && (c < 224))
107
-
s += String.fromCharCode(((c & 0x1F) << 6) | (this.get(i++) & 0x3F));
108
-
else
109
-
s += String.fromCharCode(((c & 0x0F) << 12) | ((this.get(i++) & 0x3F) << 6) | (this.get(i++) & 0x3F));
144
+
145
+
/**
146
+
* Base64url dump of a specified region of the stream (according to RFC 4648 section 5).
147
+
* @param {number} start - starting position (included)
148
+
* @param {number} end - ending position (excluded)
149
+
* @param {string} type - 'url' (default, section 5 without padding) or 'std' (section 4 with padding)
150
+
* @returns {string} Base64 encoded representation of the data
151
+
*/
152
+
b64Dump(start, end, type = 'url') {
153
+
const b64 = type === 'url' ? b64URL : b64Std,
154
+
extra = (end - start) % 3;
155
+
let s = '',
156
+
i, c;
157
+
for (i = start; i + 2 < end; i += 3) {
158
+
c = this.get(i) << 16 | this.get(i + 1) << 8 | this.get(i + 2);
159
+
s += b64.charAt(c >> 18 & 0x3F);
160
+
s += b64.charAt(c >> 12 & 0x3F);
161
+
s += b64.charAt(c >> 6 & 0x3F);
162
+
s += b64.charAt(c & 0x3F);
163
+
}
164
+
if (extra > 0) {
165
+
c = this.get(i) << 16;
166
+
if (extra > 1) c |= this.get(i + 1) << 8;
167
+
s += b64.charAt(c >> 18 & 0x3F);
168
+
s += b64.charAt(c >> 12 & 0x3F);
169
+
if (extra == 2) s += b64.charAt(c >> 6 & 0x3F);
170
+
if (b64 === b64Std) s += '==='.slice(0, 3 - extra);
171
+
}
172
+
return s;
110
173
}
111
-
return s;
112
-
};
113
-
Stream.prototype.parseStringBMP = function (start, end) {
114
-
var str = "", hi, lo;
115
-
for (var i = start; i < end; ) {
116
-
hi = this.get(i++);
117
-
lo = this.get(i++);
118
-
str += String.fromCharCode((hi << 8) | lo);
174
+
175
+
/**
176
+
* Check if a region of the stream contains only ASCII characters (32-176)
177
+
* @param {number} start - starting position (included)
178
+
* @param {number} end - ending position (excluded)
179
+
* @returns {boolean} True if all characters are ASCII, false otherwise
180
+
*/
181
+
isASCII(start, end) {
182
+
for (let i = start; i < end; ++i) {
183
+
let c = this.get(i);
184
+
if (c < 32 || c > 176)
185
+
return false;
186
+
}
187
+
return true;
119
188
}
120
-
return str;
121
-
};
122
-
Stream.prototype.parseTime = function (start, end, shortYear) {
123
-
var s = this.parseStringISO(start, end),
124
-
m = (shortYear ? reTimeS : reTimeL).exec(s);
125
-
if (!m)
126
-
return "Unrecognized time: " + s;
127
-
if (shortYear) {
128
-
// to avoid querying the timer, use the fixed range [1970, 2069]
129
-
// it will conform with ITU X.400 [-10, +40] sliding window until 2030
130
-
m[1] = +m[1];
131
-
m[1] += (m[1] < 70) ? 2000 : 1900;
189
+
190
+
/**
191
+
* Parse a region of the stream as an ISO string
192
+
* @param {number} start - starting position (included)
193
+
* @param {number} end - ending position (excluded)
194
+
* @param {number} maxLength - maximum length of the output string
195
+
* @returns {Object} Object with size and str properties
196
+
*/
197
+
parseStringISO(start, end, maxLength) {
198
+
let s = '';
199
+
for (let i = start; i < end; ++i)
200
+
s += String.fromCharCode(this.get(i));
201
+
return { size: s.length, str: stringCut(s, maxLength) };
132
202
}
133
-
s = m[1] + "-" + m[2] + "-" + m[3] + " " + m[4];
134
-
if (m[5]) {
135
-
s += ":" + m[5];
136
-
if (m[6]) {
137
-
s += ":" + m[6];
138
-
if (m[7])
139
-
s += "." + m[7];
203
+
204
+
/**
205
+
* Parse a region of the stream as a T.61 string
206
+
* @param {number} start - starting position (included)
207
+
* @param {number} end - ending position (excluded)
208
+
* @param {number} maxLength - maximum length of the output string
209
+
* @returns {Object} Object with size and str properties
210
+
*/
211
+
parseStringT61(start, end, maxLength) {
212
+
// warning: this code is not very well tested so far
213
+
function merge(c, d) {
214
+
const t = tableT61[c - 0xC0];
215
+
const i = t[0].indexOf(String.fromCharCode(d));
216
+
return (i < 0) ? '\0' : t[1].charAt(i);
140
217
}
218
+
let s = '', c;
219
+
for (let i = start; i < end; ++i) {
220
+
c = this.get(i);
221
+
if (c >= 0xA4 && c <= 0xBF)
222
+
s += '$ยฅ#ยงยค\0\0ยซ\0\0\0\0ยฐยฑยฒยณรยตยถยทรท\0\0ยปยผยฝยพยฟ'.charAt(c - 0xA4);
223
+
else if (c >= 0xE0 && c <= 0xFF)
224
+
s += 'โฆรรยชฤฆ\0ฤฒฤฟลรลยบรลฆลลฤธรฆฤรฐฤงฤฑฤณลลรธลรรพลงล\0'.charAt(c - 0xE0);
225
+
else if (c >= 0xC0 && c <= 0xCF)
226
+
s += merge(c, this.get(++i));
227
+
else // using ISO 8859-1 for characters undefined (or equal) in T.61
228
+
s += String.fromCharCode(c);
229
+
}
230
+
return { size: s.length, str: stringCut(s, maxLength) };
141
231
}
142
-
if (m[8]) {
143
-
s += " UTC";
144
-
if (m[8] != 'Z') {
145
-
s += m[8];
146
-
if (m[9])
147
-
s += ":" + m[9];
232
+
233
+
/**
234
+
* Parse a region of the stream as a UTF-8 string
235
+
* @param {number} start - starting position (included)
236
+
* @param {number} end - ending position (excluded)
237
+
* @param {number} maxLength - maximum length of the output string
238
+
* @returns {Object} Object with size and str properties
239
+
*/
240
+
parseStringUTF(start, end, maxLength) {
241
+
/**
242
+
* Helper function to process UTF-8 continuation bytes
243
+
* @param {number} c - The continuation byte
244
+
* @returns {number} The extracted data bits
245
+
*/
246
+
function ex(c) { // must be 10xxxxxx
247
+
if ((c < 0x80) || (c >= 0xC0))
248
+
throw new Error('Invalid UTF-8 continuation byte: ' + c);
249
+
return (c & 0x3F);
250
+
}
251
+
/**
252
+
* Helper function to convert a code point to a surrogate pair
253
+
* @param {number} cp - The code point to convert
254
+
* @returns {string} The surrogate pair as a string
255
+
*/
256
+
function surrogate(cp) {
257
+
if (cp < 0x10000)
258
+
throw new Error('UTF-8 overlong encoding, codepoint encoded in 4 bytes: ' + cp);
259
+
// we could use String.fromCodePoint(cp) but let's be nice to older browsers and use surrogate pairs
260
+
cp -= 0x10000;
261
+
return String.fromCharCode((cp >> 10) + 0xD800, (cp & 0x3FF) + 0xDC00);
148
262
}
263
+
let s = '';
264
+
for (let i = start; i < end; ) {
265
+
const c = this.get(i++);
266
+
if (c < 0x80) // 0xxxxxxx (7 bit)
267
+
s += String.fromCharCode(c);
268
+
else if (c < 0xC0)
269
+
throw new Error('Invalid UTF-8 starting byte: ' + c);
270
+
else if (c < 0xE0) // 110xxxxx 10xxxxxx (11 bit)
271
+
s += String.fromCharCode(((c & 0x1F) << 6) | ex(this.get(i++)));
272
+
else if (c < 0xF0) // 1110xxxx 10xxxxxx 10xxxxxx (16 bit)
273
+
s += String.fromCharCode(((c & 0x0F) << 12) | (ex(this.get(i++)) << 6) | ex(this.get(i++)));
274
+
else if (c < 0xF8) // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (21 bit)
275
+
s += surrogate(((c & 0x07) << 18) | (ex(this.get(i++)) << 12) | (ex(this.get(i++)) << 6) | ex(this.get(i++)));
276
+
else
277
+
throw new Error('Invalid UTF-8 starting byte (since 2003 it is restricted to 4 bytes): ' + c);
278
+
}
279
+
return { size: s.length, str: stringCut(s, maxLength) };
149
280
}
150
-
return s;
151
-
};
152
-
Stream.prototype.parseInteger = function (start, end) {
153
-
var v = this.get(start),
154
-
neg = (v > 127),
155
-
pad = neg ? 255 : 0,
156
-
len,
157
-
s = '';
158
-
// skip unuseful bits (not allowed in DER)
159
-
while (v == pad && ++start < end)
160
-
v = this.get(start);
161
-
len = end - start;
162
-
if (len === 0)
163
-
return neg ? '-1' : '0';
164
-
// show bit length of huge integers
165
-
if (len > 4) {
166
-
s = v;
167
-
len <<= 3;
168
-
while (((s ^ pad) & 0x80) == 0) {
169
-
s <<= 1;
170
-
--len;
281
+
282
+
/**
283
+
* Parse a region of the stream as a BMP (Basic Multilingual Plane) string
284
+
* @param {number} start - starting position (included)
285
+
* @param {number} end - ending position (excluded)
286
+
* @param {number} maxLength - maximum length of the output string
287
+
* @returns {Object} Object with size and str properties
288
+
*/
289
+
parseStringBMP(start, end, maxLength) {
290
+
let s = '', hi, lo;
291
+
for (let i = start; i < end; ) {
292
+
hi = this.get(i++);
293
+
lo = this.get(i++);
294
+
s += String.fromCharCode((hi << 8) | lo);
171
295
}
172
-
s = "(" + len + " bit)\n";
296
+
return { size: s.length, str: stringCut(s, maxLength) };
173
297
}
174
-
// decode the integer
175
-
if (neg) v = v - 256;
176
-
var n = new Int10(v);
177
-
for (var i = start + 1; i < end; ++i)
178
-
n.mulAdd(256, this.get(i));
179
-
return s + n.toString();
180
-
};
181
-
Stream.prototype.parseBitString = function (start, end, maxLength) {
182
-
var unusedBit = this.get(start),
183
-
lenBit = ((end - start - 1) << 3) - unusedBit,
184
-
intro = "(" + lenBit + " bit)\n",
185
-
s = "";
186
-
for (var i = start + 1; i < end; ++i) {
187
-
var b = this.get(i),
188
-
skip = (i == end - 1) ? unusedBit : 0;
189
-
for (var j = 7; j >= skip; --j)
190
-
s += (b >> j) & 1 ? "1" : "0";
191
-
if (s.length > maxLength)
192
-
return intro + stringCut(s, maxLength);
298
+
299
+
/**
300
+
* Parse a region of the stream as a time string
301
+
* @param {number} start - starting position (included)
302
+
* @param {number} end - ending position (excluded)
303
+
* @param {boolean} shortYear - Whether to parse as short year (2-digit)
304
+
* @returns {string} Formatted time string
305
+
*/
306
+
parseTime(start, end, shortYear) {
307
+
let s = this.parseStringISO(start, end).str,
308
+
m = (shortYear ? reTimeS : reTimeL).exec(s);
309
+
if (!m)
310
+
throw new Error('Unrecognized time: ' + s);
311
+
if (shortYear) {
312
+
// to avoid querying the timer, use the fixed range [1970, 2069]
313
+
// it will conform with ITU X.400 [-10, +40] sliding window until 2030
314
+
m[1] = +m[1];
315
+
m[1] += (m[1] < 70) ? 2000 : 1900;
316
+
}
317
+
s = m[1] + '-' + m[2] + '-' + m[3] + ' ' + m[4];
318
+
if (m[5]) {
319
+
s += ':' + m[5];
320
+
if (m[6]) {
321
+
s += ':' + m[6];
322
+
if (m[7])
323
+
s += '.' + m[7];
324
+
}
325
+
}
326
+
if (m[8]) {
327
+
s += ' UTC';
328
+
if (m[9])
329
+
s += m[9] + ':' + (m[10] || '00');
330
+
}
331
+
return s;
193
332
}
194
-
return intro + s;
195
-
};
196
-
Stream.prototype.parseOctetString = function (start, end, maxLength) {
197
-
if (this.isASCII(start, end))
198
-
return stringCut(this.parseStringISO(start, end), maxLength);
199
-
var len = end - start,
200
-
s = "(" + len + " byte)\n";
201
-
maxLength /= 2; // we work in bytes
202
-
if (len > maxLength)
203
-
end = start + maxLength;
204
-
for (var i = start; i < end; ++i)
205
-
s += this.hexByte(this.get(i));
206
-
if (len > maxLength)
207
-
s += ellipsis;
208
-
return s;
209
-
};
210
-
Stream.prototype.parseOID = function (start, end, maxLength) {
211
-
var s = '',
212
-
n = new Int10(),
213
-
bits = 0;
214
-
for (var i = start; i < end; ++i) {
215
-
var v = this.get(i);
216
-
n.mulAdd(128, v & 0x7F);
217
-
bits += 7;
218
-
if (!(v & 0x80)) { // finished
219
-
if (s === '') {
220
-
n = n.simplify();
221
-
if (n instanceof Int10) {
222
-
n.sub(80);
223
-
s = "2." + n.toString();
224
-
} else {
225
-
var m = n < 80 ? n < 40 ? 0 : 1 : 2;
226
-
s = m + "." + (n - m * 40);
227
-
}
228
-
} else
229
-
s += "." + n.toString();
333
+
334
+
/**
335
+
* Parse a region of the stream as an integer
336
+
* @param {number} start - starting position (included)
337
+
* @param {number} end - ending position (excluded)
338
+
* @returns {string} Formatted integer string
339
+
*/
340
+
parseInteger(start, end) {
341
+
let v = this.get(start),
342
+
s = '';
343
+
const neg = (v > 127),
344
+
pad = neg ? 255 : 0;
345
+
// skip unuseful bits (not allowed in DER)
346
+
while (v == pad && ++start < end)
347
+
v = this.get(start);
348
+
const len = end - start;
349
+
if (len === 0)
350
+
return neg ? '-1' : '0';
351
+
// show bit length of huge integers
352
+
if (len > 4) {
353
+
let v2 = v,
354
+
lenBit = len << 3;
355
+
while (((v2 ^ pad) & 0x80) == 0) {
356
+
v2 <<= 1;
357
+
--lenBit;
358
+
}
359
+
s = '(' + lenBit + ' bit)\n';
360
+
}
361
+
// decode the integer
362
+
if (neg) v = v - 256;
363
+
let n = BigInt(v);
364
+
for (let i = start + 1; i < end; ++i)
365
+
n = (n << 8n) | BigInt(this.get(i));
366
+
return s + n;
367
+
}
368
+
369
+
/**
370
+
* Parse a region of the stream as a bit string.
371
+
* @param {number} start - starting position (included)
372
+
* @param {number} end - ending position (excluded)
373
+
* @param {number} maxLength - maximum length of the output string
374
+
* @returns {Object} Object with size and str properties
375
+
*/
376
+
parseBitString(start, end, maxLength) {
377
+
const unusedBits = this.get(start);
378
+
if (unusedBits > 7)
379
+
throw new Error('Invalid BitString with unusedBits=' + unusedBits);
380
+
const lenBit = ((end - start - 1) << 3) - unusedBits;
381
+
let s = '';
382
+
for (let i = start + 1; i < end; ++i) {
383
+
let b = this.get(i),
384
+
skip = (i == end - 1) ? unusedBits : 0;
385
+
for (let j = 7; j >= skip; --j)
386
+
s += (b >> j) & 1 ? '1' : '0';
230
387
if (s.length > maxLength)
231
-
return stringCut(s, maxLength);
232
-
n = new Int10();
233
-
bits = 0;
388
+
s = stringCut(s, maxLength);
234
389
}
390
+
return { size: lenBit, str: s };
235
391
}
236
-
if (bits > 0)
237
-
s += ".incomplete";
238
-
if (typeof oids === 'object') {
239
-
var oid = oids[s];
240
-
if (oid) {
241
-
if (oid.d) s += "\n" + oid.d;
242
-
if (oid.c) s += "\n" + oid.c;
243
-
if (oid.w) s += "\n(warning!)";
392
+
393
+
/**
394
+
* Parse a region of the stream as an octet string.
395
+
* @param {number} start - starting position (included)
396
+
* @param {number} end - ending position (excluded)
397
+
* @param {number} maxLength - maximum length of the output string
398
+
* @returns {Object} Object with size and str properties
399
+
*/
400
+
parseOctetString(start, end, maxLength) {
401
+
try {
402
+
let s = this.parseStringUTF(start, end, maxLength);
403
+
checkPrintable(s.str);
404
+
return { size: end - start, str: s.str };
405
+
} catch (ignore) {
406
+
// If UTF-8 parsing fails, fall back to hexadecimal dump
244
407
}
408
+
const len = end - start;
409
+
maxLength /= 2; // we work in bytes
410
+
if (len > maxLength)
411
+
end = start + maxLength;
412
+
let s = '';
413
+
for (let i = start; i < end; ++i)
414
+
s += Stream.hexByte(this.get(i));
415
+
if (len > maxLength)
416
+
s += ellipsis;
417
+
return { size: len, str: s };
245
418
}
246
-
return s;
247
-
};
248
419
249
-
function ASN1(stream, header, length, tag, tagLen, sub) {
250
-
if (!(tag instanceof ASN1Tag)) throw 'Invalid tag value.';
251
-
this.stream = stream;
252
-
this.header = header;
253
-
this.length = length;
254
-
this.tag = tag;
255
-
this.tagLen = tagLen;
256
-
this.sub = sub;
420
+
/**
421
+
* Parse a region of the stream as an OID (Object Identifier).
422
+
* @param {number} start - starting position (included)
423
+
* @param {number} end - ending position (excluded)
424
+
* @param {number} maxLength - maximum length of the output string
425
+
* @param {boolean} isRelative - Whether the OID is relative
426
+
* @returns {string} Formatted OID string
427
+
*/
428
+
parseOID(start, end, maxLength, isRelative) {
429
+
let s = '',
430
+
n = 0n,
431
+
bits = 0;
432
+
for (let i = start; i < end; ++i) {
433
+
let v = this.get(i);
434
+
// Shift bits and add the lower 7 bits of the byte
435
+
n = (n << 7n) | BigInt(v & 0x7F);
436
+
bits += 7;
437
+
// If the most significant bit is 0, this is the last byte of the OID component
438
+
if (!(v & 0x80)) { // finished
439
+
// If this is the first component, handle it specially
440
+
if (s === '') {
441
+
if (isRelative) {
442
+
s = n.toString();
443
+
} else {
444
+
let m = n < 80 ? n < 40 ? 0n : 1n : 2n;
445
+
s = m + '.' + (n - m * 40n);
446
+
}
447
+
} else
448
+
s += '.' + n;
449
+
if (s.length > maxLength)
450
+
return stringCut(s, maxLength);
451
+
n = 0n;
452
+
bits = 0;
453
+
}
454
+
}
455
+
if (bits > 0)
456
+
s += '.incomplete';
457
+
// If OIDs mapping is available and the OID is absolute, try to resolve it
458
+
if (typeof oids === 'object' && !isRelative) {
459
+
let oid = oids[s];
460
+
if (oid) {
461
+
if (oid.d) s += '\n' + oid.d;
462
+
if (oid.c) s += '\n' + oid.c;
463
+
if (oid.w) s += '\n(warning!)';
464
+
}
465
+
}
466
+
return s;
467
+
}
468
+
469
+
/**
470
+
* Parse a region of the stream as a relative OID (Object Identifier).
471
+
* @param {number} start - starting position (included)
472
+
* @param {number} end - ending position (excluded)
473
+
* @param {number} maxLength - maximum length of the output string
474
+
* @returns {string} Formatted relative OID string
475
+
*/
476
+
parseRelativeOID(start, end, maxLength) {
477
+
return this.parseOID(start, end, maxLength, true);
478
+
}
257
479
}
258
-
ASN1.prototype.typeName = function () {
259
-
switch (this.tag.tagClass) {
260
-
case 0: // universal
261
-
switch (this.tag.tagNumber) {
262
-
case 0x00: return "EOC";
263
-
case 0x01: return "BOOLEAN";
264
-
case 0x02: return "INTEGER";
265
-
case 0x03: return "BIT_STRING";
266
-
case 0x04: return "OCTET_STRING";
267
-
case 0x05: return "NULL";
268
-
case 0x06: return "OBJECT_IDENTIFIER";
269
-
case 0x07: return "ObjectDescriptor";
270
-
case 0x08: return "EXTERNAL";
271
-
case 0x09: return "REAL";
272
-
case 0x0A: return "ENUMERATED";
273
-
case 0x0B: return "EMBEDDED_PDV";
274
-
case 0x0C: return "UTF8String";
275
-
case 0x10: return "SEQUENCE";
276
-
case 0x11: return "SET";
277
-
case 0x12: return "NumericString";
278
-
case 0x13: return "PrintableString"; // ASCII subset
279
-
case 0x14: return "TeletexString"; // aka T61String
280
-
case 0x15: return "VideotexString";
281
-
case 0x16: return "IA5String"; // ASCII
282
-
case 0x17: return "UTCTime";
283
-
case 0x18: return "GeneralizedTime";
284
-
case 0x19: return "GraphicString";
285
-
case 0x1A: return "VisibleString"; // ASCII subset
286
-
case 0x1B: return "GeneralString";
287
-
case 0x1C: return "UniversalString";
288
-
case 0x1E: return "BMPString";
480
+
481
+
function recurse(el, parser, maxLength) {
482
+
let avoidRecurse = true;
483
+
if (el.tag.tagConstructed && el.sub) {
484
+
avoidRecurse = false;
485
+
el.sub.forEach(function (e1) {
486
+
if (e1.tag.tagClass != el.tag.tagClass || e1.tag.tagNumber != el.tag.tagNumber)
487
+
avoidRecurse = true;
488
+
});
489
+
}
490
+
if (avoidRecurse)
491
+
return el.stream[parser](el.posContent(), el.posContent() + Math.abs(el.length), maxLength);
492
+
let d = { size: 0, str: '' };
493
+
el.sub.forEach(function (el) {
494
+
let d1 = recurse(el, parser, maxLength - d.str.length);
495
+
d.size += d1.size;
496
+
d.str += d1.str;
497
+
});
498
+
return d;
499
+
}
500
+
501
+
class ASN1Tag {
502
+
constructor(stream) {
503
+
let buf = stream.get();
504
+
this.tagClass = buf >> 6;
505
+
this.tagConstructed = ((buf & 0x20) !== 0);
506
+
this.tagNumber = buf & 0x1F;
507
+
if (this.tagNumber == 0x1F) { // long tag
508
+
let n = 0n;
509
+
do {
510
+
buf = stream.get();
511
+
n = (n << 7n) | BigInt(buf & 0x7F);
512
+
} while (buf & 0x80);
513
+
this.tagNumber = n <= Number.MAX_SAFE_INTEGER ? Number(n) : n;
289
514
}
290
-
return "Universal_" + this.tag.tagNumber.toString();
291
-
case 1: return "Application_" + this.tag.tagNumber.toString();
292
-
case 2: return "[" + this.tag.tagNumber.toString() + "]"; // Context
293
-
case 3: return "Private_" + this.tag.tagNumber.toString();
515
+
}
516
+
isUniversal() {
517
+
return this.tagClass === 0x00;
518
+
}
519
+
isEOC() {
520
+
return this.tagClass === 0x00 && this.tagNumber === 0x00;
521
+
}
522
+
}
523
+
524
+
/**
525
+
* ASN1 class for parsing ASN.1 encoded data.
526
+
* Instances of this class represent an ASN.1 element and provides methods to parse and display its content.
527
+
*/
528
+
export class ASN1 {
529
+
/**
530
+
* Creates an ASN1 parser object.
531
+
* @param {Stream} stream - The stream containing the ASN.1 data.
532
+
* @param {number} header - The header length.
533
+
* @param {number} length - The length of the data.
534
+
* @param {ASN1Tag} tag - The ASN.1 tag.
535
+
* @param {number} tagLen - The length of the tag.
536
+
* @param {Array} sub - The sub-elements.
537
+
*/
538
+
constructor(stream, header, length, tag, tagLen, sub) {
539
+
if (!(tag instanceof ASN1Tag)) throw new Error('Invalid tag value.');
540
+
this.stream = stream;
541
+
this.header = header;
542
+
this.length = length;
543
+
this.tag = tag;
544
+
this.tagLen = tagLen;
545
+
this.sub = sub;
294
546
}
295
-
};
296
-
ASN1.prototype.content = function (maxLength) { // a preview of the content (intended for humans)
297
-
if (this.tag === undefined)
547
+
548
+
/**
549
+
* Get the type name of the ASN.1 element.
550
+
* @returns {string} The type name.
551
+
*/
552
+
typeName() {
553
+
switch (this.tag.tagClass) {
554
+
case 0: // universal
555
+
switch (this.tag.tagNumber) {
556
+
case 0x00: return 'EOC';
557
+
case 0x01: return 'BOOLEAN';
558
+
case 0x02: return 'INTEGER';
559
+
case 0x03: return 'BIT_STRING';
560
+
case 0x04: return 'OCTET_STRING';
561
+
case 0x05: return 'NULL';
562
+
case 0x06: return 'OBJECT_IDENTIFIER';
563
+
case 0x07: return 'ObjectDescriptor';
564
+
case 0x08: return 'EXTERNAL';
565
+
case 0x09: return 'REAL';
566
+
case 0x0A: return 'ENUMERATED';
567
+
case 0x0B: return 'EMBEDDED_PDV';
568
+
case 0x0C: return 'UTF8String';
569
+
case 0x0D: return 'RELATIVE_OID';
570
+
case 0x10: return 'SEQUENCE';
571
+
case 0x11: return 'SET';
572
+
case 0x12: return 'NumericString';
573
+
case 0x13: return 'PrintableString'; // ASCII subset
574
+
case 0x14: return 'TeletexString'; // aka T61String
575
+
case 0x15: return 'VideotexString';
576
+
case 0x16: return 'IA5String'; // ASCII
577
+
case 0x17: return 'UTCTime';
578
+
case 0x18: return 'GeneralizedTime';
579
+
case 0x19: return 'GraphicString';
580
+
case 0x1A: return 'VisibleString'; // ASCII subset
581
+
case 0x1B: return 'GeneralString';
582
+
case 0x1C: return 'UniversalString';
583
+
case 0x1E: return 'BMPString';
584
+
}
585
+
return 'Universal_' + this.tag.tagNumber.toString();
586
+
case 1: return 'Application_' + this.tag.tagNumber.toString();
587
+
case 2: return '[' + this.tag.tagNumber.toString() + ']'; // Context
588
+
case 3: return 'Private_' + this.tag.tagNumber.toString();
589
+
}
590
+
}
591
+
592
+
/**
593
+
* Get a string preview of the content (intended for humans).
594
+
* @param {number} maxLength - The maximum length of the content.
595
+
* @returns {string|null} The content preview or null if not supported.
596
+
*/
597
+
content(maxLength) {
598
+
if (this.tag === undefined)
599
+
return null;
600
+
if (maxLength === undefined)
601
+
maxLength = Infinity;
602
+
const content = this.posContent(),
603
+
len = Math.abs(this.length);
604
+
if (!this.tag.isUniversal()) {
605
+
if (this.sub !== null)
606
+
return '(' + this.sub.length + ' elem)';
607
+
let d1 = this.stream.parseOctetString(content, content + len, maxLength);
608
+
return '(' + d1.size + ' byte)\n' + d1.str;
609
+
}
610
+
switch (this.tag.tagNumber) {
611
+
case 0x01: // BOOLEAN
612
+
if (len != 1) return 'invalid length ' + len;
613
+
return (this.stream.get(content) === 0) ? 'false' : 'true';
614
+
case 0x02: // INTEGER
615
+
if (len < 1) return 'invalid length ' + len;
616
+
return this.stream.parseInteger(content, content + len);
617
+
case 0x03: { // BIT_STRING
618
+
let d = recurse(this, 'parseBitString', maxLength);
619
+
return '(' + d.size + ' bit)\n' + d.str;
620
+
}
621
+
case 0x04: { // OCTET_STRING
622
+
let d = recurse(this, 'parseOctetString', maxLength);
623
+
return '(' + d.size + ' byte)\n' + d.str;
624
+
}
625
+
//case 0x05: // NULL
626
+
case 0x06: // OBJECT_IDENTIFIER
627
+
if (len < 1) return 'invalid length ' + len; // pgut001's dumpasn1.c enforces a minimum lenght of 3
628
+
return this.stream.parseOID(content, content + len, maxLength);
629
+
//case 0x07: // ObjectDescriptor
630
+
//case 0x08: // EXTERNAL
631
+
//case 0x09: // REAL
632
+
case 0x0A: // ENUMERATED
633
+
return this.stream.parseInteger(content, content + len);
634
+
//case 0x0B: // EMBEDDED_PDV
635
+
case 0x0D: // RELATIVE-OID
636
+
return this.stream.parseRelativeOID(content, content + len, maxLength);
637
+
case 0x10: // SEQUENCE
638
+
case 0x11: // SET
639
+
if (this.sub !== null)
640
+
return '(' + this.sub.length + ' elem)';
641
+
else
642
+
return '(no elem)';
643
+
case 0x0C: // UTF8String
644
+
return recurse(this, 'parseStringUTF', maxLength).str;
645
+
case 0x14: // TeletexString
646
+
return recurse(this, 'parseStringT61', maxLength).str;
647
+
case 0x12: // NumericString
648
+
case 0x13: // PrintableString
649
+
case 0x15: // VideotexString
650
+
case 0x16: // IA5String
651
+
case 0x1A: // VisibleString
652
+
case 0x1B: // GeneralString
653
+
//case 0x19: // GraphicString
654
+
//case 0x1C: // UniversalString
655
+
return recurse(this, 'parseStringISO', maxLength).str;
656
+
case 0x1E: // BMPString
657
+
return recurse(this, 'parseStringBMP', maxLength).str;
658
+
case 0x17: // UTCTime
659
+
case 0x18: // GeneralizedTime
660
+
return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));
661
+
}
298
662
return null;
299
-
if (maxLength === undefined)
300
-
maxLength = Infinity;
301
-
var content = this.posContent(),
302
-
len = Math.abs(this.length);
303
-
if (!this.tag.isUniversal()) {
304
-
if (this.sub !== null)
305
-
return "(" + this.sub.length + " elem)";
306
-
return this.stream.parseOctetString(content, content + len, maxLength);
307
663
}
308
-
switch (this.tag.tagNumber) {
309
-
case 0x01: // BOOLEAN
310
-
return (this.stream.get(content) === 0) ? "false" : "true";
311
-
case 0x02: // INTEGER
312
-
return this.stream.parseInteger(content, content + len);
313
-
case 0x03: // BIT_STRING
314
-
return this.sub ? "(" + this.sub.length + " elem)" :
315
-
this.stream.parseBitString(content, content + len, maxLength);
316
-
case 0x04: // OCTET_STRING
317
-
return this.sub ? "(" + this.sub.length + " elem)" :
318
-
this.stream.parseOctetString(content, content + len, maxLength);
319
-
//case 0x05: // NULL
320
-
case 0x06: // OBJECT_IDENTIFIER
321
-
return this.stream.parseOID(content, content + len, maxLength);
322
-
//case 0x07: // ObjectDescriptor
323
-
//case 0x08: // EXTERNAL
324
-
//case 0x09: // REAL
325
-
//case 0x0A: // ENUMERATED
326
-
//case 0x0B: // EMBEDDED_PDV
327
-
case 0x10: // SEQUENCE
328
-
case 0x11: // SET
329
-
if (this.sub !== null)
330
-
return "(" + this.sub.length + " elem)";
331
-
else
332
-
return "(no elem)";
333
-
case 0x0C: // UTF8String
334
-
return stringCut(this.stream.parseStringUTF(content, content + len), maxLength);
335
-
case 0x12: // NumericString
336
-
case 0x13: // PrintableString
337
-
case 0x14: // TeletexString
338
-
case 0x15: // VideotexString
339
-
case 0x16: // IA5String
340
-
//case 0x19: // GraphicString
341
-
case 0x1A: // VisibleString
342
-
//case 0x1B: // GeneralString
343
-
//case 0x1C: // UniversalString
344
-
return stringCut(this.stream.parseStringISO(content, content + len), maxLength);
345
-
case 0x1E: // BMPString
346
-
return stringCut(this.stream.parseStringBMP(content, content + len), maxLength);
347
-
case 0x17: // UTCTime
348
-
case 0x18: // GeneralizedTime
349
-
return this.stream.parseTime(content, content + len, (this.tag.tagNumber == 0x17));
664
+
665
+
/**
666
+
* Get a string representation of the ASN.1 element.
667
+
* @returns {string} The string representation.
668
+
*/
669
+
toString() {
670
+
return this.typeName() + '@' + this.stream.pos + '[header:' + this.header + ',length:' + this.length + ',sub:' + ((this.sub === null) ? 'null' : this.sub.length) + ']';
350
671
}
351
-
return null;
352
-
};
353
-
ASN1.prototype.toString = function () {
354
-
return this.typeName() + "@" + this.stream.pos + "[header:" + this.header + ",length:" + this.length + ",sub:" + ((this.sub === null) ? 'null' : this.sub.length) + "]";
355
-
};
356
-
ASN1.prototype.toPrettyString = function (indent) {
357
-
if (indent === undefined) indent = '';
358
-
var s = indent + this.typeName() + " @" + this.stream.pos;
359
-
if (this.length >= 0)
360
-
s += "+";
361
-
s += this.length;
362
-
if (this.tag.tagConstructed)
363
-
s += " (constructed)";
364
-
else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null))
365
-
s += " (encapsulates)";
366
-
var content = this.content();
367
-
if (content)
368
-
s += ": " + content.replace(/\n/g, '|');
369
-
s += "\n";
370
-
if (this.sub !== null) {
371
-
indent += ' ';
372
-
for (var i = 0, max = this.sub.length; i < max; ++i)
373
-
s += this.sub[i].toPrettyString(indent);
672
+
673
+
/**
674
+
* Get a pretty string representation of the ASN.1 element.
675
+
* @param {string} indent - The indentation string.
676
+
* @returns {string} The pretty string representation.
677
+
*/
678
+
toPrettyString(indent) {
679
+
if (indent === undefined) indent = '';
680
+
let s = indent;
681
+
if (this.def) {
682
+
if (this.def.id)
683
+
s += this.def.id + ' ';
684
+
if (this.def.name && this.def.name != this.typeName().replace(/_/g, ' '))
685
+
s+= this.def.name + ' ';
686
+
if (this.def.mismatch)
687
+
s += '[?] ';
688
+
}
689
+
s += this.typeName() + ' @' + this.stream.pos;
690
+
if (this.length >= 0)
691
+
s += '+';
692
+
s += this.length;
693
+
if (this.tag.tagConstructed)
694
+
s += ' (constructed)';
695
+
else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null))
696
+
s += ' (encapsulates)';
697
+
let content = this.content();
698
+
if (content)
699
+
s += ': ' + content.replace(/\n/g, '|');
700
+
s += '\n';
701
+
if (this.sub !== null) {
702
+
indent += ' ';
703
+
for (let i = 0, max = this.sub.length; i < max; ++i)
704
+
s += this.sub[i].toPrettyString(indent);
705
+
}
706
+
return s;
707
+
}
708
+
709
+
/**
710
+
* Get the starting position of the element in the stream.
711
+
* @returns {number} The starting position.
712
+
*/
713
+
posStart() {
714
+
return this.stream.pos;
374
715
}
375
-
return s;
376
-
};
377
-
ASN1.prototype.posStart = function () {
378
-
return this.stream.pos;
379
-
};
380
-
ASN1.prototype.posContent = function () {
381
-
return this.stream.pos + this.header;
382
-
};
383
-
ASN1.prototype.posEnd = function () {
384
-
return this.stream.pos + this.header + Math.abs(this.length);
385
-
};
386
-
/** Position of the length. */
387
-
ASN1.prototype.posLen = function() {
388
-
return this.stream.pos + this.tagLen;
389
-
};
390
-
ASN1.prototype.toHexString = function () {
391
-
return this.stream.hexDump(this.posStart(), this.posEnd(), true);
392
-
};
393
-
ASN1.prototype.toB64String = function () {
394
-
return this.stream.b64Dump(this.posStart(), this.posEnd());
395
-
};
396
-
ASN1.decodeLength = function (stream) {
397
-
var buf = stream.get(),
398
-
len = buf & 0x7F;
399
-
if (len == buf)
400
-
return len;
401
-
if (len > 6) // no reason to use Int10, as it would be a huge buffer anyways
402
-
throw "Length over 48 bits not supported at position " + (stream.pos - 1);
403
-
if (len === 0)
404
-
return null; // undefined
405
-
buf = 0;
406
-
for (var i = 0; i < len; ++i)
407
-
buf = (buf * 256) + stream.get();
408
-
return buf;
409
-
};
410
-
function ASN1Tag(stream) {
411
-
var buf = stream.get();
412
-
this.tagClass = buf >> 6;
413
-
this.tagConstructed = ((buf & 0x20) !== 0);
414
-
this.tagNumber = buf & 0x1F;
415
-
if (this.tagNumber == 0x1F) { // long tag
416
-
var n = new Int10();
417
-
do {
418
-
buf = stream.get();
419
-
n.mulAdd(128, buf & 0x7F);
420
-
} while (buf & 0x80);
421
-
this.tagNumber = n.simplify();
716
+
717
+
/**
718
+
* Get the position of the content in the stream.
719
+
* @returns {number} The content position.
720
+
*/
721
+
posContent() {
722
+
return this.stream.pos + this.header;
422
723
}
423
-
}
424
-
ASN1Tag.prototype.isUniversal = function () {
425
-
return this.tagClass === 0x00;
426
-
};
427
-
ASN1Tag.prototype.isEOC = function () {
428
-
return this.tagClass === 0x00 && this.tagNumber === 0x00;
429
-
};
430
-
ASN1.decode = function (stream) {
431
-
if (!(stream instanceof Stream))
432
-
stream = new Stream(stream, 0);
433
-
var streamStart = new Stream(stream),
434
-
tag = new ASN1Tag(stream),
435
-
tagLen = stream.pos - streamStart.pos,
436
-
len = ASN1.decodeLength(stream),
437
-
start = stream.pos,
438
-
header = start - streamStart.pos,
439
-
sub = null,
440
-
getSub = function () {
441
-
sub = [];
442
-
if (len !== null) {
443
-
// definite length
444
-
var end = start + len;
445
-
if (end > stream.enc.length)
446
-
throw 'Container at offset ' + start + ' has a length of ' + len + ', which is past the end of the stream';
447
-
while (stream.pos < end)
448
-
sub[sub.length] = ASN1.decode(stream);
449
-
if (stream.pos != end)
450
-
throw 'Content size is not correct for container at offset ' + start;
451
-
} else {
452
-
// undefined length
453
-
try {
454
-
for (;;) {
455
-
var s = ASN1.decode(stream);
456
-
if (s.tag.isEOC())
457
-
break;
458
-
sub[sub.length] = s;
724
+
725
+
/**
726
+
* Get the ending position of the element in the stream.
727
+
* @returns {number} The ending position.
728
+
*/
729
+
posEnd() {
730
+
return this.stream.pos + this.header + Math.abs(this.length);
731
+
}
732
+
733
+
/**
734
+
* Get the position of the length in the stream.
735
+
* @returns {number} The length position.
736
+
*/
737
+
posLen() {
738
+
return this.stream.pos + this.tagLen;
739
+
}
740
+
741
+
/**
742
+
* Get a hexadecimal dump of the node.
743
+
* @param {string} [type='raw'] - The dump type: 'raw', 'byte', or 'dump'.
744
+
* @returns {string} The hexadecimal dump.
745
+
*/
746
+
toHexString(type = 'raw') {
747
+
return this.stream.hexDump(this.posStart(), this.posEnd(), type);
748
+
}
749
+
750
+
/**
751
+
* Get a base64url dump of the node (according to RFC 4648 section 5).
752
+
* @param {string} [type='url'] - The dump type: 'url' (section 5 without padding) or 'std' (section 4 with padding).
753
+
* @returns {string} The base64 encoded representation.
754
+
*/
755
+
toB64String(type = 'url') {
756
+
return this.stream.b64Dump(this.posStart(), this.posEnd(), type);
757
+
}
758
+
759
+
/**
760
+
* Decode the length field of an ASN.1 element.
761
+
* @param {Stream} stream - The stream to read from.
762
+
* @returns {number|null} The decoded length, or null for indefinite length.
763
+
* @throws {Error} If the length is invalid or exceeds 48 bits.
764
+
*/
765
+
static decodeLength(stream) {
766
+
const buf = stream.get(),
767
+
len = buf & 0x7F;
768
+
if (len == buf) // first bit was 0, short form
769
+
return len;
770
+
if (len === 0) // long form with length 0 is a special case
771
+
return null; // undefined length
772
+
if (len > 6) // no reason to use BigInt, as it would be a huge buffer anyways
773
+
throw new Error('Length over 48 bits not supported at position ' + (stream.pos - 1));
774
+
let value = 0;
775
+
for (let i = 0; i < len; ++i)
776
+
value = (value << 8) | stream.get();
777
+
return value;
778
+
}
779
+
780
+
/**
781
+
* Decode an ASN.1 element from a stream.
782
+
* @param {Stream|array|string} stream - The input data.
783
+
* @param {number} [offset=0] - The offset to start decoding from.
784
+
* @param {Function} [type=ASN1] - The class to instantiate.
785
+
* @returns {ASN1} The decoded ASN.1 element.
786
+
* @throws {Error} If the decoding fails.
787
+
*/
788
+
static decode(stream, offset, type = ASN1) {
789
+
if (!(type == ASN1 || type.prototype instanceof ASN1))
790
+
throw new Error('Must pass a class that extends ASN1');
791
+
if (!(stream instanceof Stream))
792
+
stream = new Stream(stream, offset || 0);
793
+
let streamStart = new Stream(stream),
794
+
tag = new ASN1Tag(stream),
795
+
tagLen = stream.pos - streamStart.pos,
796
+
len = ASN1.decodeLength(stream),
797
+
start = stream.pos,
798
+
header = start - streamStart.pos,
799
+
sub = null,
800
+
getSub = function () {
801
+
sub = [];
802
+
if (len !== null) {
803
+
// definite length
804
+
let end = start + len;
805
+
if (end > stream.enc.length)
806
+
throw new Error('Container at offset ' + start + ' has a length of ' + len + ', which is past the end of the stream');
807
+
while (stream.pos < end)
808
+
sub[sub.length] = type.decode(stream);
809
+
if (stream.pos != end)
810
+
throw new Error('Content size is not correct for container at offset ' + start);
811
+
} else {
812
+
// undefined length
813
+
try {
814
+
for (;;) {
815
+
let s = type.decode(stream);
816
+
if (s.tag.isEOC())
817
+
break;
818
+
sub[sub.length] = s;
819
+
}
820
+
len = start - stream.pos; // undefined lengths are represented as negative values
821
+
} catch (e) {
822
+
throw new Error('Exception while decoding undefined length content at offset ' + start + ': ' + e);
459
823
}
460
-
len = start - stream.pos; // undefined lengths are represented as negative values
461
-
} catch (e) {
462
-
throw 'Exception while decoding undefined length content at offset ' + start + ': ' + e;
824
+
}
825
+
};
826
+
if (tag.tagConstructed) {
827
+
// must have valid content
828
+
getSub();
829
+
} else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {
830
+
// sometimes BitString and OctetString are used to encapsulate ASN.1
831
+
try {
832
+
if (tag.tagNumber == 0x03)
833
+
if (stream.get() != 0)
834
+
throw new Error('BIT STRINGs with unused bits cannot encapsulate.');
835
+
getSub();
836
+
for (let s of sub) {
837
+
if (s.tag.isEOC())
838
+
throw new Error('EOC is not supposed to be actual content.');
839
+
try {
840
+
s.content();
841
+
} catch (e) {
842
+
throw new Error('Unable to parse content: ' + e);
843
+
}
463
844
}
845
+
} catch (ignore) {
846
+
// but silently ignore when they don't
847
+
sub = null;
848
+
//DEBUG console.log('Could not decode structure at ' + start + ':', e);
464
849
}
465
-
};
466
-
if (tag.tagConstructed) {
467
-
// must have valid content
468
-
getSub();
469
-
} else if (tag.isUniversal() && ((tag.tagNumber == 0x03) || (tag.tagNumber == 0x04))) {
470
-
// sometimes BitString and OctetString are used to encapsulate ASN.1
471
-
try {
472
-
if (tag.tagNumber == 0x03)
473
-
if (stream.get() != 0)
474
-
throw "BIT STRINGs with unused bits cannot encapsulate.";
475
-
getSub();
476
-
for (var i = 0; i < sub.length; ++i)
477
-
if (sub[i].tag.isEOC())
478
-
throw 'EOC is not supposed to be actual content.';
479
-
} catch (e) {
480
-
// but silently ignore when they don't
481
-
sub = null;
482
-
//DEBUG console.log('Could not decode structure at ' + start + ':', e);
483
850
}
851
+
if (sub === null) {
852
+
if (len === null)
853
+
throw new Error("We can't skip over an invalid tag with undefined length at offset " + start);
854
+
stream.pos = start + Math.abs(len);
855
+
}
856
+
return new type(streamStart, header, len, tag, tagLen, sub);
484
857
}
485
-
if (sub === null) {
486
-
if (len === null)
487
-
throw "We can't skip over an invalid tag with undefined length at offset " + start;
488
-
stream.pos = start + Math.abs(len);
489
-
}
490
-
return new ASN1(streamStart, header, len, tag, tagLen, sub);
491
-
};
492
858
493
-
// export globals
494
-
if (typeof module !== 'undefined') { module.exports = ASN1; } else { window.ASN1 = ASN1; }
495
-
})();
859
+
}
+80
-77
base64.js
+80
-77
base64.js
···
1
1
// Base64 JavaScript decoder
2
-
// Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
2
+
// Copyright (c) 2008 Lapo Luchini <lapo@lapo.it>
3
3
4
4
// Permission to use, copy, modify, and/or distribute this software for any
5
5
// purpose with or without fee is hereby granted, provided that the above
6
6
// copyright notice and this permission notice appear in all copies.
7
-
//
7
+
//
8
8
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
9
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
10
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
···
13
13
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
16
-
(function (undefined) {
17
-
"use strict";
16
+
const
17
+
haveU8 = (typeof Uint8Array == 'function');
18
18
19
-
var Base64 = {},
20
-
decoder, // populated on first usage
21
-
haveU8 = ('Uint8Array' in (typeof window == 'object' ? window : global));
19
+
let decoder; // populated on first usage
20
+
21
+
export class Base64 {
22
22
23
-
Base64.decode = function (a) {
24
-
var i;
25
-
if (decoder === undefined) {
26
-
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
27
-
ignore = "= \f\n\r\t\u00A0\u2028\u2029";
28
-
decoder = [];
29
-
for (i = 0; i < 64; ++i)
30
-
decoder[b64.charAt(i)] = i;
31
-
for (i = 0; i < ignore.length; ++i)
32
-
decoder[ignore.charAt(i)] = -1;
33
-
// RFC 3548 URL & file safe encoding
34
-
decoder['-'] = decoder['+'];
35
-
decoder['_'] = decoder['/'];
36
-
}
37
-
var out = haveU8 ? new Uint8Array(a.length * 3 >> 2) : [];
38
-
var bits = 0, char_count = 0, len = 0;
39
-
for (i = 0; i < a.length; ++i) {
40
-
var c = a.charAt(i);
41
-
if (c == '=')
23
+
static decode(a) {
24
+
let isString = (typeof a == 'string');
25
+
let i;
26
+
if (decoder === undefined) {
27
+
let b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',
28
+
ignore = '= \f\n\r\t\u00A0\u2028\u2029';
29
+
decoder = [];
30
+
for (i = 0; i < 64; ++i)
31
+
decoder[b64.charCodeAt(i)] = i;
32
+
for (i = 0; i < ignore.length; ++i)
33
+
decoder[ignore.charCodeAt(i)] = -1;
34
+
// also support decoding Base64url (RFC 4648 section 5)
35
+
decoder['-'.charCodeAt(0)] = decoder['+'.charCodeAt(0)];
36
+
decoder['_'.charCodeAt(0)] = decoder['/'.charCodeAt(0)];
37
+
}
38
+
let out = haveU8 ? new Uint8Array(a.length * 3 >> 2) : [];
39
+
let bits = 0, char_count = 0, len = 0;
40
+
for (i = 0; i < a.length; ++i) {
41
+
let c = isString ? a.charCodeAt(i) : a[i];
42
+
if (c == 61) // '='.charCodeAt(0)
43
+
break;
44
+
c = decoder[c];
45
+
if (c == -1)
46
+
continue;
47
+
if (c === undefined)
48
+
throw 'Illegal character at offset ' + i;
49
+
bits |= c;
50
+
if (++char_count >= 4) {
51
+
out[len++] = (bits >> 16);
52
+
out[len++] = (bits >> 8) & 0xFF;
53
+
out[len++] = bits & 0xFF;
54
+
bits = 0;
55
+
char_count = 0;
56
+
} else {
57
+
bits <<= 6;
58
+
}
59
+
}
60
+
switch (char_count) {
61
+
case 1:
62
+
throw 'Base64 encoding incomplete: at least 2 bits missing';
63
+
case 2:
64
+
out[len++] = (bits >> 10);
42
65
break;
43
-
c = decoder[c];
44
-
if (c == -1)
45
-
continue;
46
-
if (c === undefined)
47
-
throw 'Illegal character at offset ' + i;
48
-
bits |= c;
49
-
if (++char_count >= 4) {
66
+
case 3:
50
67
out[len++] = (bits >> 16);
51
68
out[len++] = (bits >> 8) & 0xFF;
52
-
out[len++] = bits & 0xFF;
53
-
bits = 0;
54
-
char_count = 0;
55
-
} else {
56
-
bits <<= 6;
69
+
break;
57
70
}
71
+
if (haveU8 && out.length > len) // in case it was originally longer because of ignored characters
72
+
out = out.subarray(0, len);
73
+
return out;
58
74
}
59
-
switch (char_count) {
60
-
case 1:
61
-
throw "Base64 encoding incomplete: at least 2 bits missing";
62
-
case 2:
63
-
out[len++] = (bits >> 10);
64
-
break;
65
-
case 3:
66
-
out[len++] = (bits >> 16);
67
-
out[len++] = (bits >> 8) & 0xFF;
68
-
break;
69
-
}
70
-
if (haveU8 && out.length > len) // in case it was originally longer because of ignored characters
71
-
out = out.subarray(0, len);
72
-
return out;
73
-
};
74
75
75
-
Base64.pretty = function (str) {
76
-
// fix padding
77
-
if (str.length % 4 > 0)
78
-
str = (str + '===').slice(0, str.length + str.length % 4);
79
-
// convert RFC 3548 to standard Base64
80
-
str = str.replace(/-/g, '+').replace(/_/g, '/');
81
-
// 80 column width
82
-
return str.replace(/(.{80})/g, '$1\n');
83
-
};
76
+
static pretty(str) {
77
+
// fix padding
78
+
let pad = 4 - str.length % 4;
79
+
if (pad < 4)
80
+
str += '==='.slice(0, pad);
81
+
// convert Base64url (RFC 4648 section 5) to standard Base64 (RFC 4648 section 4)
82
+
str = str.replace(/-/g, '+').replace(/_/g, '/');
83
+
// 80 column width
84
+
return str.replace(/.{80}/g, '$&\n');
85
+
}
84
86
85
-
Base64.re = /-----BEGIN [^-]+-----([A-Za-z0-9+\/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+\/=\s]+)====/;
86
-
Base64.unarmor = function (a) {
87
-
var m = Base64.re.exec(a);
88
-
if (m) {
89
-
if (m[1])
90
-
a = m[1];
91
-
else if (m[2])
92
-
a = m[2];
93
-
else
94
-
throw "RegExp out of sync";
87
+
static unarmor(a) {
88
+
let m = Base64.re.exec(a);
89
+
if (m) {
90
+
if (m[1])
91
+
a = m[1];
92
+
else if (m[2])
93
+
a = m[2];
94
+
else if (m[3])
95
+
a = m[3];
96
+
else
97
+
throw 'RegExp out of sync';
98
+
}
99
+
return Base64.decode(a);
95
100
}
96
-
return Base64.decode(a);
97
-
};
101
+
102
+
}
98
103
99
-
// export globals
100
-
if (typeof module !== 'undefined') { module.exports = Base64; } else { window.Base64 = Base64; }
101
-
})();
104
+
Base64.re = /-----BEGIN [^-]+-----([A-Za-z0-9+/=\s]+)-----END [^-]+-----|begin-base64[^\n]+\n([A-Za-z0-9+/=\s]+)====|^([A-Za-z0-9+/=\s]+)$/;
+2
-2
check.sh
+2
-2
check.sh
+53
context.js
+53
context.js
···
1
+
const
2
+
id = (elem) => document.getElementById(elem),
3
+
contextMenu = id('contextmenu'),
4
+
btnCopyHex = id('btnCopyHex'),
5
+
btnCopyB64 = id('btnCopyB64'),
6
+
btnCopyTree = id('btnCopyTree'),
7
+
btnCopyValue = id('btnCopyValue');
8
+
9
+
export function bindContextMenu(node) {
10
+
const type = node.asn1.typeName();
11
+
const valueEnabled = type != 'SET' && type != 'SEQUENCE';
12
+
node.onclick = function (event) {
13
+
// do not show the menu in case of clicking the icon
14
+
if (event.srcElement.nodeName != 'SPAN') return;
15
+
contextMenu.style.left = event.pageX + 'px';
16
+
contextMenu.style.top = event.pageY + 'px';
17
+
contextMenu.style.visibility = 'visible';
18
+
contextMenu.node = this;
19
+
btnCopyValue.style.display = valueEnabled ? 'block' : 'none';
20
+
event.preventDefault();
21
+
event.stopPropagation();
22
+
};
23
+
}
24
+
25
+
function close(event) {
26
+
contextMenu.style.visibility = 'hidden';
27
+
event.stopPropagation();
28
+
}
29
+
30
+
contextMenu.onmouseleave = close;
31
+
32
+
btnCopyHex.onclick = function (event) {
33
+
navigator.clipboard.writeText(contextMenu.node.asn1.toHexString('byte'));
34
+
close(event);
35
+
};
36
+
37
+
btnCopyB64.onclick = function (event) {
38
+
event.stopPropagation();
39
+
navigator.clipboard.writeText(contextMenu.node.asn1.toB64String());
40
+
close(event);
41
+
};
42
+
43
+
btnCopyTree.onclick = function (event) {
44
+
event.stopPropagation();
45
+
navigator.clipboard.writeText(contextMenu.node.asn1.toPrettyString());
46
+
close(event);
47
+
};
48
+
49
+
btnCopyValue.onclick = function (event) {
50
+
event.stopPropagation();
51
+
navigator.clipboard.writeText(contextMenu.node.asn1.content());
52
+
close(event);
53
+
};
+144
defs.js
+144
defs.js
···
1
+
// ASN.1 RFC definitions matcher
2
+
// Copyright (c) 2023 Lapo Luchini <lapo@lapo.it>
3
+
4
+
// Permission to use, copy, modify, and/or distribute this software for any
5
+
// purpose with or without fee is hereby granted, provided that the above
6
+
// copyright notice and this permission notice appear in all copies.
7
+
//
8
+
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
+
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
+
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
+
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
+
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
+
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
+
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
+
16
+
import { rfcdef } from './rfcdef.js';
17
+
18
+
function translate(def, tn, stats) {
19
+
if (def?.type == 'tag' && !def.explicit)
20
+
// def.type = def.content[0].type;
21
+
def = def.content[0].type;
22
+
if (def?.definedBy)
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);
30
+
def.type = Defs.searchType(name).type;
31
+
}
32
+
if (def?.name == 'CHOICE' || def?.type?.name == 'CHOICE') {
33
+
for (let c of def.content ?? def.type.content) {
34
+
if (tn != c.type.name && tn != c.name)
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
+
}
43
+
}
44
+
}
45
+
const id = def?.id;
46
+
if (id)
47
+
def = Object.assign({}, def, { id });
48
+
return def ?? { type: {} };
49
+
}
50
+
51
+
function firstUpper(s) {
52
+
return s[0].toUpperCase() + s.slice(1);
53
+
}
54
+
55
+
export class Defs {
56
+
57
+
static moduleAndType(mod, name) {
58
+
return Object.assign({ module: { oid: mod.oid, name: mod.name, source: mod.source } }, mod.types[name]);
59
+
}
60
+
61
+
static searchType(name) {
62
+
for (const mod of Object.values(rfcdef))
63
+
if (name in mod.types) {
64
+
// console.log(name + ' found in ' + r.name);
65
+
// return r.types[name];
66
+
return Defs.moduleAndType(mod, name);
67
+
}
68
+
throw new Error('Type not found: ' + name);
69
+
}
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) {
77
+
// if (def.id || def.name) ++stats.recognized;
78
+
if (tn == def.type.name || tn == def.name || def.name == 'ANY')
79
+
++stats.recognized;
80
+
else if (def.name)
81
+
def = Object.assign({ mismatch: 1 }, def);
82
+
value.def = def;
83
+
}
84
+
if (value.sub !== null) {
85
+
if (def?.type?.type)
86
+
def = def.type;
87
+
let j = def?.content ? 0 : -1;
88
+
for (const subval of value.sub) {
89
+
let type;
90
+
if (j >= 0) {
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
104
+
if (t2.type.name == 'ANY') break; // good enough
105
+
}
106
+
if (type.name == tn) break; // exact match
107
+
if (type.name == 'ANY') break; // good enough
108
+
if (!('optional' in type || 'default' in type)) break;
109
+
}
110
+
if (type?.type == 'builtin' || type?.type == 'defined') {
111
+
let v = subval.content();
112
+
if (typeof v == 'string')
113
+
v = v.split(/\n/);
114
+
stats.defs[type.id] = v;
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
+
}
122
+
Defs.match(subval, type, stats);
123
+
}
124
+
}
125
+
return stats;
126
+
}
127
+
128
+
}
129
+
130
+
Defs.RFC = rfcdef;
131
+
132
+
Defs.commonTypes = [
133
+
[ 'X.509 certificate', '1.3.6.1.5.5.7.0.18', 'Certificate' ],
134
+
[ 'X.509 public key info', '1.3.6.1.5.5.7.0.18', 'SubjectPublicKeyInfo' ],
135
+
[ 'X.509 certificate revocation list', '1.3.6.1.5.5.7.0.18', 'CertificateList' ],
136
+
[ 'CMS / PKCS#7 envelope', '1.2.840.113549.1.9.16.0.14', 'ContentInfo' ],
137
+
[ 'PKCS#1 RSA private key', '1.2.840.113549.1.1.0.1', 'RSAPrivateKey' ],
138
+
[ 'PKCS#8 encrypted private key', '1.2.840.113549.1.8.1.1', 'EncryptedPrivateKeyInfo' ],
139
+
[ 'PKCS#8 private key', '1.2.840.113549.1.8.1.1', 'PrivateKeyInfo' ],
140
+
[ 'PKCS#10 certification request', '1.2.840.113549.1.10.1.1', 'CertificationRequest' ],
141
+
[ 'CMP PKI Message', '1.3.6.1.5.5.7.0.16', 'PKIMessage' ],
142
+
[ 'LDAP Message', '1.3.6.1.1.18', 'LDAPMessage' ],
143
+
[ 'Time Stamp Request', '1.3.6.1.5.5.7.0.13', 'TimeStampReq' ],
144
+
].map(arr => ({ description: arr[0], ...Defs.moduleAndType(rfcdef[arr[1]], arr[2]) }));
+205
-161
dom.js
+205
-161
dom.js
···
1
1
// ASN.1 JavaScript decoder
2
-
// Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
2
+
// Copyright (c) 2008 Lapo Luchini <lapo@lapo.it>
3
3
4
4
// Permission to use, copy, modify, and/or distribute this software for any
5
5
// purpose with or without fee is hereby granted, provided that the above
6
6
// copyright notice and this permission notice appear in all copies.
7
-
//
7
+
//
8
8
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
9
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
10
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
···
13
13
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
16
-
(function (undefined) {
17
-
"use strict";
16
+
import { ASN1 } from './asn1.js';
17
+
import { oids } from './oids.js';
18
+
import { bindContextMenu } from './context.js';
18
19
19
-
var ASN1 = (typeof module !== 'undefined') ? require('./asn1.js') : window.ASN1,
20
-
oids = (typeof module !== 'undefined') ? require('./oids.js') : window.oids,
20
+
const
21
21
lineLength = 80,
22
22
contentLength = 8 * lineLength,
23
23
DOM = {
24
-
ellipsis: "\u2026",
25
-
tag: function (tagName, className) {
26
-
var t = document.createElement(tagName);
27
-
t.className = className;
24
+
ellipsis: '\u2026',
25
+
tag: function (tagName, className, text) {
26
+
let t = document.createElement(tagName);
27
+
if (className) t.className = className;
28
+
if (text) t.innerText = text;
28
29
return t;
29
30
},
30
31
text: function (str) {
31
32
return document.createTextNode(str);
32
33
},
33
34
space: function () {
34
-
var t = document.createElement('span');
35
-
t.className = 'spaces';
36
-
t.innerHTML = ' ';
37
-
return t;
35
+
return DOM.tag('span', 'spaces', ' ');
38
36
},
39
37
breakLines: function (str, length) {
40
-
var lines = str.split(/\r?\n/),
38
+
let lines = str.split(/\r?\n/),
41
39
o = '';
42
-
for (var i = 0; i < lines.length; ++i) {
43
-
var line = lines[i];
44
-
if (i > 0) o += "\n";
40
+
for (let i = 0; i < lines.length; ++i) {
41
+
let line = lines[i];
42
+
if (i > 0) o += '\n';
45
43
while (line.length > length) {
46
44
o += line.substring(0, length);
47
-
o += "\n";
45
+
o += '\n';
48
46
line = line.substring(length);
49
47
}
50
48
o += line;
51
49
}
52
50
return o;
53
-
}
51
+
},
54
52
};
55
53
56
-
ASN1.prototype.toDOM = function (spaces) {
57
-
spaces = spaces || '';
58
-
var isOID = (typeof oids === 'object') && (this.tag.isUniversal() && (this.tag.tagNumber == 0x06));
59
-
var node = DOM.tag("div", "node");
60
-
node.asn1 = this;
61
-
var head = DOM.tag("div", "head");
62
-
head.innerHTML = "<span class='spaces'>" + spaces + "</span>" + this.typeName().replace(/_/g, " ");
63
-
var content = this.content(contentLength);
64
-
if (content !== null) {
65
-
var preview = DOM.tag("span", "preview"),
66
-
shortContent;
67
-
if (isOID)
68
-
content = content.split('\n', 1)[0];
69
-
shortContent = (content.length > lineLength) ? content.substring(0, lineLength) + DOM.ellipsis : content;
70
-
preview.appendChild(DOM.space());
71
-
preview.appendChild(DOM.text(shortContent));
72
-
if (isOID) {
73
-
var oid = oids[content];
74
-
if (oid) {
75
-
if (oid.d) {
76
-
preview.appendChild(DOM.space());
77
-
var oidd = DOM.tag("span", "oid description");
78
-
oidd.appendChild(DOM.text(oid.d));
79
-
preview.appendChild(oidd);
80
-
}
81
-
if (oid.c) {
82
-
preview.appendChild(DOM.space());
83
-
var oidc = DOM.tag("span", "oid comment");
84
-
oidc.appendChild(DOM.text("(" + oid.c + ")"));
85
-
preview.appendChild(oidc);
54
+
export class ASN1DOM extends ASN1 {
55
+
56
+
toDOM(spaces) {
57
+
spaces = spaces || '';
58
+
let isOID = (typeof oids === 'object') && (this.tag.isUniversal() && (this.tag.tagNumber == 0x06) || (this.tag.tagNumber == 0x0D));
59
+
let node = DOM.tag('li');
60
+
node.asn1 = this;
61
+
let head = DOM.tag('span', 'head');
62
+
const typeName = this.typeName().replace(/_/g, ' ');
63
+
if (this.def) {
64
+
if (this.def.id) {
65
+
head.appendChild(DOM.tag('span', 'name id', this.def.id));
66
+
head.appendChild(DOM.space());
67
+
}
68
+
if (this.def.name && this.def.name != typeName) {
69
+
head.appendChild(DOM.tag('span', 'name type', this.def.name));
70
+
head.appendChild(DOM.space());
71
+
}
72
+
if (this.def.mismatch) {
73
+
head.appendChild(DOM.tag('span', 'name type', '[?]'));
74
+
head.appendChild(DOM.space());
75
+
}
76
+
}
77
+
head.appendChild(DOM.text(typeName));
78
+
let content;
79
+
try {
80
+
content = this.content(contentLength);
81
+
} catch (e) {
82
+
content = 'Cannot decode: ' + e;
83
+
}
84
+
let oid;
85
+
if (content !== null) {
86
+
let preview = DOM.tag('span', 'preview'),
87
+
shortContent;
88
+
if (isOID)
89
+
content = content.split('\n', 1)[0];
90
+
shortContent = (content.length > lineLength) ? content.substring(0, lineLength) + DOM.ellipsis : content;
91
+
preview.appendChild(DOM.space());
92
+
preview.appendChild(DOM.text(shortContent));
93
+
if (isOID) {
94
+
oid = oids[content];
95
+
if (oid) {
96
+
if (oid.d) {
97
+
preview.appendChild(DOM.space());
98
+
let oidd = DOM.tag('span', 'oid description', oid.d);
99
+
preview.appendChild(oidd);
100
+
}
101
+
if (oid.c) {
102
+
preview.appendChild(DOM.space());
103
+
let oidc = DOM.tag('span', 'oid comment', '(' + oid.c + ')');
104
+
preview.appendChild(oidc);
105
+
}
86
106
}
87
107
}
108
+
head.appendChild(preview);
109
+
content = DOM.breakLines(content, lineLength);
110
+
content = content.replace(/</g, '<');
111
+
content = content.replace(/\n/g, '<br>');
88
112
}
89
-
head.appendChild(preview);
90
-
content = DOM.breakLines(content, lineLength);
91
-
content = content.replace(/</g, "<");
92
-
content = content.replace(/\n/g, "<br>");
93
-
}
94
-
node.appendChild(head);
95
-
this.node = node;
96
-
this.head = head;
97
-
var value = DOM.tag("div", "value");
98
-
var s = "Offset: " + this.stream.pos + "<br>";
99
-
s += "Length: " + this.header + "+";
100
-
if (this.length >= 0)
101
-
s += this.length;
102
-
else
103
-
s += (-this.length) + " (undefined)";
104
-
if (this.tag.tagConstructed)
105
-
s += "<br>(constructed)";
106
-
else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null))
107
-
s += "<br>(encapsulates)";
108
-
//TODO if (this.tag.isUniversal() && this.tag.tagNumber == 0x03) s += "Unused bits: "
109
-
if (content !== null) {
110
-
s += "<br>Value:<br><b>" + content + "</b>";
111
-
if (isOID && oid) {
112
-
if (oid.d) s += "<br>" + oid.d;
113
-
if (oid.c) s += "<br>" + oid.c;
114
-
if (oid.w) s += "<br>(warning!)";
113
+
// add the li and details section for this node
114
+
let contentNode;
115
+
let childNode;
116
+
if (this.sub !== null) {
117
+
let details = DOM.tag('details');
118
+
details.setAttribute('open', '');
119
+
node.appendChild(details);
120
+
let summary = DOM.tag('summary', 'node');
121
+
details.appendChild(summary);
122
+
summary.appendChild(head);
123
+
contentNode = summary;
124
+
childNode = details;
125
+
} else {
126
+
contentNode = node;
127
+
contentNode.classList.add('node');
128
+
contentNode.appendChild(head);
115
129
}
116
-
}
117
-
value.innerHTML = s;
118
-
node.appendChild(value);
119
-
var sub = DOM.tag("div", "sub");
120
-
if (this.sub !== null) {
121
-
spaces += '\xA0 ';
122
-
for (var i = 0, max = this.sub.length; i < max; ++i)
123
-
sub.appendChild(this.sub[i].toDOM(spaces));
124
-
}
125
-
node.appendChild(sub);
126
-
head.onclick = function () {
127
-
node.className = (node.className == "node collapsed") ? "node" : "node collapsed";
128
-
};
129
-
return node;
130
-
};
131
-
ASN1.prototype.fakeHover = function (current) {
132
-
this.node.className += " hover";
133
-
if (current)
134
-
this.head.className += " hover";
135
-
};
136
-
ASN1.prototype.fakeOut = function (current) {
137
-
var re = / ?hover/;
138
-
this.node.className = this.node.className.replace(re, "");
139
-
if (current)
140
-
this.head.className = this.head.className.replace(re, "");
141
-
};
142
-
ASN1.prototype.toHexDOM_sub = function (node, className, stream, start, end) {
143
-
if (start >= end)
144
-
return;
145
-
var sub = DOM.tag("span", className);
146
-
sub.appendChild(DOM.text(
147
-
stream.hexDump(start, end)));
148
-
node.appendChild(sub);
149
-
};
150
-
ASN1.prototype.toHexDOM = function (root) {
151
-
var node = DOM.tag("span", "hex");
152
-
if (root === undefined) root = node;
153
-
this.head.hexNode = node;
154
-
this.head.onmouseover = function () { this.hexNode.className = "hexCurrent"; };
155
-
this.head.onmouseout = function () { this.hexNode.className = "hex"; };
156
-
node.asn1 = this;
157
-
node.onmouseover = function () {
158
-
var current = !root.selected;
159
-
if (current) {
160
-
root.selected = this.asn1;
161
-
this.className = "hexCurrent";
130
+
this.node = contentNode;
131
+
this.head = head;
132
+
let value = DOM.tag('div', 'value');
133
+
let s = 'Offset: ' + this.stream.pos + '<br>';
134
+
s += 'Length: ' + this.header + '+';
135
+
if (this.length >= 0)
136
+
s += this.length;
137
+
else
138
+
s += (-this.length) + ' (undefined)';
139
+
if (this.tag.tagConstructed)
140
+
s += '<br>(constructed)';
141
+
else if ((this.tag.isUniversal() && ((this.tag.tagNumber == 0x03) || (this.tag.tagNumber == 0x04))) && (this.sub !== null))
142
+
s += '<br>(encapsulates)';
143
+
//TODO if (this.tag.isUniversal() && this.tag.tagNumber == 0x03) s += "Unused bits: "
144
+
if (content !== null) {
145
+
s += '<br>Value:<br><b>' + content + '</b>';
146
+
if (isOID && oid) {
147
+
if (oid.d) s += '<br>' + oid.d;
148
+
if (oid.c) s += '<br>' + oid.c;
149
+
if (oid.w) s += '<br>(warning!)';
150
+
}
162
151
}
163
-
this.asn1.fakeHover(current);
164
-
};
165
-
node.onmouseout = function () {
166
-
var current = (root.selected == this.asn1);
167
-
this.asn1.fakeOut(current);
168
-
if (current) {
169
-
root.selected = null;
170
-
this.className = "hex";
152
+
value.innerHTML = s;
153
+
contentNode.appendChild(value);
154
+
if (this.sub !== null) {
155
+
let sub = DOM.tag('ul');
156
+
childNode.appendChild(sub);
157
+
spaces += '\xA0 ';
158
+
for (let i = 0, max = this.sub.length; i < max; ++i)
159
+
sub.appendChild(this.sub[i].toDOM(spaces));
171
160
}
172
-
};
173
-
this.toHexDOM_sub(node, "tag", this.stream, this.posStart(), this.posLen());
174
-
this.toHexDOM_sub(node, (this.length >= 0) ? "dlen" : "ulen", this.stream, this.posLen(), this.posContent());
175
-
if (this.sub === null) {
176
-
var start = this.posContent();
177
-
var end = this.posEnd();
178
-
if (end - start < 10 * 16)
179
-
node.appendChild(DOM.text(
180
-
this.stream.hexDump(start, end)));
181
-
else {
182
-
var end1 = start + 5 * 16 - (start & 0xF);
183
-
var start2 = end - 16 - (end & 0xF);
184
-
node.appendChild(DOM.text(
185
-
this.stream.hexDump(start, end1)));
186
-
var sub = DOM.tag("span", "skip");
187
-
sub.appendChild(DOM.text("\u2026 skipping " + (start2 - end1) + " bytes \u2026\n"));
188
-
node.appendChild(sub);
189
-
node.appendChild(DOM.text(
190
-
this.stream.hexDump(start2, end)));
161
+
bindContextMenu(node);
162
+
return node;
163
+
}
164
+
fakeHover(current) {
165
+
this.node.classList.add('hover');
166
+
if (current)
167
+
this.head.classList.add('hover');
168
+
}
169
+
fakeOut(current) {
170
+
this.node.classList.remove('hover');
171
+
if (current)
172
+
this.head.classList.remove('hover');
173
+
}
174
+
toHexDOM_sub(node, className, stream, start, end) {
175
+
if (start >= end)
176
+
return;
177
+
let sub = DOM.tag('span', className, stream.hexDump(start, end));
178
+
node.appendChild(sub);
179
+
}
180
+
toHexDOM(root, trim=true) {
181
+
let node = DOM.tag('span', 'hex');
182
+
if (root === undefined) root = node;
183
+
this.head.hexNode = node;
184
+
this.head.onmouseover = function () { this.hexNode.className = 'hexCurrent'; };
185
+
this.head.onmouseout = function () { this.hexNode.className = 'hex'; };
186
+
node.asn1 = this;
187
+
node.onmouseover = function (event) {
188
+
let current = !root.selected;
189
+
if (current) {
190
+
root.selected = this.asn1;
191
+
this.className = 'hexCurrent';
192
+
}
193
+
this.asn1.fakeHover(current);
194
+
event.stopPropagation();
195
+
};
196
+
node.onmouseout = function () {
197
+
let current = (root.selected == this.asn1);
198
+
this.asn1.fakeOut(current);
199
+
if (current) {
200
+
root.selected = null;
201
+
this.className = 'hex';
202
+
}
203
+
};
204
+
bindContextMenu(node);
205
+
if (root == node) {
206
+
let lineStart = this.posStart() & 0xF;
207
+
if (lineStart != 0) {
208
+
let skip = DOM.tag('span', 'skip');
209
+
let skipStr = '';
210
+
for (let j = lineStart; j > 0; --j)
211
+
skipStr += ' ';
212
+
if (lineStart >= 8)
213
+
skipStr += ' ';
214
+
skip.innerText = skipStr;
215
+
node.appendChild(skip);
216
+
}
191
217
}
192
-
} else if (this.sub.length > 0) {
193
-
var first = this.sub[0];
194
-
var last = this.sub[this.sub.length - 1];
195
-
this.toHexDOM_sub(node, "intro", this.stream, this.posContent(), first.posStart());
196
-
for (var i = 0, max = this.sub.length; i < max; ++i)
197
-
node.appendChild(this.sub[i].toHexDOM(root));
198
-
this.toHexDOM_sub(node, "outro", this.stream, last.posEnd(), this.posEnd());
199
-
} else
200
-
this.toHexDOM_sub(node, "outro", this.stream, this.posContent(), this.posEnd());
201
-
return node;
202
-
};
218
+
this.toHexDOM_sub(node, 'tag', this.stream, this.posStart(), this.posLen());
219
+
this.toHexDOM_sub(node, (this.length >= 0) ? 'dlen' : 'ulen', this.stream, this.posLen(), this.posContent());
220
+
if (this.sub === null) {
221
+
let start = this.posContent();
222
+
let end = this.posEnd();
223
+
if (!trim || end - start < 10 * 16)
224
+
node.appendChild(DOM.text(
225
+
this.stream.hexDump(start, end)));
226
+
else {
227
+
let end1 = start + 5 * 16 - (start & 0xF);
228
+
let start2 = end - 16 - (end & 0xF);
229
+
node.appendChild(DOM.text(this.stream.hexDump(start, end1)));
230
+
node.appendChild(DOM.tag('span', 'skip', '\u2026 skipping ' + (start2 - end1) + ' bytes \u2026\n'));
231
+
node.appendChild(DOM.text(this.stream.hexDump(start2, end)));
232
+
}
233
+
} else if (this.sub.length > 0) {
234
+
let first = this.sub[0];
235
+
let last = this.sub[this.sub.length - 1];
236
+
this.toHexDOM_sub(node, 'intro', this.stream, this.posContent(), first.posStart());
237
+
for (let i = 0, max = this.sub.length; i < max; ++i)
238
+
node.appendChild(this.sub[i].toHexDOM(root, trim));
239
+
this.toHexDOM_sub(node, 'outro', this.stream, last.posEnd(), this.posEnd());
240
+
} else
241
+
this.toHexDOM_sub(node, 'outro', this.stream, this.posContent(), this.posEnd());
242
+
return node;
243
+
}
244
+
static decode(stream, offset) {
245
+
return ASN1.decode(stream, offset, ASN1DOM);
246
+
}
203
247
204
-
})();
248
+
}
+83
dumpASN1.js
+83
dumpASN1.js
···
1
+
#!/usr/bin/env node
2
+
3
+
// usage:
4
+
// ./dumpASN1.js filename
5
+
// ./dumpASN1.js data:base64,MDMCAQFjLgQACgEACgEAAgEAAgEAAQEAoA+jDQQFTnRWZXIEBAEAAAAwCgQITmV0bG9nb24===
6
+
7
+
import * as fs from 'node:fs';
8
+
import { Base64 } from './base64.js';
9
+
import { ASN1 } from './asn1.js';
10
+
import { Defs } from './defs.js';
11
+
12
+
const
13
+
colYellow = '\x1b[33m',
14
+
colBlue = '\x1b[34m',
15
+
colReset = '\x1b[0m',
16
+
reDataURI = /^data:(?:[a-z-]+[/][a-z.+-]+;)?base64,([A-Za-z0-9+/=\s]+)$/;
17
+
18
+
function print(value, indent) {
19
+
if (indent === undefined) indent = '';
20
+
const def = value.def;
21
+
let name = '';
22
+
if (def?.type) {
23
+
if (def.id) name += colBlue + def.id + colReset;
24
+
if (typeof def.type == 'object' && def.name) name = (name ? name + ' ' : '') + def.name;
25
+
if (def.mismatch) name = (name ? name + ' ' : '') + '[?]';
26
+
if (name) name += ' ';
27
+
}
28
+
let s = indent + name + colYellow + value.typeName() + colReset + ' @' + value.stream.pos;
29
+
if (value.length >= 0)
30
+
s += '+';
31
+
s += value.length;
32
+
if (value.tag.tagConstructed)
33
+
s += ' (constructed)';
34
+
else if ((value.tag.isUniversal() && ((value.tag.tagNumber == 0x03) || (value.tag.tagNumber == 0x04))) && (value.sub !== null))
35
+
s += ' (encapsulates)';
36
+
let content = value.content();
37
+
if (content)
38
+
s += ': ' + content.replace(/\n/g, '|');
39
+
s += '\n';
40
+
if (value.sub !== null) {
41
+
indent += ' ';
42
+
for (const subval of value.sub)
43
+
s += print(subval, indent);
44
+
}
45
+
return s;
46
+
}
47
+
48
+
const filename = process.argv[2];
49
+
const match = reDataURI.exec(filename);
50
+
let content = match
51
+
? Buffer.from(match[1])
52
+
: fs.readFileSync(filename);
53
+
try { // try PEM first
54
+
content = Base64.unarmor(content);
55
+
} catch (ignore) { // try DER/BER then
56
+
}
57
+
let result = ASN1.decode(content);
58
+
content = null;
59
+
const t0 = performance.now();
60
+
if (process.argv.length == 5) {
61
+
Defs.match(result, Defs.moduleAndType(Defs.RFC[process.argv[3]], process.argv[4]));
62
+
} else {
63
+
const types = Defs.commonTypes
64
+
.map(type => {
65
+
const stats = Defs.match(result, type);
66
+
return { type, match: stats.recognized / stats.total };
67
+
})
68
+
.sort((a, b) => b.match - a.match);
69
+
const t1 = performance.now();
70
+
console.log('Parsed in ' + (t1 - t0).toFixed(2) + ' ms; possible types:');
71
+
for (const t of types)
72
+
console.log((t.match * 100).toFixed(2).padStart(6) + '% ' + t.type.description);
73
+
Defs.match(result, types[0].type);
74
+
// const stats = Defs.match(result, types[0].type);
75
+
// console.log('Stats:', stats);
76
+
console.log('Parsed as:', result.def);
77
+
// const type = searchType(process.argv[2]);
78
+
// const stats = applyDef(result, type);
79
+
}
80
+
console.log(print(result));
81
+
// console.log('Stats:', (stats.recognized * 100 / stats.total).toFixed(2) + '%');
82
+
// // print(result, searchType(process.argv[2]), stats);
83
+
// // console.log('Defs:', stats.defs);
+63
eslint.config.js
+63
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: 2020,
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: ['oids.js'],
33
+
rules: {
34
+
indent: 'off',
35
+
quotes: ['warn', 'double'],
36
+
},
37
+
},
38
+
{
39
+
files: ['tags.js', 'rfcdef.js'],
40
+
rules: {
41
+
indent: [
42
+
'error',
43
+
2,
44
+
{
45
+
ignoredNodes: [
46
+
"Program > ExpressionStatement > CallExpression > FunctionExpression > BlockStatement > ExpressionStatement[directive='use strict']:first-child",
47
+
],
48
+
},
49
+
],
50
+
'comma-dangle': 'off',
51
+
quotes: ['warn', 'double'],
52
+
},
53
+
},
54
+
{
55
+
files: ['test.js', 'parseRFC.js', 'dumpASN1.js', 'testDefs.js', 'eslint.config.js'],
56
+
languageOptions: {
57
+
ecmaVersion: 'latest',
58
+
},
59
+
rules: {
60
+
strict: ['error', 'global'],
61
+
},
62
+
},
63
+
];
+21
examples/cmpv2.b64
+21
examples/cmpv2.b64
···
1
+
CMPv2 example as found on Wireshark page.
2
+
3
+
Original link:
4
+
https://wiki.wireshark.org/CMP
5
+
6
+
Attachment found moved here:
7
+
https://wiki.wireshark.org/uploads/__moin_import__/attachments/SampleCaptures/cmp_IR_sequence_OpenSSL-Cryptlib.pcap
8
+
9
+
begin-base64 644 cmpv2.der
10
+
MIICPjCB1QIBAqQCMACkRjBEMQswCQYDVQQGEwJERTEMMAoGA1UEChMDTlNOMREwDwYDVQQLEwhQ
11
+
RyBSREUgMzEUMBIGA1UEAxMLTWFydGluJ3MgQ0GgERgPMjAxMDA3MDUwNzM1MzhaoTwwOgYJKoZI
12
+
hvZ9B0INMC0EEJ5EpSD3zKjvmzHEK5+aoAAwCQYFKw4DAhoFAAICAfQwCgYIKwYBBQUIAQKiCwQJ
13
+
b/KGO0ILNJqApBIEEJGOKFG/9crkwU+z/I5ICa6lEgQQnnbd7EB2QjRCwOHt9QWdBKCCAUkwggFF
14
+
MIIBQTCBqAIBADCBoqaBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAqVTOtjEEYELkomc3sMOy
15
+
Too5a9YeC91IMn52cVx7doY4AeO6J9e8p+CtWNbzVF8aRgHUhh31m+/X3MkQOaY5i8nF33uxAxDL
16
+
MDXttHjsqrF/tsgYuuHSs/Znz4PA1kLkdhKE9DLiGlCFaJH5QY5Hzl6bcS3ApuWCny0RRzIA1/cC
17
+
AwEAAaGBkzANBgkqhkiG9w0BAQUFAAOBgQArOldjg75fDx7BaFp0oAknLDREvB1KyE+BV96R+lB+
18
+
tRRhwv3dyc/GTvRw4GtaeDjWCjNPaDCl9ZvvVljaR2aMZvhaQV+DUmCMjFSP3DPiGuszBA6R2azX
19
+
NKtnpJ3SGx2vk0+Iv05tXLhdnqQJZs5a3S3R30kn4Vw+4WQm3kb0fKAXAxUA9K8u+7hv5Rg6GDn6
20
+
aoPxbUo6fpU=
21
+
====
+9
examples/cms-password.p7m
+9
examples/cms-password.p7m
···
1
+
This is a PKCS#7/CMS encrypted with passwod.
2
+
$ echo content | openssl cms -encrypt -pwri_password test -aes256 -outform pem -out examples/cms-password.p7m
3
+
-----BEGIN CMS-----
4
+
MIHYBgkqhkiG9w0BBwOggcowgccCAQMxgYOjgYACAQCgGwYJKoZIhvcNAQUMMA4E
5
+
CED/DSxXMtH6AgIIADAsBgsqhkiG9w0BCRADCTAdBglghkgBZQMEASoEEDIQbJMC
6
+
Sfb3LpwHduj/meQEMKwrwq5M4V0stztm6OUTAsFY2zKDY20SApwSEeEcAh9TM42E
7
+
1palnHeqHTBpC8pIpjA8BgkqhkiG9w0BBwEwHQYJYIZIAWUDBAEqBBByt+scPrdM
8
+
giR7WUOJyB3hgBDcD3UDMtZSep8X/3yy1/Yq
9
+
-----END CMS-----
+12
examples/crl-rfc5280.b64
+12
examples/crl-rfc5280.b64
···
1
+
CRL example from RFC5280 as found here:
2
+
https://csrc.nist.gov/projects/pki-testing/sample-certificates-and-crls
3
+
4
+
begin-base64 644 crl-rfc5280.der
5
+
MIIBYDCBygIBATANBgkqhkiG9w0BAQUFADBDMRMwEQYKCZImiZPyLGQBGRYDY29tMRcwFQYKCZIm
6
+
iZPyLGQBGRYHZXhhbXBsZTETMBEGA1UEAxMKRXhhbXBsZSBDQRcNMDUwMjA1MTIwMDAwWhcNMDUw
7
+
MjA2MTIwMDAwWjAiMCACARIXDTA0MTExOTE1NTcwM1owDDAKBgNVHRUEAwoBAaAvMC0wHwYDVR0j
8
+
BBgwFoAUCGivhTPIOUp6+IKTjnBqSiCELDIwCgYDVR0UBAMCAQwwDQYJKoZIhvcNAQEFBQADgYEA
9
+
ItwYffcIzsx10NBqm60Q9HYjtIFutW2+DvsVFGzIF20f7pAXom9g5L2qjFXejoRvkvifEBInr0rU
10
+
L4XiNkR9qqNMJTgV/wD9Pn7uPSYS69jnK2LiK8NGgO94gtEVxtCccmrLznrtZ5mLbnCBfUNCdMGm
11
+
r8FVF6IzTNYGmCuk/C4=
12
+
====
+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
+13
examples/ed25519.cer
+13
examples/ed25519.cer
···
1
+
X.509 certificate based on Daniel J. Bernsteinโs Curve25519 (as per RFC 8410).
2
+
$ openssl req -x509 -newkey ed25519 -keyout test.key -out test.cer -days 3652 -subj '/C=IT/L=Milano/CN=Test ed25519'
3
+
-----BEGIN CERTIFICATE-----
4
+
MIIBfzCCATGgAwIBAgIUfI5kSdcO2S0+LkpdL3b2VUJG10YwBQYDK2VwMDUxCzAJ
5
+
BgNVBAYTAklUMQ8wDQYDVQQHDAZNaWxhbm8xFTATBgNVBAMMDFRlc3QgZWQyNTUx
6
+
OTAeFw0yMDA5MDIxMzI1MjZaFw0zMDA5MDIxMzI1MjZaMDUxCzAJBgNVBAYTAklU
7
+
MQ8wDQYDVQQHDAZNaWxhbm8xFTATBgNVBAMMDFRlc3QgZWQyNTUxOTAqMAUGAytl
8
+
cAMhADupL/3LF2beQKKS95PeMPgKI6gxIV3QB9hjJC7/aCGFo1MwUTAdBgNVHQ4E
9
+
FgQUa6W9z536I1l4EmQXrh5y2JqASugwHwYDVR0jBBgwFoAUa6W9z536I1l4EmQX
10
+
rh5y2JqASugwDwYDVR0TAQH/BAUwAwEB/zAFBgMrZXADQQBvc3e+KJZaMzbX5TT9
11
+
kPP9QH8fAvkAV/IWDxZrBL9lhLaY0tDSv0zWbw624uidBKPgmVD5wm3ec60dNVeF
12
+
ZYYG
13
+
-----END CERTIFICATE-----
+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
+8
examples/ldapmessage.b64
+8
examples/ldapmessage.b64
+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
+29
examples/letsencrypt-x3.cer
+29
examples/letsencrypt-x3.cer
···
1
+
This is a real-world X.509 certificate, specifically a root CA.
2
+
https://letsencrypt.org/certificates/
3
+
-----BEGIN CERTIFICATE-----
4
+
MIIEkjCCA3qgAwIBAgIQCgFBQgAAAVOFc2oLheynCDANBgkqhkiG9w0BAQsFADA/
5
+
MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT
6
+
DkRTVCBSb290IENBIFgzMB4XDTE2MDMxNzE2NDA0NloXDTIxMDMxNzE2NDA0Nlow
7
+
SjELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUxldCdzIEVuY3J5cHQxIzAhBgNVBAMT
8
+
GkxldCdzIEVuY3J5cHQgQXV0aG9yaXR5IFgzMIIBIjANBgkqhkiG9w0BAQEFAAOC
9
+
AQ8AMIIBCgKCAQEAnNMM8FrlLke3cl03g7NoYzDq1zUmGSXhvb418XCSL7e4S0EF
10
+
q6meNQhY7LEqxGiHC6PjdeTm86dicbp5gWAf15Gan/PQeGdxyGkOlZHP/uaZ6WA8
11
+
SMx+yk13EiSdRxta67nsHjcAHJyse6cF6s5K671B5TaYucv9bTyWaN8jKkKQDIZ0
12
+
Z8h/pZq4UmEUEz9l6YKHy9v6Dlb2honzhT+Xhq+w3Brvaw2VFn3EK6BlspkENnWA
13
+
a6xK8xuQSXgvopZPKiAlKQTGdMDQMc2PMTiVFrqoM7hD8bEfwzB/onkxEz0tNvjj
14
+
/PIzark5McWvxI0NHWQWM6r6hCm21AvA2H3DkwIDAQABo4IBfTCCAXkwEgYDVR0T
15
+
AQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwfwYIKwYBBQUHAQEEczBxMDIG
16
+
CCsGAQUFBzABhiZodHRwOi8vaXNyZy50cnVzdGlkLm9jc3AuaWRlbnRydXN0LmNv
17
+
bTA7BggrBgEFBQcwAoYvaHR0cDovL2FwcHMuaWRlbnRydXN0LmNvbS9yb290cy9k
18
+
c3Ryb290Y2F4My5wN2MwHwYDVR0jBBgwFoAUxKexpHsscfrb4UuQdf/EFWCFiRAw
19
+
VAYDVR0gBE0wSzAIBgZngQwBAgEwPwYLKwYBBAGC3xMBAQEwMDAuBggrBgEFBQcC
20
+
ARYiaHR0cDovL2Nwcy5yb290LXgxLmxldHNlbmNyeXB0Lm9yZzA8BgNVHR8ENTAz
21
+
MDGgL6AthitodHRwOi8vY3JsLmlkZW50cnVzdC5jb20vRFNUUk9PVENBWDNDUkwu
22
+
Y3JsMB0GA1UdDgQWBBSoSmpjBH3duubRObemRWXv86jsoTANBgkqhkiG9w0BAQsF
23
+
AAOCAQEA3TPXEfNjWDjdGBX7CVW+dla5cEilaUcne8IkCJLxWh9KEik3JHRRHGJo
24
+
uM2VcGfl96S8TihRzZvoroed6ti6WqEBmtzw3Wodatg+VyOeph4EYpr/1wXKtx8/
25
+
wApIvJSwtmVi4MFU5aMqrSDE6ea73Mj2tcMyo5jMd6jmeWUHK8so/joWUoHOUgwu
26
+
X4Po1QYz+3dszkDqMp4fklxBwXRsW10KXzPMTZ+sOPAveyxindmjkW8lGy+QsRlG
27
+
PfZ+G6Z6h7mjem0Y+iWlkYcV4PIWL1iwBi8saCbGS5jN2p8M+X+Q7UNKEkROb3N6
28
+
KOqkqm57TH2H3eDJAkSnh6/DNFu0Qg==
29
+
-----END CERTIFICATE-----
+18
examples/pkcs1.pem
+18
examples/pkcs1.pem
···
1
+
PKCS#1 RSA key
2
+
$ openssl genrsa -out examples/pkcs8-rsa.pem 1024
3
+
$ openssl rsa -in examples/pkcs8-rsa.pem -out examples/pkcs1.pem -traditional
4
+
-----BEGIN RSA PRIVATE KEY-----
5
+
MIICXQIBAAKBgQCmy23ifN9pi5LO4MR3LUhU0v+LZmv78H+jd+R6kFcWZf1qW4yf
6
+
KTDkryjjLlIhYqxmzXCqGyaIjj7uJoorWf7KfkxpOuJrh4swJ/WGhCn9i+voW/7T
7
+
sOXfDp1yqrEhaQKwdPot1ZAB78TNsecwX/SODTEMCk95jvx1j5cDxPlskwIDAQAB
8
+
AoGBAINn4bp+BsVwYMj768y4sDOjyBBbMNfcMbLn0el9rh7HW09fsPnzycFg/iV9
9
+
aNdEle6oDAr4OPN8nbeiRVjCHijEnVdHCwAtkKODyuu1ghpZWD0VUC8AEskjX4Bs
10
+
Ysl/HjyvvHIRj89gdDFoElgB4GzHKTzeZNJBM5qtUW57zBCBAkEA0A6N5l98MglL
11
+
cypWKM7+3DXteWt86mKXYUVF33HY28Z+oUVlU0v8m8XxpoAjkicYnC1JOSSlvWRk
12
+
EWlTMgHW5QJBAM06yIHMR6p3apgpwOUp49DbtaQ8NmhCV4NBoFHa+vT2Fk8twOcq
13
+
O9OzP4svhKbPNfB4HnxGbmd/+OVT3lySxhcCQHRPPpqD1K0wLwKxrzrfBPDcIOaY
14
+
5VsuRIw3KqmQPngWTiIf5lYbi5sVnFLFHZ2Nx58/XcjZKOJopdxp8f1ps9UCQQC3
15
+
rOqSsF9bg3DVKllHQAxyepDAolsXSHjGMk/nspJz9mLVDl/dBAFzYLN4QFj6ae0e
16
+
gILYOrjIzNHXfQ4/z+SVAkBPebkAzpGFgzVzu6VOGx0Vft/ow3/DKNJSDM58yASp
17
+
ootY2TdibrrV/ellNLvuTiku6AEM/8jbHlRsmfxRe0xn
18
+
-----END RSA PRIVATE KEY-----
+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
+9
examples/pkcs10.pem
+9
examples/pkcs10.pem
···
1
+
PKCS#10 certification request based on Daniel J. Bernsteinโs Curve25519.
2
+
$ openssl req -nodes -newkey ed25519 -keyout /dev/null -out pkcs10.pem -days 36500 -subj '/CN=test' -addext 'subjectAltName=otherName:msUPN;UTF8:address@domain.test'
3
+
-----BEGIN CERTIFICATE REQUEST-----
4
+
MIHQMIGDAgEAMA8xDTALBgNVBAMMBHRlc3QwKjAFBgMrZXADIQD7Fua9ZF+wPXVd
5
+
DCBwQr+Aqny6OFvs25wZ/P4LyVsYmKBBMD8GCSqGSIb3DQEJDjEyMDAwLgYDVR0R
6
+
BCcwJaAjBgorBgEEAYI3FAIDoBUME2FkZHJlc3NAZG9tYWluLnRlc3QwBQYDK2Vw
7
+
A0EAUp5FenHF1rZzRGU+7wiF+/D1bfyDRF0dzWz2sl44nltu8iLjHO3aIfOTYWpq
8
+
ZlaDg1Bq3L7Fcb7If4yZAsE5Cw==
9
+
-----END CERTIFICATE REQUEST-----
+18
examples/pkcs8-rsa.pem
+18
examples/pkcs8-rsa.pem
···
1
+
PKCS#8 RSA key
2
+
$ openssl genrsa -out examples/pkcs8-rsa.pem 1024
3
+
-----BEGIN PRIVATE KEY-----
4
+
MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAKbLbeJ832mLks7g
5
+
xHctSFTS/4tma/vwf6N35HqQVxZl/WpbjJ8pMOSvKOMuUiFirGbNcKobJoiOPu4m
6
+
iitZ/sp+TGk64muHizAn9YaEKf2L6+hb/tOw5d8OnXKqsSFpArB0+i3VkAHvxM2x
7
+
5zBf9I4NMQwKT3mO/HWPlwPE+WyTAgMBAAECgYEAg2fhun4GxXBgyPvrzLiwM6PI
8
+
EFsw19wxsufR6X2uHsdbT1+w+fPJwWD+JX1o10SV7qgMCvg483ydt6JFWMIeKMSd
9
+
V0cLAC2Qo4PK67WCGllYPRVQLwASySNfgGxiyX8ePK+8chGPz2B0MWgSWAHgbMcp
10
+
PN5k0kEzmq1RbnvMEIECQQDQDo3mX3wyCUtzKlYozv7cNe15a3zqYpdhRUXfcdjb
11
+
xn6hRWVTS/ybxfGmgCOSJxicLUk5JKW9ZGQRaVMyAdblAkEAzTrIgcxHqndqmCnA
12
+
5Snj0Nu1pDw2aEJXg0GgUdr69PYWTy3A5yo707M/iy+Eps818HgefEZuZ3/45VPe
13
+
XJLGFwJAdE8+moPUrTAvArGvOt8E8Nwg5pjlWy5EjDcqqZA+eBZOIh/mVhuLmxWc
14
+
UsUdnY3Hnz9dyNko4mil3Gnx/Wmz1QJBALes6pKwX1uDcNUqWUdADHJ6kMCiWxdI
15
+
eMYyT+eyknP2YtUOX90EAXNgs3hAWPpp7R6Agtg6uMjM0dd9Dj/P5JUCQE95uQDO
16
+
kYWDNXO7pU4bHRV+3+jDf8Mo0lIMznzIBKmii1jZN2JuutX96WU0u+5OKS7oAQz/
17
+
yNseVGyZ/FF7TGc=
18
+
-----END PRIVATE KEY-----
+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
+233
examples/sig-p256-ber.p7m
+233
examples/sig-p256-ber.p7m
···
1
+
This is a PKCS#7/CMS attached digital signature.
2
+
It is signed using ecdsaWithSHA256 over NIST curve P-256.
3
+
It contains 10034 bytes of data in a constructed BER OCTET STRING, in 1000 byte chunks.
4
+
-----BEGIN PKCS7-----
5
+
MIAGCSqGSIb3DQEHAqCAMIACAQExDzANBglghkgBZQMEAgEFADCABgkqhkiG9w0B
6
+
BwGggCSABIID6EluaXppbyBjb250ZW51dG8uCkFBQUFBQUFBQUFBQUFBQUFBQUFB
7
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
8
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
9
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
10
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
11
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
12
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
13
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
14
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
15
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
16
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
17
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
18
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
19
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
20
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
21
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
22
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
23
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
24
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
25
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
26
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
27
+
QUEEggPoQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
28
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
29
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
30
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
31
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
32
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
33
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
34
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
35
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
36
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
37
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
38
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
39
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
40
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
41
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
42
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
43
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
44
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
45
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
46
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
47
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQSC
48
+
A+hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
49
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
50
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
51
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
52
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
53
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
54
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
55
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
56
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
57
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
58
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
59
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
60
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
61
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
62
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
63
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
64
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
65
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
66
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
67
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
68
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBBIID6EFB
69
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
70
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
71
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
72
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
73
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
74
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
75
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
76
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
77
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
78
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
79
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
80
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
81
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
82
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
83
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
84
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
85
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
86
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
87
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
88
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
89
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEEggPoQUFBQUFB
90
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
91
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
92
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
93
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
94
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
95
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
96
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
97
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
98
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
99
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
100
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
101
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
102
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
103
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
104
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
105
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
106
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
107
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
108
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
109
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
110
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQQSCA+hBQUFBQUFBQUFB
111
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
112
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
113
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
114
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
115
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
116
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
117
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
118
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
119
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
120
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
121
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
122
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
123
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
124
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
125
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
126
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
127
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
128
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
129
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
130
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
131
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBBIID6EFBQUFBQUFBQUFBQUFB
132
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
133
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
134
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
135
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
136
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
137
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
138
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
139
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
140
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
141
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
142
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
143
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
144
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
145
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
146
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
147
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
148
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
149
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
150
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
151
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
152
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEEggPoQUFBQUFBQUFBQUFBQUFBQUFB
153
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
154
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
155
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
156
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
157
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
158
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
159
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
160
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
161
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
162
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
163
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
164
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
165
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
166
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
167
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
168
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
169
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
170
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
171
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
172
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
173
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQQSCA+hBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
174
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
175
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
176
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
177
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
178
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
179
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
180
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
181
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
182
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
183
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
184
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
185
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
186
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
187
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
188
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
189
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
190
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
191
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
192
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
193
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
194
+
QUFBQUFBQUFBQUFBQUFBQUFBBIID6EFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
195
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
196
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
197
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
198
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
199
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
200
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
201
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
202
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
203
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
204
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
205
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
206
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
207
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
208
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
209
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
210
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
211
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
212
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
213
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
214
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
215
+
QUFBQUFBQUFBQUFBQUEEIkFBQUFBQUFBQUFBQUFBQUFBQQpGaW5lIGNvbnRlbnV0
216
+
by4AAAAAAACggDCCAW4wggEUoAMCAQICEHOxx/3deIyIkyCp0XuJoeAwCgYIKoZI
217
+
zj0EAwIwDzENMAsGA1UEAwwEVGVzdDAeFw0xODA3MTYxNTE3MDBaFw0xOTA3MTYx
218
+
NTE3MDBaMA8xDTALBgNVBAMMBFRlc3QwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNC
219
+
AATrbIaVzrUdDj6payN4bRMzfGAeUx2vbtdADsmVqB5UpZcE9+lk6mFONMMV8Mfd
220
+
HMIrtU+kIeN3TKwYbvkKqFKFo1IwUDAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYE
221
+
FGYNLdBLRe0zyKL5cUmFcsIIV7W+MB8GA1UdIwQYMBaAFGYNLdBLRe0zyKL5cUmF
222
+
csIIV7W+MAoGCCqGSM49BAMCA0gAMEUCIQCtFrZzgrRCt4a+2k1d6koKNkBVMHNP
223
+
QUvcH+W3VyGdJwIgI9eyft3ADE5ZUOYb1kCY76qlMy2dexTDe1ECpHf66X4AADGC
224
+
AYowggGGAgEBMCMwDzENMAsGA1UEAwwEVGVzdAIQc7HH/d14jIiTIKnRe4mh4DAN
225
+
BglghkgBZQMEAgEFAKCB9zAYBgkqhkiG9w0BCQMxCwYJKoZIhvcNAQcBMBwGCSqG
226
+
SIb3DQEJBTEPFw0xODA3MTYxNTE3MDFaMCoGCSqGSIb3DQEJNDEdMBswDQYJYIZI
227
+
AWUDBAIBBQChCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIEIHJMUbvnbaBa+yDL
228
+
6OsDfNrhr9cTEl0twT1VLan0QtJNMGAGCyqGSIb3DQEJEAIvMVEwTzBNMEsEIF5A
229
+
LYEW0KWtjD68a+15KzrU4fL/PAv0FDQzhfnLy7yzMCcwE6QRMA8xDTALBgNVBAMM
230
+
BFRlc3QCEHOxx/3deIyIkyCp0XuJoeAwCgYIKoZIzj0EAwIERzBFAiBU+itM+1PZ
231
+
77m5G8pCq4R7zQKe7OK/1vVjoTpf1mhg1wIhANyu8NdrnbnEID1copBIRB8tOm6H
232
+
5tIcUY4bEZXEeK9cAAAAAAAA
233
+
-----END PKCS7-----
+232
examples/sig-p256-der.p7m
+232
examples/sig-p256-der.p7m
···
1
+
This is a PKCS#7/CMS attached digital signature.
2
+
It is signed using ecdsaWithSHA256 over NIST curve P-256.
3
+
It contains 10034 bytes of data in a single DER OCTET STRING.
4
+
-----BEGIN PKCS7-----
5
+
MIIqdAYJKoZIhvcNAQcCoIIqZTCCKmECAQExDzANBglghkgBZQMEAgEFADCCJ0UG
6
+
CSqGSIb3DQEHAaCCJzYEgicySW5pemlvIGNvbnRlbnV0by4KQUFBQUFBQUFBQUFB
7
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
8
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
9
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
10
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
11
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
12
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
13
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
14
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
15
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
16
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
17
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
18
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
19
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
20
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
21
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
22
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
23
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
24
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
25
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
26
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
27
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
28
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
29
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
30
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
31
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
32
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
33
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
34
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
35
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
36
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
37
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
38
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
39
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
40
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
41
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
42
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
43
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
44
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
45
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
46
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
47
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
48
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
49
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
50
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
51
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
52
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
53
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
54
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
55
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
56
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
57
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
58
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
59
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
60
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
61
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
62
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
63
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
64
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
65
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
66
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
67
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
68
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
69
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
70
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
71
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
72
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
73
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
74
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
75
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
76
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
77
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
78
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
79
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
80
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
81
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
82
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
83
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
84
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
85
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
86
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
87
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
88
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
89
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
90
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
91
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
92
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
93
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
94
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
95
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
96
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
97
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
98
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
99
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
100
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
101
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
102
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
103
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
104
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
105
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
106
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
107
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
108
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
109
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
110
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
111
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
112
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
113
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
114
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
115
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
116
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
117
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
118
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
119
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
120
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
121
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
122
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
123
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
124
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
125
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
126
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
127
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
128
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
129
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
130
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
131
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
132
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
133
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
134
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
135
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
136
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
137
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
138
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
139
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
140
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
141
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
142
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
143
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
144
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
145
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
146
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
147
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
148
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
149
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
150
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
151
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
152
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
153
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
154
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
155
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
156
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
157
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
158
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
159
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
160
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
161
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
162
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
163
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
164
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
165
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
166
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
167
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
168
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
169
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
170
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
171
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
172
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
173
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
174
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
175
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
176
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
177
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
178
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
179
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
180
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
181
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
182
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
183
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
184
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
185
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
186
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
187
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
188
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
189
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
190
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
191
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
192
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
193
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
194
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
195
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
196
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
197
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
198
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
199
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
200
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
201
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
202
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
203
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
204
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
205
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
206
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
207
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
208
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
209
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
210
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
211
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
212
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
213
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
214
+
QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFB
215
+
QUFBQQpGaW5lIGNvbnRlbnV0by6gggFyMIIBbjCCARSgAwIBAgIQYFzS1SZ1s5Kl
216
+
qpsCsmpVZjAKBggqhkjOPQQDAjAPMQ0wCwYDVQQDDARUZXN0MB4XDTE4MDcxNjE0
217
+
NTYzNVoXDTE5MDcxNjE0NTYzNVowDzENMAsGA1UEAwwEVGVzdDBZMBMGByqGSM49
218
+
AgEGCCqGSM49AwEHA0IABCRMtswcaSH/Sdi+Jj4LfNBaKGVahGyCXsrm7OaaaiHE
219
+
5PIgJMDp9OR0nJihrfJfkN5u+UgrZxiDpw60t6ufBkOjUjBQMA4GA1UdDwEB/wQE
220
+
AwIE8DAdBgNVHQ4EFgQUw8CE33sEDbA4r1GM45f27CDWJuYwHwYDVR0jBBgwFoAU
221
+
w8CE33sEDbA4r1GM45f27CDWJuYwCgYIKoZIzj0EAwIDSAAwRQIhAN5gHlc9r7Wb
222
+
xVHVjj57ntoGEt0BEoBaIhe3NHWbiEQXAiBnw/3mB4DUHB16O5ApHz05xNwvIG3M
223
+
ui+YLAa2fAmyMjGCAYowggGGAgEBMCMwDzENMAsGA1UEAwwEVGVzdAIQYFzS1SZ1
224
+
s5KlqpsCsmpVZjANBglghkgBZQMEAgEFAKCB9zAYBgkqhkiG9w0BCQMxCwYJKoZI
225
+
hvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0xODA3MTYxNDU2MzVaMCoGCSqGSIb3DQEJ
226
+
NDEdMBswDQYJYIZIAWUDBAIBBQChCgYIKoZIzj0EAwIwLwYJKoZIhvcNAQkEMSIE
227
+
IHJMUbvnbaBa+yDL6OsDfNrhr9cTEl0twT1VLan0QtJNMGAGCyqGSIb3DQEJEAIv
228
+
MVEwTzBNMEsEILq8CENMWCZzAeAGhh0n7KElZw55J5ckjnalcXpb+ZPCMCcwE6QR
229
+
MA8xDTALBgNVBAMMBFRlc3QCEGBc0tUmdbOSpaqbArJqVWYwCgYIKoZIzj0EAwIE
230
+
RzBFAiEA8QQwLqu0KOzI5xzi449svthIqOmitdXaGZM+SFyDzHECIAy7QKC3ubLg
231
+
SJIGIvsob9FGlfJM9lC9qkC4hfhMNLu5
232
+
-----END PKCS7-----
+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
+22
examples/sig-rsa1024-sha1.p7s
+22
examples/sig-rsa1024-sha1.p7s
···
1
+
This is a PKCS#7/CMS detached digital signature.
2
+
It is an old example generated in 2008 and as such uses obsolete cryptography: RSA1024 with SHA1.
3
+
-----BEGIN PKCS7-----
4
+
MIIDUAYJKoZIhvcNAQcCoIIDQTCCAz0CAQExCzAJBgUrDgMCGgUAMAsGCSqGSIb3
5
+
DQEHAaCCAfMwggHvMIIBWKADAgECAhAvoXazbunwSfREtACZZhlFMA0GCSqGSIb3
6
+
DQEBBQUAMAwxCjAIBgNVBAMMAWEwHhcNMDgxMDE1MTUwMzQxWhcNMDkxMDE1MTUw
7
+
MzQxWjAMMQowCAYDVQQDDAFhMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJ
8
+
Uwlwhu5hR8X01f+vG0mKPRHsVRjpZNxSEmsmFPdDiD9kylE3ertTDf0gRkpIvWfN
9
+
J+eymuxoXF0Qgl5gXAVuSrjupGD6J+VapixJiwLXJHokmDihLs3zfGARz08O3qnO
10
+
5ofBy0pRxq5isu/bAAcjoByZ1sI/g0iAuotC1UFObwIDAQABo1IwUDAOBgNVHQ8B
11
+
Af8EBAMCBPAwHQYDVR0OBBYEFEIGXQB4h+04Z3y/n7Nv94+CqPitMB8GA1UdIwQY
12
+
MBaAFEIGXQB4h+04Z3y/n7Nv94+CqPitMA0GCSqGSIb3DQEBBQUAA4GBAE0G7tAi
13
+
aacJxvP3fhEj+yP9VDxL0omrRRAEaMXwWaBf/Ggk1T/u+8/CDAdjuGNCiF6ctooK
14
+
c8u8KpnZJsGqnpGQ4n6L2KjTtRUDh+hija0eJRBFdirPQe2HAebQGFnmOk6Mn7Ki
15
+
QfBIsOzXim/bFqaBSbf06bLTQNwFouSO+jwOMYIBJTCCASECAQEwIDAMMQowCAYD
16
+
VQQDDAFhAhAvoXazbunwSfREtACZZhlFMAkGBSsOAwIaBQCgXTAYBgkqhkiG9w0B
17
+
CQMxCwYJKoZIhvcNAQcBMBwGCSqGSIb3DQEJBTEPFw0wODEwMTUxNTAzNDNaMCMG
18
+
CSqGSIb3DQEJBDEWBBQAAAAAAAAAAAAAAAAAAAAAAAAAADANBgkqhkiG9w0BAQEF
19
+
AASBgHQe0ocjBn+ZVXWbb8CpZ2CxzFKiVrgZxZO2kMBwJoNyZx+jnICHdhfsX4Or
20
+
cF5vIYVAZIRz5RxqFmuZELTfZ/K89zaK873DP9V7/ftBGpezWEp9h29AtAzI9lzS
21
+
GB9gugiyB5JstXoM1L87KJmT05MeZxg1pvvFhwo1m/QOpcqz
22
+
-----END PKCS7-----
+5
examples/timestamp-req.b64
+5
examples/timestamp-req.b64
+99
favicon-src.svg
+99
favicon-src.svg
···
1
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+
<svg
5
+
width="192"
6
+
height="192"
7
+
viewBox="0 0 50.799999 50.8"
8
+
version="1.1"
9
+
id="svg1"
10
+
inkscape:version="1.3 (0e150ed6c4, 2023-07-21)"
11
+
sodipodi:docname="favicon.svg"
12
+
inkscape:export-filename="favicon-2.png"
13
+
inkscape:export-xdpi="96"
14
+
inkscape:export-ydpi="96"
15
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
16
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
17
+
xmlns="http://www.w3.org/2000/svg"
18
+
xmlns:svg="http://www.w3.org/2000/svg">
19
+
<sodipodi:namedview
20
+
id="namedview1"
21
+
pagecolor="#ffffff"
22
+
bordercolor="#000000"
23
+
borderopacity="0.25"
24
+
inkscape:showpageshadow="2"
25
+
inkscape:pageopacity="0.0"
26
+
inkscape:pagecheckerboard="0"
27
+
inkscape:deskcolor="#d1d1d1"
28
+
inkscape:document-units="px"
29
+
inkscape:zoom="5.1635163"
30
+
inkscape:cx="98.963569"
31
+
inkscape:cy="99.060402"
32
+
inkscape:window-width="2058"
33
+
inkscape:window-height="1469"
34
+
inkscape:window-x="610"
35
+
inkscape:window-y="320"
36
+
inkscape:window-maximized="0"
37
+
inkscape:current-layer="g2" />
38
+
<defs
39
+
id="defs1">
40
+
<rect
41
+
x="-2.8229867"
42
+
y="7.5329568"
43
+
width="191.88329"
44
+
height="136.71218"
45
+
id="rect2" />
46
+
<rect
47
+
x="-2.8229866"
48
+
y="7.5329566"
49
+
width="191.88329"
50
+
height="136.71217"
51
+
id="rect2-0" />
52
+
</defs>
53
+
<g
54
+
inkscape:label="Layer 1"
55
+
inkscape:groupmode="layer"
56
+
id="layer1">
57
+
<rect
58
+
style="fill:#000000;stroke-width:0.252748"
59
+
id="rect1"
60
+
width="50.799999"
61
+
height="50.799999"
62
+
x="0"
63
+
y="0" />
64
+
<g
65
+
id="g2"
66
+
transform="translate(0,0.23697939)">
67
+
<g
68
+
id="g4"
69
+
transform="translate(0,-0.304314)">
70
+
<text
71
+
xml:space="preserve"
72
+
transform="matrix(0.26458333,0,0,0.26458333,0.72191975,-3.1336521)"
73
+
id="text1"
74
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:106.667px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:10px;white-space:pre;shape-inside:url(#rect2);shape-padding:0.244802;display:inline;fill:#000000"
75
+
x="69.453331"
76
+
y="0"><tspan
77
+
x="8.4313917"
78
+
y="102.15264"
79
+
id="tspan5"><tspan
80
+
style="font-weight:bold;-inkscape-font-specification:'DejaVu Sans, Bold';text-align:center;text-anchor:middle;fill:#58a6ff"
81
+
id="tspan1">AS</tspan></tspan></text>
82
+
<text
83
+
xml:space="preserve"
84
+
transform="matrix(0.26458333,0,0,0.26458333,2.8069955,20.958796)"
85
+
id="text1-1"
86
+
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:106.667px;font-family:'DejaVu Sans';-inkscape-font-specification:'DejaVu Sans';letter-spacing:10px;white-space:pre;shape-inside:url(#rect2-0);shape-padding:0.244802;display:inline;fill:#000000"
87
+
x="69.453331"
88
+
y="0"><tspan
89
+
x="-2.578125"
90
+
y="102.15264"
91
+
id="tspan8"><tspan
92
+
style="font-weight:bold;font-family:Sans;-inkscape-font-specification:'Sans, Bold';fill:#58a6ff"
93
+
id="tspan6">N</tspan><tspan
94
+
style="font-weight:bold;font-family:Sans;-inkscape-font-specification:'Sans, Bold';fill:#fffe58"
95
+
id="tspan7">1</tspan></tspan></text>
96
+
</g>
97
+
</g>
98
+
</g>
99
+
</svg>
+1
favicon.svg
+1
favicon.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" width="192" height="192" viewBox="0 0 50.8 50.8"><path d="M0 0h50.8v50.8H0z"/><path fill="#58a6ff" d="M18.028 20.078H9.733l-1.31 3.749H3.092l7.62-20.574h6.325l7.62 20.574h-5.332zm-6.972-3.817h5.636L13.88 8.076zm33.292-12.36v4.354q-1.695-.758-3.308-1.144t-3.045-.386q-1.902 0-2.811.524t-.91 1.626q0 .827.607 1.295.62.455 2.232.786l2.26.454q3.432.69 4.879 2.095t1.446 3.996q0 3.404-2.025 5.072-2.012 1.653-6.16 1.653-1.957 0-3.927-.372t-3.942-1.102v-4.479q1.971 1.047 3.804 1.585 1.846.523 3.555.523 1.737 0 2.66-.578t.923-1.654q0-.965-.634-1.488-.62-.524-2.494-.937l-2.053-.455q-3.087-.661-4.52-2.108-1.42-1.447-1.42-3.9 0-3.073 1.985-4.727 1.984-1.654 5.705-1.654 1.695 0 3.486.262 1.792.248 3.707.758z" aria-label="AS"/><g aria-label="N1" style="white-space:pre"><path fill="#58a6ff" d="M4.716 27.345h5.925l7.483 14.111v-14.11h5.03v20.573h-5.926L9.745 33.81v14.11h-5.03z"/><path fill="#fffe58" d="M31.696 44.254h4.686V30.955l-4.81.993v-3.61l4.782-.993h5.044v16.908h4.685v3.666H31.696z"/></g></svg>
+51
-50
hex.js
+51
-50
hex.js
···
1
1
// Hex JavaScript decoder
2
-
// Copyright (c) 2008-2018 Lapo Luchini <lapo@lapo.it>
2
+
// Copyright (c) 2008 Lapo Luchini <lapo@lapo.it>
3
3
4
4
// Permission to use, copy, modify, and/or distribute this software for any
5
5
// purpose with or without fee is hereby granted, provided that the above
6
6
// copyright notice and this permission notice appear in all copies.
7
-
//
7
+
//
8
8
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
9
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
10
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
···
13
13
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
14
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
15
16
-
(function (undefined) {
17
-
"use strict";
16
+
const
17
+
haveU8 = (typeof Uint8Array == 'function');
18
18
19
-
var Hex = {},
20
-
decoder, // populated on first usage
21
-
haveU8 = ('Uint8Array' in (typeof window == 'object' ? window : global));
19
+
let decoder; // populated on first usage
22
20
23
-
Hex.decode = function(a) {
24
-
var i;
25
-
if (decoder === undefined) {
26
-
var hex = "0123456789ABCDEF",
27
-
ignore = " \f\n\r\t\u00A0\u2028\u2029";
28
-
decoder = [];
29
-
for (i = 0; i < 16; ++i)
30
-
decoder[hex.charAt(i)] = i;
31
-
hex = hex.toLowerCase();
32
-
for (i = 10; i < 16; ++i)
33
-
decoder[hex.charAt(i)] = i;
34
-
for (i = 0; i < ignore.length; ++i)
35
-
decoder[ignore.charAt(i)] = -1;
36
-
}
37
-
var out = haveU8 ? new Uint8Array(a.length >> 1) : [],
38
-
bits = 0,
39
-
char_count = 0,
40
-
len = 0;
41
-
for (i = 0; i < a.length; ++i) {
42
-
var c = a.charAt(i);
43
-
if (c == '=')
44
-
break;
45
-
c = decoder[c];
46
-
if (c == -1)
47
-
continue;
48
-
if (c === undefined)
49
-
throw 'Illegal character at offset ' + i;
50
-
bits |= c;
51
-
if (++char_count >= 2) {
52
-
out[len++] = bits;
53
-
bits = 0;
54
-
char_count = 0;
55
-
} else {
56
-
bits <<= 4;
21
+
export class Hex {
22
+
23
+
/**
24
+
* Decodes an hexadecimal value.
25
+
* @param {string|Array|Uint8Array} a - a string representing hexadecimal data, or an array representation of its charcodes
26
+
*/
27
+
static decode(a) {
28
+
let isString = (typeof a == 'string');
29
+
let i;
30
+
if (decoder === undefined) {
31
+
let hex = '0123456789ABCDEF',
32
+
ignore = ' \f\n\r\t\u00A0\u2028\u2029';
33
+
decoder = [];
34
+
for (i = 0; i < 16; ++i)
35
+
decoder[hex.charCodeAt(i)] = i;
36
+
hex = hex.toLowerCase();
37
+
for (i = 10; i < 16; ++i)
38
+
decoder[hex.charCodeAt(i)] = i;
39
+
for (i = 0; i < ignore.length; ++i)
40
+
decoder[ignore.charCodeAt(i)] = -1;
41
+
}
42
+
let out = haveU8 ? new Uint8Array(a.length >> 1) : [],
43
+
bits = 0,
44
+
char_count = 0,
45
+
len = 0;
46
+
for (i = 0; i < a.length; ++i) {
47
+
let c = isString ? a.charCodeAt(i) : a[i];
48
+
c = decoder[c];
49
+
if (c == -1)
50
+
continue;
51
+
if (c === undefined)
52
+
throw 'Illegal character at offset ' + i;
53
+
bits |= c;
54
+
if (++char_count >= 2) {
55
+
out[len++] = bits;
56
+
bits = 0;
57
+
char_count = 0;
58
+
} else {
59
+
bits <<= 4;
60
+
}
57
61
}
62
+
if (char_count)
63
+
throw 'Hex encoding incomplete: 4 bits missing';
64
+
if (haveU8 && out.length > len) // in case it was originally longer because of ignored characters
65
+
out = out.subarray(0, len);
66
+
return out;
58
67
}
59
-
if (char_count)
60
-
throw "Hex encoding incomplete: 4 bits missing";
61
-
if (haveU8 && out.length > len) // in case it was originally longer because of ignored characters
62
-
out = out.subarray(0, len);
63
-
return out;
64
-
};
65
68
66
-
// export globals
67
-
if (typeof module !== 'undefined') { module.exports = Hex; } else { window.Hex = Hex; }
68
-
})();
69
+
}
+295
-32
index.css
+295
-32
index.css
···
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;
7
+
--button-bghover-color: #e5e5e5;
8
+
--input-border-color: #767676;
9
+
--input-bg-color: #ffffff;
10
+
--link-color: darkblue;
11
+
--link-hover-color: blue;
12
+
--header-bg-color: #999999;
13
+
--page-bg-color: #6e6e6e;
14
+
--license-bg-color: #D0D0D0;
15
+
--license-border-color: white;
16
+
--sub-border-color: #E0E0E0;
17
+
--preview-bg-color: #808080;
18
+
--preview-border-color: #505050;
19
+
--dump-bg-color: #C0C0C0;
20
+
--dump-border-color: #E0E0E0;
21
+
--dump-tag: blue;
22
+
--dump-dlen: darkcyan;
23
+
--dump-ulen: darkgreen;
24
+
--dump-intro: blue;
25
+
--dump-outro: darkgreen;
26
+
--dump-skip: #666666;
27
+
--dump-skip-bg: #C0C0C0;
28
+
--dump-hex-current: #808080;
29
+
--dump-hex-current-hex: #A0A0A0;
30
+
--dump-hex-current-dlen: #004040;
31
+
--hover-bg-color: #E0E0E0;
32
+
--tree-zoom-fix: -1px;
33
+
--tree-line: #999;
34
+
}
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;
41
+
--button-bghover-color: #404040;
42
+
--input-border-color: #505050;
43
+
--input-bg-color: #0c0e11;
44
+
--link-color: #58a6ff;
45
+
--link-hover-color: #9b9bea;
46
+
--header-bg-color: #161b22;
47
+
--page-bg-color: #000000;
48
+
--license-bg-color: #4b4a4a;
49
+
--license-border-color: black;
50
+
--sub-border-color: #383838;
51
+
--preview-bg-color: #989797;
52
+
--preview-border-color: #b5b3b3;
53
+
--dump-bg-color: #0c0e11;
54
+
--dump-border-color: #505050;
55
+
--dump-tag: #58a6ff;
56
+
--dump-dlen: darkcyan;
57
+
--dump-ulen: #00b6b6;
58
+
--dump-intro: #58a6ff;
59
+
--dump-outro: #00b6b6;
60
+
--dump-skip: #707070;
61
+
--dump-skip-bg: #222222;
62
+
--dump-hex-current: #727272;
63
+
--dump-hex-current-hex: #474747;
64
+
--dump-hex-current-dlen: #00b6b6;
65
+
--hover-bg-color: #505050;
66
+
--tree-line: #333;
67
+
}
1
68
html, body {
2
-
background-color: #C0C0C0;
69
+
background-color: var(--page-bg-color);
70
+
color: var(--main-text-color);
3
71
font-family: Arial, Helvetica, sans-serif;
4
72
text-align: justify;
73
+
font-size: 10pt;
74
+
margin: 0px;
75
+
}
76
+
header {
77
+
display: flex;
78
+
flex: nowrap;
79
+
}
80
+
header > .title {
81
+
flex: auto;
82
+
}
83
+
header > .menu {
84
+
display: flex;
85
+
align-items: center;
86
+
padding-right: 10px;
87
+
}
88
+
input,
89
+
textarea {
90
+
background-color: var(--input-bg-color);
91
+
color: var(--main-text-color);
92
+
border: 1px solid var(--input-border-color);
93
+
}
94
+
input[type="button"] {
95
+
background-color: var(--button-bg-color);
96
+
color: var(--main-text-color);
97
+
border: 1px solid var(--button-border-color);
98
+
}
99
+
input[type="button"]:hover {
100
+
background-color: var(--button-bghover-color);
101
+
}
102
+
::file-selector-button,
103
+
::-webkit-file-upload-button {
104
+
background-color: var(--button-bg-color);
105
+
color: var(--main-text-color);
106
+
border: 0px;
107
+
border-right: 1px solid var(--button-border-color);
108
+
}
109
+
::-webkit-file-upload-button:hover {
110
+
background-color: var(--button-bghover-color);
111
+
}
112
+
::file-selector-button:hover {
113
+
background-color: var(--button-bghover-color);
114
+
}
115
+
select {
116
+
background-color: var(--input-bg-color);
117
+
color: var(--main-text-color);
118
+
border: 1px solid var(--input-border-color);
119
+
120
+
}
121
+
a {
122
+
color: var(--link-color);
123
+
}
124
+
header {
125
+
background-color: var(--header-bg-color);
126
+
padding: 8px;
127
+
padding-left: 16px;
128
+
}
129
+
#main-page {
130
+
background-color: var(--main-bg-color);
131
+
border: 0px;
132
+
padding: 5px;
133
+
}
134
+
#main-page > div {
135
+
position: relative;
136
+
padding-bottom: 1em;
137
+
}
138
+
#help {
139
+
margin: 0px;
140
+
padding: 4px;
141
+
padding-left: 20px;
5
142
}
6
143
.tt {
7
144
font-family: monospace;
8
145
}
9
-
.license .ref {
146
+
.license {
10
147
position: relative;
11
148
}
12
149
.license .hidden {
13
150
visibility: hidden;
14
151
position: absolute;
15
-
bottom: 0em;
16
-
/*white-space: pre;*/
17
-
background-color: #D0D0D0;
18
-
border: solid 1px white;
152
+
top: 0px;
153
+
background-color: #D0D0D0; /*minimal support for IE11*/
154
+
background-color: var(--license-bg-color);
155
+
border: solid 1px var(--license-border-color);
19
156
padding: 2px;
20
157
margin-left: 15%;
21
158
margin-right: 15%;
···
24
161
/*display: block;*/
25
162
visibility: visible;
26
163
}
27
-
.node {
28
-
position: relative;
29
-
}
30
-
.sub {
31
-
padding-left: 1.5em;
32
-
border-left: solid 1px #E0E0E0;
33
-
}
34
164
.head {
35
165
height: 1em;
36
166
white-space: nowrap;
37
167
}
38
168
.node:hover > .head, .node.hover > .head {
39
-
color: darkblue;
40
-
font-weight: bold;
169
+
color: var(--link-color);
170
+
background-color: var(--hover-bg-color);
41
171
}
42
172
.node:hover > .head:hover, .node.hover > .head.hover {
43
-
color: blue;
173
+
color: var(--link-hover-color);
44
174
}
45
175
.node.collapsed {
46
176
font-style: italic;
···
51
181
.node.collapsed.hover > .sub {
52
182
display: block;
53
183
}
184
+
.name {
185
+
margin-right: 1em;
186
+
color: var(--preview-border-color);
187
+
}
188
+
.name.id {
189
+
color: var(--main-text-color);
190
+
}
54
191
.value {
55
192
display: none;
56
193
position: absolute;
57
194
z-index: 2;
58
195
top: 1.2em;
59
-
left: 0;
60
-
background-color: #D0D0D0;
61
-
border: solid 1px white;
196
+
left: 30px;
197
+
background-color: #efefef; /*minimal support for IE11*/
198
+
background-color: var(--button-bg-color);
199
+
border: solid 1px var(--button-border-color);
62
200
padding: 2px;
63
201
}
64
202
.head:hover + .value, .head.hover + .value {
···
66
204
}
67
205
.preview {
68
206
margin-left: 1em;
69
-
color: #505050;
207
+
color: var(--preview-border-color);
70
208
font-weight: normal;
71
209
}
72
210
.preview > .oid {
73
211
margin-left: 1em;
74
-
color: #808080;
212
+
color: var(--preview-bg-color);
75
213
font-weight: normal;
76
214
}
77
215
.spaces {
···
80
218
#tree {
81
219
font-family: monospace;
82
220
}
221
+
#tree > p {
222
+
font-family: Arial, Helvetica, sans-serif;
223
+
}
83
224
#dump {
225
+
position: absolute;
226
+
right: 0px;
84
227
z-index: 1;
85
-
background-color: #C0C0C0;
86
-
border: solid 1px #E0E0E0;
228
+
background-color: var(--dump-bg-color);
229
+
border: solid 1px var(--dump-border-color);
87
230
font-family: monospace;
88
231
white-space: pre;
232
+
padding: 5px;
233
+
}
234
+
#dump .tag { color: var(--dump-tag); }
235
+
#dump .dlen { color: var(--dump-dlen); }
236
+
#dump .ulen { color: var(--dump-ulen); }
237
+
#dump .intro { color: var(--dump-intro); }
238
+
#dump .outro { color: var(--dump-outro); }
239
+
#dump .skip { color: var(--dump-skip); background-color: var(--dump-skip-bg); }
240
+
#dump .hexCurrent { background-color: var(--dump-hex-current); }
241
+
#dump .hexCurrent .hex { background-color: var(--dump-hex-current-hex); }
242
+
#dump .hexCurrent .dlen { color: var(--dump-hex-current-dlen); }
243
+
#file { display: none; }
244
+
#area { width: 100%; }
245
+
#contextmenu {
246
+
position: absolute;
247
+
visibility: hidden;
248
+
top: 0;
249
+
left: 0;
89
250
padding: 2px;
251
+
background-color: var(--button-bg-color);
252
+
border: 1px solid var(--button-bg-color);
253
+
z-index: 2;
90
254
}
91
-
#dump .tag { color: blue; }
92
-
#dump .dlen { color: darkcyan; }
93
-
#dump .ulen { color: darkgreen; }
94
-
#dump .intro { color: blue; }
95
-
#dump .outro { color: darkgreen; }
96
-
#dump .skip { color: #666666; }
97
-
#dump .hexCurrent { background-color: #808080; }
98
-
#dump .hexCurrent .hex { background-color: #A0A0A0; }
99
-
#file { display: none; }
255
+
#contextmenu > button {
256
+
display: block;
257
+
width: 120px;
258
+
background-color: var(--button-bg-color);
259
+
color: var(--main-text-color);
260
+
border: 1px solid var(--button-border-color);
261
+
text-align: left;
262
+
}
263
+
#contextmenu > button:hover {
264
+
background-color: var(--button-bghover-color);
265
+
}
266
+
267
+
.treecollapse {
268
+
--spacing: 1.5rem;
269
+
--radius: 7px;
270
+
padding-inline-start: 0px;
271
+
}
272
+
.treecollapse li{
273
+
display: block;
274
+
position: relative;
275
+
padding-left: calc(2 * var(--spacing) - var(--radius) - 2px);
276
+
}
277
+
.treecollapse ul{
278
+
padding-left: 0;
279
+
margin-left: calc(var(--radius) - var(--spacing));
280
+
}
281
+
.treecollapse ul li{
282
+
border-left: 1px solid var(--tree-line);
283
+
}
284
+
.treecollapse ul li:last-child{
285
+
border-color: transparent;
286
+
}
287
+
.treecollapse ul li::before{
288
+
content: '';
289
+
display: block;
290
+
position: absolute;
291
+
top: calc(var(--spacing) / -1.6);
292
+
left: var(--tree-zoom-fix);
293
+
width: calc(var(--spacing) + 2px);
294
+
height: calc(var(--spacing) + 1px);
295
+
border: solid var(--tree-line);
296
+
border-width: 0 0 1px 1px;
297
+
}
298
+
.treecollapse summary{
299
+
display : block;
300
+
cursor : pointer;
301
+
}
302
+
.treecollapse summary::marker,
303
+
.treecollapse summary::-webkit-details-marker{
304
+
display : none;
305
+
}
306
+
.treecollapse summary:focus{
307
+
outline : none;
308
+
}
309
+
.treecollapse summary:focus-visible{
310
+
outline : 1px dotted #000;
311
+
}
312
+
.treecollapse summary::before{
313
+
content: '';
314
+
display: block;
315
+
position: absolute;
316
+
top: calc(var(--spacing) / 2 - var(--radius));
317
+
left: calc(var(--spacing) - var(--radius) - 1px);
318
+
width: calc(2 * var(--radius));
319
+
height: calc(2 * var(--radius));
320
+
}
321
+
.treecollapse summary::before{
322
+
z-index: 1;
323
+
top: 1px;
324
+
background: url('tree-icon-light.svg');
325
+
}
326
+
html[data-theme="dark"] .treecollapse summary::before{
327
+
background: url('tree-icon-dark.svg');
328
+
}
329
+
.treecollapse details[open] > summary::before{
330
+
background-position : calc(-2 * var(--radius)) 0;
331
+
}
332
+
333
+
/*
334
+
Zoom fix to have straight lines in treeview
335
+
Zoom level and dpi resolution:
336
+
- 175%: 336dpi
337
+
- 150%: 288dpi
338
+
- 110%: 212dpi
339
+
- 100%: 192dpi
340
+
- 90%: 173dpi
341
+
- 80%: 154dpi
342
+
*/
343
+
@media (resolution <= 154dpi) {
344
+
:root{
345
+
--tree-zoom-fix: -0.6px;
346
+
}
347
+
}
348
+
@media (155dpi <= resolution < 192dpi) {
349
+
:root{
350
+
--tree-zoom-fix: -0.7px;
351
+
}
352
+
}
353
+
@media (192dpi <= resolution < 336dpi) {
354
+
:root{
355
+
--tree-zoom-fix: -1px;
356
+
}
357
+
}
358
+
@media (336dpi <= resolution) {
359
+
:root{
360
+
--tree-zoom-fix: -0.9px;
361
+
}
362
+
}
+105
-56
index.html
+105
-56
index.html
···
1
1
<!DOCTYPE html>
2
-
<html>
2
+
<html data-theme="dark">
3
3
<head>
4
-
<meta charset="US-ASCII">
4
+
<meta charset="UTF-8">
5
5
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
6
+
<meta name="theme-color" content="#0d1116" media="(prefers-color-scheme: dark)">
7
+
<meta name="theme-color" content="#C0C0C0" media="(prefers-color-scheme: light)">
6
8
<title>ASN.1 JavaScript decoder</title>
7
9
<link rel="stylesheet" href="index.css" type="text/css">
10
+
<link rel="icon" type="image/svg+xml" sizes="192x192" href="favicon.svg">
8
11
</head>
9
12
<body>
10
-
<h1>ASN.1 JavaScript decoder</h1>
11
-
<div style="position: relative; padding-bottom: 1em;">
12
-
<div id="dump" style="position: absolute; right: 0px;"></div>
13
-
<div id="tree"></div>
14
-
</div>
15
-
<form>
16
-
<textarea id="area" style="width: 100%;" rows="8"></textarea>
17
-
<br>
18
-
<label title="can be slow with big files"><input type="checkbox" id="wantHex" checked="checked"> with hex dump</label>
19
-
<input id="butDecode" type="button" value="decode">
20
-
<input id="butClear" type="button" value="clear">
21
-
<input id="butExample" type="button" value="example">
22
-
<input type="file" id="file">
23
-
</form>
24
-
<div id="help">
25
-
<h2>Instructions</h2>
26
-
<p>This page contains a JavaScript generic ASN.1 parser that can decode any valid ASN.1 DER or BER structure whether Base64-encoded (raw base64, PEM armoring and <span class="tt">begin-base64</span> are recognized) or Hex-encoded. </p>
27
-
<p>This tool can be used online at the address <a href="http://lapo.it/asn1js/"><span class="tt">http://lapo.it/asn1js/</span></a> or offline, unpacking <a href="http://lapo.it/asn1js/asn1js.zip">the ZIP file</a> in a directory and opening <span class="tt">index.html</span> in a browser</p>
28
-
<p>On the left of the page will be printed a tree representing the hierarchical structure, on the right side an hex dump will be shown. <br>
29
-
Hovering on the tree highlights ancestry (the hovered node and all its ancestors get colored) and the position of the hovered node gets highlighted in the hex dump (with header and content in a different colors). <br>
30
-
Clicking a node in the tree will hide its sub-nodes (collapsed nodes can be noticed because they will become <i>italic</i>).</p>
31
-
<div class="license">
32
-
<h3>Copyright</h3>
33
-
<div class="ref"><p class="hidden">
34
-
ASN.1 JavaScript decoder<br>
35
-
Copyright © 2008-2018 Lapo Luchini <lapo@lapo.it><br>
13
+
<div id="contextmenu">
14
+
<button id="btnCopyHex">Copy hex dump</button>
15
+
<button id="btnCopyB64">Copy Base64</button>
16
+
<button id="btnCopyTree">Copy subtree</button>
17
+
<button id="btnCopyValue">Copy value</button>
18
+
</div>
19
+
<header>
20
+
<div class="title">
21
+
<h1>ASN.1 JavaScript decoder</h1>
22
+
</div>
23
+
<div class="menu">
24
+
<form>
25
+
<input id="butClear" type="button" value="clear">
26
+
<select id="theme-select">
27
+
<option value="os">OS Theme</option>
28
+
<option value="dark">Dark Theme</option>
29
+
<option value="light">Light Theme</option>
30
+
</select>
31
+
</form>
32
+
</div>
33
+
</header>
34
+
<div id="main-page">
35
+
<div>
36
+
<div id="dump"></div>
37
+
<div id="tree"></div>
38
+
</div>
39
+
<form>
40
+
<textarea id="area" rows="8" placeholder="Paste hex or base64 or PEM encoded ASN.1 BER or DER structures here, or load a file."></textarea>
36
41
<br>
37
-
Permission to use, copy, modify, and/or distribute this software for any
38
-
purpose with or without fee is hereby granted, provided that the above
39
-
copyright notice and this permission notice appear in all copies.<br>
40
42
<br>
41
-
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
42
-
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
43
-
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
44
-
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
45
-
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
46
-
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
47
-
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
48
-
</p></div>
49
-
<p>ASN.1 JavaScript decoder Copyright © 2008-2018 <a href="http://lapo.it/">Lapo Luchini</a>; released as <a href="http://opensource.org/licenses/isc-license.txt">opensource</a> under the <a href="http://en.wikipedia.org/wiki/ISC_licence">ISC license</a>.</p>
43
+
<label title="can be slow with big files"><input type="checkbox" id="wantHex" checked="checked"> with hex dump</label>
44
+
<label title="can be slow with big files"><input type="checkbox" id="trimHex" checked="checked"> trim big chunks</label>
45
+
<label title="can be slow with big files"><input type="checkbox" id="wantDef" checked="checked"> with definitions</label>
46
+
<input id="butDecode" type="button" value="decode">
47
+
<br><br>
48
+
<table>
49
+
<tr><td>Drag or load file:</td><td><input type="file" id="file"></td></tr>
50
+
<tr id="rowExamples"><td>Load examples:</td><td>
51
+
<select id="examples">
52
+
<option value="sig-p256-der.p7m">PKCS#7/CMS attached signature (DER)</option>
53
+
<option value="sig-p256-ber.p7m">PKCS#7/CMS attached signature (BER)</option>
54
+
<option value="sig-rsa1024-sha1.p7s">PKCS#7/CMS detached signature (old)</option>
55
+
<option value="cms-password.p7m">PKCS#7/CMS encrypted with password</option>
56
+
<option value="letsencrypt-x3.cer">X.509 certificate: Let's Encrypt X3</option>
57
+
<option value="ed25519.cer">X.509 certificate: ed25519 (RFC 8410)</option>
58
+
<option value="pkcs1.pem">PKCS#1 RSA key (RFC 8017)</option>
59
+
<option value="pkcs8-rsa.pem">PKCS#8 RSA key (RFC 5208)</option>
60
+
<option value="pkcs10.pem">PKCS#10 certification request (RFC 2986)</option>
61
+
<option value="crl-rfc5280.b64">CRL example (RFC 5280)</option>
62
+
<option value="cmpv2.b64">CMP PKI message (RFC 4210)</option>
63
+
<option value="ldapmessage.b64">LDAP message (RFC 4511)</option>
64
+
<option value="timestamp-req.b64">TimeStamp request (RFC 3161)</option>
65
+
</select>
66
+
<input id="butExample" type="button" value="load"><br>
67
+
</td></tr>
68
+
<tr><td>Definitions:</td><td><select id="definitions"></select></td></tr>
69
+
</table>
70
+
</form>
71
+
<br>
50
72
</div>
51
-
<p><span class="tt">OBJECT IDENTIFIER</span> values are recognized using data taken from Peter Gutmann's <a href="http://www.cs.auckland.ac.nz/~pgut001/#standards">dumpasn1</a> program.</p>
52
-
<h3>Links</h3>
53
-
<ul>
54
-
<li><a href="http://lapo.it/asn1js/">official website</a></li>
55
-
<li><a href="http://idf.lapo.it/p/asn1js/">InDefero tracker</a></li>
56
-
<li><a href="https://github.com/lapo-luchini/asn1js">github mirror</a></li>
57
-
<li><a href="https://www.ohloh.net/p/asn1js">Ohloh code stats</a></li>
58
-
</ul>
59
-
</div>
60
-
<script type="text/javascript" src="hex.js"></script>
61
-
<script type="text/javascript" src="base64.js"></script>
62
-
<script type="text/javascript" src="oids.js"></script>
63
-
<script type="text/javascript" src="int10.js"></script>
64
-
<script type="text/javascript" src="asn1.js"></script>
65
-
<script type="text/javascript" src="dom.js"></script>
66
-
<script type="text/javascript" src="index.js"></script>
73
+
<div id="help">
74
+
<h2>Instructions</h2>
75
+
<p>This page contains a JavaScript generic ASN.1 parser that can decode any valid ASN.1 DER or BER structure whether Base64-encoded (raw base64, PEM armoring and <span class="tt">begin-base64</span> are recognized) or Hex-encoded. </p>
76
+
<p>This tool can be used online at the address <a href="https://asn1js.eu/"><span class="tt">https://asn1js.eu/</span></a> or offline, unpacking <a href="https://asn1js.eu/asn1js.zip">the ZIP file</a> in a directory and opening <span class="tt">index-local.html</span> in a browser.</p>
77
+
<p>On the left of the page will be printed a tree representing the hierarchical structure, on the right side an hex dump will be shown. <br>
78
+
Hovering on the tree highlights ancestry (the hovered node and all its ancestors get colored) and the position of the hovered node gets highlighted in the hex dump (with header and content in a different colors). <br>
79
+
Clicking a node in the tree will hide its sub-nodes (collapsed nodes can be noticed because they will become <i>italic</i>).</p>
80
+
<p><b>WARNING:</b> starting from 2024-03-28 this website is using ES6 features (and modules), which can break it for <a href="https://caniuse.com/es6-module">very old browsers</a>.<br>
81
+
You can access <a href="https://rawcdn.githack.com/lapo-luchini/asn1js/1.2.4/index.html">last version before ES6 on githack</a> (which <a href="https://www.browserling.com/browse/win7/ie11/https://rawcdn.githack.com/lapo-luchini/asn1js/1.2.4/index.html">still works on IE11</a>).</p>
82
+
<div class="license">
83
+
<h3>Copyright</h3>
84
+
<div><p class="hidden">
85
+
ASN.1 JavaScript decoder<br>
86
+
Copyright © 2008-2025 Lapo Luchini <a href="mailto:lapo@lapo.it?subject=ASN1js"><lapo@lapo.it></a><br>
87
+
<br>
88
+
Permission to use, copy, modify, and/or distribute this software for any
89
+
purpose with or without fee is hereby granted, provided that the above
90
+
copyright notice and this permission notice appear in all copies.<br>
91
+
<br>
92
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
93
+
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
94
+
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
95
+
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
96
+
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
97
+
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
98
+
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
99
+
</p></div>
100
+
<p>ASN.1 JavaScript decoder Copyright © 2008-2025 <a href="https://lapo.it/">Lapo Luchini</a>; released as <a href="https://opensource.org/licenses/isc-license.txt">opensource</a> under the <a href="https://en.wikipedia.org/wiki/ISC_licence">ISC license</a>.</p>
101
+
</div>
102
+
<p><span class="tt">OBJECT IDENTIFIER</span> values are recognized using data taken from Peter Gutmann's <a href="https://www.cs.auckland.ac.nz/~pgut001/#standards">dumpasn1</a> program.</p>
103
+
<h3>Links</h3>
104
+
<ul>
105
+
<li><a href="https://asn1js.eu/">official website</a></li>
106
+
<li><a href="https://lapo.it/asn1js/">alternate website</a></li>
107
+
<li><a href="https://asn1js.eu/index-local.html">single-file version working locally</a> (just save this link)</li>
108
+
<li>previous versions on githack: <select id="tags"><option>[select tag]</option></select></li>
109
+
<li><a href="http://idf.lapo.it/p/asn1js/">InDefero tracker</a> (currently offline)</li>
110
+
<li><a href="https://github.com/lapo-luchini/asn1js">github mirror</a></li>
111
+
<li><a href="https://github.com/lapo-luchini/asn1js/blob/trunk/CHANGELOG.md">ChangeLog on GitHub</a></li>
112
+
<li><a href="https://www.openhub.net/p/asn1js">OpenHub code stats</a></li>
113
+
</ul>
114
+
</div>
115
+
<script type="module" src="index.js"></script>
67
116
</body>
68
117
</html>
+148
-56
index.js
+148
-56
index.js
···
1
-
๏ปฟ/*global Hex, Base64, ASN1 */
2
-
"use strict";
1
+
import './theme.js';
2
+
import { ASN1DOM } from './dom.js';
3
+
import { Base64 } from './base64.js';
4
+
import { Hex } from './hex.js';
5
+
import { Defs } from './defs.js';
6
+
import { tags } from './tags.js';
3
7
4
-
var maxLength = 10240,
8
+
const
9
+
maxLength = 10240,
5
10
reHex = /^\s*(?:[0-9A-Fa-f][0-9A-Fa-f]\s*)+$/,
6
11
tree = id('tree'),
7
12
dump = id('dump'),
8
-
wantHex = id('wantHex'),
13
+
wantHex = checkbox('wantHex'),
14
+
trimHex = checkbox('trimHex'),
15
+
wantDef = checkbox('wantDef'),
9
16
area = id('area'),
10
17
file = id('file'),
11
-
hash = null;
18
+
examples = id('examples'),
19
+
selectDefs = id('definitions'),
20
+
selectTag = id('tags');
21
+
22
+
let hash = null;
23
+
24
+
if (!window.console || !window.console.log) // IE8 with closed developer tools
25
+
window.console = { log: function () {} };
12
26
function id(elem) {
13
27
return document.getElementById(elem);
14
28
}
15
29
function text(el, string) {
16
-
if ('textContent' in el)
17
-
el.textContent = string;
18
-
else
19
-
el.innerText = string;
30
+
if ('textContent' in el) el.textContent = string;
31
+
else el.innerText = string;
32
+
}
33
+
function checkbox(name) {
34
+
const el = id(name);
35
+
const cfg = localStorage.getItem(name);
36
+
if (cfg === 'false')
37
+
el.checked = false;
38
+
el.onchange = () => localStorage.setItem(name, el.checked);
39
+
return el;
20
40
}
21
-
function decode(der) {
41
+
function show(asn1) {
22
42
tree.innerHTML = '';
23
43
dump.innerHTML = '';
44
+
let ul = document.createElement('ul');
45
+
ul.className = 'treecollapse';
46
+
tree.appendChild(ul);
47
+
ul.appendChild(asn1.toDOM());
48
+
if (wantHex.checked) dump.appendChild(asn1.toHexDOM(undefined, trimHex.checked));
49
+
}
50
+
export function decode(der, offset) {
51
+
offset = offset || 0;
24
52
try {
25
-
var asn1 = ASN1.decode(der);
26
-
tree.appendChild(asn1.toDOM());
27
-
if (wantHex.checked)
28
-
dump.appendChild(asn1.toHexDOM());
29
-
var b64 = (der.length < maxLength) ? asn1.toB64String() : '';
30
-
if (area.value === '')
31
-
area.value = Base64.pretty(b64);
53
+
const asn1 = ASN1DOM.decode(der, offset);
54
+
if (wantDef.checked) {
55
+
selectDefs.innerHTML = '';
56
+
const types = Defs.commonTypes
57
+
.map(type => {
58
+
const stats = Defs.match(asn1, type);
59
+
return { type, match: stats.recognized / stats.total };
60
+
})
61
+
.sort((a, b) => b.match - a.match);
62
+
for (const t of types) {
63
+
t.element = document.createElement('option');
64
+
t.element.innerText = (t.match * 100).toFixed(1) + '% ' + t.type.description;
65
+
selectDefs.appendChild(t.element);
66
+
}
67
+
let not = document.createElement('option');
68
+
not.innerText = 'no definition';
69
+
selectDefs.appendChild(not);
70
+
Defs.match(asn1, types[0].type);
71
+
selectDefs.onchange = () => {
72
+
for (const t of types) {
73
+
if (t.element == selectDefs.selectedOptions[0]) {
74
+
Defs.match(asn1, t.type);
75
+
show(asn1);
76
+
return;
77
+
}
78
+
}
79
+
Defs.match(asn1, null);
80
+
show(asn1);
81
+
};
82
+
} else
83
+
selectDefs.innerHTML = '<option>no definition</option>';
84
+
show(asn1);
85
+
let b64 = der.length < maxLength ? asn1.toB64String() : '';
86
+
if (area.value === '') area.value = Base64.pretty(b64);
32
87
try {
33
88
window.location.hash = hash = '#' + b64;
34
-
} catch (e) { // fails with "Access Denied" on IE with URLs longer than ~2048 chars
89
+
} catch (ignore) {
90
+
// fails with "Access Denied" on IE with URLs longer than ~2048 chars
35
91
window.location.hash = hash = '#';
36
92
}
93
+
let endOffset = asn1.posEnd();
94
+
if (endOffset < der.length) {
95
+
let p = document.createElement('p');
96
+
p.innerText = 'Input contains ' + (der.length - endOffset) + ' more bytes to decode.';
97
+
let button = document.createElement('button');
98
+
button.innerText = 'try to decode';
99
+
button.onclick = function () {
100
+
decode(der, endOffset);
101
+
};
102
+
p.appendChild(button);
103
+
tree.insertBefore(p, tree.firstChild);
104
+
}
37
105
} catch (e) {
38
106
text(tree, e);
39
107
}
40
108
}
41
-
function decodeText(val) {
109
+
export function decodeText(val) {
42
110
try {
43
-
var der = reHex.test(val) ? Hex.decode(val) : Base64.unarmor(val);
111
+
let der = reHex.test(val) ? Hex.decode(val) : Base64.unarmor(val);
44
112
decode(der);
45
113
} catch (e) {
46
114
text(tree, e);
47
115
dump.innerHTML = '';
48
116
}
49
117
}
50
-
function decodeBinaryString(str) {
51
-
var der;
118
+
export function decodeBinaryString(str) {
119
+
let der;
52
120
try {
53
-
if (reHex.test(str))
54
-
der = Hex.decode(str);
55
-
else if (Base64.re.test(str))
56
-
der = Base64.unarmor(str);
57
-
else
58
-
der = str;
121
+
if (reHex.test(str)) der = Hex.decode(str);
122
+
else if (Base64.re.test(str)) der = Base64.unarmor(str);
123
+
else der = str;
59
124
decode(der);
60
-
} catch (e) {
125
+
} catch (ignore) {
61
126
text(tree, 'Cannot decode file.');
62
127
dump.innerHTML = '';
63
128
}
64
129
}
65
130
// set up buttons
66
-
id('butDecode').onclick = function () { decodeText(area.value); };
67
-
id('butClear').onclick = function () {
68
-
area.value = '';
69
-
tree.innerHTML = '';
70
-
dump.innerHTML = '';
71
-
hash = window.location.hash = '';
72
-
}
73
-
id('butExample').onclick = function () {
74
-
var demo = 'MIAGCSqGSIb3DQEHAqCAMIACAQExCzAJBgUrDgMCGgUAMIAGCSqGSIb3DQEHAQAAoIAwggHvMIIBWKADAgECAhAvoXazbunwSfREtACZZhlFMA0GCSqGSIb3DQEBBQUAMAwxCjAIBgNVBAMMAWEwHhcNMDgxMDE1MTUwMzQxWhcNMDkxMDE1MTUwMzQxWjAMMQowCAYDVQQDDAFhMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCJUwlwhu5hR8X01f-vG0mKPRHsVRjpZNxSEmsmFPdDiD9kylE3ertTDf0gRkpIvWfNJ-eymuxoXF0Qgl5gXAVuSrjupGD6J-VapixJiwLXJHokmDihLs3zfGARz08O3qnO5ofBy0pRxq5isu_bAAcjoByZ1sI_g0iAuotC1UFObwIDAQABo1IwUDAOBgNVHQ8BAf8EBAMCBPAwHQYDVR0OBBYEFEIGXQB4h-04Z3y_n7Nv94-CqPitMB8GA1UdIwQYMBaAFEIGXQB4h-04Z3y_n7Nv94-CqPitMA0GCSqGSIb3DQEBBQUAA4GBAE0G7tAiaacJxvP3fhEj-yP9VDxL0omrRRAEaMXwWaBf_Ggk1T_u-8_CDAdjuGNCiF6ctooKc8u8KpnZJsGqnpGQ4n6L2KjTtRUDh-hija0eJRBFdirPQe2HAebQGFnmOk6Mn7KiQfBIsOzXim_bFqaBSbf06bLTQNwFouSO-jwOAAAxggElMIIBIQIBATAgMAwxCjAIBgNVBAMMAWECEC-hdrNu6fBJ9ES0AJlmGUUwCQYFKw4DAhoFAKBdMBgGCSqGSIb3DQEJAzELBgkqhkiG9w0BBwEwHAYJKoZIhvcNAQkFMQ8XDTA4MTAxNTE1MDM0M1owIwYJKoZIhvcNAQkEMRYEFAAAAAAAAAAAAAAAAAAAAAAAAAAAMA0GCSqGSIb3DQEBAQUABIGAdB7ShyMGf5lVdZtvwKlnYLHMUqJWuBnFk7aQwHAmg3JnH6OcgId2F-xfg6twXm8hhUBkhHPlHGoWa5kQtN9n8rz3NorzvcM_1Xv9-0Eal7NYSn2Hb0C0DMj2XNIYH2C6CLIHkmy1egzUvzsomZPTkx5nGDWm-8WHCjWb9A6lyrMAAAAAAAA';
75
-
decodeText(demo);
131
+
const butClickHandlers = {
132
+
butDecode: () => {
133
+
decodeText(area.value);
134
+
},
135
+
butClear: () => {
136
+
area.value = '';
137
+
file.value = '';
138
+
tree.innerHTML = '';
139
+
dump.innerHTML = '';
140
+
selectDefs.innerHTML = '';
141
+
hash = window.location.hash = '';
142
+
},
143
+
butExample: () => {
144
+
console.log('Loading example:', examples.value);
145
+
let request = new XMLHttpRequest();
146
+
request.open('GET', 'examples/' + examples.value, true);
147
+
request.onreadystatechange = function () {
148
+
if (this.readyState !== 4) return;
149
+
if (this.status >= 200 && this.status < 400) {
150
+
area.value = this.responseText;
151
+
decodeText(this.responseText);
152
+
} else {
153
+
console.log('Error loading example.');
154
+
}
155
+
};
156
+
request.send();
157
+
},
76
158
};
159
+
for (const [name, onClick] of Object.entries(butClickHandlers)) {
160
+
let elem = id(name);
161
+
if (elem)
162
+
elem.onclick = onClick;
163
+
}
77
164
// this is only used if window.FileReader
78
165
function read(f) {
79
166
area.value = ''; // clear text area, will get b64 content
80
-
var r = new FileReader();
167
+
let r = new FileReader();
81
168
r.onloadend = function () {
82
-
if (r.error)
83
-
alert("Your browser couldn't read the specified file (error code " + r.error.code + ").");
84
-
else
85
-
decodeBinaryString(r.result);
169
+
if (r.error) alert("Your browser couldn't read the specified file (error code " + r.error.code + ').');
170
+
else decodeBinaryString(r.result);
86
171
};
87
172
r.readAsBinaryString(f);
88
173
}
89
174
function load() {
90
-
if (file.files.length === 0)
91
-
alert("Select a file to load first.");
92
-
else
93
-
read(file.files[0]);
175
+
if (file.files.length === 0) alert('Select a file to load first.');
176
+
else read(file.files[0]);
94
177
}
95
178
function loadFromHash() {
96
179
if (window.location.hash && window.location.hash != hash) {
97
180
hash = window.location.hash;
98
-
// Firefox is not consistent with other browsers and return an
181
+
// Firefox is not consistent with other browsers and returns an
99
182
// already-decoded hash string so we risk double-decoding here,
100
183
// but since % is not allowed in base64 nor hexadecimal, it's ok
101
-
var val = decodeURIComponent(hash.substr(1));
102
-
decodeText(val);
184
+
let val = decodeURIComponent(hash.substr(1));
185
+
if (val.length) decodeText(val);
103
186
}
104
187
}
105
188
function stop(e) {
···
108
191
}
109
192
function dragAccept(e) {
110
193
stop(e);
111
-
if (e.dataTransfer.files.length > 0)
112
-
read(e.dataTransfer.files[0]);
194
+
if (e.dataTransfer.files.length > 0) read(e.dataTransfer.files[0]);
113
195
}
114
196
// main
115
-
if ('onhashchange' in window)
116
-
window.onhashchange = loadFromHash;
197
+
if ('onhashchange' in window) window.onhashchange = loadFromHash;
117
198
loadFromHash();
118
199
document.ondragover = stop;
119
200
document.ondragleave = stop;
120
-
if ('FileReader' in window) {
201
+
if ('FileReader' in window && 'readAsBinaryString' in new FileReader()) {
121
202
file.style.display = 'block';
122
203
file.onchange = load;
123
204
document.ondrop = dragAccept;
124
205
}
206
+
for (let tag in tags) {
207
+
let date = tags[tag];
208
+
let el = document.createElement('option');
209
+
el.value = tag;
210
+
el.innerText = date + ' ' + tag;
211
+
selectTag.appendChild(el);
212
+
}
213
+
selectTag.onchange = function (ev) {
214
+
let tag = ev.target.selectedOptions[0].value;
215
+
window.location.href = 'https://rawcdn.githack.com/lapo-luchini/asn1js/' + tag + '/index.html';
216
+
};
-87
int10.js
-87
int10.js
···
1
-
// Big integer base-10 printing library
2
-
// Copyright (c) 2014-2018 Lapo Luchini <lapo@lapo.it>
3
-
4
-
// Permission to use, copy, modify, and/or distribute this software for any
5
-
// purpose with or without fee is hereby granted, provided that the above
6
-
// copyright notice and this permission notice appear in all copies.
7
-
//
8
-
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9
-
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10
-
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11
-
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12
-
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13
-
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14
-
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15
-
16
-
(function () {
17
-
"use strict";
18
-
19
-
var max = 10000000000000; // biggest 10^n integer that can still fit 2^53 when multiplied by 256
20
-
21
-
function Int10(value) {
22
-
this.buf = [+value || 0];
23
-
}
24
-
25
-
Int10.prototype.mulAdd = function (m, c) {
26
-
// assert(m <= 256)
27
-
var b = this.buf,
28
-
l = b.length,
29
-
i, t;
30
-
for (i = 0; i < l; ++i) {
31
-
t = b[i] * m + c;
32
-
if (t < max)
33
-
c = 0;
34
-
else {
35
-
c = 0|(t / max);
36
-
t -= c * max;
37
-
}
38
-
b[i] = t;
39
-
}
40
-
if (c > 0)
41
-
b[i] = c;
42
-
};
43
-
44
-
Int10.prototype.sub = function (c) {
45
-
// assert(m <= 256)
46
-
var b = this.buf,
47
-
l = b.length,
48
-
i, t;
49
-
for (i = 0; i < l; ++i) {
50
-
t = b[i] - c;
51
-
if (t < 0) {
52
-
t += max;
53
-
c = 1;
54
-
} else
55
-
c = 0;
56
-
b[i] = t;
57
-
}
58
-
while (b[b.length - 1] === 0)
59
-
b.pop();
60
-
};
61
-
62
-
Int10.prototype.toString = function (base) {
63
-
if ((base || 10) != 10)
64
-
throw 'only base 10 is supported';
65
-
var b = this.buf,
66
-
s = b[b.length - 1].toString();
67
-
for (var i = b.length - 2; i >= 0; --i)
68
-
s += (max + b[i]).toString().substring(1);
69
-
return s;
70
-
};
71
-
72
-
Int10.prototype.valueOf = function () {
73
-
var b = this.buf,
74
-
v = 0;
75
-
for (var i = b.length - 1; i >= 0; --i)
76
-
v = v * max + b[i];
77
-
return v;
78
-
};
79
-
80
-
Int10.prototype.simplify = function () {
81
-
var b = this.buf;
82
-
return (b.length == 1) ? b[0] : this;
83
-
};
84
-
85
-
// export globals
86
-
if (typeof module !== 'undefined') { module.exports = Int10; } else { window.Int10 = Int10; }
87
-
})();
+9
-1
mirror_to_github.sh
+9
-1
mirror_to_github.sh
···
1
1
#!/bin/sh
2
2
cd `dirname "$0"`
3
+
mtn sy
3
4
if [ ! -d .git ]; then
4
-
git init
5
+
git init # --initial-branch=trunk # not yet supported on WSL
6
+
git checkout -b trunk
5
7
git remote add origin git@github.com:lapo-luchini/asn1js.git
6
8
rm git-marks1.txt git-marks2.txt
7
9
fi
8
10
touch git-marks1.txt git-marks2.txt
11
+
[ -f git-authors.txt ] || echo 'lapo@lapo.it = Lapo Luchini <lapo@lapo.it>' > git-authors.txt
12
+
mtn ls branches --ignore-suspend-certs | sort -V | awk '
13
+
NR == 1 { base = $0; len = length(base) }
14
+
{ d = length($0) - len; print $0 " = " (d > 0 ? substr($0, len+2) : "trunk") }
15
+
' > git-branches.txt
9
16
mtn --quiet --authors=git-authors.txt --branches-file=git-branches.txt --import-marks=git-marks1.txt --export-marks=git-marks1.txt git_export | \
10
17
git fast-import --import-marks=git-marks2.txt --export-marks=git-marks2.txt
11
18
git push --mirror origin
19
+
git reset # to update working copy state (doesn't change files)
+473
-70
oids.js
+473
-70
oids.js
···
2
2
// which is made by Peter Gutmann and whose license states:
3
3
// You can use this code in whatever way you want,
4
4
// as long as you don't try to claim you wrote it.
5
-
var oids = {
5
+
export const oids = {
6
6
"0.2.262.1.10": { "d": "Telesec", "c": "Deutsche Telekom" },
7
7
"0.2.262.1.10.0": { "d": "extension", "c": "Telesec" },
8
8
"0.2.262.1.10.1": { "d": "mechanism", "c": "Telesec" },
···
290
290
"0.4.0.127.0.7.4.1.1.2": { "d": "bsiCertReqMsgswithOuterSignature", "c": "BSI TR-03109" },
291
291
"0.4.0.127.0.7.4.1.1.3": { "d": "bsiAuthorizedCertReqMsgs", "c": "BSI TR-03109" },
292
292
"0.4.0.127.0.7.4.1.2.2": { "d": "bsiSignedRevReqs", "c": "BSI TR-03109" },
293
-
"0.4.0.1862": { "d": "etsiQcsProfile", "c": "ETSI TS 101 862 qualified certificates" },
294
-
"0.4.0.1862.1": { "d": "etsiQcs", "c": "ETSI TS 101 862 qualified certificates" },
295
-
"0.4.0.1862.1.1": { "d": "etsiQcsCompliance", "c": "ETSI TS 101 862 qualified certificates" },
296
-
"0.4.0.1862.1.2": { "d": "etsiQcsLimitValue", "c": "ETSI TS 101 862 qualified certificates" },
297
-
"0.4.0.1862.1.3": { "d": "etsiQcsRetentionPeriod", "c": "ETSI TS 101 862 qualified certificates" },
298
-
"0.4.0.1862.1.4": { "d": "etsiQcsQcSSCD", "c": "ETSI TS 101 862 qualified certificates" },
293
+
"0.4.0.1862": { "d": "etsiQcsProfile", "c": "ETSI TS 101 862 Qualified Certificates" },
294
+
"0.4.0.1862.1": { "d": "etsiQcs", "c": "ETSI TS 101 862 Qualified Certificates" },
295
+
"0.4.0.1862.1.1": { "d": "etsiQcsCompliance", "c": "ETSI TS 101 862 Qualified Certificates" },
296
+
"0.4.0.1862.1.2": { "d": "etsiQcsLimitValue", "c": "ETSI TS 101 862 Qualified Certificates" },
297
+
"0.4.0.1862.1.3": { "d": "etsiQcsRetentionPeriod", "c": "ETSI TS 101 862 Qualified Certificates" },
298
+
"0.4.0.1862.1.4": { "d": "etsiQcsQcSSCD", "c": "ETSI TS 101 862 Qualified Certificates" },
299
+
"0.4.0.1862.1.5": { "d": "etsiQcsQcPDS", "c": "ETSI TS 101 862 Qualified Certificates" },
300
+
"0.4.0.1862.1.6": { "d": "etsiQcsQcType", "c": "ETSI TS 101 862 Qualified Certificates" },
301
+
"0.4.0.1862.1.6.1": { "d": "etsiQcsQctEsign", "c": "ETSI TS 101 862 Qualified Certificates" },
302
+
"0.4.0.1862.1.6.2": { "d": "etsiQcsQctEseal", "c": "ETSI TS 101 862 Qualified Certificates" },
303
+
"0.4.0.1862.1.6.3": { "d": "etsiQcsQctWeb", "c": "ETSI TS 101 862 Qualified Certificates" },
304
+
"0.4.0.2042.1.1": { "d": "normalisedCertificatePolicy", "c": "ETSI TS 102 042 Certificate Policies" },
305
+
"0.4.0.2042.1.2": { "d": "normalisedCertificatePolicyPlus", "c": "ETSI TS 102 042 Certificate Policies" },
306
+
"0.4.0.2042.1.3": { "d": "lightweightCertificatePolicy", "c": "ETSI TS 102 042 Certificate Policies" },
307
+
"0.4.0.2042.1.4": { "d": "evCertificatePolicy", "c": "ETSI TS 102 042 Certificate Policies" },
308
+
"0.4.0.2042.1.5": { "d": "evCertificatePolicyPlus", "c": "ETSI TS 102 042 Certificate Policies" },
309
+
"0.4.0.2042.1.6": { "d": "dvCertificatePolicy", "c": "ETSI TS 102 042 Certificate Policies" },
310
+
"0.4.0.2042.1.7": { "d": "ovCertificatePolicy", "c": "ETSI TS 102 042 Certificate Policies" },
311
+
"0.4.0.194112.1.0": { "d": "qcpNatural", "c": "EU Qualified Certificate Policy" },
312
+
"0.4.0.194112.1.1": { "d": "qcpLegal", "c": "EU Qualified Certificate Policy" },
313
+
"0.4.0.194112.1.2": { "d": "qcpNaturalQscd", "c": "EU Qualified Certificate Policy" },
314
+
"0.4.0.194112.1.3": { "d": "qcpLegalQscd", "c": "EU Qualified Certificate Policy" },
315
+
"0.4.0.194112.1.4": { "d": "qcpWeb", "c": "EU Qualified Certificate Policy" },
316
+
"0.4.0.194121.1.1": { "d": "qcsSemanticsIdNatural", "c": "EU Qualified Certificate Identifier" },
317
+
"0.4.0.194121.1.2": { "d": "qcsSemanticsIdLegal", "c": "EU Qualified Certificate Identifier" },
318
+
"0.4.0.194121.1.3": { "d": "qcsSemanticsIdeIDASNatural", "c": "EU Qualified Certificate Identifier" },
319
+
"0.4.0.194121.1.4": { "d": "qcsSemanticsIdeIDASLegal", "c": "EU Qualified Certificate Identifier" },
299
320
"0.9.2342.19200300.100.1.1": { "d": "userID", "c": "Some oddball X.500 attribute collection" },
300
321
"0.9.2342.19200300.100.1.3": { "d": "rfc822Mailbox", "c": "Some oddball X.500 attribute collection" },
301
322
"0.9.2342.19200300.100.1.25": { "d": "domainComponent", "c": "Men are from Mars, this OID is from Pluto" },
302
323
"1.0.10118.3.0.49": { "d": "ripemd160", "c": "ISO 10118-3 hash function" },
303
324
"1.0.10118.3.0.50": { "d": "ripemd128", "c": "ISO 10118-3 hash function" },
304
325
"1.0.10118.3.0.55": { "d": "whirlpool", "c": "ISO 10118-3 hash function" },
326
+
"1.0.18033.2": { "d": "iso18033-2", "c": "ISO 18033-2" },
327
+
"1.0.18033.2.2": { "d": "kem", "c": "ISO 18033-2 algorithms" },
328
+
"1.0.18033.2.2.4": { "d": "kemRSA", "c": "ISO 18033-2 KEM algorithms" },
305
329
"1.2.36.1.3.1.1.1": { "d": "qgpki", "c": "Queensland Government PKI" },
306
330
"1.2.36.1.3.1.1.1.1": { "d": "qgpkiPolicies", "c": "QGPKI policies" },
307
331
"1.2.36.1.3.1.1.1.1.1": { "d": "qgpkiMedIntermedCA", "c": "QGPKI policy" },
···
368
392
"1.2.36.68980861.1.1.11": { "d": "signetIntraNet", "c": "Signet CA" },
369
393
"1.2.36.68980861.1.1.20": { "d": "signetPolicy", "c": "Signet CA" },
370
394
"1.2.36.75878867.1.100.1.1": { "d": "certificatesAustraliaPolicy", "c": "Certificates Australia CA" },
395
+
"1.2.112.0.2.0.34.101.45.2.1": { "d": "bignPubkey", "c": "Belarus STB 34.101.45" },
396
+
"1.2.112.0.2.0.34.101.45.3.1": { "d": "bignParamB1", "c": "Belarus STB 34.101.45" },
397
+
"1.2.112.0.2.0.34.101.45.3.2": { "d": "bignParamB2", "c": "Belarus STB 34.101.45" },
398
+
"1.2.112.0.2.0.34.101.45.3.3": { "d": "bignParamB3", "c": "Belarus STB 34.101.45" },
399
+
"1.2.112.0.2.0.34.101.45.11": { "d": "bignWithHSpec", "c": "Belarus STB 34.101.45" },
400
+
"1.2.112.0.2.0.34.101.45.12": { "d": "bignWithHBelt", "c": "Belarus STB 34.101.45" },
371
401
"1.2.156.10197.1": { "d": "gmtCryptographicAlgorithm", "c": "China GM Standards Committee" },
372
402
"1.2.156.10197.1.100": { "d": "gmtBlockCipher", "c": "China GM Standards Committee" },
373
403
"1.2.156.10197.1.102": { "d": "sm1Cipher", "c": "China GM Standards Committee" },
···
544
574
"1.2.643.7.1.1.3.3": { "d": "gost2012Signature512", "c": "GOST R 34.10-2012 512 bit signature" },
545
575
"1.2.643.7.1.1.6.1": { "d": "cryptoProECDH256", "c": "CryptoPro ECC DH algorithm for GOST R 34.10-2012 256 bit key" },
546
576
"1.2.643.7.1.1.6.2": { "d": "cryptoProECDH512", "c": "CryptoPro ECC DH algorithm for GOST R 34.10-2012 512 bit key" },
577
+
"1.2.643.100.113.1": { "d": "cryptoProClassSignToolKC1", "c": "CryptoPro GOST" },
578
+
"1.2.643.100.113.2": { "d": "cryptoProClassSignToolKC2", "c": "CryptoPro GOST" },
579
+
"1.2.643.100.113.3": { "d": "cryptoProClassSignToolKC3", "c": "CryptoPro GOST" },
580
+
"1.2.643.100.113.4": { "d": "cryptoProClassSignToolKB1", "c": "CryptoPro GOST" },
581
+
"1.2.643.100.113.5": { "d": "cryptoProClassSignToolKB2", "c": "CryptoPro GOST" },
582
+
"1.2.643.100.113.6": { "d": "cryptoProClassSignToolKA1", "c": "CryptoPro GOST" },
547
583
"1.2.752.34.1": { "d": "seis-cp", "c": "SEIS Project" },
548
584
"1.2.752.34.1.1": { "d": "SEIS high-assurance policyIdentifier", "c": "SEIS Project certificate policies" },
549
585
"1.2.752.34.1.2": { "d": "SEIS GAK policyIdentifier", "c": "SEIS Project certificate policies" },
···
702
738
"1.2.840.113549.1.9.16.0.7": { "d": "id-mod-ets-eSigPolicy-88", "c": "S/MIME Modules" },
703
739
"1.2.840.113549.1.9.16.0.8": { "d": "id-mod-ets-eSigPolicy-88", "c": "S/MIME Modules" },
704
740
"1.2.840.113549.1.9.16.1": { "d": "contentType", "c": "S/MIME" },
741
+
"1.2.840.113549.1.9.16.1.0": { "d": "anyContentType", "c": "S/MIME Content Types" },
705
742
"1.2.840.113549.1.9.16.1.1": { "d": "receipt", "c": "S/MIME Content Types" },
706
743
"1.2.840.113549.1.9.16.1.2": { "d": "authData", "c": "S/MIME Content Types" },
707
744
"1.2.840.113549.1.9.16.1.3": { "d": "publishCert", "c": "S/MIME Content Types" },
···
736
773
"1.2.840.113549.1.9.16.1.32": { "d": "asAdjacencyAttest", "c": "S/MIME Content Types", "w": true },
737
774
"1.2.840.113549.1.9.16.1.33": { "d": "rpkiTrustAnchor", "c": "S/MIME Content Types" },
738
775
"1.2.840.113549.1.9.16.1.34": { "d": "trustAnchorList", "c": "S/MIME Content Types" },
776
+
"1.2.840.113549.1.9.16.1.35": { "d": "rpkiGhostbusters", "c": "S/MIME Content Types" },
777
+
"1.2.840.113549.1.9.16.1.36": { "d": "resourceTaggedAttest", "c": "S/MIME Content Types" },
778
+
"1.2.840.113549.1.9.16.1.37": { "d": "utf8TextWithCRLF", "c": "S/MIME Content Types" },
779
+
"1.2.840.113549.1.9.16.1.38": { "d": "htmlWithCRLF", "c": "S/MIME Content Types" },
780
+
"1.2.840.113549.1.9.16.1.39": { "d": "epub", "c": "S/MIME Content Types" },
781
+
"1.2.840.113549.1.9.16.1.40": { "d": "animaJSONVoucher", "c": "S/MIME Content Types" },
782
+
"1.2.840.113549.1.9.16.1.41": { "d": "mudType", "c": "S/MIME Content Types" },
783
+
"1.2.840.113549.1.9.16.1.42": { "d": "sztpConveyedInfoXML", "c": "S/MIME Content Types" },
784
+
"1.2.840.113549.1.9.16.1.43": { "d": "sztpConveyedInfoJSON", "c": "S/MIME Content Types" },
785
+
"1.2.840.113549.1.9.16.1.44": { "d": "cbor", "c": "S/MIME Content Types" },
786
+
"1.2.840.113549.1.9.16.1.45": { "d": "cborSequence", "c": "S/MIME Content Types" },
787
+
"1.2.840.113549.1.9.16.1.46": { "d": "animaCBORVoucher", "c": "S/MIME Content Types", "w": true },
788
+
"1.2.840.113549.1.9.16.1.47": { "d": "geofeedCSVwithCRLF", "c": "S/MIME Content Types" },
789
+
"1.2.840.113549.1.9.16.1.48": { "d": "rpkiSignedChecklist", "c": "S/MIME Content Types" },
790
+
"1.2.840.113549.1.9.16.1.49": { "d": "rpkiASPA", "c": "S/MIME Content Types" },
739
791
"1.2.840.113549.1.9.16.2": { "d": "authenticatedAttributes", "c": "S/MIME" },
740
792
"1.2.840.113549.1.9.16.2.1": { "d": "receiptRequest", "c": "S/MIME Authenticated Attributes" },
741
793
"1.2.840.113549.1.9.16.2.2": { "d": "securityLabel", "c": "S/MIME Authenticated Attributes" },
···
788
840
"1.2.840.113549.1.9.16.2.49": { "d": "erInternal", "c": "S/MIME Authenticated Attributes" },
789
841
"1.2.840.113549.1.9.16.2.50": { "d": "erExternal", "c": "S/MIME Authenticated Attributes" },
790
842
"1.2.840.113549.1.9.16.2.51": { "d": "multipleSignatures", "c": "S/MIME Authenticated Attributes" },
843
+
"1.2.840.113549.1.9.16.2.52": { "d": "cmsAlgorithmProtect", "c": "S/MIME Authenticated Attributes" },
844
+
"1.2.840.113549.1.9.16.2.53": { "d": "setKeyInformation", "c": "S/MIME Authenticated Attributes" },
845
+
"1.2.840.113549.1.9.16.2.54": { "d": "asymmDecryptKeyID", "c": "S/MIME Authenticated Attributes" },
846
+
"1.2.840.113549.1.9.16.2.55": { "d": "secureHeaderFieldsIdentifier", "c": "S/MIME Authenticated Attributes" },
847
+
"1.2.840.113549.1.9.16.2.56": { "d": "otpChallenge", "c": "S/MIME Authenticated Attributes" },
848
+
"1.2.840.113549.1.9.16.2.57": { "d": "revocationChallenge", "c": "S/MIME Authenticated Attributes" },
849
+
"1.2.840.113549.1.9.16.2.58": { "d": "estIdentityLinking", "c": "S/MIME Authenticated Attributes" },
791
850
"1.2.840.113549.1.9.16.3.1": { "d": "esDHwith3DES", "c": "S/MIME Algorithms. Obsolete", "w": true },
792
851
"1.2.840.113549.1.9.16.3.2": { "d": "esDHwithRC2", "c": "S/MIME Algorithms. Obsolete", "w": true },
793
852
"1.2.840.113549.1.9.16.3.3": { "d": "3desWrap", "c": "S/MIME Algorithms. Obsolete", "w": true },
···
804
863
"1.2.840.113549.1.9.16.3.14": { "d": "rsaKEM", "c": "S/MIME Algorithms" },
805
864
"1.2.840.113549.1.9.16.3.15": { "d": "authEnc128", "c": "S/MIME Algorithms" },
806
865
"1.2.840.113549.1.9.16.3.16": { "d": "authEnc256", "c": "S/MIME Algorithms" },
866
+
"1.2.840.113549.1.9.16.3.17": { "d": "hssLmsHashSig", "c": "S/MIME Algorithms" },
867
+
"1.2.840.113549.1.9.16.3.18": { "d": "chaCha20Poly1305", "c": "S/MIME Algorithms" },
807
868
"1.2.840.113549.1.9.16.3.19": { "d": "ecdhHKDF-SHA256", "c": "S/MIME Algorithms" },
808
869
"1.2.840.113549.1.9.16.3.20": { "d": "ecdhHKDF-SHA384", "c": "S/MIME Algorithms" },
809
870
"1.2.840.113549.1.9.16.3.21": { "d": "ecdhHKDF-SHA512", "c": "S/MIME Algorithms" },
871
+
"1.2.840.113549.1.9.16.3.22": { "d": "aesSIV-CMAC-256", "c": "S/MIME Algorithms" },
872
+
"1.2.840.113549.1.9.16.3.23": { "d": "aesSIV-CMAC-384", "c": "S/MIME Algorithms" },
873
+
"1.2.840.113549.1.9.16.3.24": { "d": "aesSIV-CMAC-512", "c": "S/MIME Algorithms" },
874
+
"1.2.840.113549.1.9.16.3.25": { "d": "aesSIV-CMAC-wrap256", "c": "S/MIME Algorithms" },
875
+
"1.2.840.113549.1.9.16.3.26": { "d": "aesSIV-CMAC-wrap384", "c": "S/MIME Algorithms" },
876
+
"1.2.840.113549.1.9.16.3.27": { "d": "aesSIV-CMAC-wrap512", "c": "S/MIME Algorithms" },
877
+
"1.2.840.113549.1.9.16.3.28": { "d": "hkdfWithSha256", "c": "S/MIME Algorithms" },
878
+
"1.2.840.113549.1.9.16.3.29": { "d": "hkdfWithSha384", "c": "S/MIME Algorithms" },
879
+
"1.2.840.113549.1.9.16.3.30": { "d": "hkdfWithSha512", "c": "S/MIME Algorithms" },
810
880
"1.2.840.113549.1.9.16.4.1": { "d": "certDist-ldap", "c": "S/MIME Certificate Distribution" },
811
881
"1.2.840.113549.1.9.16.5.1": { "d": "sigPolicyQualifier-spuri x", "c": "S/MIME Signature Policy Qualifiers" },
812
882
"1.2.840.113549.1.9.16.5.2": { "d": "sigPolicyQualifier-spUserNotice", "c": "S/MIME Signature Policy Qualifiers" },
···
816
886
"1.2.840.113549.1.9.16.6.4": { "d": "proofOfSender", "c": "S/MIME Commitment Type Identifiers" },
817
887
"1.2.840.113549.1.9.16.6.5": { "d": "proofOfApproval", "c": "S/MIME Commitment Type Identifiers" },
818
888
"1.2.840.113549.1.9.16.6.6": { "d": "proofOfCreation", "c": "S/MIME Commitment Type Identifiers" },
889
+
"1.2.840.113549.1.9.16.7.1": { "d": "testAmoco", "c": "S/MIMETest Security Policies" },
890
+
"1.2.840.113549.1.9.16.7.2": { "d": "testCaterpillar", "c": "S/MIMETest Security Policies" },
891
+
"1.2.840.113549.1.9.16.7.3": { "d": "testWhirlpool", "c": "S/MIMETest Security Policies" },
892
+
"1.2.840.113549.1.9.16.7.4": { "d": "testWhirlpoolCategories", "c": "S/MIMETest Security Policies" },
819
893
"1.2.840.113549.1.9.16.8.1": { "d": "glUseKEK", "c": "S/MIME Symmetric Key Distribution Attributes" },
820
894
"1.2.840.113549.1.9.16.8.2": { "d": "glDelete", "c": "S/MIME Symmetric Key Distribution Attributes" },
821
895
"1.2.840.113549.1.9.16.8.3": { "d": "glAddMember", "c": "S/MIME Symmetric Key Distribution Attributes" },
···
836
910
"1.2.840.113549.1.9.16.9.2": { "d": "domainSig", "c": "S/MIME Signature Type Identifier" },
837
911
"1.2.840.113549.1.9.16.9.3": { "d": "additionalAttributesSig", "c": "S/MIME Signature Type Identifier" },
838
912
"1.2.840.113549.1.9.16.9.4": { "d": "reviewSig", "c": "S/MIME Signature Type Identifier" },
913
+
"1.2.840.113549.1.9.16.10.1": { "d": "envelopedData", "c": "S/MIME X.400 Encoded Information Types" },
914
+
"1.2.840.113549.1.9.16.10.2": { "d": "signedData", "c": "S/MIME X.400 Encoded Information Types" },
915
+
"1.2.840.113549.1.9.16.10.3": { "d": "certsOnly", "c": "S/MIME X.400 Encoded Information Types" },
916
+
"1.2.840.113549.1.9.16.10.4": { "d": "signedReceipt", "c": "S/MIME X.400 Encoded Information Types" },
917
+
"1.2.840.113549.1.9.16.10.5": { "d": "envelopedX400", "c": "S/MIME X.400 Encoded Information Types" },
918
+
"1.2.840.113549.1.9.16.10.6": { "d": "signedX400", "c": "S/MIME X.400 Encoded Information Types" },
919
+
"1.2.840.113549.1.9.16.10.7": { "d": "compressedData", "c": "S/MIME X.400 Encoded Information Types" },
839
920
"1.2.840.113549.1.9.16.11": { "d": "capabilities", "c": "S/MIME" },
840
921
"1.2.840.113549.1.9.16.11.1": { "d": "preferBinaryInside", "c": "S/MIME Capability" },
922
+
"1.2.840.113549.1.9.16.12": { "d": "pskcAttributes", "c": "S/MIME Portable Symmetric Key Container Attributes" },
923
+
"1.2.840.113549.1.9.16.12.1": { "d": "pskcManufacturer", "c": "S/MIME Portable Symmetric Key Container Attributes" },
924
+
"1.2.840.113549.1.9.16.12.2": { "d": "pskcSerialNo", "c": "S/MIME Portable Symmetric Key Container Attributes" },
925
+
"1.2.840.113549.1.9.16.12.3": { "d": "pskcModel", "c": "S/MIME Portable Symmetric Key Container Attributes" },
926
+
"1.2.840.113549.1.9.16.12.4": { "d": "pskcIssueno", "c": "S/MIME Portable Symmetric Key Container Attributes" },
927
+
"1.2.840.113549.1.9.16.12.5": { "d": "pskcDevicebinding", "c": "S/MIME Portable Symmetric Key Container Attributes" },
928
+
"1.2.840.113549.1.9.16.12.6": { "d": "pskcDevicestartdate", "c": "S/MIME Portable Symmetric Key Container Attributes" },
929
+
"1.2.840.113549.1.9.16.12.7": { "d": "pskcDeviceexpirydate", "c": "S/MIME Portable Symmetric Key Container Attributes" },
930
+
"1.2.840.113549.1.9.16.12.8": { "d": "pskcModuleid", "c": "S/MIME Portable Symmetric Key Container Attributes" },
931
+
"1.2.840.113549.1.9.16.12.9": { "d": "pskcKeyid", "c": "S/MIME Portable Symmetric Key Container Attributes" },
932
+
"1.2.840.113549.1.9.16.12.10": { "d": "pskcAlgorithm", "c": "S/MIME Portable Symmetric Key Container Attributes" },
933
+
"1.2.840.113549.1.9.16.12.11": { "d": "pskcIssuer", "c": "S/MIME Portable Symmetric Key Container Attributes" },
934
+
"1.2.840.113549.1.9.16.12.12": { "d": "pskcKeyprofileid", "c": "S/MIME Portable Symmetric Key Container Attributes" },
935
+
"1.2.840.113549.1.9.16.12.13": { "d": "pskcKeyreference", "c": "S/MIME Portable Symmetric Key Container Attributes" },
936
+
"1.2.840.113549.1.9.16.12.14": { "d": "pskcFriendlyname", "c": "S/MIME Portable Symmetric Key Container Attributes" },
937
+
"1.2.840.113549.1.9.16.12.15": { "d": "pskcAlgorithmparams", "c": "S/MIME Portable Symmetric Key Container Attributes" },
938
+
"1.2.840.113549.1.9.16.12.16": { "d": "pskcCounter", "c": "S/MIME Portable Symmetric Key Container Attributes" },
939
+
"1.2.840.113549.1.9.16.12.17": { "d": "pskcTime", "c": "S/MIME Portable Symmetric Key Container Attributes" },
940
+
"1.2.840.113549.1.9.16.12.18": { "d": "pskcTimeinterval", "c": "S/MIME Portable Symmetric Key Container Attributes" },
941
+
"1.2.840.113549.1.9.16.12.19": { "d": "pskcTimedrift", "c": "S/MIME Portable Symmetric Key Container Attributes" },
942
+
"1.2.840.113549.1.9.16.12.20": { "d": "pskcValuemac", "c": "S/MIME Portable Symmetric Key Container Attributes" },
943
+
"1.2.840.113549.1.9.16.12.21": { "d": "pskcKeystartdate", "c": "S/MIME Portable Symmetric Key Container Attributes" },
944
+
"1.2.840.113549.1.9.16.12.22": { "d": "pskcKeyexpirydate", "c": "S/MIME Portable Symmetric Key Container Attributes" },
945
+
"1.2.840.113549.1.9.16.12.23": { "d": "pskcNooftransactions", "c": "S/MIME Portable Symmetric Key Container Attributes" },
946
+
"1.2.840.113549.1.9.16.12.24": { "d": "pskcKeyusages", "c": "S/MIME Portable Symmetric Key Container Attributes" },
947
+
"1.2.840.113549.1.9.16.12.25": { "d": "pskcPinpolicy", "c": "S/MIME Portable Symmetric Key Container Attributes" },
948
+
"1.2.840.113549.1.9.16.12.26": { "d": "pskcDeviceuserid", "c": "S/MIME Portable Symmetric Key Container Attributes" },
949
+
"1.2.840.113549.1.9.16.12.27": { "d": "pskcKeyuserid", "c": "S/MIME Portable Symmetric Key Container Attributes" },
950
+
"1.2.840.113549.1.9.16.13": { "d": "otherRecipientInfoIds", "c": "S/MIME Other Recipient Info Identifiers" },
951
+
"1.2.840.113549.1.9.16.13.1": { "d": "keyTransPSK", "c": "S/MIME Other Recipient Info Identifiers" },
952
+
"1.2.840.113549.1.9.16.13.2": { "d": "keyAgreePSK", "c": "S/MIME Other Recipient Info Identifiers" },
841
953
"1.2.840.113549.1.9.20": { "d": "friendlyName (for PKCS #12)", "c": "PKCS #9 via PKCS #12" },
842
954
"1.2.840.113549.1.9.21": { "d": "localKeyID (for PKCS #12)", "c": "PKCS #9 via PKCS #12" },
843
955
"1.2.840.113549.1.9.22": { "d": "certTypes (for PKCS #12)", "c": "PKCS #9 via PKCS #12" },
···
1039
1151
"1.2.840.113635.100.6.1.1": { "d": "appleCertificateExtensionAppleSigning", "c": "Apple certificate extension" },
1040
1152
"1.2.840.113635.100.6.1.2": { "d": "appleCertificateExtensionADCDeveloperSigning", "c": "Apple certificate extension" },
1041
1153
"1.2.840.113635.100.6.1.3": { "d": "appleCertificateExtensionADCAppleSigning", "c": "Apple certificate extension" },
1154
+
"1.2.840.113635.100.15.1": { "d": "appleCustomCertificateExtension1", "c": "Apple custom certificate extension" },
1155
+
"1.2.840.113635.100.15.2": { "d": "appleCustomCertificateExtension2", "c": "Apple custom certificate extension" },
1156
+
"1.2.840.113635.100.15.3": { "d": "appleCustomCertificateExtension3", "c": "Apple custom certificate extension" },
1042
1157
"1.3.6.1.4.1.311.2.1.4": { "d": "spcIndirectDataContext", "c": "Microsoft code signing" },
1043
-
"1.3.6.1.4.1.311.2.1.10": { "d": "spcAgencyInfo", "c": "Microsoft code signing. Also known as policyLink" },
1158
+
"1.3.6.1.4.1.311.2.1.10": { "d": "spcAgencyInfo", "c": "Microsoft code signing. Also assigned as policyLink" },
1044
1159
"1.3.6.1.4.1.311.2.1.11": { "d": "spcStatementType", "c": "Microsoft code signing" },
1045
1160
"1.3.6.1.4.1.311.2.1.12": { "d": "spcSpOpusInfo", "c": "Microsoft code signing" },
1046
1161
"1.3.6.1.4.1.311.2.1.14": { "d": "certReqExtensions", "c": "Microsoft" },
···
1050
1165
"1.3.6.1.4.1.311.2.1.20": { "d": "spcJavaClassData (type 1)", "c": "Microsoft code signing. Formerly \"link extension\" aka \"glue extension\"" },
1051
1166
"1.3.6.1.4.1.311.2.1.21": { "d": "individualCodeSigning", "c": "Microsoft" },
1052
1167
"1.3.6.1.4.1.311.2.1.22": { "d": "commercialCodeSigning", "c": "Microsoft" },
1053
-
"1.3.6.1.4.1.311.2.1.25": { "d": "spcLink (type 2)", "c": "Microsoft code signing. Also known as \"glue extension\"" },
1168
+
"1.3.6.1.4.1.311.2.1.25": { "d": "spcLink (type 2)", "c": "Microsoft code signing. Also assigned as \"glue extension\"" },
1054
1169
"1.3.6.1.4.1.311.2.1.26": { "d": "spcMinimalCriteriaInfo", "c": "Microsoft code signing" },
1055
1170
"1.3.6.1.4.1.311.2.1.27": { "d": "spcFinancialCriteriaInfo", "c": "Microsoft code signing" },
1056
-
"1.3.6.1.4.1.311.2.1.28": { "d": "spcLink (type 3)", "c": "Microsoft code signing. Also known as \"glue extension\"" },
1171
+
"1.3.6.1.4.1.311.2.1.28": { "d": "spcLink (type 3)", "c": "Microsoft code signing. Also assigned as \"glue extension\"" },
1057
1172
"1.3.6.1.4.1.311.2.1.29": { "d": "spcHashInfoObjID", "c": "Microsoft code signing" },
1058
1173
"1.3.6.1.4.1.311.2.1.30": { "d": "spcSipInfoObjID", "c": "Microsoft code signing" },
1059
1174
"1.3.6.1.4.1.311.2.2": { "d": "ctl", "c": "Microsoft CTL" },
···
1064
1179
"1.3.6.1.4.1.311.10.1": { "d": "certTrustList", "c": "Microsoft contentType" },
1065
1180
"1.3.6.1.4.1.311.10.1.1": { "d": "sortedCtl", "c": "Microsoft contentType" },
1066
1181
"1.3.6.1.4.1.311.10.2": { "d": "nextUpdateLocation", "c": "Microsoft" },
1067
-
"1.3.6.1.4.1.311.10.3.1": { "d": "certTrustListSigning", "c": "Microsoft enhanced key usage" },
1068
-
"1.3.6.1.4.1.311.10.3.2": { "d": "timeStampSigning", "c": "Microsoft enhanced key usage" },
1069
-
"1.3.6.1.4.1.311.10.3.3": { "d": "serverGatedCrypto", "c": "Microsoft enhanced key usage" },
1182
+
"1.3.6.1.4.1.311.10.3.1": { "d": "certTrustListSigning", "c": "Microsoft extended key usage" },
1183
+
"1.3.6.1.4.1.311.10.3.2": { "d": "timeStampSigning", "c": "Microsoft extended key usage" },
1184
+
"1.3.6.1.4.1.311.10.3.3": { "d": "serverGatedCrypto", "c": "Microsoft extended key usage" },
1070
1185
"1.3.6.1.4.1.311.10.3.3.1": { "d": "serialized", "c": "Microsoft" },
1071
-
"1.3.6.1.4.1.311.10.3.4": { "d": "encryptedFileSystem", "c": "Microsoft enhanced key usage" },
1072
-
"1.3.6.1.4.1.311.10.3.5": { "d": "whqlCrypto", "c": "Microsoft enhanced key usage" },
1073
-
"1.3.6.1.4.1.311.10.3.6": { "d": "nt5Crypto", "c": "Microsoft enhanced key usage" },
1074
-
"1.3.6.1.4.1.311.10.3.7": { "d": "oemWHQLCrypto", "c": "Microsoft enhanced key usage" },
1075
-
"1.3.6.1.4.1.311.10.3.8": { "d": "embeddedNTCrypto", "c": "Microsoft enhanced key usage" },
1076
-
"1.3.6.1.4.1.311.10.3.9": { "d": "rootListSigner", "c": "Microsoft enhanced key usage" },
1077
-
"1.3.6.1.4.1.311.10.3.10": { "d": "qualifiedSubordination", "c": "Microsoft enhanced key usage" },
1078
-
"1.3.6.1.4.1.311.10.3.11": { "d": "keyRecovery", "c": "Microsoft enhanced key usage" },
1079
-
"1.3.6.1.4.1.311.10.3.12": { "d": "documentSigning", "c": "Microsoft enhanced key usage" },
1080
-
"1.3.6.1.4.1.311.10.3.13": { "d": "lifetimeSigning", "c": "Microsoft enhanced key usage" },
1081
-
"1.3.6.1.4.1.311.10.3.14": { "d": "mobileDeviceSoftware", "c": "Microsoft enhanced key usage" },
1082
-
"1.3.6.1.4.1.311.10.3.15": { "d": "smartDisplay", "c": "Microsoft enhanced key usage" },
1083
-
"1.3.6.1.4.1.311.10.3.16": { "d": "cspSignature", "c": "Microsoft enhanced key usage" },
1084
-
"1.3.6.1.4.1.311.10.3.4.1": { "d": "efsRecovery", "c": "Microsoft enhanced key usage" },
1186
+
"1.3.6.1.4.1.311.10.3.4": { "d": "encryptedFileSystem", "c": "Microsoft extended key usage" },
1187
+
"1.3.6.1.4.1.311.10.3.5": { "d": "whqlCrypto", "c": "Microsoft extended key usage" },
1188
+
"1.3.6.1.4.1.311.10.3.6": { "d": "nt5Crypto", "c": "Microsoft extended key usage" },
1189
+
"1.3.6.1.4.1.311.10.3.7": { "d": "oemWHQLCrypto", "c": "Microsoft extended key usage" },
1190
+
"1.3.6.1.4.1.311.10.3.8": { "d": "embeddedNTCrypto", "c": "Microsoft extended key usage" },
1191
+
"1.3.6.1.4.1.311.10.3.9": { "d": "rootListSigner", "c": "Microsoft extended key usage" },
1192
+
"1.3.6.1.4.1.311.10.3.10": { "d": "qualifiedSubordination", "c": "Microsoft extended 3key usage" },
1193
+
"1.3.6.1.4.1.311.10.3.11": { "d": "keyRecovery", "c": "Microsoft extended key usage" },
1194
+
"1.3.6.1.4.1.311.10.3.12": { "d": "documentSigning", "c": "Microsoft extended key usage" },
1195
+
"1.3.6.1.4.1.311.10.3.13": { "d": "lifetimeSigning", "c": "Microsoft extended key usage" },
1196
+
"1.3.6.1.4.1.311.10.3.14": { "d": "mobileDeviceSoftware", "c": "Microsoft extended key usage" },
1197
+
"1.3.6.1.4.1.311.10.3.15": { "d": "smartDisplay", "c": "Microsoft extended key usage" },
1198
+
"1.3.6.1.4.1.311.10.3.16": { "d": "cspSignature", "c": "Microsoft extended key usage" },
1199
+
"1.3.6.1.4.1.311.10.3.4.1": { "d": "efsRecovery", "c": "Microsoft extended key usage" },
1085
1200
"1.3.6.1.4.1.311.10.4.1": { "d": "yesnoTrustAttr", "c": "Microsoft attribute" },
1086
-
"1.3.6.1.4.1.311.10.5.1": { "d": "drm", "c": "Microsoft enhanced key usage" },
1087
-
"1.3.6.1.4.1.311.10.5.2": { "d": "drmIndividualization", "c": "Microsoft enhanced key usage" },
1088
-
"1.3.6.1.4.1.311.10.6.1": { "d": "licenses", "c": "Microsoft enhanced key usage" },
1089
-
"1.3.6.1.4.1.311.10.6.2": { "d": "licenseServer", "c": "Microsoft enhanced key usage" },
1201
+
"1.3.6.1.4.1.311.10.5.1": { "d": "drm", "c": "Microsoft extended key usage" },
1202
+
"1.3.6.1.4.1.311.10.5.2": { "d": "drmIndividualization", "c": "Microsoft extended key usage" },
1203
+
"1.3.6.1.4.1.311.10.6.1": { "d": "licenses", "c": "Microsoft extended key usage" },
1204
+
"1.3.6.1.4.1.311.10.6.2": { "d": "licenseServer", "c": "Microsoft extended key usage" },
1090
1205
"1.3.6.1.4.1.311.10.7.1": { "d": "keyidRdn", "c": "Microsoft attribute" },
1091
1206
"1.3.6.1.4.1.311.10.8.1": { "d": "removeCertificate", "c": "Microsoft attribute" },
1092
1207
"1.3.6.1.4.1.311.10.9.1": { "d": "crossCertDistPoints", "c": "Microsoft attribute" },
···
1112
1227
"1.3.6.1.4.1.311.17.3": { "d": "pkcs12ExtendedAttributes", "c": "Microsoft attribute" },
1113
1228
"1.3.6.1.4.1.311.20.1": { "d": "autoEnrollCtlUsage", "c": "Microsoft" },
1114
1229
"1.3.6.1.4.1.311.20.2": { "d": "enrollCerttypeExtension", "c": "Microsoft CAPICOM certificate template, V1" },
1115
-
"1.3.6.1.4.1.311.20.2.1": { "d": "enrollmentAgent", "c": "Microsoft enhanced key usage" },
1116
-
"1.3.6.1.4.1.311.20.2.2": { "d": "smartcardLogon", "c": "Microsoft enhanced key usage" },
1117
-
"1.3.6.1.4.1.311.20.2.3": { "d": "universalPrincipalName", "c": "Microsoft UPN" },
1230
+
"1.3.6.1.4.1.311.20.2.1": { "d": "enrollmentAgent", "c": "Microsoft extended key usage" },
1231
+
"1.3.6.1.4.1.311.20.2.2": { "d": "smartcardLogon", "c": "Microsoft extended key usage" },
1232
+
"1.3.6.1.4.1.311.20.2.3": { "d": "userPrincipalName", "c": "Microsoft UPN" },
1118
1233
"1.3.6.1.4.1.311.20.3": { "d": "certManifold", "c": "Microsoft" },
1119
-
"1.3.6.1.4.1.311.21.1": { "d": "cAKeyCertIndexPair", "c": "Microsoft attribute. Also known as certsrvCaVersion" },
1234
+
"1.3.6.1.4.1.311.21.1": { "d": "cAKeyCertIndexPair", "c": "Microsoft attribute. Also assigned as certsrvCaVersion" },
1120
1235
"1.3.6.1.4.1.311.21.2": { "d": "certSrvPreviousCertHash", "c": "Microsoft" },
1121
1236
"1.3.6.1.4.1.311.21.3": { "d": "crlVirtualBase", "c": "Microsoft" },
1122
1237
"1.3.6.1.4.1.311.21.4": { "d": "crlNextPublish", "c": "Microsoft" },
···
1137
1252
"1.3.6.1.4.1.311.21.21": { "d": "encryptedKeyHash", "c": "Microsoft attribute" },
1138
1253
"1.3.6.1.4.1.311.21.22": { "d": "certsrvCrossCaVersion", "c": "Microsoft" },
1139
1254
"1.3.6.1.4.1.311.25.1": { "d": "ntdsReplication", "c": "Microsoft" },
1255
+
"1.3.6.1.4.1.311.25.2": { "d": "ntdsCASecurityExt", "c": "Microsoft" },
1256
+
"1.3.6.1.4.1.311.25.2.1": { "d": "ntdsObjectSID", "c": "Microsoft" },
1140
1257
"1.3.6.1.4.1.311.31.1": { "d": "productUpdate", "c": "Microsoft attribute" },
1141
1258
"1.3.6.1.4.1.311.47.1.1": { "d": "systemHealth", "c": "Microsoft extended key usage" },
1142
1259
"1.3.6.1.4.1.311.47.1.3": { "d": "systemHealthLoophole", "c": "Microsoft extended key usage" },
1143
1260
"1.3.6.1.4.1.311.60.1.1": { "d": "rootProgramFlags", "c": "Microsoft policy attribute" },
1144
-
"1.3.6.1.4.1.311.61.1.1": { "d": "kernelModeCodeSigning", "c": "Microsoft enhanced key usage" },
1261
+
"1.3.6.1.4.1.311.61.1.1": { "d": "kernelModeCodeSigning", "c": "Microsoft extended key usage" },
1145
1262
"1.3.6.1.4.1.311.60.2.1.1": { "d": "jurisdictionOfIncorporationL", "c": "Microsoft (???)" },
1146
1263
"1.3.6.1.4.1.311.60.2.1.2": { "d": "jurisdictionOfIncorporationSP", "c": "Microsoft (???)" },
1147
1264
"1.3.6.1.4.1.311.60.2.1.3": { "d": "jurisdictionOfIncorporationC", "c": "Microsoft (???)" },
1265
+
"1.3.6.1.4.1.311.76.509.1.1": { "d": "microsoftCPS", "c": "Microsoft PKI services" },
1148
1266
"1.3.6.1.4.1.311.88": { "d": "capiCom", "c": "Microsoft attribute" },
1149
1267
"1.3.6.1.4.1.311.88.1": { "d": "capiComVersion", "c": "Microsoft attribute" },
1150
1268
"1.3.6.1.4.1.311.88.2": { "d": "capiComAttribute", "c": "Microsoft attribute" },
···
1157
1275
"1.3.6.1.4.1.188.7.1.1.2": { "d": "ideaCBC", "c": "Ascom Systech" },
1158
1276
"1.3.6.1.4.1.188.7.1.1.3": { "d": "ideaCFB", "c": "Ascom Systech" },
1159
1277
"1.3.6.1.4.1.188.7.1.1.4": { "d": "ideaOFB", "c": "Ascom Systech" },
1278
+
"1.3.6.1.4.1.2363.3.2": { "d": "euroControlUntrustedEA", "c": "Eurocontrol certificate policy" },
1279
+
"1.3.6.1.4.1.2363.4.3": { "d": "euroControlEARootCA", "c": "Eurocontrol certificate policy" },
1280
+
"1.3.6.1.4.1.2363.4.3.1": { "d": "euroControlEABridgeCA", "c": "Eurocontrol certificate policy" },
1281
+
"1.3.6.1.4.1.2363.4.3.1.1": { "d": "euroControlEAIssuingCA", "c": "Eurocontrol certificate policy" },
1282
+
"1.3.6.1.4.1.2363.4.3.1.1.1": { "d": "euroControlEAClientCertificate", "c": "Eurocontrol certificate policy" },
1283
+
"1.3.6.1.4.1.2363.4.3.1.1.2": { "d": "euroControlEAServerCertificate", "c": "Eurocontrol certificate policy" },
1284
+
"1.3.6.1.4.1.2363.4.3.1.1.3": { "d": "euroControlEASWIMSigningCertificate", "c": "Eurocontrol certificate policy" },
1160
1285
"1.3.6.1.4.1.2428.10.1.1": { "d": "UNINETT policyIdentifier", "c": "UNINETT PCA" },
1161
1286
"1.3.6.1.4.1.2712.10": { "d": "ICE-TEL policyIdentifier", "c": "ICE-TEL CA" },
1162
1287
"1.3.6.1.4.1.2786.1.1.1": { "d": "ICE-TEL Italian policyIdentifier", "c": "ICE-TEL CA policy" },
···
1222
1347
"1.3.6.1.4.1.8301.3.5.1": { "d": "validityModelChain", "c": "TU Darmstadt ValidityModel" },
1223
1348
"1.3.6.1.4.1.8301.3.5.2": { "d": "validityModelShell", "c": "ValidityModel" },
1224
1349
"1.3.6.1.4.1.8231.1": { "d": "rolUnicoNacional", "c": "Chilean Government national unique roll number" },
1225
-
"1.3.6.1.4.1.11591": { "d": "gnu", "c": "GNU Project (see http://www.gnupg.org/oids.html)" },
1350
+
"1.3.6.1.4.1.11129.2.4.2": { "d": "googleSignedCertificateTimestamp", "c": "Google Certificate Transparency" },
1351
+
"1.3.6.1.4.1.11129.2.4.3": { "d": "googlePrecertificatePoison", "c": "Google Certificate Transparency" },
1352
+
"1.3.6.1.4.1.11129.2.4.4": { "d": "googlePrecertificateCA", "c": "Google Certificate Transparency" },
1353
+
"1.3.6.1.4.1.11129.2.4.5": { "d": "googleOcspSignedCertificateTimestamp", "c": "Google Certificate Transparency" },
1354
+
"1.3.6.1.4.1.11591": { "d": "gnu", "c": "GNU Project (see https://www.gnupg.org/oids.html)" },
1226
1355
"1.3.6.1.4.1.11591.1": { "d": "gnuRadius", "c": "GNU Radius" },
1356
+
"1.3.6.1.4.1.11591.2.2.1": { "d": "gpgX509StandaloneCert", "c": "Cert is intentionally self-signed." },
1357
+
"1.3.6.1.4.1.11591.2.2.2": { "d": "gpgX509WellKnownPrivateKey", "c": "Mark cert as having a well known key" },
1358
+
"1.3.6.1.4.1.11591.2.2.10": { "d": "gpgX509PgpKdfKekParm", "c": "Description of ECC params" },
1359
+
"1.3.6.1.4.1.11591.2.3.1": { "d": "gpgCtPgpKeyblock", "c": "CMS ct for a binary PGP keyblock" },
1360
+
"1.3.6.1.4.1.11591.2.4.1.1": { "d": "gpgFingerprint", "c": "LDAP keyserver attribute" },
1361
+
"1.3.6.1.4.1.11591.2.4.1.2": { "d": "gpgSubFingerprint", "c": "LDAP keyserver attribute" },
1362
+
"1.3.6.1.4.1.11591.2.4.1.3": { "d": "gpgMailbox", "c": "LDAP keyserver attribute" },
1363
+
"1.3.6.1.4.1.11591.2.4.1.4": { "d": "gpgSubCertID", "c": "LDAP keyserver attribute" },
1364
+
"1.3.6.1.4.1.11591.2.5.1": { "d": "gpgNtds", "c": "LDAP URL ext, auth with current AD user" },
1365
+
"1.3.6.1.4.1.11591.2.6.1": { "d": "gpgX509PgpUseCert", "c": "X.509 encoded OpenPGP key usage" },
1366
+
"1.3.6.1.4.1.11591.2.6.2": { "d": "gpgX509PgpUseSign", "c": "X.509 encoded PGP key usage" },
1367
+
"1.3.6.1.4.1.11591.2.6.3": { "d": "gpgX509PgpUseEncr", "c": "X.509 encoded PGP key usage" },
1368
+
"1.3.6.1.4.1.11591.2.6.4": { "d": "gpgX509PgpUseAuth", "c": "X.509 encoded PGP key usage" },
1369
+
"1.3.6.1.4.1.11591.2.12242973": { "d": "gpgInvalidOid", "c": "0xBAD01D to indicate an invalid encoded OID" },
1227
1370
"1.3.6.1.4.1.11591.3": { "d": "gnuRadar", "c": "GNU Radar" },
1371
+
"1.3.6.1.4.1.11591.4.11": { "d": "scrypt", "c": "GNU Generic Security Service" },
1228
1372
"1.3.6.1.4.1.11591.12": { "d": "gnuDigestAlgorithm", "c": "GNU digest algorithm" },
1229
1373
"1.3.6.1.4.1.11591.12.2": { "d": "tiger", "c": "GNU digest algorithm" },
1230
1374
"1.3.6.1.4.1.11591.13": { "d": "gnuEncryptionAlgorithm", "c": "GNU encryption algorithm" },
···
1254
1398
"1.3.6.1.4.1.23629.1.4.2.1.3": { "d": "safenetStartDate", "c": "SafeNet" },
1255
1399
"1.3.6.1.4.1.23629.1.4.2.1.4": { "d": "safenetAdminCert", "c": "SafeNet" },
1256
1400
"1.3.6.1.4.1.23629.1.4.2.2.1": { "d": "safenetKeyDigest", "c": "SafeNet" },
1401
+
"1.3.6.1.4.1.25054.3": { "d": "carillonSecurity", "c": "Carillon security" },
1402
+
"1.3.6.1.4.1.25054.3.1": { "d": "carillonCommercialPKI", "c": "Carillon security" },
1403
+
"1.3.6.1.4.1.25054.3.2": { "d": "carillonCommercialTSA", "c": "Carillon security" },
1404
+
"1.3.6.1.4.1.25054.3.3": { "d": "carillonCommercialSCVP", "c": "Carillon security" },
1405
+
"1.3.6.1.4.1.25054.3.3.1": { "d": "carillonSCVPExtendedStatusInfo", "c": "Carillon security" },
1406
+
"1.3.6.1.4.1.25054.3.4": { "d": "carillonCommercialCMS", "c": "Carillon security" },
1407
+
"1.3.6.1.4.1.25054.3.4.1": { "d": "carillonExtKeyUsageCIVCardAuth", "c": "Carillon security" },
1408
+
"1.3.6.1.4.1.25054.3.4.2": { "d": "carillonExtKeyUsageCIVContentSigning", "c": "Carillon security" },
1409
+
"1.3.6.1.4.1.25054.3.5": { "d": "carillonCommercialLSAP", "c": "Carillon security" },
1410
+
"1.3.6.1.4.1.25054.3.5.1": { "d": "carillonExtKeyUsageLSAPCodeSigning", "c": "Carillon security" },
1411
+
"1.3.6.1.4.1.25054.3.6": { "d": "carillonCommercialCE", "c": "Carillon security" },
1412
+
"1.3.6.1.4.1.25054.3.7": { "d": "carillonCommercialLicense", "c": "Carillon security" },
1413
+
"1.3.6.1.4.1.25054.3.7.1": { "d": "carillonExtKeyUsageLicenseSigning", "c": "Carillon security" },
1414
+
"1.3.6.1.4.1.25054.3.8": { "d": "carillonCommercialSecret", "c": "Carillon security" },
1415
+
"1.3.6.1.4.1.51483.2.1": { "d": "hashOfRootKey", "c": "CTIA" },
1416
+
"1.3.6.1.5.2.3.1": { "d": "authData", "c": "Kerberos" },
1417
+
"1.3.6.1.5.2.3.2": { "d": "dHKeyData", "c": "Kerberos" },
1418
+
"1.3.6.1.5.2.3.3": { "d": "rkeyData", "c": "Kerberos" },
1419
+
"1.3.6.1.5.2.3.4": { "d": "keyPurposeClientAuth", "c": "Kerberos" },
1420
+
"1.3.6.1.5.2.3.5": { "d": "keyPurposeKdc", "c": "Kerberos" },
1421
+
"1.3.6.1.5.2.3.6": { "d": "kdf", "c": "Kerberos" },
1257
1422
"1.3.6.1.5.5.7": { "d": "pkix", "c": "" },
1258
1423
"1.3.6.1.5.5.7.0.12": { "d": "attributeCert", "c": "PKIX" },
1259
1424
"1.3.6.1.5.5.7.1": { "d": "privateExtension", "c": "PKIX" },
···
1270
1435
"1.3.6.1.5.5.7.1.11": { "d": "subjectInfoAccess", "c": "PKIX private extension" },
1271
1436
"1.3.6.1.5.5.7.1.12": { "d": "logoType", "c": "PKIX private extension" },
1272
1437
"1.3.6.1.5.5.7.1.13": { "d": "wlanSSID", "c": "PKIX private extension" },
1438
+
"1.3.6.1.5.5.7.1.14": { "d": "proxyCertInfo", "c": "PKIX private extension" },
1439
+
"1.3.6.1.5.5.7.1.15": { "d": "acPolicies", "c": "PKIX private extension" },
1440
+
"1.3.6.1.5.5.7.1.16": { "d": "certificateWarranty", "c": "PKIX private extension" },
1441
+
"1.3.6.1.5.5.7.1.18": { "d": "cmsContentConstraints", "c": "PKIX private extension" },
1442
+
"1.3.6.1.5.5.7.1.19": { "d": "otherCerts", "c": "PKIX private extension" },
1443
+
"1.3.6.1.5.5.7.1.20": { "d": "wrappedApexContinKey", "c": "PKIX private extension" },
1444
+
"1.3.6.1.5.5.7.1.21": { "d": "clearanceConstraints", "c": "PKIX private extension" },
1445
+
"1.3.6.1.5.5.7.1.22": { "d": "skiSemantics", "c": "PKIX private extension" },
1446
+
"1.3.6.1.5.5.7.1.23": { "d": "noSecrecyAfforded", "c": "PKIX private extension" },
1447
+
"1.3.6.1.5.5.7.1.24": { "d": "tlsFeature", "c": "PKIX private extension" },
1448
+
"1.3.6.1.5.5.7.1.25": { "d": "manufacturerUsageDescription", "c": "PKIX private extension" },
1449
+
"1.3.6.1.5.5.7.1.26": { "d": "tnAuthList", "c": "PKIX private extension" },
1450
+
"1.3.6.1.5.5.7.1.27": { "d": "jwtClaimConstraints", "c": "PKIX private extension" },
1451
+
"1.3.6.1.5.5.7.1.28": { "d": "ipAddrBlocksV2", "c": "PKIX private extension" },
1452
+
"1.3.6.1.5.5.7.1.29": { "d": "autonomousSysIdsV2", "c": "PKIX private extension" },
1453
+
"1.3.6.1.5.5.7.1.30": { "d": "manufacturerUsageDescriptionSigner", "c": "PKIX private extension" },
1454
+
"1.3.6.1.5.5.7.1.31": { "d": "acmeIdentifier", "c": "PKIX private extension" },
1455
+
"1.3.6.1.5.5.7.1.32": { "d": "masaURL", "c": "PKIX private extension" },
1456
+
"1.3.6.1.5.5.7.1.33": { "d": "enhancedJWTClaimConstraints", "c": "PKIX private extension" },
1457
+
"1.3.6.1.5.5.7.1.34": { "d": "nfTypes", "c": "PKIX private extension" },
1273
1458
"1.3.6.1.5.5.7.2": { "d": "policyQualifierIds", "c": "PKIX" },
1274
1459
"1.3.6.1.5.5.7.2.1": { "d": "cps", "c": "PKIX policy qualifier" },
1275
1460
"1.3.6.1.5.5.7.2.2": { "d": "unotice", "c": "PKIX policy qualifier" },
1276
1461
"1.3.6.1.5.5.7.2.3": { "d": "textNotice", "c": "PKIX policy qualifier" },
1462
+
"1.3.6.1.5.5.7.2.4": { "d": "acps", "c": "PKIX policy qualifier" },
1463
+
"1.3.6.1.5.5.7.2.5": { "d": "acunotice", "c": "PKIX policy qualifier" },
1277
1464
"1.3.6.1.5.5.7.3": { "d": "keyPurpose", "c": "PKIX" },
1278
1465
"1.3.6.1.5.5.7.3.1": { "d": "serverAuth", "c": "PKIX key purpose" },
1279
1466
"1.3.6.1.5.5.7.3.2": { "d": "clientAuth", "c": "PKIX key purpose" },
1280
1467
"1.3.6.1.5.5.7.3.3": { "d": "codeSigning", "c": "PKIX key purpose" },
1281
1468
"1.3.6.1.5.5.7.3.4": { "d": "emailProtection", "c": "PKIX key purpose" },
1282
-
"1.3.6.1.5.5.7.3.5": { "d": "ipsecEndSystem", "c": "PKIX key purpose" },
1283
-
"1.3.6.1.5.5.7.3.6": { "d": "ipsecTunnel", "c": "PKIX key purpose" },
1284
-
"1.3.6.1.5.5.7.3.7": { "d": "ipsecUser", "c": "PKIX key purpose" },
1469
+
"1.3.6.1.5.5.7.3.5": { "d": "ipsecEndSystem", "c": "PKIX key purpose", "w": true },
1470
+
"1.3.6.1.5.5.7.3.6": { "d": "ipsecTunnel", "c": "PKIX key purpose", "w": true },
1471
+
"1.3.6.1.5.5.7.3.7": { "d": "ipsecUser", "c": "PKIX key purpose", "w": true },
1285
1472
"1.3.6.1.5.5.7.3.8": { "d": "timeStamping", "c": "PKIX key purpose" },
1286
1473
"1.3.6.1.5.5.7.3.9": { "d": "ocspSigning", "c": "PKIX key purpose" },
1287
1474
"1.3.6.1.5.5.7.3.10": { "d": "dvcs", "c": "PKIX key purpose" },
1288
-
"1.3.6.1.5.5.7.3.11": { "d": "sbgpCertAAServerAuth", "c": "PKIX key purpose" },
1475
+
"1.3.6.1.5.5.7.3.11": { "d": "sbgpCertAAServerAuth", "c": "PKIX key purpose", "w": true },
1476
+
"1.3.6.1.5.5.7.3.12": { "d": "scvpResponder", "c": "PKIX key purpose", "w": true },
1289
1477
"1.3.6.1.5.5.7.3.13": { "d": "eapOverPPP", "c": "PKIX key purpose" },
1290
1478
"1.3.6.1.5.5.7.3.14": { "d": "eapOverLAN", "c": "PKIX key purpose" },
1479
+
"1.3.6.1.5.5.7.3.15": { "d": "scvpServer", "c": "PKIX key purpose" },
1480
+
"1.3.6.1.5.5.7.3.16": { "d": "scvpClient", "c": "PKIX key purpose" },
1481
+
"1.3.6.1.5.5.7.3.17": { "d": "ipsecIKE", "c": "PKIX key purpose" },
1482
+
"1.3.6.1.5.5.7.3.18": { "d": "capwapAC", "c": "PKIX key purpose" },
1483
+
"1.3.6.1.5.5.7.3.19": { "d": "capwapWTP", "c": "PKIX key purpose" },
1484
+
"1.3.6.1.5.5.7.3.20": { "d": "sipDomain", "c": "PKIX key purpose" },
1485
+
"1.3.6.1.5.5.7.3.21": { "d": "secureShellClient", "c": "PKIX key purpose" },
1486
+
"1.3.6.1.5.5.7.3.22": { "d": "secureShellServer", "c": "PKIX key purpose" },
1487
+
"1.3.6.1.5.5.7.3.23": { "d": "sendRouter", "c": "PKIX key purpose" },
1488
+
"1.3.6.1.5.5.7.3.24": { "d": "sendProxiedRouter", "c": "PKIX key purpose" },
1489
+
"1.3.6.1.5.5.7.3.25": { "d": "sendOwner", "c": "PKIX key purpose" },
1490
+
"1.3.6.1.5.5.7.3.26": { "d": "sendProxiedOwner", "c": "PKIX key purpose" },
1491
+
"1.3.6.1.5.5.7.3.27": { "d": "cmcCA", "c": "PKIX key purpose" },
1492
+
"1.3.6.1.5.5.7.3.28": { "d": "cmcRA", "c": "PKIX key purpose" },
1493
+
"1.3.6.1.5.5.7.3.29": { "d": "cmcArchive", "c": "PKIX key purpose" },
1494
+
"1.3.6.1.5.5.7.3.30": { "d": "bgpsecRouter", "c": "PKIX key purpose" },
1495
+
"1.3.6.1.5.5.7.3.31": { "d": "bimi", "c": "PKIX key purpose" },
1496
+
"1.3.6.1.5.5.7.3.32": { "d": "cmKGA", "c": "PKIX key purpose" },
1497
+
"1.3.6.1.5.5.7.3.33": { "d": "rpcTLSClient", "c": "PKIX key purpose" },
1498
+
"1.3.6.1.5.5.7.3.34": { "d": "rpcTLSServer", "c": "PKIX key purpose" },
1499
+
"1.3.6.1.5.5.7.3.35": { "d": "bundleSecurity", "c": "PKIX key purpose" },
1500
+
"1.3.6.1.5.5.7.3.36": { "d": "documentSigning", "c": "PKIX key purpose" },
1291
1501
"1.3.6.1.5.5.7.4": { "d": "cmpInformationTypes", "c": "PKIX" },
1292
1502
"1.3.6.1.5.5.7.4.1": { "d": "caProtEncCert", "c": "PKIX CMP information" },
1293
1503
"1.3.6.1.5.5.7.4.2": { "d": "signKeyPairTypes", "c": "PKIX CMP information" },
···
1319
1529
"1.3.6.1.5.5.7.6": { "d": "algorithms", "c": "PKIX" },
1320
1530
"1.3.6.1.5.5.7.6.1": { "d": "des40", "c": "PKIX algorithm" },
1321
1531
"1.3.6.1.5.5.7.6.2": { "d": "noSignature", "c": "PKIX algorithm" },
1322
-
"1.3.6.1.5.5.7.6.3": { "d": "dh-sig-hmac-sha1", "c": "PKIX algorithm" },
1323
-
"1.3.6.1.5.5.7.6.4": { "d": "dh-pop", "c": "PKIX algorithm" },
1532
+
"1.3.6.1.5.5.7.6.3": { "d": "dhSigHmacSha1", "c": "PKIX algorithm" },
1533
+
"1.3.6.1.5.5.7.6.4": { "d": "dhPop", "c": "PKIX algorithm" },
1534
+
"1.3.6.1.5.5.7.6.5": { "d": "dhPopSha224", "c": "PKIX algorithm" },
1535
+
"1.3.6.1.5.5.7.6.6": { "d": "dhPopSha256", "c": "PKIX algorithm" },
1536
+
"1.3.6.1.5.5.7.6.7": { "d": "dhPopSha384", "c": "PKIX algorithm" },
1537
+
"1.3.6.1.5.5.7.6.8": { "d": "dhPopSha512", "c": "PKIX algorithm" },
1538
+
"1.3.6.1.5.5.7.6.15": { "d": "dhPopStaticSha224HmacSha224", "c": "PKIX algorithm" },
1539
+
"1.3.6.1.5.5.7.6.16": { "d": "dhPopStaticSha256HmacSha256", "c": "PKIX algorithm" },
1540
+
"1.3.6.1.5.5.7.6.17": { "d": "dhPopStaticSha384HmacSha384", "c": "PKIX algorithm" },
1541
+
"1.3.6.1.5.5.7.6.18": { "d": "dhPopStaticSha512HmacSha512", "c": "PKIX algorithm" },
1542
+
"1.3.6.1.5.5.7.6.25": { "d": "ecdhPopStaticSha224HmacSha224", "c": "PKIX algorithm" },
1543
+
"1.3.6.1.5.5.7.6.26": { "d": "ecdhPopStaticSha256HmacSha256", "c": "PKIX algorithm" },
1544
+
"1.3.6.1.5.5.7.6.27": { "d": "ecdhPopStaticSha384HmacSha384", "c": "PKIX algorithm" },
1545
+
"1.3.6.1.5.5.7.6.28": { "d": "ecdhPopStaticSha512HmacSha512", "c": "PKIX algorithm" },
1546
+
"1.3.6.1.5.5.7.6.30": { "d": "rsaPssShake128", "c": "PKIX algorithm" },
1547
+
"1.3.6.1.5.5.7.6.31": { "d": "rsaPssShake256", "c": "PKIX algorithm" },
1548
+
"1.3.6.1.5.5.7.6.32": { "d": "ecdsaShake128", "c": "PKIX algorithm" },
1549
+
"1.3.6.1.5.5.7.6.33": { "d": "ecdsaShake256", "c": "PKIX algorithm" },
1324
1550
"1.3.6.1.5.5.7.7": { "d": "cmcControls", "c": "PKIX" },
1325
1551
"1.3.6.1.5.5.7.8": { "d": "otherNames", "c": "PKIX" },
1326
1552
"1.3.6.1.5.5.7.8.1": { "d": "personalData", "c": "PKIX other name" },
1327
1553
"1.3.6.1.5.5.7.8.2": { "d": "userGroup", "c": "PKIX other name" },
1554
+
"1.3.6.1.5.5.7.8.3": { "d": "permanentIdentifier", "c": "PKIX other name" },
1328
1555
"1.3.6.1.5.5.7.8.5": { "d": "xmppAddr", "c": "PKIX other name" },
1556
+
"1.3.6.1.5.5.7.8.6": { "d": "SIM", "c": "PKIX other name" },
1557
+
"1.3.6.1.5.5.7.8.7": { "d": "dnsSRV", "c": "PKIX other name" },
1558
+
"1.3.6.1.5.5.7.8.8": { "d": "naiRealm", "c": "PKIX other name" },
1559
+
"1.3.6.1.5.5.7.8.9": { "d": "smtpUTF8Mailbox", "c": "PKIX other name" },
1560
+
"1.3.6.1.5.5.7.8.10": { "d": "acpNodeName", "c": "PKIX other name" },
1561
+
"1.3.6.1.5.5.7.8.11": { "d": "bundleEID", "c": "PKIX other name" },
1329
1562
"1.3.6.1.5.5.7.9": { "d": "personalData", "c": "PKIX qualified certificates" },
1330
1563
"1.3.6.1.5.5.7.9.1": { "d": "dateOfBirth", "c": "PKIX personal data" },
1331
1564
"1.3.6.1.5.5.7.9.2": { "d": "placeOfBirth", "c": "PKIX personal data" },
···
1341
1574
"1.3.6.1.5.5.7.10.6": { "d": "wlanSSID", "c": "PKIX attribute-certificate extension" },
1342
1575
"1.3.6.1.5.5.7.11": { "d": "personalData", "c": "PKIX qualified certificates" },
1343
1576
"1.3.6.1.5.5.7.11.1": { "d": "pkixQCSyntax-v1", "c": "PKIX qualified certificates" },
1577
+
"1.3.6.1.5.5.7.11.2": { "d": "pkixQCSyntax-v2", "c": "PKIX qualified certificates" },
1578
+
"1.3.6.1.5.5.7.12": { "d": "pkixCCT", "c": "PKIX CMC Content Types" },
1579
+
"1.3.6.1.5.5.7.12.2": { "d": "pkiData", "c": "PKIX CMC Content Types" },
1580
+
"1.3.6.1.5.5.7.12.3": { "d": "pkiResponse", "c": "PKIX CMC Content Types" },
1344
1581
"1.3.6.1.5.5.7.14.2": { "d": "resourceCertificatePolicy", "c": "PKIX policies" },
1345
-
"1.3.6.1.5.5.7.20": { "d": "logo", "c": "PKIX qualified certificates" },
1346
-
"1.3.6.1.5.5.7.20.1": { "d": "logoLoyalty", "c": "PKIX" },
1347
-
"1.3.6.1.5.5.7.20.2": { "d": "logoBackground", "c": "PKIX" },
1348
-
"1.3.6.1.5.5.7.48.1": { "d": "ocsp", "c": "PKIX" },
1582
+
"1.3.6.1.5.5.7.17": { "d": "scvpCheck", "c": "PKIX SCVP check" },
1583
+
"1.3.6.1.5.5.7.17.1": { "d": "scvpCheckBuildPath", "c": "SCVP" },
1584
+
"1.3.6.1.5.5.7.17.2": { "d": "scvpCheckBuildValidPath", "c": "SCVP" },
1585
+
"1.3.6.1.5.5.7.17.3": { "d": "scvpCheckBuildStatusCheckedPath", "c": "SCVP" },
1586
+
"1.3.6.1.5.5.7.17.4": { "d": "scvpCheckBuildAaPath", "c": "SCVP" },
1587
+
"1.3.6.1.5.5.7.17.5": { "d": "scvpCheckBuildValidAaPath", "c": "SCVP" },
1588
+
"1.3.6.1.5.5.7.17.6": { "d": "scvpCheckBuildStatusCheckedAaPath", "c": "SCVP" },
1589
+
"1.3.6.1.5.5.7.17.7": { "d": "scvpCheckStatusCheckAcAndBuildStatusCheckedAaPath", "c": "SCVP" },
1590
+
"1.3.6.1.5.5.7.18": { "d": "scvpWantBack", "c": "PKIX SCVP wantback" },
1591
+
"1.3.6.1.5.5.7.18.1": { "d": "scvpWantbackBestCertPath", "c": "SCVP wantback" },
1592
+
"1.3.6.1.5.5.7.18.2": { "d": "scvpWantbackRevocationInfo", "c": "SCVP wantback" },
1593
+
"1.3.6.1.5.5.7.18.4": { "d": "scvpWantbackPublicKeyInfo", "c": "SCVP wantback" },
1594
+
"1.3.6.1.5.5.7.18.5": { "d": "scvpWantbackAaCertPath", "c": "SCVP wantback" },
1595
+
"1.3.6.1.5.5.7.18.6": { "d": "scvpWantbackAaRevocationInfo", "c": "SCVP wantback" },
1596
+
"1.3.6.1.5.5.7.18.7": { "d": "scvpWantbackAcRevocationInfo", "c": "SCVP wantback" },
1597
+
"1.3.6.1.5.5.7.18.9": { "d": "scvpWantbackRelayedResponses", "c": "SCVP wantback" },
1598
+
"1.3.6.1.5.5.7.18.10": { "d": "scvpWantbackCert", "c": "SCVP wantback" },
1599
+
"1.3.6.1.5.5.7.18.11": { "d": "scvpWantbackAcCert", "c": "SCVP wantback" },
1600
+
"1.3.6.1.5.5.7.18.12": { "d": "scvpWantbackAllCertPaths", "c": "SCVP wantback" },
1601
+
"1.3.6.1.5.5.7.18.13": { "d": "scvpWantbackEeRevocationInfo", "c": "SCVP wantback" },
1602
+
"1.3.6.1.5.5.7.18.14": { "d": "scvpWantbackCAsRevocationInfo", "c": "SCVP wantback" },
1603
+
"1.3.6.1.5.5.7.19": { "d": "scvpValPolicy", "c": "SCVP validation policy" },
1604
+
"1.3.6.1.5.5.7.19.1": { "d": "scvpDefaultValPolicy", "c": "SCVP validation policy" },
1605
+
"1.3.6.1.5.5.7.19.2": { "d": "scvpNameValAlg", "c": "SCVP validation policy" },
1606
+
"1.3.6.1.5.5.7.19.2.1": { "d": "scvpNameErrorNameMismatch", "c": "SCVP validation policy" },
1607
+
"1.3.6.1.5.5.7.19.2.2": { "d": "scvpNameErrorNoName", "c": "SCVP validation policy" },
1608
+
"1.3.6.1.5.5.7.19.2.3": { "d": "scvpNameErrorUnknownAlg", "c": "SCVP validation policy" },
1609
+
"1.3.6.1.5.5.7.19.2.4": { "d": "scvpNameErrorBadName", "c": "SCVP validation policy" },
1610
+
"1.3.6.1.5.5.7.19.2.5": { "d": "scvpNameErrorBadNameType", "c": "SCVP validation policy" },
1611
+
"1.3.6.1.5.5.7.19.2.6": { "d": "scvpNameErrorMixedNames", "c": "SCVP validation policy" },
1612
+
"1.3.6.1.5.5.7.19.3": { "d": "scvpBasicValAlg", "c": "SCVP validation policy" },
1613
+
"1.3.6.1.5.5.7.19.3.1": { "d": "scvpValErrorExpired", "c": "SCVP validation policy error" },
1614
+
"1.3.6.1.5.5.7.19.3.2": { "d": "scvpValErrorNotYetValid", "c": "SCVP validation policy error" },
1615
+
"1.3.6.1.5.5.7.19.3.3": { "d": "scvpValErrorWrongTrustAnchor", "c": "SCVP validation policy error" },
1616
+
"1.3.6.1.5.5.7.19.3.4": { "d": "scvpValErrorNoValidCertPath", "c": "SCVP validation policy error" },
1617
+
"1.3.6.1.5.5.7.19.3.5": { "d": "scvpValErrorRevoked", "c": "SCVP validation policy error" },
1618
+
"1.3.6.1.5.5.7.19.3.9": { "d": "scvpValErrorInvalidKeyPurpose", "c": "SCVP validation policy error" },
1619
+
"1.3.6.1.5.5.7.19.3.10": { "d": "scvpValErrorInvalidKeyUsage", "c": "SCVP validation policy error" },
1620
+
"1.3.6.1.5.5.7.19.3.11": { "d": "scvpValErrorInvalidCertPolicy", "c": "SCVP validation policy error" },
1621
+
"1.3.6.1.5.5.7.20": { "d": "logo", "c": "Qualified Certificate" },
1622
+
"1.3.6.1.5.5.7.20.1": { "d": "logoLoyalty", "c": "Qualified Certificate" },
1623
+
"1.3.6.1.5.5.7.20.2": { "d": "logoBackground", "c": "Qualified Certificate" },
1624
+
"1.3.6.1.5.5.7.48.1": { "d": "ocsp", "c": "PKIX OCSP" },
1349
1625
"1.3.6.1.5.5.7.48.1.1": { "d": "ocspBasic", "c": "OCSP" },
1350
1626
"1.3.6.1.5.5.7.48.1.2": { "d": "ocspNonce", "c": "OCSP" },
1351
1627
"1.3.6.1.5.5.7.48.1.3": { "d": "ocspCRL", "c": "OCSP" },
···
1408
1684
"1.3.14.7.2.1.1": { "d": "ElGamal", "c": "Unsure about this OID" },
1409
1685
"1.3.14.7.2.3.1": { "d": "md2WithRSA", "c": "Unsure about this OID" },
1410
1686
"1.3.14.7.2.3.2": { "d": "md2WithElGamal", "c": "Unsure about this OID" },
1687
+
"1.3.18.0.2.18.1": { "d": "hostIDMapping", "c": "IBM RACF ID mapping" },
1688
+
"1.3.27.16": { "d": "icaoSecurity", "c": "ICAO security" },
1689
+
"1.3.27.16.0": { "d": "icaoSecurity", "c": "ICAO security test?" },
1690
+
"1.3.27.16.0.1.1.1.1.1.1.0": { "d": "icaoTestValidationPolicy", "c": "ICAO security test?" },
1691
+
"1.3.27.16.1": { "d": "icaoCertPolicy", "c": "ICAO certificate policies" },
1692
+
"1.3.27.16.1.2": { "d": "icaoIATFRootCA", "c": "ICAO certificate policies" },
1693
+
"1.3.27.16.1.2.0.1": { "d": "icaoIdentityAssurance", "c": "ICAO certificate policies" },
1694
+
"1.3.27.16.1.2.0.1.1": { "d": "icaoIdentityAssuranceLow", "c": "ICAO certificate policies" },
1695
+
"1.3.27.16.1.2.0.1.2": { "d": "icaoIdentityAssuranceLowDevice", "c": "ICAO certificate policies" },
1696
+
"1.3.27.16.1.2.0.1.3": { "d": "icaoIdentityAssuranceLowTSPMediated", "c": "ICAO certificate policies" },
1697
+
"1.3.27.16.1.2.0.1.4": { "d": "icaoIdentityAssuranceMedium", "c": "ICAO certificate policies" },
1698
+
"1.3.27.16.1.2.0.1.5": { "d": "icaoIdentityAssuranceMediumDevice", "c": "ICAO certificate policies" },
1699
+
"1.3.27.16.1.2.0.1.6": { "d": "icaoIdentityAssuranceMediumTSPMediated", "c": "ICAO certificate policies" },
1700
+
"1.3.27.16.1.2.0.1.7": { "d": "icaoIdentityAssuranceMediumHardware", "c": "ICAO certificate policies" },
1701
+
"1.3.27.16.1.2.0.1.8": { "d": "icaoIdentityAssuranceMediumDeviceHardware", "c": "ICAO certificate policies" },
1702
+
"1.3.27.16.1.2.0.1.9": { "d": "icaoIdentityAssuranceHigh", "c": "ICAO certificate policies" },
1703
+
"1.3.27.16.1.2.0.1.10": { "d": "icaoIdentityAssuranceHighCardAuth", "c": "ICAO certificate policies" },
1704
+
"1.3.27.16.1.2.0.1.11": { "d": "icaoIdentityAssuranceHighContentSigning", "c": "ICAO certificate policies" },
1705
+
"1.3.27.16.1.2.1": { "d": "icaoIATFBridgeCA", "c": "ICAO certificate policies" },
1706
+
"1.3.27.16.1.2.1.0": { "d": "icaoCAODRootCA", "c": "ICAO certificate policies" },
1707
+
"1.3.27.16.1.2.1.1": { "d": "icaoCAODBridgeCA", "c": "ICAO certificate policies" },
1708
+
"1.3.27.16.1.2.1.1.1": { "d": "icaoUSBridgeCA", "c": "ICAO certificate policies" },
1709
+
"1.3.27.16.1.2.1.1.1.1": { "d": "icaoFAARootCA", "c": "ICAO certificate policies" },
1710
+
"1.3.27.16.1.2.1.1.1.1.1": { "d": "icaoFAAIssuingCA", "c": "ICAO certificate policies" },
1711
+
"1.3.27.16.1.2.1.1.1.1.1.1": { "d": "icaoFAAClientCertificate", "c": "ICAO certificate policies" },
1712
+
"1.3.27.16.1.2.1.1.1.1.1.2": { "d": "icaoFAAServerCertificate", "c": "ICAO certificate policies" },
1713
+
"1.3.27.16.1.2.1.1.1.1.1.3": { "d": "icaoFAASWIMSigningCertificate", "c": "ICAO certificate policies" },
1714
+
"1.3.27.16.1.4.1.1": { "d": "icaoSWIMSigning", "c": "ICAO extended key usage" },
1411
1715
"1.3.36.1": { "d": "document", "c": "Teletrust document" },
1412
1716
"1.3.36.1.1": { "d": "finalVersion", "c": "Teletrust document" },
1413
1717
"1.3.36.1.2": { "d": "draft", "c": "Teletrust document" },
···
1629
1933
"1.3.132.0.37": { "d": "sect409r1", "c": "SECG (Certicom) named elliptic curve" },
1630
1934
"1.3.132.0.38": { "d": "sect571k1", "c": "SECG (Certicom) named elliptic curve" },
1631
1935
"1.3.132.0.39": { "d": "sect571r1", "c": "SECG (Certicom) named elliptic curve" },
1936
+
"1.3.132.1.11.0": { "d": "ecdhX963KDF-SHA224", "c": "SECG (Certicom) elliptic curve key agreement" },
1632
1937
"1.3.132.1.11.1": { "d": "ecdhX963KDF-SHA256", "c": "SECG (Certicom) elliptic curve key agreement" },
1633
1938
"1.3.132.1.11.2": { "d": "ecdhX963KDF-SHA384", "c": "SECG (Certicom) elliptic curve key agreement" },
1634
1939
"1.3.132.1.11.3": { "d": "ecdhX963KDF-SHA512", "c": "SECG (Certicom) elliptic curve key agreement" },
1940
+
"1.3.132.1.14.0": { "d": "eccofactordhX963KDF-SHA224", "c": "SECG (Certicom) elliptic curve key agreement" },
1941
+
"1.3.132.1.14.1": { "d": "eccofactordhX963KDF-SHA256", "c": "SECG (Certicom) elliptic curve key agreement" },
1942
+
"1.3.132.1.14.2": { "d": "eccofactordhX963KDF-SHA384", "c": "SECG (Certicom) elliptic curve key agreement" },
1943
+
"1.3.132.1.14.3": { "d": "eccofactordhX963KDF-SHA512", "c": "SECG (Certicom) elliptic curve key agreement" },
1944
+
"1.3.132.1.15.0": { "d": "ecmqv-X963KDF-SHA224", "c": "SECG (Certicom) elliptic curve key agreement" },
1945
+
"1.3.132.1.15.1": { "d": "ecmqv-X963KDF-SHA256", "c": "SECG (Certicom) elliptic curve key agreement" },
1946
+
"1.3.132.1.15.2": { "d": "ecmqv-X963KDF-SHA384", "c": "SECG (Certicom) elliptic curve key agreement" },
1947
+
"1.3.132.1.15.3": { "d": "ecmqv-X963KDF-SHA512", "c": "SECG (Certicom) elliptic curve key agreement" },
1948
+
"1.3.133.16.840.9.44": { "d": "x944", "c": "X9.44" },
1949
+
"1.3.133.16.840.9.44.1": { "d": "x944Components", "c": "X9.44" },
1950
+
"1.3.133.16.840.9.44.1.1": { "d": "x944Kdf2", "c": "X9.44" },
1951
+
"1.3.133.16.840.9.44.1.2": { "d": "x944Kdf3", "c": "X9.44" },
1635
1952
"1.3.133.16.840.9.84": { "d": "x984", "c": "X9.84" },
1636
1953
"1.3.133.16.840.9.84.0": { "d": "x984Module", "c": "X9.84" },
1637
1954
"1.3.133.16.840.9.84.0.1": { "d": "x984Biometrics", "c": "X9.84 Module" },
···
1680
1997
"1.3.133.16.840.9.84.4.1.16": { "d": "ibiaOwnerA3Vision", "c": "X9.84 IBIA Format Owner" },
1681
1998
"1.3.133.16.840.9.84.4.1.17": { "d": "ibiaOwnerNEC", "c": "X9.84 IBIA Format Owner" },
1682
1999
"1.3.133.16.840.9.84.4.1.18": { "d": "ibiaOwnerSTMicroelectronics", "c": "X9.84 IBIA Format Owner" },
2000
+
"1.3.158.36061701.0.0.0.1.2.2": { "d": "qcpSK", "c": "Slovakia Qualified Electronic Signature policies" },
1683
2001
"2.5.4.0": { "d": "objectClass", "c": "X.520 DN component" },
1684
2002
"2.5.4.1": { "d": "aliasedEntryName", "c": "X.520 DN component" },
1685
2003
"2.5.4.2": { "d": "knowledgeInformation", "c": "X.520 DN component" },
···
1771
2089
"2.5.4.74": { "d": "protPrivPolicy", "c": "X.520 DN component" },
1772
2090
"2.5.4.75": { "d": "xMLPrivilegeInfo", "c": "X.520 DN component" },
1773
2091
"2.5.4.76": { "d": "xmlPrivPolicy", "c": "X.520 DN component" },
2092
+
"2.5.4.77": { "d": "uuidpair", "c": "X.520 DN component" },
2093
+
"2.5.4.78": { "d": "tagOid", "c": "X.520 DN component" },
2094
+
"2.5.4.79": { "d": "uiiFormat", "c": "X.520 DN component" },
2095
+
"2.5.4.80": { "d": "uiiInUrh", "c": "X.520 DN component" },
2096
+
"2.5.4.81": { "d": "contentUrl", "c": "X.520 DN component" },
1774
2097
"2.5.4.82": { "d": "permission", "c": "X.520 DN component" },
2098
+
"2.5.4.83": { "d": "uri", "c": "X.520 DN component" },
2099
+
"2.5.4.84": { "d": "pwdAttribute", "c": "X.520 DN component" },
2100
+
"2.5.4.85": { "d": "userPwd", "c": "X.520 DN component" },
2101
+
"2.5.4.86": { "d": "urn", "c": "X.520 DN component" },
2102
+
"2.5.4.87": { "d": "url", "c": "X.520 DN component" },
2103
+
"2.5.4.88": { "d": "utmCoordinates", "c": "X.520 DN component" },
2104
+
"2.5.4.89": { "d": "urnC", "c": "X.520 DN component" },
2105
+
"2.5.4.90": { "d": "uii", "c": "X.520 DN component" },
2106
+
"2.5.4.91": { "d": "epc", "c": "X.520 DN component" },
2107
+
"2.5.4.92": { "d": "tagAfi", "c": "X.520 DN component" },
2108
+
"2.5.4.93": { "d": "epcFormat", "c": "X.520 DN component" },
2109
+
"2.5.4.94": { "d": "epcInUrn", "c": "X.520 DN component" },
2110
+
"2.5.4.95": { "d": "ldapUrl", "c": "X.520 DN component" },
2111
+
"2.5.4.96": { "d": "tagLocation", "c": "X.520 DN component" },
2112
+
"2.5.4.97": { "d": "organizationIdentifier", "c": "X.520 DN component" },
2113
+
"2.5.4.98": { "d": "countryCode3c", "c": "X.520 DN component" },
2114
+
"2.5.4.99": { "d": "countryCode3n", "c": "X.520 DN component" },
2115
+
"2.5.4.100": { "d": "dnsName", "c": "X.520 DN component" },
2116
+
"2.5.4.101": { "d": "eepkCertificateRevocationList", "c": "X.520 DN component" },
2117
+
"2.5.4.102": { "d": "eeAttrCertificateRevocationList", "c": "X.520 DN component" },
2118
+
"2.5.4.103": { "d": "supportedPublicKeyAlgorithms", "c": "X.520 DN component" },
2119
+
"2.5.4.104": { "d": "intEmail", "c": "X.520 DN component" },
2120
+
"2.5.4.105": { "d": "jid", "c": "X.520 DN component" },
2121
+
"2.5.4.106": { "d": "objectIdentifier", "c": "X.520 DN component" },
1775
2122
"2.5.6.0": { "d": "top", "c": "X.520 objectClass" },
1776
2123
"2.5.6.1": { "d": "alias", "c": "X.520 objectClass" },
1777
2124
"2.5.6.2": { "d": "country", "c": "X.520 objectClass" },
···
1864
2211
"2.5.29.67": { "d": "allowedAttAss", "c": "X.509 extension" },
1865
2212
"2.5.29.68": { "d": "attributeMappings", "c": "X.509 extension" },
1866
2213
"2.5.29.69": { "d": "holderNameConstraints", "c": "X.509 extension" },
2214
+
"2.16.578.1.26.1.3.1": { "d": "privateKeySmartCard", "c": "Norway Buypass CA policy" },
2215
+
"2.16.578.1.26.1.3.2": { "d": "privateKeySoftToken", "c": "Norway Buypass CA policy" },
2216
+
"2.16.578.1.26.1.3.3": { "d": "sslEvident. Also assigned as BuyPass EV policy", "c": "Norway Buypass CA policy" },
2217
+
"2.16.578.1.26.1.3.4": { "d": "sslBusinessPlus", "c": "Norway Buypass CA policy" },
2218
+
"2.16.578.1.26.1.3.5": { "d": "privateKeyHardToken", "c": "Norway Buypass CA policy" },
2219
+
"2.16.578.1.26.1.3.6": { "d": "privateKeyHSM", "c": "Norway Buypass CA policy" },
1867
2220
"2.16.724.1.2.2.4.1": { "d": "personalDataInfo", "c": "Spanish Government PKI?" },
1868
2221
"2.16.840.1.101.2.1.1.1": { "d": "sdnsSignatureAlgorithm", "c": "SDN.700 INFOSEC algorithms" },
1869
2222
"2.16.840.1.101.2.1.1.2": { "d": "fortezzaSignatureAlgorithm", "c": "SDN.700 INFOSEC algorithms. Formerly known as mosaicSignatureAlgorithm, this OID is better known as dsaWithSHA-1." },
···
1902
2255
"2.16.840.1.101.2.1.2.74": { "d": "forwardedCSPMsgBodyPart", "c": "SDN.700 INFOSEC format" },
1903
2256
"2.16.840.1.101.2.1.2.75": { "d": "cspForwardedMessageParameters", "c": "SDN.700 INFOSEC format" },
1904
2257
"2.16.840.1.101.2.1.2.76": { "d": "mspMMP2", "c": "SDN.700 INFOSEC format" },
2258
+
"2.16.840.1.101.2.1.2.78.2": { "d": "encryptedKeyPackage", "c": "SDN.700 INFOSEC format and RFC 6032" },
2259
+
"2.16.840.1.101.2.1.2.78.3": { "d": "keyPackageReceipt", "c": "SDN.700 INFOSEC format and RFC 7191" },
2260
+
"2.16.840.1.101.2.1.2.78.6": { "d": "keyPackageError", "c": "SDN.700 INFOSEC format and RFC 7191" },
1905
2261
"2.16.840.1.101.2.1.3.1": { "d": "sdnsSecurityPolicy", "c": "SDN.700 INFOSEC policy" },
1906
2262
"2.16.840.1.101.2.1.3.2": { "d": "sdnsPRBAC", "c": "SDN.700 INFOSEC policy" },
1907
2263
"2.16.840.1.101.2.1.3.3": { "d": "mosaicPRBAC", "c": "SDN.700 INFOSEC policy" },
···
1978
2334
"2.16.840.1.101.2.1.5.58": { "d": "policyInformationFile", "c": "SDN.700 INFOSEC attributes (obsolete)", "w": true },
1979
2335
"2.16.840.1.101.2.1.5.59": { "d": "secPolicyInformationFile", "c": "SDN.700 INFOSEC attributes" },
1980
2336
"2.16.840.1.101.2.1.5.60": { "d": "cAClearanceConstraint", "c": "SDN.700 INFOSEC attributes" },
2337
+
"2.16.840.1.101.2.1.5.65": { "d": "keyPkgIdAndReceiptReq", "c": "SDN.700 INFOSEC attributes and RFC 7191" },
2338
+
"2.16.840.1.101.2.1.5.66": { "d": "contentDecryptKeyID", "c": "SDN.700 INFOSEC attributes and RFC 6032" },
2339
+
"2.16.840.1.101.2.1.5.70": { "d": "kpCrlPointers", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2340
+
"2.16.840.1.101.2.1.5.71": { "d": "kpKeyProvinceV2", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2341
+
"2.16.840.1.101.2.1.5.72": { "d": "kpManifest", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
1981
2342
"2.16.840.1.101.2.1.7.1": { "d": "cspExtns", "c": "SDN.700 INFOSEC extensions" },
1982
2343
"2.16.840.1.101.2.1.7.1.0": { "d": "cspCsExtn", "c": "SDN.700 INFOSEC extensions" },
1983
2344
"2.16.840.1.101.2.1.8.1": { "d": "mISSISecurityCategories", "c": "SDN.700 INFOSEC security category" },
1984
2345
"2.16.840.1.101.2.1.8.2": { "d": "standardSecurityLabelPrivileges", "c": "SDN.700 INFOSEC security category" },
2346
+
"2.16.840.1.101.2.1.8.3.1": { "d": "enumeratedPermissiveAttrs", "c": "SDN.700 INFOSEC security category from RFC 7906" },
2347
+
"2.16.840.1.101.2.1.8.3.3": { "d": "informativeAttrs", "c": "SDN.700 INFOSEC security category from RFC 7906" },
2348
+
"2.16.840.1.101.2.1.8.3.4": { "d": "enumeratedRestrictiveAttrs", "c": "SDN.700 INFOSEC security category from RFC 7906" },
1985
2349
"2.16.840.1.101.2.1.10.1": { "d": "sigPrivileges", "c": "SDN.700 INFOSEC privileges" },
1986
2350
"2.16.840.1.101.2.1.10.2": { "d": "kmPrivileges", "c": "SDN.700 INFOSEC privileges" },
1987
2351
"2.16.840.1.101.2.1.10.3": { "d": "namedTagSetPrivilege", "c": "SDN.700 INFOSEC privileges" },
···
2008
2372
"2.16.840.1.101.2.1.12.0.3.0.2": { "d": "kafkaTagSetName2", "c": "SDN.700 INFOSEC test objects" },
2009
2373
"2.16.840.1.101.2.1.12.0.3.0.3": { "d": "kafkaTagSetName3", "c": "SDN.700 INFOSEC test objects" },
2010
2374
"2.16.840.1.101.2.1.12.1.1": { "d": "tcp1", "c": "SDN.700 INFOSEC test objects" },
2375
+
"2.16.840.1.101.2.1.13.1": { "d": "kmaKeyAlgorithm", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2376
+
"2.16.840.1.101.2.1.13.3": { "d": "kmaTSECNomenclature", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2377
+
"2.16.840.1.101.2.1.13.5": { "d": "kmaKeyDistPeriod", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2378
+
"2.16.840.1.101.2.1.13.6": { "d": "kmaKeyValidityPeriod", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2379
+
"2.16.840.1.101.2.1.13.7": { "d": "kmaKeyDuration", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2380
+
"2.16.840.1.101.2.1.13.11": { "d": "kmaSplitID", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2381
+
"2.16.840.1.101.2.1.13.12": { "d": "kmaKeyPkgType", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2382
+
"2.16.840.1.101.2.1.13.13": { "d": "kmaKeyPurpose", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2383
+
"2.16.840.1.101.2.1.13.14": { "d": "kmaKeyUse", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2384
+
"2.16.840.1.101.2.1.13.15": { "d": "kmaTransportKey", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2385
+
"2.16.840.1.101.2.1.13.16": { "d": "kmaKeyPkgReceiversV2", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2386
+
"2.16.840.1.101.2.1.13.19": { "d": "kmaOtherCertFormats", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2387
+
"2.16.840.1.101.2.1.13.20": { "d": "kmaUsefulCerts", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2388
+
"2.16.840.1.101.2.1.13.21": { "d": "kmaKeyWrapAlgorithm", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2389
+
"2.16.840.1.101.2.1.13.22": { "d": "kmaSigUsageV3", "c": "SDN.700 INFOSEC attributes and RFC 7906" },
2390
+
"2.16.840.1.101.2.1.16.0": { "d": "dn", "c": "SDN.700 INFOSEC attributes and RFC 7191" },
2391
+
"2.16.840.1.101.2.1.22": { "d": "errorCodes", "c": "RFC 7906 key attribute error codes" },
2392
+
"2.16.840.1.101.2.1.22.1": { "d": "missingKeyType", "c": "RFC 7906 key attribute error codes" },
2393
+
"2.16.840.1.101.2.1.22.2": { "d": "privacyMarkTooLong", "c": "RFC 7906 key attribute error codes" },
2394
+
"2.16.840.1.101.2.1.22.3": { "d": "unrecognizedSecurityPolicy", "c": "RFC 7906 key attribute error codes" },
2011
2395
"2.16.840.1.101.3.1": { "d": "slabel", "c": "CSOR GAK", "w": true },
2012
2396
"2.16.840.1.101.3.2": { "d": "pki", "c": "NIST", "w": true },
2013
2397
"2.16.840.1.101.3.2.1": { "d": "NIST policyIdentifier", "c": "NIST policies", "w": true },
···
2040
2424
"2.16.840.1.101.3.4.1.6": { "d": "aes128-GCM", "c": "NIST Algorithm" },
2041
2425
"2.16.840.1.101.3.4.1.7": { "d": "aes128-CCM", "c": "NIST Algorithm" },
2042
2426
"2.16.840.1.101.3.4.1.8": { "d": "aes128-wrap-pad", "c": "NIST Algorithm" },
2427
+
"2.16.840.1.101.3.4.1.9": { "d": "aes128-GMAC", "c": "NIST Algorithm" },
2043
2428
"2.16.840.1.101.3.4.1.21": { "d": "aes192-ECB", "c": "NIST Algorithm" },
2044
2429
"2.16.840.1.101.3.4.1.22": { "d": "aes192-CBC", "c": "NIST Algorithm" },
2045
2430
"2.16.840.1.101.3.4.1.23": { "d": "aes192-OFB", "c": "NIST Algorithm" },
···
2048
2433
"2.16.840.1.101.3.4.1.26": { "d": "aes192-GCM", "c": "NIST Algorithm" },
2049
2434
"2.16.840.1.101.3.4.1.27": { "d": "aes192-CCM", "c": "NIST Algorithm" },
2050
2435
"2.16.840.1.101.3.4.1.28": { "d": "aes192-wrap-pad", "c": "NIST Algorithm" },
2436
+
"2.16.840.1.101.3.4.1.29": { "d": "aes192-GMAC", "c": "NIST Algorithm" },
2051
2437
"2.16.840.1.101.3.4.1.41": { "d": "aes256-ECB", "c": "NIST Algorithm" },
2052
2438
"2.16.840.1.101.3.4.1.42": { "d": "aes256-CBC", "c": "NIST Algorithm" },
2053
2439
"2.16.840.1.101.3.4.1.43": { "d": "aes256-OFB", "c": "NIST Algorithm" },
···
2056
2442
"2.16.840.1.101.3.4.1.46": { "d": "aes256-GCM", "c": "NIST Algorithm" },
2057
2443
"2.16.840.1.101.3.4.1.47": { "d": "aes256-CCM", "c": "NIST Algorithm" },
2058
2444
"2.16.840.1.101.3.4.1.48": { "d": "aes256-wrap-pad", "c": "NIST Algorithm" },
2445
+
"2.16.840.1.101.3.4.1.49": { "d": "aes256-GMAC", "c": "NIST Algorithm" },
2059
2446
"2.16.840.1.101.3.4.2": { "d": "hashAlgos", "c": "NIST Algorithm" },
2060
2447
"2.16.840.1.101.3.4.2.1": { "d": "sha-256", "c": "NIST Algorithm" },
2061
2448
"2.16.840.1.101.3.4.2.2": { "d": "sha-384", "c": "NIST Algorithm" },
2062
2449
"2.16.840.1.101.3.4.2.3": { "d": "sha-512", "c": "NIST Algorithm" },
2063
2450
"2.16.840.1.101.3.4.2.4": { "d": "sha-224", "c": "NIST Algorithm" },
2451
+
"2.16.840.1.101.3.4.2.7": { "d": "sha3-224", "c": "NIST Algorithm" },
2452
+
"2.16.840.1.101.3.4.2.8": { "d": "sha3-256", "c": "NIST Algorithm" },
2453
+
"2.16.840.1.101.3.4.2.9": { "d": "sha3-384", "c": "NIST Algorithm" },
2454
+
"2.16.840.1.101.3.4.2.10": { "d": "sha3-512", "c": "NIST Algorithm" },
2455
+
"2.16.840.1.101.3.4.2.11": { "d": "shake128", "c": "NIST Algorithm" },
2456
+
"2.16.840.1.101.3.4.2.12": { "d": "shake256", "c": "NIST Algorithm" },
2457
+
"2.16.840.1.101.3.4.2.17": { "d": "shake128len", "c": "NIST Algorithm" },
2458
+
"2.16.840.1.101.3.4.2.18": { "d": "shake256len", "c": "NIST Algorithm" },
2459
+
"2.16.840.1.101.3.4.2.19": { "d": "kmacShake128", "c": "NIST Algorithm" },
2460
+
"2.16.840.1.101.3.4.2.20": { "d": "kmacShake256", "c": "NIST Algorithm" },
2064
2461
"2.16.840.1.101.3.4.3.1": { "d": "dsaWithSha224", "c": "NIST Algorithm" },
2065
2462
"2.16.840.1.101.3.4.3.2": { "d": "dsaWithSha256", "c": "NIST Algorithm" },
2066
2463
"2.16.840.1.113719.1.2.8": { "d": "novellAlgorithm", "c": "Novell" },
···
2116
2513
"2.16.840.1.113730.3.1.2": { "d": "departmentNumber", "c": "Netscape LDAP definitions" },
2117
2514
"2.16.840.1.113730.3.1.3": { "d": "employeeNumber", "c": "Netscape LDAP definitions" },
2118
2515
"2.16.840.1.113730.3.1.4": { "d": "employeeType", "c": "Netscape LDAP definitions" },
2516
+
"2.16.840.1.113730.3.1.216": { "d": "userPKCS12", "c": "Netscape LDAP definitions" },
2119
2517
"2.16.840.1.113730.3.2.2": { "d": "inetOrgPerson", "c": "Netscape LDAP definitions" },
2120
2518
"2.16.840.1.113730.4.1": { "d": "serverGatedCrypto", "c": "Netscape" },
2121
2519
"2.16.840.1.113733.1.6.3": { "d": "verisignCZAG", "c": "Verisign extension" },
···
2254
2652
"2.23.43.1.4.6": { "d": "wTLS-ECC-curve6", "c": "WAP WTLS" },
2255
2653
"2.23.43.1.4.8": { "d": "wTLS-ECC-curve8", "c": "WAP WTLS" },
2256
2654
"2.23.43.1.4.9": { "d": "wTLS-ECC-curve9", "c": "WAP WTLS" },
2257
-
"2.23.133": { "d": "tCPA", "c": "TCPA" },
2258
-
"2.23.133.1": { "d": "tcpaSpecVersion", "c": "TCPA" },
2259
-
"2.23.133.2": { "d": "tcpaAttribute", "c": "TCPA" },
2260
-
"2.23.133.2.1": { "d": "tcpaTpmManufacturer", "c": "TCPA Attribute" },
2261
-
"2.23.133.2.2": { "d": "tcpaTpmModel", "c": "TCPA Attribute" },
2262
-
"2.23.133.2.3": { "d": "tcpaTpmVersion", "c": "TCPA Attribute" },
2263
-
"2.23.133.2.4": { "d": "tcpaPlatformManufacturer", "c": "TCPA Attribute" },
2264
-
"2.23.133.2.5": { "d": "tcpaPlatformModel", "c": "TCPA Attribute" },
2265
-
"2.23.133.2.6": { "d": "tcpaPlatformVersion", "c": "TCPA Attribute" },
2266
-
"2.23.133.2.7": { "d": "tcpaComponentManufacturer", "c": "TCPA Attribute" },
2267
-
"2.23.133.2.8": { "d": "tcpaComponentModel", "c": "TCPA Attribute" },
2268
-
"2.23.133.2.9": { "d": "tcpaComponentVersion", "c": "TCPA Attribute" },
2269
-
"2.23.133.2.10": { "d": "tcpaSecurityQualities", "c": "TCPA Attribute" },
2270
-
"2.23.133.2.11": { "d": "tcpaTpmProtectionProfile", "c": "TCPA Attribute" },
2271
-
"2.23.133.2.12": { "d": "tcpaTpmSecurityTarget", "c": "TCPA Attribute" },
2272
-
"2.23.133.2.13": { "d": "tcpaFoundationProtectionProfile", "c": "TCPA Attribute" },
2273
-
"2.23.133.2.14": { "d": "tcpaFoundationSecurityTarget", "c": "TCPA Attribute" },
2274
-
"2.23.133.2.15": { "d": "tcpaTpmIdLabel", "c": "TCPA Attribute" },
2275
-
"2.23.133.3": { "d": "tcpaProtocol", "c": "TCPA" },
2276
-
"2.23.133.3.1": { "d": "tcpaPrttTpmIdProtocol", "c": "TCPA Protocol" },
2655
+
"2.23.133": { "d": "tCPA", "c": "TCPA/TCG" },
2656
+
"2.23.133.1": { "d": "tcgSpecVersion", "c": "TCPA/TCG" },
2657
+
"2.23.133.2": { "d": "tcgAttribute", "c": "TCPA/TCG" },
2658
+
"2.23.133.2.1": { "d": "tcgTpmManufacturer", "c": "TCPA/TCG Attribute" },
2659
+
"2.23.133.2.2": { "d": "tcgTpmModel", "c": "TCPA/TCG Attribute" },
2660
+
"2.23.133.2.3": { "d": "tcgTpmVersion", "c": "TCPA/TCG Attribute" },
2661
+
"2.23.133.2.4": { "d": "tcgPlatformManufacturer", "c": "TCPA/TCG Attribute" },
2662
+
"2.23.133.2.5": { "d": "tcgPlatformModel", "c": "TCPA/TCG Attribute" },
2663
+
"2.23.133.2.6": { "d": "tcgPlatformVersion", "c": "TCPA/TCG Attribute" },
2664
+
"2.23.133.2.7": { "d": "tcgComponentManufacturer", "c": "TCPA/TCG Attribute" },
2665
+
"2.23.133.2.8": { "d": "tcgComponentModel", "c": "TCPA/TCG Attribute" },
2666
+
"2.23.133.2.9": { "d": "tcgComponentVersion", "c": "TCPA/TCG Attribute" },
2667
+
"2.23.133.2.10": { "d": "tcgSecurityQualities", "c": "TCPA/TCG Attribute" },
2668
+
"2.23.133.2.11": { "d": "tcgTpmProtectionProfile", "c": "TCPA/TCG Attribute" },
2669
+
"2.23.133.2.12": { "d": "tcgTpmSecurityTarget", "c": "TCPA/TCG Attribute" },
2670
+
"2.23.133.2.13": { "d": "tcgFoundationProtectionProfile", "c": "TCPA/TCG Attribute" },
2671
+
"2.23.133.2.14": { "d": "tcgFoundationSecurityTarget", "c": "TCPA/TCG Attribute" },
2672
+
"2.23.133.2.15": { "d": "tcgTpmIdLabel", "c": "TCPA/TCG Attribute" },
2673
+
"2.23.133.2.16": { "d": "tcgTpmSpecification", "c": "TCPA/TCG Attribute" },
2674
+
"2.23.133.2.18": { "d": "tcgTpmSecurityAssertions", "c": "TCPA/TCG Attribute" },
2675
+
"2.23.133.3": { "d": "tcgProtocol", "c": "TCPA/TCG" },
2676
+
"2.23.133.3.1": { "d": "tcgPrttTpmIdProtocol", "c": "TCPA/TCG Protocol" },
2677
+
"2.23.133.8.1": { "d": "tcgEKCertificate", "c": "TCPA/TCG Key Usage" },
2678
+
"2.23.133.10.1.1.1": { "d": "tcgObject", "c": "TCPA/TCG Object" },
2277
2679
"2.23.134.1.4.2.1": { "d": "postSignumRootQCA", "c": "PostSignum CA" },
2278
2680
"2.23.134.1.2.2.3": { "d": "postSignumPublicCA", "c": "PostSignum CA" },
2279
2681
"2.23.134.1.2.1.8.210": { "d": "postSignumCommercialServerPolicy", "c": "PostSignum CA" },
2280
2682
"2.23.136.1.1.1": { "d": "mRTDSignatureData", "c": "ICAO MRTD" },
2683
+
"2.23.140.1.1": { "d": "evGuidelines", "c": "CAB Certificate Policies" },
2684
+
"2.23.140.1.2.1": { "d": "domainValidated", "c": "CAB Certificate Policies" },
2685
+
"2.23.140.1.2.2": { "d": "subjectIdentityValidated", "c": "CAB Certificate Policies" },
2686
+
"2.23.140.1.4.1": { "d": "codeSigningRequirements", "c": "CAB Certificate Policies" },
2281
2687
"2.54.1775.2": { "d": "hashedRootKey", "c": "SET. Deprecated, use (2 23 42 7 0) instead", "w": true },
2282
2688
"2.54.1775.3": { "d": "certificateType", "c": "SET. Deprecated, use (2 23 42 7 0) instead", "w": true },
2283
2689
"2.54.1775.4": { "d": "merchantData", "c": "SET. Deprecated, use (2 23 42 7 0) instead", "w": true },
···
2290
2696
"1.3.6.1.4.1.34697.2.2": { "d": "AffirmTrust EV policy", "c": "AffirmTrust Networking" },
2291
2697
"1.3.6.1.4.1.34697.2.3": { "d": "AffirmTrust EV policy", "c": "AffirmTrust Premium" },
2292
2698
"1.3.6.1.4.1.34697.2.4": { "d": "AffirmTrust EV policy", "c": "AffirmTrust Premium ECC" },
2293
-
"2.16.578.1.26.1.3.3": { "d": "BuyPass EV policy", "c": "BuyPass Class 3 EV" },
2294
2699
"1.3.6.1.4.1.17326.10.14.2.1.2": { "d": "Camerfirma EV policy", "c": "Camerfirma CA Root" },
2295
2700
"1.3.6.1.4.1.17326.10.8.12.1.2": { "d": "Camerfirma EV policy", "c": "Camerfirma CA Root" },
2296
2701
"1.3.6.1.4.1.22234.2.5.2.3.1": { "d": "CertPlus EV policy", "c": "CertPlus Class 2 Primary CA (formerly Keynectis)" },
···
2317
2722
"1.3.6.1.4.1.40869.1.1.22.3": { "d": "TWCA EV policy", "c": "TWCA Root Certification Authority" },
2318
2723
"2.16.840.1.113733.1.7.23.6": { "d": "VeriSign EV policy", "c": "VeriSign Class 3 Public Primary Certification Authority" },
2319
2724
"2.16.840.1.114171.500.9": { "d": "Wells Fargo EV policy", "c": "Wells Fargo WellsSecure Public Root Certificate Authority" },
2320
-
"END": ""
2321
2725
};
2322
-
if (typeof module !== 'undefined') { module.exports = oids; }
+55
-25
package.json
+55
-25
package.json
···
1
1
{
2
2
"name": "@lapo/asn1js",
3
-
"version": "1.0.2",
3
+
"version": "2.1.1",
4
4
"description": "Generic ASN.1 parser/decoder that can decode any valid ASN.1 DER or BER structures.",
5
+
"type": "module",
5
6
"main": "asn1.js",
6
7
"repository": {
7
8
"type": "git",
8
9
"url": "git+https://github.com/lapo-luchini/asn1js.git"
9
10
},
10
-
"keywords": [ "asn1", "ber", "der", "pem" ],
11
+
"keywords": [
12
+
"asn1",
13
+
"ber",
14
+
"der",
15
+
"pem"
16
+
],
11
17
"author": "Lapo Luchini <lapo@lapo.it>",
12
18
"license": "ISC",
13
-
"bugs": { "url": "https://github.com/lapo-luchini/asn1js/issues" },
19
+
"bugs": {
20
+
"url": "https://github.com/lapo-luchini/asn1js/issues"
21
+
},
14
22
"homepage": "https://lapo.it/asn1js/",
15
-
"files": [ "asn1.js", "base64.js", "hex.js", "int10.js", "oids.js" ],
16
-
"eslintConfig": {
17
-
"env": {
18
-
"browser": true,
19
-
"node": true
20
-
},
21
-
"extends": [ "eslint:recommended" ],
22
-
"rules": {
23
-
"strict": [ "error", "function" ],
24
-
"indent": [ "error", 4, { "outerIIFEBody": 0 } ],
25
-
"linebreak-style": [ "error", "unix" ],
26
-
"semi": [ "warn", "always" ],
27
-
"comma-dangle": [ "error", "never" ]
28
-
},
29
-
"overrides": [
30
-
{
31
-
"files": [ "index.js", "test.js" ],
32
-
"rules": {
33
-
"strict": [ "error", "global" ]
34
-
}
35
-
}
36
-
]
23
+
"files": [
24
+
"asn1.js",
25
+
"base64.js",
26
+
"hex.js",
27
+
"dom.js",
28
+
"defs.js",
29
+
"oids.js",
30
+
"rfcdef.js",
31
+
"dumpASN1.js"
32
+
],
33
+
"scripts": {
34
+
"lint": "npx eslint asn1.js base64.js hex.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",
35
+
"lint-action": "npx @action-validator/cli .github/workflows/node.js.yml",
36
+
"build": "vite build",
37
+
"serve": "npx -p local-web-server ws",
38
+
"test": "node test",
39
+
"testdefs": "node testDefs"
40
+
},
41
+
"bin": {
42
+
"dumpASN1": "./dumpASN1.js"
43
+
},
44
+
"engines": {
45
+
"node": ">=14.6.0"
46
+
},
47
+
"packageManager": "pnpm@7.33.7",
48
+
"devDependencies": {
49
+
"@eslint/eslintrc": "^3.3.1",
50
+
"@eslint/js": "^9.38.0",
51
+
"@rollup/wasm-node": "^4.52.5",
52
+
"diff": "^8.0.2",
53
+
"eslint": "^9.38.0",
54
+
"globals": "^16.4.0",
55
+
"htmlparser2": "^9.1.0",
56
+
"vite": "^7.1.12",
57
+
"vite-plugin-dom": "^1.0.5",
58
+
"vite-plugin-singlefile": "^2.3.0"
59
+
},
60
+
"overrides": {
61
+
"rollup": "npm:@rollup/wasm-node"
62
+
},
63
+
"pnpm": {
64
+
"overrides": {
65
+
"rollup": "npm:@rollup/wasm-node"
66
+
}
37
67
}
38
68
}
+588
parseRFC.js
+588
parseRFC.js
···
1
+
#! /usr/bin/env node
2
+
3
+
// RFC ASN.1 definition parser
4
+
// Copyright (c) 2021 Lapo Luchini <lapo@lapo.it>
5
+
6
+
// Permission to use, copy, modify, and/or distribute this software for any
7
+
// purpose with or without fee is hereby granted, provided that the above
8
+
// copyright notice and this permission notice appear in all copies.
9
+
//
10
+
// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
11
+
// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
12
+
// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
13
+
// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
14
+
// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
15
+
// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
16
+
// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
17
+
18
+
import * as fs from 'node:fs';
19
+
20
+
const
21
+
patches = { // to fix some known RFCs' ASN.1 syntax errors
22
+
0: [
23
+
[ /\n\n[A-Z].*\n\f\n[A-Z].*\n\n/g, '' ], // page change
24
+
],
25
+
2459: [ // currently unsupported
26
+
[ 'videotex (8) } (0..ub-integer-options)', 'videotex (8) }' ],
27
+
[ /OBJECT IDENTIFIER \( id-qt-cps \| id-qt-unotice \)/g, 'OBJECT IDENTIFIER' ],
28
+
[ /SIGNED \{ (SEQUENCE \{[^}]+\})\s*\}/g, 'SEQUENCE { toBeSigned $1, algorithm AlgorithmIdentifier, signature BIT STRING }' ],
29
+
[ /EXTENSION\.&[^,]+/g, 'OBJECT IDENTIFIER'],
30
+
],
31
+
2986: [ // currently unsupported
32
+
[ /FROM (InformationFramework|AuthenticationFramework) [a-zA-Z]+/g, 'FROM $1 {joint-iso-itu-t(2) ds(5) module(1) usefulDefinitions(0) 3}' ],
33
+
[ /[(]v1,[^)]+[)]/g, '' ],
34
+
[ /[{][{][^}]+[}][}]/g, '' ],
35
+
[ 'SubjectPublicKeyInfo {ALGORITHM: IOSet}', 'SubjectPublicKeyInfo' ],
36
+
[ /PKInfoAlgorithms ALGORITHM ::=[^}]+[}]/g, '' ],
37
+
[ /(Attributes?) [{] ATTRIBUTE:IOSet [}]/g, '$1' ],
38
+
[ /CRIAttributes +ATTRIBUTE +::=[^}]+[}]/g, '' ],
39
+
[ /[A-Z]+[.]&id[(][{]IOSet[}][)]/g, 'OBJECT IDENTIFIER' ],
40
+
[ /[A-Z]+[.]&Type[(][{]IOSet[}][{]@[a-z]+[}][)]/g, 'ANY' ],
41
+
[ /(AlgorithmIdentifier) [{]ALGORITHM:IOSet [}]/g, '$1' ],
42
+
[ /SignatureAlgorithms ALGORITHM ::=[^}]+[}]/g, '' ],
43
+
],
44
+
3161: [ // actual syntax errors
45
+
[ /--.*}/g, '}' ],
46
+
[ /^( +)--.*\n(?:\1 .*\n)+/mg, '' ],
47
+
[ /addInfoNotAvailable \(17\)/g, '$&,' ],
48
+
],
49
+
5208: [ // currently unsupported
50
+
[ 'FROM InformationFramework informationFramework', 'FROM InformationFramework {joint-iso-itu-t(2) ds(5) module(1) usefulDefinitions(0) 3}' ],
51
+
[ ' {{PrivateKeyAlgorithms}}', '' ],
52
+
[ 'Version ::= INTEGER {v1(0)} (v1,...)', 'Version ::= INTEGER {v1(0)}' ],
53
+
[ ' {{KeyEncryptionAlgorithms}}', '' ],
54
+
[ /\.\.\. -- For local profiles/g, '' ],
55
+
],
56
+
5280: [ // currently unsupported
57
+
[ 'videotex (8) } (0..ub-integer-options)', 'videotex (8) }' ],
58
+
[ /OBJECT IDENTIFIER \( id-qt-cps \| id-qt-unotice \)/g, 'OBJECT IDENTIFIER' ],
59
+
],
60
+
4210: [
61
+
[ /^\s+-- .*\r?\n/mg, '' ], // comments
62
+
],
63
+
8017: [ // this RFC uses a lot of currently unsupported syntax
64
+
[ /ALGORITHM-IDENTIFIER ::= CLASS[^-]+--/, '--' ],
65
+
[ /\n +\S+ +ALGORITHM-IDENTIFIER[^\n]+(\n {6}[^\n]+)+\n {3}[}]/g, '' ],
66
+
[ /AlgorithmIdentifier [{] ALGORITHM-IDENTIFIER:InfoObjectSet [}] ::=(\n {6}[^\n]+)+\n {3}[}]/, 'AlgorithmIdentifier ::= ANY'],
67
+
[ /algorithm +id-[^,\n]+,/g, 'algorithm ANY,' ],
68
+
[ / (sha1 {4}HashAlgorithm|mgf1SHA1 {4}MaskGenAlgorithm|pSpecifiedEmpty {4}PSourceAlgorithm|rSAES-OAEP-Default-Identifier {4}RSAES-AlgorithmIdentifier|rSASSA-PSS-Default-Identifier {4}RSASSA-AlgorithmIdentifier) ::= [{](\n( {6}[^\n]+)?)+\n {3}[}]/g, '' ],
69
+
[ / ::= AlgorithmIdentifier [{]\s+[{][^}]+[}]\s+[}]/g, ' ::= AlgorithmIdentifier' ],
70
+
[ /OCTET STRING[(]SIZE[(]0..MAX[)][)]/g, 'OCTET STRING' ],
71
+
[ /emptyString {4}EncodingParameters ::= ''H/g, '' ],
72
+
[ /[(]CONSTRAINED BY[^)]+[)]/g, '' ],
73
+
],
74
+
4511: [
75
+
[ /^\s+-- .*\r?\n/mg, '' ], // comments
76
+
[ 'EXTENSIBILITY IMPLIED', '' ],
77
+
[ /\.\.\.(,| {2})/g, '' ],
78
+
[ /value AttributeValue/g, 'AttributeValue' ],
79
+
[ /control Control/g, 'Control' ],
80
+
[ /Attribute ::= PartialAttribute\(WITH COMPONENTS \{[^}]+\}\)/g, 'PartialAttribute ::= SEQUENCE { type AttributeDescription, vals SET SIZE (1..MAX) OF AttributeValue }' ],
81
+
[ /,\s+\}/g, '}' ],
82
+
[ /SaslCredentials,/g, 'SaslCredentials' ],
83
+
[ /(BindResponse|ExtendedResponse) ::= \[APPLICATION [0-9]+\] SEQUENCE \{[^}]+\}/g, '$1 ::= ANY' ],
84
+
[ /selector LDAPString/g, 'LDAPString' ],
85
+
[ /filter Filter/g, 'Filter' ],
86
+
[ /MatchingRuleAssertion,/g, 'MatchingRuleAssertion' ],
87
+
[ /OF substring CHOICE/g, 'OF CHOICE' ],
88
+
[ /partialAttribute PartialAttribute/g, 'PartialAttribute' ],
89
+
[ /uri URI/g, 'URI' ],
90
+
[ /OF change SEQUENCE/g, 'OF SEQUENCE' ],
91
+
[ /attribute Attribute/g, 'Attribute' ],
92
+
],
93
+
};
94
+
95
+
// const reWhitespace = /(?:\s|--(?:[}-]?[^\n}-])*(?:\n|--))*/y;
96
+
const reWhitespace = /(?:\s|--(?:-?[^\n-])*(?:\n|--))*/my;
97
+
const reIdentifier = /[a-zA-Z](?:[-]?[a-zA-Z0-9])*/y;
98
+
const reNumber = /0|[1-9][0-9]*/y;
99
+
const reToken = /[(){},[\];]|::=|OPTIONAL|DEFAULT|NULL|TRUE|FALSE|\.\.|OF|SIZE|MIN|MAX|DEFINED BY|DEFINITIONS|TAGS|BEGIN|EXPORTS|IMPORTS|FROM|END/y;
100
+
const reType = /ANY|NULL|BOOLEAN|INTEGER|(?:BIT|OCTET)\s+STRING|OBJECT\s+IDENTIFIER|SEQUENCE|SET|CHOICE|ENUMERATED|(?:Generalized|UTC)Time|(?:BMP|General|Graphic|IA5|ISO64|Numeric|Printable|Teletex|T61|Universal|UTF8|Videotex|Visible)String/y;
101
+
const reTagClass = /UNIVERSAL|APPLICATION|PRIVATE|/y;
102
+
const reTagType = /IMPLICIT|EXPLICIT|/y;
103
+
const reTagDefault = /(AUTOMATIC|IMPLICIT|EXPLICIT) TAGS|/y;
104
+
105
+
let asn1;
106
+
let currentMod;
107
+
108
+
function searchImportedValue(id) {
109
+
for (let imp of Object.values(currentMod.imports))
110
+
for (let name of imp.types)
111
+
if (name == id) {
112
+
if (!(imp.oid in asn1))
113
+
throw new Error('Cannot find module: ' + imp.oid + ' ' + id);
114
+
if (id in asn1[imp.oid].values)
115
+
return asn1[imp.oid].values[id];
116
+
throw new Error('Cannot find imported value: ' + imp.oid + ' ' + id);
117
+
}
118
+
throw new Error('Cannot find imported value in any module: ' + id);
119
+
}
120
+
121
+
class Parser {
122
+
constructor(enc, pos) {
123
+
this.enc = enc;
124
+
this.pos = pos;
125
+
this.start = pos;
126
+
}
127
+
getChar(pos) {
128
+
if (pos === undefined)
129
+
pos = this.pos++;
130
+
if (pos >= this.enc.length)
131
+
throw 'Requesting byte offset ' + pos + ' on a stream of length ' + this.enc.length;
132
+
return this.enc.charAt(pos);
133
+
}
134
+
exception(s) {
135
+
const pos = this.pos;
136
+
let from = Math.max(pos - 30, this.start);
137
+
let to = Math.min(pos + 30, this.enc.length);
138
+
let ctx = '';
139
+
let arrow = '';
140
+
let i = from;
141
+
for (; i < pos; ++i) {
142
+
ctx += this.getChar(i);
143
+
arrow += ' ';
144
+
}
145
+
ctx += this.getChar(i++);
146
+
arrow += '^';
147
+
for (; i < to; ++i)
148
+
ctx += this.getChar(i);
149
+
// calculate line/column
150
+
let line = 1;
151
+
let lastLF = 0;
152
+
for (let i = 0; i < pos; ++i)
153
+
if (this.enc.charAt(i) == '\n') {
154
+
++line;
155
+
lastLF = i;
156
+
}
157
+
let column = pos - lastLF;
158
+
throw new Error('[position ' + pos + ', line ' + line + ':' + column + '] ' + s + '\n' + ctx.replace(/\s/g, ' ') + '\n' + arrow);
159
+
}
160
+
peek() {
161
+
return this.enc.charCodeAt(this.pos);
162
+
}
163
+
peekChar() {
164
+
return this.enc.charAt(this.pos);
165
+
}
166
+
isWhitespace() {
167
+
let c = this.peekChar();
168
+
return c == ' ' || c == '\n';
169
+
}
170
+
isDigit() {
171
+
let c = this.peekChar();
172
+
return c >= '0' && c <= '9';
173
+
}
174
+
skipWhitespace() {
175
+
reWhitespace.lastIndex = this.pos;
176
+
let s = reWhitespace.exec(this.enc);
177
+
if (s)
178
+
this.pos = reWhitespace.lastIndex;
179
+
}
180
+
// DefStream.prototype.eat = function (str) {
181
+
// for (let i = 0; i < str.length; ++i) {
182
+
// let c = this.getChar();
183
+
// if (c != str.charAt(i))
184
+
// throw new Error("Found '" + c + "', was expecting '" + str.charAt(i) + "'");
185
+
// }
186
+
// };
187
+
getRegEx(type, re) {
188
+
this.skipWhitespace();
189
+
re.lastIndex = this.pos;
190
+
let s = re.exec(this.enc); //TODO: does not work with typed arrays
191
+
if (!s)
192
+
this.exception("Found '" + this.peekChar() + "', was expecting a " + type);
193
+
s = s[0];
194
+
// console.log('[debug] getRexEx@' + this.pos + ' = ' + s);
195
+
this.pos = re.lastIndex;
196
+
this.skipWhitespace();
197
+
return s;
198
+
}
199
+
parseIdentifier() {
200
+
let id = this.getRegEx('identifier', reIdentifier);
201
+
// console.log('[debug] parseIdentifier = ' + id);
202
+
return id;
203
+
}
204
+
parseNumber() {
205
+
let id = this.getRegEx('number', reNumber);
206
+
// console.log('[debug] parseNumber = ' + id);
207
+
return id;
208
+
}
209
+
parseToken() {
210
+
let tok = this.getRegEx('token', reToken);
211
+
return tok;
212
+
}
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;
220
+
else {
221
+
this.pos = p;
222
+
return false;
223
+
}
224
+
}
225
+
expectToken(expect) {
226
+
let p = this.pos;
227
+
let t;
228
+
try { t = this.parseToken(); }
229
+
catch (e) { console.log('[debug] expectToken', e); }
230
+
// console.log('[debug] expectToken(' + expect + ') = ' + t);
231
+
if (t != expect) {
232
+
this.pos = p;
233
+
this.exception("Found '" + t + "', was expecting '" + expect + "'");
234
+
}
235
+
}
236
+
parseNumberOrValue() {
237
+
if (this.isDigit())
238
+
return +this.parseNumber();
239
+
return this.parseIdentifier();
240
+
}
241
+
parseRange() {
242
+
let min = this.tryToken('MIN') ? 'MIN' : this.parseNumberOrValue();
243
+
if (this.tryToken('..')) {
244
+
let max = this.tryToken('MAX') ? 'MAX' : this.parseNumberOrValue();
245
+
return [min, max];
246
+
}
247
+
return min;
248
+
}
249
+
parseBuiltinType() {
250
+
let x = {
251
+
name: this.getRegEx('type', reType),
252
+
type: 'builtin',
253
+
};
254
+
// console.log('[debug] parseType = ' + x.name);
255
+
try {
256
+
switch (x.name) {
257
+
case 'ANY':
258
+
if (this.tryToken('DEFINED BY'))
259
+
x.definedBy = this.parseIdentifier();
260
+
break;
261
+
case 'NULL':
262
+
case 'BOOLEAN':
263
+
case 'OCTET STRING':
264
+
case 'OBJECT IDENTIFIER':
265
+
break;
266
+
case 'CHOICE':
267
+
x.content = this.parseElementTypeList();
268
+
break;
269
+
case 'SEQUENCE':
270
+
case 'SET':
271
+
if (this.peekChar() == '{') {
272
+
x.content = this.parseElementTypeList();
273
+
} else {
274
+
x.typeOf = 1;
275
+
if (this.tryToken('SIZE')) {
276
+
this.expectToken('(');
277
+
x.size = this.parseRange();
278
+
this.expectToken(')');
279
+
}
280
+
this.expectToken('OF');
281
+
x.content = [this.parseType()];
282
+
}
283
+
break;
284
+
case 'INTEGER':
285
+
if (this.tryToken('(')) {
286
+
x.range = this.parseRange();
287
+
this.expectToken(')');
288
+
}
289
+
// falls through
290
+
case 'ENUMERATED':
291
+
case 'BIT STRING':
292
+
if (this.tryToken('{')) {
293
+
x.content = {};
294
+
do {
295
+
let id = this.parseIdentifier();
296
+
this.expectToken('(');
297
+
let val = this.parseNumber(); //TODO: signed
298
+
this.expectToken(')');
299
+
x.content[id] = +val;
300
+
} while (this.tryToken(','));
301
+
this.expectToken('}');
302
+
}
303
+
break;
304
+
case 'BMPString':
305
+
case 'GeneralString':
306
+
case 'GraphicString':
307
+
case 'IA5String':
308
+
case 'ISO646String':
309
+
case 'NumericString':
310
+
case 'PrintableString':
311
+
case 'TeletexString':
312
+
case 'T61String':
313
+
case 'UniversalString':
314
+
case 'UTF8String':
315
+
case 'VideotexString':
316
+
case 'VisibleString':
317
+
if (this.tryToken('(')) {
318
+
if (this.tryToken('SIZE')) {
319
+
this.expectToken('(');
320
+
x.size = this.parseRange();
321
+
this.expectToken(')');
322
+
}
323
+
this.expectToken(')');
324
+
}
325
+
break;
326
+
case 'UTCTime':
327
+
case 'GeneralizedTime':
328
+
break;
329
+
default:
330
+
x.warning = 'type unknown';
331
+
}
332
+
} catch (e) {
333
+
console.log('[debug] parseBuiltinType content', e);
334
+
x.warning = 'type exception';
335
+
}
336
+
return x;
337
+
}
338
+
parseTaggedType() {
339
+
this.expectToken('[');
340
+
let tagClass = this.getRegEx('class', reTagClass) || 'CONTEXT'; //TODO: use module defaults
341
+
let t = this.parseNumber();
342
+
this.expectToken(']');
343
+
let plicit = this.getRegEx('explicit/implicit', reTagType);
344
+
if (plicit == '') plicit = currentMod.tagDefault;
345
+
let x = this.parseType();
346
+
let name;
347
+
switch (tagClass) { // keep in sync with ASN1.typeName
348
+
case 'APPLICATION':
349
+
name = 'Application ' + t;
350
+
break;
351
+
case 'PRIVATE':
352
+
name = 'Private ' + t;
353
+
break;
354
+
case 'CONTEXT':
355
+
// fall through
356
+
default:
357
+
name = '[' + t + ']';
358
+
break;
359
+
}
360
+
return {
361
+
name,
362
+
type: 'tag',
363
+
'class': tagClass,
364
+
explicit: (plicit == 'EXPLICIT'),
365
+
content: [{ name: '', type: x }],
366
+
};
367
+
}
368
+
parseType() {
369
+
if (this.peekChar() == '[')
370
+
return this.parseTaggedType();
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 = {
378
+
name: this.parseIdentifier(),
379
+
type: 'defined',
380
+
};
381
+
// let from = searchImportedType(x.name);
382
+
// if (from)
383
+
// x.module = from;
384
+
return x;
385
+
//TODO "restricted string type"
386
+
}
387
+
}
388
+
parseValueBoolean() {
389
+
let p = this.pos;
390
+
let t = this.parseToken();
391
+
if (t == 'TRUE')
392
+
return true;
393
+
if (t == 'FALSE')
394
+
return false;
395
+
this.pos = p;
396
+
this.exception("Found '" + t + "', was expecting a boolean");
397
+
}
398
+
parseValueOID() {
399
+
this.expectToken('{');
400
+
let v = '';
401
+
while (!this.tryToken('}')) {
402
+
let p = this.pos;
403
+
let val;
404
+
if (this.isDigit())
405
+
val = this.parseNumber();
406
+
else {
407
+
this.pos = p;
408
+
let id = this.parseIdentifier();
409
+
if (this.tryToken('(')) {
410
+
val = this.parseNumber();
411
+
this.expectToken(')');
412
+
} else {
413
+
if (id in currentMod.values) // defined in local module
414
+
val = currentMod.values[id].value;
415
+
else try {
416
+
val = searchImportedValue(id);
417
+
} catch (e) {
418
+
this.exception(e.message);
419
+
}
420
+
}
421
+
}
422
+
if (v.length) v += '.';
423
+
v += val;
424
+
}
425
+
return v;
426
+
}
427
+
parseValue() {
428
+
let c = this.peekChar();
429
+
if (c == '{')
430
+
return this.parseValueOID();
431
+
if (c >= '0' && c <= '9')
432
+
return +this.parseNumber();
433
+
if (c == '-')
434
+
return -this.parseNumber();
435
+
let p = this.pos;
436
+
try {
437
+
switch (this.parseToken()) {
438
+
case 'TRUE':
439
+
return true;
440
+
case 'FALSE':
441
+
return false;
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.');
455
+
}
456
+
/*DefStream.prototype.parseValue = function (type) {
457
+
console.log('[debug] parseValue type:', type);
458
+
if (type.type == 'defined') {
459
+
if (!(type.name in types))
460
+
this.exception("Missing type: " + type.name);
461
+
type = types[type.name];
462
+
}
463
+
switch (type.name) {
464
+
case 'BOOLEAN':
465
+
return this.parseValueBoolean();
466
+
case 'OBJECT IDENTIFIER':
467
+
return this.parseValueOID();
468
+
default:
469
+
console.log('[debug] parseValue unknown:', type);
470
+
return 'TODO:value';
471
+
}
472
+
}*/
473
+
parseElementType() {
474
+
let x = Object.assign({ id: this.parseIdentifier() }, this.parseType());
475
+
// console.log('[debug] parseElementType 1:', x);
476
+
if (this.tryToken('OPTIONAL'))
477
+
x.optional = true;
478
+
if (this.tryToken('DEFAULT'))
479
+
x.default = this.parseValue(x.type);
480
+
// console.log('[debug] parseElementType 2:', x);
481
+
return x;
482
+
}
483
+
parseElementTypeList() {
484
+
let v = [];
485
+
this.expectToken('{');
486
+
do {
487
+
v.push(this.parseElementType());
488
+
} while (this.tryToken(','));
489
+
this.expectToken('}');
490
+
return v;
491
+
}
492
+
parseAssignment() {
493
+
let name = this.parseIdentifier();
494
+
if (this.tryToken('::=')) { // type assignment
495
+
// console.log('type name', name);
496
+
let type = this.parseType();
497
+
currentMod.types[name] = { name, type };
498
+
return currentMod.types[name];
499
+
} else { // value assignment
500
+
// console.log('value name', name);
501
+
let type = this.parseType();
502
+
// console.log('[debug] parseAssignment type:', type);
503
+
this.expectToken('::=');
504
+
let value = this.parseValue(type);
505
+
currentMod.values[name] = { name, type, value };
506
+
return currentMod.values[name];
507
+
}
508
+
}
509
+
parseModuleIdentifier() {
510
+
return {
511
+
name: this.parseIdentifier(),
512
+
oid: this.parseValueOID(),
513
+
};
514
+
}
515
+
parseSymbolsImported() {
516
+
let imports = {};
517
+
do {
518
+
let l = [];
519
+
do {
520
+
l.push(this.parseIdentifier());
521
+
} while (this.tryToken(','));
522
+
this.expectToken('FROM');
523
+
let mod = this.parseModuleIdentifier();
524
+
mod.types = l;
525
+
imports[mod.oid] = mod;
526
+
} while (this.peekChar() != ';');
527
+
return imports;
528
+
}
529
+
parseModuleDefinition(file) {
530
+
let mod = this.parseModuleIdentifier();
531
+
currentMod = mod; // for deeply nested parsers
532
+
mod.source = file;
533
+
this.expectToken('DEFINITIONS');
534
+
mod.tagDefault = this.getRegEx('tag default', reTagDefault).split(' ')[0];
535
+
this.expectToken('::=');
536
+
this.expectToken('BEGIN');
537
+
//TODO this.tryToken('EXPORTS')
538
+
if (this.tryToken('IMPORTS')) {
539
+
mod.imports = this.parseSymbolsImported();
540
+
this.expectToken(';');
541
+
}
542
+
mod.values = {};
543
+
mod.types = {};
544
+
while (!this.tryToken('END'))
545
+
this.parseAssignment();
546
+
return mod;
547
+
}
548
+
}
549
+
550
+
let s = fs.readFileSync(process.argv[2], 'utf8');
551
+
let num = /^Request for Comments: ([0-9]+)/m.exec(s)[1];
552
+
console.log('RFC:', num);
553
+
for (let p of patches[0])
554
+
s = s.replace(p[0], p[1]);
555
+
if (num in patches)
556
+
for (let p of patches[num])
557
+
s = s.replace(p[0], p[1]);
558
+
fs.writeFileSync(process.argv[2].replace(/[.]txt$/, '_patched.txt'), s, 'utf8');
559
+
// console.log(s);
560
+
asn1 = JSON.parse(fs.readFileSync(process.argv[3], 'utf8'));
561
+
const reModuleDefinition = /\s[A-Z](?:[-]?[a-zA-Z0-9])*\s*\{[^}]+\}\s*(^--.*|\n)*DEFINITIONS/gm;
562
+
let m;
563
+
while ((m = reModuleDefinition.exec(s))) {
564
+
new Parser(s, m.index).parseModuleDefinition(process.argv[2]);
565
+
console.log('Module:', currentMod.name);
566
+
// fs.writeFileSync('rfc' + num + '.json', JSON.stringify(currentMod, null, 2) + '\n', 'utf8');
567
+
asn1[currentMod.oid] = currentMod;
568
+
}
569
+
/*asn1 = Object.keys(asn1).sort().reduce(
570
+
(obj, key) => {
571
+
obj[key] = asn1[key];
572
+
return obj;
573
+
},
574
+
{}
575
+
);*/
576
+
fs.writeFileSync(process.argv[3], JSON.stringify(asn1, null, 2) + '\n', 'utf8');
577
+
// console.log('Module:', mod);
578
+
/*while ((idx = s.indexOf('::=', idx + 1)) >= 0) {
579
+
let line = s.lastIndexOf('\n', idx) + 1;
580
+
// console.log('[line] ' + s.slice(line, line+30));
581
+
try {
582
+
let a = new DefStream(s, line).parseAssignment();
583
+
// console.log('[assignment]', util.inspect(a, {showHidden: false, depth: null, colors: true}));
584
+
} catch (e) {
585
+
console.log('Error:', e);
586
+
}
587
+
}*/
588
+
console.log('Done.');
+1115
pnpm-lock.yaml
+1115
pnpm-lock.yaml
···
1
+
lockfileVersion: 5.4
2
+
3
+
overrides:
4
+
rollup: npm:@rollup/wasm-node
5
+
6
+
specifiers:
7
+
'@eslint/eslintrc': ^3.3.1
8
+
'@eslint/js': ^9.38.0
9
+
'@rollup/wasm-node': ^4.52.5
10
+
diff: ^8.0.2
11
+
eslint: ^9.38.0
12
+
globals: ^16.4.0
13
+
htmlparser2: ^9.1.0
14
+
vite: ^7.1.12
15
+
vite-plugin-dom: ^1.0.5
16
+
vite-plugin-singlefile: ^2.3.0
17
+
18
+
devDependencies:
19
+
'@eslint/eslintrc': 3.3.1
20
+
'@eslint/js': 9.38.0
21
+
'@rollup/wasm-node': 4.52.5
22
+
diff: 8.0.2
23
+
eslint: 9.38.0
24
+
globals: 16.4.0
25
+
htmlparser2: 9.1.0
26
+
vite: 7.1.12
27
+
vite-plugin-dom: 1.0.5_vite@7.1.12
28
+
vite-plugin-singlefile: 2.3.0_vite@7.1.12
29
+
30
+
packages:
31
+
32
+
/@esbuild/aix-ppc64/0.25.11:
33
+
resolution: {integrity: sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==}
34
+
engines: {node: '>=18'}
35
+
cpu: [ppc64]
36
+
os: [aix]
37
+
requiresBuild: true
38
+
dev: true
39
+
optional: true
40
+
41
+
/@esbuild/android-arm/0.25.11:
42
+
resolution: {integrity: sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==}
43
+
engines: {node: '>=18'}
44
+
cpu: [arm]
45
+
os: [android]
46
+
requiresBuild: true
47
+
dev: true
48
+
optional: true
49
+
50
+
/@esbuild/android-arm64/0.25.11:
51
+
resolution: {integrity: sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==}
52
+
engines: {node: '>=18'}
53
+
cpu: [arm64]
54
+
os: [android]
55
+
requiresBuild: true
56
+
dev: true
57
+
optional: true
58
+
59
+
/@esbuild/android-x64/0.25.11:
60
+
resolution: {integrity: sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==}
61
+
engines: {node: '>=18'}
62
+
cpu: [x64]
63
+
os: [android]
64
+
requiresBuild: true
65
+
dev: true
66
+
optional: true
67
+
68
+
/@esbuild/darwin-arm64/0.25.11:
69
+
resolution: {integrity: sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==}
70
+
engines: {node: '>=18'}
71
+
cpu: [arm64]
72
+
os: [darwin]
73
+
requiresBuild: true
74
+
dev: true
75
+
optional: true
76
+
77
+
/@esbuild/darwin-x64/0.25.11:
78
+
resolution: {integrity: sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==}
79
+
engines: {node: '>=18'}
80
+
cpu: [x64]
81
+
os: [darwin]
82
+
requiresBuild: true
83
+
dev: true
84
+
optional: true
85
+
86
+
/@esbuild/freebsd-arm64/0.25.11:
87
+
resolution: {integrity: sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==}
88
+
engines: {node: '>=18'}
89
+
cpu: [arm64]
90
+
os: [freebsd]
91
+
requiresBuild: true
92
+
dev: true
93
+
optional: true
94
+
95
+
/@esbuild/freebsd-x64/0.25.11:
96
+
resolution: {integrity: sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==}
97
+
engines: {node: '>=18'}
98
+
cpu: [x64]
99
+
os: [freebsd]
100
+
requiresBuild: true
101
+
dev: true
102
+
optional: true
103
+
104
+
/@esbuild/linux-arm/0.25.11:
105
+
resolution: {integrity: sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==}
106
+
engines: {node: '>=18'}
107
+
cpu: [arm]
108
+
os: [linux]
109
+
requiresBuild: true
110
+
dev: true
111
+
optional: true
112
+
113
+
/@esbuild/linux-arm64/0.25.11:
114
+
resolution: {integrity: sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==}
115
+
engines: {node: '>=18'}
116
+
cpu: [arm64]
117
+
os: [linux]
118
+
requiresBuild: true
119
+
dev: true
120
+
optional: true
121
+
122
+
/@esbuild/linux-ia32/0.25.11:
123
+
resolution: {integrity: sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==}
124
+
engines: {node: '>=18'}
125
+
cpu: [ia32]
126
+
os: [linux]
127
+
requiresBuild: true
128
+
dev: true
129
+
optional: true
130
+
131
+
/@esbuild/linux-loong64/0.25.11:
132
+
resolution: {integrity: sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==}
133
+
engines: {node: '>=18'}
134
+
cpu: [loong64]
135
+
os: [linux]
136
+
requiresBuild: true
137
+
dev: true
138
+
optional: true
139
+
140
+
/@esbuild/linux-mips64el/0.25.11:
141
+
resolution: {integrity: sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==}
142
+
engines: {node: '>=18'}
143
+
cpu: [mips64el]
144
+
os: [linux]
145
+
requiresBuild: true
146
+
dev: true
147
+
optional: true
148
+
149
+
/@esbuild/linux-ppc64/0.25.11:
150
+
resolution: {integrity: sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==}
151
+
engines: {node: '>=18'}
152
+
cpu: [ppc64]
153
+
os: [linux]
154
+
requiresBuild: true
155
+
dev: true
156
+
optional: true
157
+
158
+
/@esbuild/linux-riscv64/0.25.11:
159
+
resolution: {integrity: sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==}
160
+
engines: {node: '>=18'}
161
+
cpu: [riscv64]
162
+
os: [linux]
163
+
requiresBuild: true
164
+
dev: true
165
+
optional: true
166
+
167
+
/@esbuild/linux-s390x/0.25.11:
168
+
resolution: {integrity: sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==}
169
+
engines: {node: '>=18'}
170
+
cpu: [s390x]
171
+
os: [linux]
172
+
requiresBuild: true
173
+
dev: true
174
+
optional: true
175
+
176
+
/@esbuild/linux-x64/0.25.11:
177
+
resolution: {integrity: sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==}
178
+
engines: {node: '>=18'}
179
+
cpu: [x64]
180
+
os: [linux]
181
+
requiresBuild: true
182
+
dev: true
183
+
optional: true
184
+
185
+
/@esbuild/netbsd-arm64/0.25.11:
186
+
resolution: {integrity: sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==}
187
+
engines: {node: '>=18'}
188
+
cpu: [arm64]
189
+
os: [netbsd]
190
+
requiresBuild: true
191
+
dev: true
192
+
optional: true
193
+
194
+
/@esbuild/netbsd-x64/0.25.11:
195
+
resolution: {integrity: sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==}
196
+
engines: {node: '>=18'}
197
+
cpu: [x64]
198
+
os: [netbsd]
199
+
requiresBuild: true
200
+
dev: true
201
+
optional: true
202
+
203
+
/@esbuild/openbsd-arm64/0.25.11:
204
+
resolution: {integrity: sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==}
205
+
engines: {node: '>=18'}
206
+
cpu: [arm64]
207
+
os: [openbsd]
208
+
requiresBuild: true
209
+
dev: true
210
+
optional: true
211
+
212
+
/@esbuild/openbsd-x64/0.25.11:
213
+
resolution: {integrity: sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==}
214
+
engines: {node: '>=18'}
215
+
cpu: [x64]
216
+
os: [openbsd]
217
+
requiresBuild: true
218
+
dev: true
219
+
optional: true
220
+
221
+
/@esbuild/openharmony-arm64/0.25.11:
222
+
resolution: {integrity: sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==}
223
+
engines: {node: '>=18'}
224
+
cpu: [arm64]
225
+
os: [openharmony]
226
+
requiresBuild: true
227
+
dev: true
228
+
optional: true
229
+
230
+
/@esbuild/sunos-x64/0.25.11:
231
+
resolution: {integrity: sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==}
232
+
engines: {node: '>=18'}
233
+
cpu: [x64]
234
+
os: [sunos]
235
+
requiresBuild: true
236
+
dev: true
237
+
optional: true
238
+
239
+
/@esbuild/win32-arm64/0.25.11:
240
+
resolution: {integrity: sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==}
241
+
engines: {node: '>=18'}
242
+
cpu: [arm64]
243
+
os: [win32]
244
+
requiresBuild: true
245
+
dev: true
246
+
optional: true
247
+
248
+
/@esbuild/win32-ia32/0.25.11:
249
+
resolution: {integrity: sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==}
250
+
engines: {node: '>=18'}
251
+
cpu: [ia32]
252
+
os: [win32]
253
+
requiresBuild: true
254
+
dev: true
255
+
optional: true
256
+
257
+
/@esbuild/win32-x64/0.25.11:
258
+
resolution: {integrity: sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==}
259
+
engines: {node: '>=18'}
260
+
cpu: [x64]
261
+
os: [win32]
262
+
requiresBuild: true
263
+
dev: true
264
+
optional: true
265
+
266
+
/@eslint-community/eslint-utils/4.9.0_eslint@9.38.0:
267
+
resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==}
268
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
269
+
peerDependencies:
270
+
eslint: ^6.0.0 || ^7.0.0 || >=8.0.0
271
+
dependencies:
272
+
eslint: 9.38.0
273
+
eslint-visitor-keys: 3.4.3
274
+
dev: true
275
+
276
+
/@eslint-community/regexpp/4.12.2:
277
+
resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==}
278
+
engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0}
279
+
dev: true
280
+
281
+
/@eslint/config-array/0.21.1:
282
+
resolution: {integrity: sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==}
283
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
284
+
dependencies:
285
+
'@eslint/object-schema': 2.1.7
286
+
debug: 4.4.3
287
+
minimatch: 3.1.2
288
+
transitivePeerDependencies:
289
+
- supports-color
290
+
dev: true
291
+
292
+
/@eslint/config-helpers/0.4.2:
293
+
resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==}
294
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
295
+
dependencies:
296
+
'@eslint/core': 0.17.0
297
+
dev: true
298
+
299
+
/@eslint/core/0.16.0:
300
+
resolution: {integrity: sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==}
301
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
302
+
dependencies:
303
+
'@types/json-schema': 7.0.15
304
+
dev: true
305
+
306
+
/@eslint/core/0.17.0:
307
+
resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==}
308
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
309
+
dependencies:
310
+
'@types/json-schema': 7.0.15
311
+
dev: true
312
+
313
+
/@eslint/eslintrc/3.3.1:
314
+
resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==}
315
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
316
+
dependencies:
317
+
ajv: 6.12.6
318
+
debug: 4.4.3
319
+
espree: 10.4.0
320
+
globals: 14.0.0
321
+
ignore: 5.3.2
322
+
import-fresh: 3.3.1
323
+
js-yaml: 4.1.0
324
+
minimatch: 3.1.2
325
+
strip-json-comments: 3.1.1
326
+
transitivePeerDependencies:
327
+
- supports-color
328
+
dev: true
329
+
330
+
/@eslint/js/9.38.0:
331
+
resolution: {integrity: sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==}
332
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
333
+
dev: true
334
+
335
+
/@eslint/object-schema/2.1.7:
336
+
resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==}
337
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
338
+
dev: true
339
+
340
+
/@eslint/plugin-kit/0.4.1:
341
+
resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==}
342
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
343
+
dependencies:
344
+
'@eslint/core': 0.17.0
345
+
levn: 0.4.1
346
+
dev: true
347
+
348
+
/@humanfs/core/0.19.1:
349
+
resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==}
350
+
engines: {node: '>=18.18.0'}
351
+
dev: true
352
+
353
+
/@humanfs/node/0.16.7:
354
+
resolution: {integrity: sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==}
355
+
engines: {node: '>=18.18.0'}
356
+
dependencies:
357
+
'@humanfs/core': 0.19.1
358
+
'@humanwhocodes/retry': 0.4.3
359
+
dev: true
360
+
361
+
/@humanwhocodes/module-importer/1.0.1:
362
+
resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==}
363
+
engines: {node: '>=12.22'}
364
+
dev: true
365
+
366
+
/@humanwhocodes/retry/0.4.3:
367
+
resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==}
368
+
engines: {node: '>=18.18'}
369
+
dev: true
370
+
371
+
/@rollup/wasm-node/4.52.5:
372
+
resolution: {integrity: sha512-ldY4tEzSMBHNwB8TfRpi7RRRjjyfKlwjdebw5pS1lu0xaY3g4RDc6ople2wEYulVOKVeH7ZJwRx0iw4pGtjMHg==}
373
+
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
374
+
hasBin: true
375
+
dependencies:
376
+
'@types/estree': 1.0.8
377
+
optionalDependencies:
378
+
fsevents: 2.3.3
379
+
dev: true
380
+
381
+
/@types/estree/1.0.8:
382
+
resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==}
383
+
dev: true
384
+
385
+
/@types/json-schema/7.0.15:
386
+
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
387
+
dev: true
388
+
389
+
/acorn-jsx/5.3.2_acorn@8.15.0:
390
+
resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==}
391
+
peerDependencies:
392
+
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
393
+
dependencies:
394
+
acorn: 8.15.0
395
+
dev: true
396
+
397
+
/acorn/8.15.0:
398
+
resolution: {integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==}
399
+
engines: {node: '>=0.4.0'}
400
+
hasBin: true
401
+
dev: true
402
+
403
+
/ajv/6.12.6:
404
+
resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==}
405
+
dependencies:
406
+
fast-deep-equal: 3.1.3
407
+
fast-json-stable-stringify: 2.1.0
408
+
json-schema-traverse: 0.4.1
409
+
uri-js: 4.4.1
410
+
dev: true
411
+
412
+
/ansi-styles/4.3.0:
413
+
resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==}
414
+
engines: {node: '>=8'}
415
+
dependencies:
416
+
color-convert: 2.0.1
417
+
dev: true
418
+
419
+
/argparse/2.0.1:
420
+
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
421
+
dev: true
422
+
423
+
/balanced-match/1.0.2:
424
+
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
425
+
dev: true
426
+
427
+
/brace-expansion/1.1.12:
428
+
resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==}
429
+
dependencies:
430
+
balanced-match: 1.0.2
431
+
concat-map: 0.0.1
432
+
dev: true
433
+
434
+
/braces/3.0.3:
435
+
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
436
+
engines: {node: '>=8'}
437
+
dependencies:
438
+
fill-range: 7.1.1
439
+
dev: true
440
+
441
+
/callsites/3.1.0:
442
+
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
443
+
engines: {node: '>=6'}
444
+
dev: true
445
+
446
+
/chalk/4.1.2:
447
+
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
448
+
engines: {node: '>=10'}
449
+
dependencies:
450
+
ansi-styles: 4.3.0
451
+
supports-color: 7.2.0
452
+
dev: true
453
+
454
+
/color-convert/2.0.1:
455
+
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
456
+
engines: {node: '>=7.0.0'}
457
+
dependencies:
458
+
color-name: 1.1.4
459
+
dev: true
460
+
461
+
/color-name/1.1.4:
462
+
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
463
+
dev: true
464
+
465
+
/concat-map/0.0.1:
466
+
resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
467
+
dev: true
468
+
469
+
/cross-spawn/7.0.6:
470
+
resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==}
471
+
engines: {node: '>= 8'}
472
+
dependencies:
473
+
path-key: 3.1.1
474
+
shebang-command: 2.0.0
475
+
which: 2.0.2
476
+
dev: true
477
+
478
+
/debug/4.4.3:
479
+
resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==}
480
+
engines: {node: '>=6.0'}
481
+
peerDependencies:
482
+
supports-color: '*'
483
+
peerDependenciesMeta:
484
+
supports-color:
485
+
optional: true
486
+
dependencies:
487
+
ms: 2.1.3
488
+
dev: true
489
+
490
+
/deep-is/0.1.4:
491
+
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
492
+
dev: true
493
+
494
+
/diff/8.0.2:
495
+
resolution: {integrity: sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==}
496
+
engines: {node: '>=0.3.1'}
497
+
dev: true
498
+
499
+
/dom-serializer/2.0.0:
500
+
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
501
+
dependencies:
502
+
domelementtype: 2.3.0
503
+
domhandler: 5.0.3
504
+
entities: 4.5.0
505
+
dev: true
506
+
507
+
/domelementtype/2.3.0:
508
+
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
509
+
dev: true
510
+
511
+
/domhandler/5.0.3:
512
+
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
513
+
engines: {node: '>= 4'}
514
+
dependencies:
515
+
domelementtype: 2.3.0
516
+
dev: true
517
+
518
+
/domutils/3.2.2:
519
+
resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==}
520
+
dependencies:
521
+
dom-serializer: 2.0.0
522
+
domelementtype: 2.3.0
523
+
domhandler: 5.0.3
524
+
dev: true
525
+
526
+
/entities/4.5.0:
527
+
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
528
+
engines: {node: '>=0.12'}
529
+
dev: true
530
+
531
+
/entities/6.0.1:
532
+
resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==}
533
+
engines: {node: '>=0.12'}
534
+
dev: true
535
+
536
+
/esbuild/0.25.11:
537
+
resolution: {integrity: sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==}
538
+
engines: {node: '>=18'}
539
+
hasBin: true
540
+
requiresBuild: true
541
+
optionalDependencies:
542
+
'@esbuild/aix-ppc64': 0.25.11
543
+
'@esbuild/android-arm': 0.25.11
544
+
'@esbuild/android-arm64': 0.25.11
545
+
'@esbuild/android-x64': 0.25.11
546
+
'@esbuild/darwin-arm64': 0.25.11
547
+
'@esbuild/darwin-x64': 0.25.11
548
+
'@esbuild/freebsd-arm64': 0.25.11
549
+
'@esbuild/freebsd-x64': 0.25.11
550
+
'@esbuild/linux-arm': 0.25.11
551
+
'@esbuild/linux-arm64': 0.25.11
552
+
'@esbuild/linux-ia32': 0.25.11
553
+
'@esbuild/linux-loong64': 0.25.11
554
+
'@esbuild/linux-mips64el': 0.25.11
555
+
'@esbuild/linux-ppc64': 0.25.11
556
+
'@esbuild/linux-riscv64': 0.25.11
557
+
'@esbuild/linux-s390x': 0.25.11
558
+
'@esbuild/linux-x64': 0.25.11
559
+
'@esbuild/netbsd-arm64': 0.25.11
560
+
'@esbuild/netbsd-x64': 0.25.11
561
+
'@esbuild/openbsd-arm64': 0.25.11
562
+
'@esbuild/openbsd-x64': 0.25.11
563
+
'@esbuild/openharmony-arm64': 0.25.11
564
+
'@esbuild/sunos-x64': 0.25.11
565
+
'@esbuild/win32-arm64': 0.25.11
566
+
'@esbuild/win32-ia32': 0.25.11
567
+
'@esbuild/win32-x64': 0.25.11
568
+
dev: true
569
+
570
+
/escape-string-regexp/4.0.0:
571
+
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
572
+
engines: {node: '>=10'}
573
+
dev: true
574
+
575
+
/eslint-scope/8.4.0:
576
+
resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==}
577
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
578
+
dependencies:
579
+
esrecurse: 4.3.0
580
+
estraverse: 5.3.0
581
+
dev: true
582
+
583
+
/eslint-visitor-keys/3.4.3:
584
+
resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==}
585
+
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
586
+
dev: true
587
+
588
+
/eslint-visitor-keys/4.2.1:
589
+
resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==}
590
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
591
+
dev: true
592
+
593
+
/eslint/9.38.0:
594
+
resolution: {integrity: sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==}
595
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
596
+
hasBin: true
597
+
peerDependencies:
598
+
jiti: '*'
599
+
peerDependenciesMeta:
600
+
jiti:
601
+
optional: true
602
+
dependencies:
603
+
'@eslint-community/eslint-utils': 4.9.0_eslint@9.38.0
604
+
'@eslint-community/regexpp': 4.12.2
605
+
'@eslint/config-array': 0.21.1
606
+
'@eslint/config-helpers': 0.4.2
607
+
'@eslint/core': 0.16.0
608
+
'@eslint/eslintrc': 3.3.1
609
+
'@eslint/js': 9.38.0
610
+
'@eslint/plugin-kit': 0.4.1
611
+
'@humanfs/node': 0.16.7
612
+
'@humanwhocodes/module-importer': 1.0.1
613
+
'@humanwhocodes/retry': 0.4.3
614
+
'@types/estree': 1.0.8
615
+
ajv: 6.12.6
616
+
chalk: 4.1.2
617
+
cross-spawn: 7.0.6
618
+
debug: 4.4.3
619
+
escape-string-regexp: 4.0.0
620
+
eslint-scope: 8.4.0
621
+
eslint-visitor-keys: 4.2.1
622
+
espree: 10.4.0
623
+
esquery: 1.6.0
624
+
esutils: 2.0.3
625
+
fast-deep-equal: 3.1.3
626
+
file-entry-cache: 8.0.0
627
+
find-up: 5.0.0
628
+
glob-parent: 6.0.2
629
+
ignore: 5.3.2
630
+
imurmurhash: 0.1.4
631
+
is-glob: 4.0.3
632
+
json-stable-stringify-without-jsonify: 1.0.1
633
+
lodash.merge: 4.6.2
634
+
minimatch: 3.1.2
635
+
natural-compare: 1.4.0
636
+
optionator: 0.9.4
637
+
transitivePeerDependencies:
638
+
- supports-color
639
+
dev: true
640
+
641
+
/espree/10.4.0:
642
+
resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==}
643
+
engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0}
644
+
dependencies:
645
+
acorn: 8.15.0
646
+
acorn-jsx: 5.3.2_acorn@8.15.0
647
+
eslint-visitor-keys: 4.2.1
648
+
dev: true
649
+
650
+
/esquery/1.6.0:
651
+
resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==}
652
+
engines: {node: '>=0.10'}
653
+
dependencies:
654
+
estraverse: 5.3.0
655
+
dev: true
656
+
657
+
/esrecurse/4.3.0:
658
+
resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==}
659
+
engines: {node: '>=4.0'}
660
+
dependencies:
661
+
estraverse: 5.3.0
662
+
dev: true
663
+
664
+
/estraverse/5.3.0:
665
+
resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==}
666
+
engines: {node: '>=4.0'}
667
+
dev: true
668
+
669
+
/esutils/2.0.3:
670
+
resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==}
671
+
engines: {node: '>=0.10.0'}
672
+
dev: true
673
+
674
+
/fast-deep-equal/3.1.3:
675
+
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
676
+
dev: true
677
+
678
+
/fast-json-stable-stringify/2.1.0:
679
+
resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==}
680
+
dev: true
681
+
682
+
/fast-levenshtein/2.0.6:
683
+
resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==}
684
+
dev: true
685
+
686
+
/fdir/6.5.0_picomatch@4.0.3:
687
+
resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==}
688
+
engines: {node: '>=12.0.0'}
689
+
peerDependencies:
690
+
picomatch: ^3 || ^4
691
+
peerDependenciesMeta:
692
+
picomatch:
693
+
optional: true
694
+
dependencies:
695
+
picomatch: 4.0.3
696
+
dev: true
697
+
698
+
/file-entry-cache/8.0.0:
699
+
resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==}
700
+
engines: {node: '>=16.0.0'}
701
+
dependencies:
702
+
flat-cache: 4.0.1
703
+
dev: true
704
+
705
+
/fill-range/7.1.1:
706
+
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
707
+
engines: {node: '>=8'}
708
+
dependencies:
709
+
to-regex-range: 5.0.1
710
+
dev: true
711
+
712
+
/find-up/5.0.0:
713
+
resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
714
+
engines: {node: '>=10'}
715
+
dependencies:
716
+
locate-path: 6.0.0
717
+
path-exists: 4.0.0
718
+
dev: true
719
+
720
+
/flat-cache/4.0.1:
721
+
resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==}
722
+
engines: {node: '>=16'}
723
+
dependencies:
724
+
flatted: 3.3.3
725
+
keyv: 4.5.4
726
+
dev: true
727
+
728
+
/flatted/3.3.3:
729
+
resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==}
730
+
dev: true
731
+
732
+
/fsevents/2.3.3:
733
+
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
734
+
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
735
+
os: [darwin]
736
+
requiresBuild: true
737
+
dev: true
738
+
optional: true
739
+
740
+
/glob-parent/6.0.2:
741
+
resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==}
742
+
engines: {node: '>=10.13.0'}
743
+
dependencies:
744
+
is-glob: 4.0.3
745
+
dev: true
746
+
747
+
/globals/14.0.0:
748
+
resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==}
749
+
engines: {node: '>=18'}
750
+
dev: true
751
+
752
+
/globals/16.4.0:
753
+
resolution: {integrity: sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==}
754
+
engines: {node: '>=18'}
755
+
dev: true
756
+
757
+
/has-flag/4.0.0:
758
+
resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==}
759
+
engines: {node: '>=8'}
760
+
dev: true
761
+
762
+
/htmlparser2/10.0.0:
763
+
resolution: {integrity: sha512-TwAZM+zE5Tq3lrEHvOlvwgj1XLWQCtaaibSN11Q+gGBAS7Y1uZSWwXXRe4iF6OXnaq1riyQAPFOBtYc77Mxq0g==}
764
+
dependencies:
765
+
domelementtype: 2.3.0
766
+
domhandler: 5.0.3
767
+
domutils: 3.2.2
768
+
entities: 6.0.1
769
+
dev: true
770
+
771
+
/htmlparser2/9.1.0:
772
+
resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==}
773
+
dependencies:
774
+
domelementtype: 2.3.0
775
+
domhandler: 5.0.3
776
+
domutils: 3.2.2
777
+
entities: 4.5.0
778
+
dev: true
779
+
780
+
/ignore/5.3.2:
781
+
resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==}
782
+
engines: {node: '>= 4'}
783
+
dev: true
784
+
785
+
/import-fresh/3.3.1:
786
+
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
787
+
engines: {node: '>=6'}
788
+
dependencies:
789
+
parent-module: 1.0.1
790
+
resolve-from: 4.0.0
791
+
dev: true
792
+
793
+
/imurmurhash/0.1.4:
794
+
resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==}
795
+
engines: {node: '>=0.8.19'}
796
+
dev: true
797
+
798
+
/is-extglob/2.1.1:
799
+
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
800
+
engines: {node: '>=0.10.0'}
801
+
dev: true
802
+
803
+
/is-glob/4.0.3:
804
+
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
805
+
engines: {node: '>=0.10.0'}
806
+
dependencies:
807
+
is-extglob: 2.1.1
808
+
dev: true
809
+
810
+
/is-number/7.0.0:
811
+
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
812
+
engines: {node: '>=0.12.0'}
813
+
dev: true
814
+
815
+
/isexe/2.0.0:
816
+
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
817
+
dev: true
818
+
819
+
/js-yaml/4.1.0:
820
+
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
821
+
hasBin: true
822
+
dependencies:
823
+
argparse: 2.0.1
824
+
dev: true
825
+
826
+
/json-buffer/3.0.1:
827
+
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
828
+
dev: true
829
+
830
+
/json-schema-traverse/0.4.1:
831
+
resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==}
832
+
dev: true
833
+
834
+
/json-stable-stringify-without-jsonify/1.0.1:
835
+
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
836
+
dev: true
837
+
838
+
/keyv/4.5.4:
839
+
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
840
+
dependencies:
841
+
json-buffer: 3.0.1
842
+
dev: true
843
+
844
+
/levn/0.4.1:
845
+
resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==}
846
+
engines: {node: '>= 0.8.0'}
847
+
dependencies:
848
+
prelude-ls: 1.2.1
849
+
type-check: 0.4.0
850
+
dev: true
851
+
852
+
/locate-path/6.0.0:
853
+
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
854
+
engines: {node: '>=10'}
855
+
dependencies:
856
+
p-locate: 5.0.0
857
+
dev: true
858
+
859
+
/lodash.merge/4.6.2:
860
+
resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
861
+
dev: true
862
+
863
+
/micromatch/4.0.8:
864
+
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
865
+
engines: {node: '>=8.6'}
866
+
dependencies:
867
+
braces: 3.0.3
868
+
picomatch: 2.3.1
869
+
dev: true
870
+
871
+
/minimatch/3.1.2:
872
+
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
873
+
dependencies:
874
+
brace-expansion: 1.1.12
875
+
dev: true
876
+
877
+
/ms/2.1.3:
878
+
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
879
+
dev: true
880
+
881
+
/nanoid/3.3.11:
882
+
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
883
+
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
884
+
hasBin: true
885
+
dev: true
886
+
887
+
/natural-compare/1.4.0:
888
+
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
889
+
dev: true
890
+
891
+
/optionator/0.9.4:
892
+
resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==}
893
+
engines: {node: '>= 0.8.0'}
894
+
dependencies:
895
+
deep-is: 0.1.4
896
+
fast-levenshtein: 2.0.6
897
+
levn: 0.4.1
898
+
prelude-ls: 1.2.1
899
+
type-check: 0.4.0
900
+
word-wrap: 1.2.5
901
+
dev: true
902
+
903
+
/p-limit/3.1.0:
904
+
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
905
+
engines: {node: '>=10'}
906
+
dependencies:
907
+
yocto-queue: 0.1.0
908
+
dev: true
909
+
910
+
/p-locate/5.0.0:
911
+
resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
912
+
engines: {node: '>=10'}
913
+
dependencies:
914
+
p-limit: 3.1.0
915
+
dev: true
916
+
917
+
/parent-module/1.0.1:
918
+
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
919
+
engines: {node: '>=6'}
920
+
dependencies:
921
+
callsites: 3.1.0
922
+
dev: true
923
+
924
+
/path-exists/4.0.0:
925
+
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
926
+
engines: {node: '>=8'}
927
+
dev: true
928
+
929
+
/path-key/3.1.1:
930
+
resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
931
+
engines: {node: '>=8'}
932
+
dev: true
933
+
934
+
/picocolors/1.1.1:
935
+
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
936
+
dev: true
937
+
938
+
/picomatch/2.3.1:
939
+
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
940
+
engines: {node: '>=8.6'}
941
+
dev: true
942
+
943
+
/picomatch/4.0.3:
944
+
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
945
+
engines: {node: '>=12'}
946
+
dev: true
947
+
948
+
/postcss/8.5.6:
949
+
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
950
+
engines: {node: ^10 || ^12 || >=14}
951
+
dependencies:
952
+
nanoid: 3.3.11
953
+
picocolors: 1.1.1
954
+
source-map-js: 1.2.1
955
+
dev: true
956
+
957
+
/prelude-ls/1.2.1:
958
+
resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==}
959
+
engines: {node: '>= 0.8.0'}
960
+
dev: true
961
+
962
+
/punycode/2.3.1:
963
+
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
964
+
engines: {node: '>=6'}
965
+
dev: true
966
+
967
+
/resolve-from/4.0.0:
968
+
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
969
+
engines: {node: '>=4'}
970
+
dev: true
971
+
972
+
/shebang-command/2.0.0:
973
+
resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
974
+
engines: {node: '>=8'}
975
+
dependencies:
976
+
shebang-regex: 3.0.0
977
+
dev: true
978
+
979
+
/shebang-regex/3.0.0:
980
+
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
981
+
engines: {node: '>=8'}
982
+
dev: true
983
+
984
+
/source-map-js/1.2.1:
985
+
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
986
+
engines: {node: '>=0.10.0'}
987
+
dev: true
988
+
989
+
/strip-json-comments/3.1.1:
990
+
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
991
+
engines: {node: '>=8'}
992
+
dev: true
993
+
994
+
/supports-color/7.2.0:
995
+
resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==}
996
+
engines: {node: '>=8'}
997
+
dependencies:
998
+
has-flag: 4.0.0
999
+
dev: true
1000
+
1001
+
/tinyglobby/0.2.15:
1002
+
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
1003
+
engines: {node: '>=12.0.0'}
1004
+
dependencies:
1005
+
fdir: 6.5.0_picomatch@4.0.3
1006
+
picomatch: 4.0.3
1007
+
dev: true
1008
+
1009
+
/to-regex-range/5.0.1:
1010
+
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
1011
+
engines: {node: '>=8.0'}
1012
+
dependencies:
1013
+
is-number: 7.0.0
1014
+
dev: true
1015
+
1016
+
/type-check/0.4.0:
1017
+
resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==}
1018
+
engines: {node: '>= 0.8.0'}
1019
+
dependencies:
1020
+
prelude-ls: 1.2.1
1021
+
dev: true
1022
+
1023
+
/uri-js/4.4.1:
1024
+
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
1025
+
dependencies:
1026
+
punycode: 2.3.1
1027
+
dev: true
1028
+
1029
+
/vite-plugin-dom/1.0.5_vite@7.1.12:
1030
+
resolution: {integrity: sha512-G3MbuH30FpBD800I26xlB6lUiDm7sCxvQkHPt9OAJyUEbyiO9UWrKADxVUhWbO65WqL/TGtH1OEez+w++TlfMw==}
1031
+
peerDependencies:
1032
+
vite: '>=4.0.0'
1033
+
dependencies:
1034
+
htmlparser2: 10.0.0
1035
+
vite: 7.1.12
1036
+
dev: true
1037
+
1038
+
/vite-plugin-singlefile/2.3.0_vite@7.1.12:
1039
+
resolution: {integrity: sha512-DAcHzYypM0CasNLSz/WG0VdKOCxGHErfrjOoyIPiNxTPTGmO6rRD/te93n1YL/s+miXq66ipF1brMBikf99c6A==}
1040
+
engines: {node: '>18.0.0'}
1041
+
peerDependencies:
1042
+
rollup: ^4.44.1
1043
+
vite: ^5.4.11 || ^6.0.0 || ^7.0.0
1044
+
dependencies:
1045
+
micromatch: 4.0.8
1046
+
vite: 7.1.12
1047
+
dev: true
1048
+
1049
+
/vite/7.1.12:
1050
+
resolution: {integrity: sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==}
1051
+
engines: {node: ^20.19.0 || >=22.12.0}
1052
+
hasBin: true
1053
+
peerDependencies:
1054
+
'@types/node': ^20.19.0 || >=22.12.0
1055
+
jiti: '>=1.21.0'
1056
+
less: ^4.0.0
1057
+
lightningcss: ^1.21.0
1058
+
sass: ^1.70.0
1059
+
sass-embedded: ^1.70.0
1060
+
stylus: '>=0.54.8'
1061
+
sugarss: ^5.0.0
1062
+
terser: ^5.16.0
1063
+
tsx: ^4.8.1
1064
+
yaml: ^2.4.2
1065
+
peerDependenciesMeta:
1066
+
'@types/node':
1067
+
optional: true
1068
+
jiti:
1069
+
optional: true
1070
+
less:
1071
+
optional: true
1072
+
lightningcss:
1073
+
optional: true
1074
+
sass:
1075
+
optional: true
1076
+
sass-embedded:
1077
+
optional: true
1078
+
stylus:
1079
+
optional: true
1080
+
sugarss:
1081
+
optional: true
1082
+
terser:
1083
+
optional: true
1084
+
tsx:
1085
+
optional: true
1086
+
yaml:
1087
+
optional: true
1088
+
dependencies:
1089
+
esbuild: 0.25.11
1090
+
fdir: 6.5.0_picomatch@4.0.3
1091
+
picomatch: 4.0.3
1092
+
postcss: 8.5.6
1093
+
rollup: /@rollup/wasm-node/4.52.5
1094
+
tinyglobby: 0.2.15
1095
+
optionalDependencies:
1096
+
fsevents: 2.3.3
1097
+
dev: true
1098
+
1099
+
/which/2.0.2:
1100
+
resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
1101
+
engines: {node: '>= 8'}
1102
+
hasBin: true
1103
+
dependencies:
1104
+
isexe: 2.0.0
1105
+
dev: true
1106
+
1107
+
/word-wrap/1.2.5:
1108
+
resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==}
1109
+
engines: {node: '>=0.10.0'}
1110
+
dev: true
1111
+
1112
+
/yocto-queue/0.1.0:
1113
+
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
1114
+
engines: {node: '>=10'}
1115
+
dev: true
+29
-6
release.sh
+29
-6
release.sh
···
1
1
#!/bin/sh
2
2
set -e
3
3
FILES="
4
-
asn1.js oids.js base64.js hex.js int10.js dom.js test.js
5
-
index.css index.js index.html
6
-
README.md LICENSE
7
-
update.sh check.sh
4
+
asn1.js oids.js defs.js base64.js hex.js dom.js context.js theme.js
5
+
rfcdef.js test.js tags.js
6
+
index.html index.css index.js index-local.html
7
+
favicon.svg tree-icon-light.svg tree-icon-dark.svg
8
+
README.md LICENSE CHANGELOG.md
9
+
updateOID.sh check.sh
10
+
examples
8
11
"
9
-
sha256sum </dev/null >/dev/null 2>&1 && SHA256=sha256sum || SHA256=gsha256sum
10
-
$SHA256 -t $FILES | gpg --clearsign > sha256sums.asc
12
+
mtn automate tags 'it.lapo.asn1js{,.*}' | \
13
+
awk '/^revision/ { print substr($2, 2, length($2) - 2)}' | \
14
+
while read rev; do
15
+
mtn automate certs $rev | awk -v q='"' '
16
+
$2 == q "date" q { rdate=NR+1 }
17
+
$2 == q "tag" q { rtag=NR+1 }
18
+
NR == rdate { date=substr($2, 2, 10) }
19
+
NR == rtag { tag=substr($2, 2, length($2)-2) }
20
+
END { print date " " tag }
21
+
'
22
+
done | sort -r | awk -v q='"' '
23
+
BEGIN {
24
+
print "export const tags = {"
25
+
}
26
+
{ print " " q $2 q ": " q $1 q "," }
27
+
END { print "};" }
28
+
' > tags.js
29
+
chmod 644 examples/*
30
+
type gsha256sum >/dev/null 2>/dev/null && SHA256=gsha256sum || SHA256=sha256sum
31
+
pnpm build
32
+
cp dist/index.html index-local.html
33
+
$SHA256 -t $FILES examples/* | gpg --clearsign > sha256sums.asc
11
34
7z a -tzip -mx=9 asn1js.zip $FILES sha256sums.asc
12
35
rsync -Pvrtz asn1js.zip $FILES lapo.it:www/asn1js/
+11877
rfcdef.js
+11877
rfcdef.js
···
1
+
// content parsed from ASN.1 definitions as found in the following RFCs: 5280 5208 3369 3161 2986 4211 4210 8017 4511
2
+
// Copyright (C) The IETF Trust (2008)
3
+
// as far as I can tell this file is allowed under the following clause:
4
+
// It is acceptable under the current IETF rules (RFC 5378) to modify extracted code if necessary.
5
+
// https://trustee.ietf.org/about/faq/#reproducing-rfcs
6
+
export const rfcdef = {
7
+
"1.3.6.1.5.5.7.0.18": {
8
+
"name": "PKIX1Explicit88",
9
+
"oid": "1.3.6.1.5.5.7.0.18",
10
+
"source": "rfc5280.txt",
11
+
"tagDefault": "EXPLICIT",
12
+
"values": {
13
+
"id-pkix": {
14
+
"name": "id-pkix",
15
+
"type": {
16
+
"name": "OBJECT IDENTIFIER",
17
+
"type": "builtin"
18
+
},
19
+
"value": "1.3.6.1.5.5.7"
20
+
},
21
+
"id-pe": {
22
+
"name": "id-pe",
23
+
"type": {
24
+
"name": "OBJECT IDENTIFIER",
25
+
"type": "builtin"
26
+
},
27
+
"value": "1.3.6.1.5.5.7.1"
28
+
},
29
+
"id-qt": {
30
+
"name": "id-qt",
31
+
"type": {
32
+
"name": "OBJECT IDENTIFIER",
33
+
"type": "builtin"
34
+
},
35
+
"value": "1.3.6.1.5.5.7.2"
36
+
},
37
+
"id-kp": {
38
+
"name": "id-kp",
39
+
"type": {
40
+
"name": "OBJECT IDENTIFIER",
41
+
"type": "builtin"
42
+
},
43
+
"value": "1.3.6.1.5.5.7.3"
44
+
},
45
+
"id-ad": {
46
+
"name": "id-ad",
47
+
"type": {
48
+
"name": "OBJECT IDENTIFIER",
49
+
"type": "builtin"
50
+
},
51
+
"value": "1.3.6.1.5.5.7.48"
52
+
},
53
+
"id-qt-cps": {
54
+
"name": "id-qt-cps",
55
+
"type": {
56
+
"name": "OBJECT IDENTIFIER",
57
+
"type": "builtin"
58
+
},
59
+
"value": "1.3.6.1.5.5.7.2.1"
60
+
},
61
+
"id-qt-unotice": {
62
+
"name": "id-qt-unotice",
63
+
"type": {
64
+
"name": "OBJECT IDENTIFIER",
65
+
"type": "builtin"
66
+
},
67
+
"value": "1.3.6.1.5.5.7.2.2"
68
+
},
69
+
"id-ad-ocsp": {
70
+
"name": "id-ad-ocsp",
71
+
"type": {
72
+
"name": "OBJECT IDENTIFIER",
73
+
"type": "builtin"
74
+
},
75
+
"value": "1.3.6.1.5.5.7.48.1"
76
+
},
77
+
"id-ad-caIssuers": {
78
+
"name": "id-ad-caIssuers",
79
+
"type": {
80
+
"name": "OBJECT IDENTIFIER",
81
+
"type": "builtin"
82
+
},
83
+
"value": "1.3.6.1.5.5.7.48.2"
84
+
},
85
+
"id-ad-timeStamping": {
86
+
"name": "id-ad-timeStamping",
87
+
"type": {
88
+
"name": "OBJECT IDENTIFIER",
89
+
"type": "builtin"
90
+
},
91
+
"value": "1.3.6.1.5.5.7.48.3"
92
+
},
93
+
"id-ad-caRepository": {
94
+
"name": "id-ad-caRepository",
95
+
"type": {
96
+
"name": "OBJECT IDENTIFIER",
97
+
"type": "builtin"
98
+
},
99
+
"value": "1.3.6.1.5.5.7.48.5"
100
+
},
101
+
"id-at": {
102
+
"name": "id-at",
103
+
"type": {
104
+
"name": "OBJECT IDENTIFIER",
105
+
"type": "builtin"
106
+
},
107
+
"value": "2.5.4"
108
+
},
109
+
"id-at-name": {
110
+
"name": "id-at-name",
111
+
"type": {
112
+
"name": "AttributeType",
113
+
"type": "defined"
114
+
},
115
+
"value": "2.5.4.41"
116
+
},
117
+
"id-at-surname": {
118
+
"name": "id-at-surname",
119
+
"type": {
120
+
"name": "AttributeType",
121
+
"type": "defined"
122
+
},
123
+
"value": "2.5.4.4"
124
+
},
125
+
"id-at-givenName": {
126
+
"name": "id-at-givenName",
127
+
"type": {
128
+
"name": "AttributeType",
129
+
"type": "defined"
130
+
},
131
+
"value": "2.5.4.42"
132
+
},
133
+
"id-at-initials": {
134
+
"name": "id-at-initials",
135
+
"type": {
136
+
"name": "AttributeType",
137
+
"type": "defined"
138
+
},
139
+
"value": "2.5.4.43"
140
+
},
141
+
"id-at-generationQualifier": {
142
+
"name": "id-at-generationQualifier",
143
+
"type": {
144
+
"name": "AttributeType",
145
+
"type": "defined"
146
+
},
147
+
"value": "2.5.4.44"
148
+
},
149
+
"id-at-commonName": {
150
+
"name": "id-at-commonName",
151
+
"type": {
152
+
"name": "AttributeType",
153
+
"type": "defined"
154
+
},
155
+
"value": "2.5.4.3"
156
+
},
157
+
"id-at-localityName": {
158
+
"name": "id-at-localityName",
159
+
"type": {
160
+
"name": "AttributeType",
161
+
"type": "defined"
162
+
},
163
+
"value": "2.5.4.7"
164
+
},
165
+
"id-at-stateOrProvinceName": {
166
+
"name": "id-at-stateOrProvinceName",
167
+
"type": {
168
+
"name": "AttributeType",
169
+
"type": "defined"
170
+
},
171
+
"value": "2.5.4.8"
172
+
},
173
+
"id-at-organizationName": {
174
+
"name": "id-at-organizationName",
175
+
"type": {
176
+
"name": "AttributeType",
177
+
"type": "defined"
178
+
},
179
+
"value": "2.5.4.10"
180
+
},
181
+
"id-at-organizationalUnitName": {
182
+
"name": "id-at-organizationalUnitName",
183
+
"type": {
184
+
"name": "AttributeType",
185
+
"type": "defined"
186
+
},
187
+
"value": "2.5.4.11"
188
+
},
189
+
"id-at-title": {
190
+
"name": "id-at-title",
191
+
"type": {
192
+
"name": "AttributeType",
193
+
"type": "defined"
194
+
},
195
+
"value": "2.5.4.12"
196
+
},
197
+
"id-at-dnQualifier": {
198
+
"name": "id-at-dnQualifier",
199
+
"type": {
200
+
"name": "AttributeType",
201
+
"type": "defined"
202
+
},
203
+
"value": "2.5.4.46"
204
+
},
205
+
"id-at-countryName": {
206
+
"name": "id-at-countryName",
207
+
"type": {
208
+
"name": "AttributeType",
209
+
"type": "defined"
210
+
},
211
+
"value": "2.5.4.6"
212
+
},
213
+
"id-at-serialNumber": {
214
+
"name": "id-at-serialNumber",
215
+
"type": {
216
+
"name": "AttributeType",
217
+
"type": "defined"
218
+
},
219
+
"value": "2.5.4.5"
220
+
},
221
+
"id-at-pseudonym": {
222
+
"name": "id-at-pseudonym",
223
+
"type": {
224
+
"name": "AttributeType",
225
+
"type": "defined"
226
+
},
227
+
"value": "2.5.4.65"
228
+
},
229
+
"id-domainComponent": {
230
+
"name": "id-domainComponent",
231
+
"type": {
232
+
"name": "AttributeType",
233
+
"type": "defined"
234
+
},
235
+
"value": "0.9.2342.19200300.100.1.25"
236
+
},
237
+
"pkcs-9": {
238
+
"name": "pkcs-9",
239
+
"type": {
240
+
"name": "OBJECT IDENTIFIER",
241
+
"type": "builtin"
242
+
},
243
+
"value": "1.2.840.113549.1.9"
244
+
},
245
+
"id-emailAddress": {
246
+
"name": "id-emailAddress",
247
+
"type": {
248
+
"name": "AttributeType",
249
+
"type": "defined"
250
+
},
251
+
"value": "1.2.840.113549.1.9.1"
252
+
},
253
+
"common-name": {
254
+
"name": "common-name",
255
+
"type": {
256
+
"name": "INTEGER",
257
+
"type": "builtin"
258
+
},
259
+
"value": 1
260
+
},
261
+
"teletex-common-name": {
262
+
"name": "teletex-common-name",
263
+
"type": {
264
+
"name": "INTEGER",
265
+
"type": "builtin"
266
+
},
267
+
"value": 2
268
+
},
269
+
"teletex-organization-name": {
270
+
"name": "teletex-organization-name",
271
+
"type": {
272
+
"name": "INTEGER",
273
+
"type": "builtin"
274
+
},
275
+
"value": 3
276
+
},
277
+
"teletex-personal-name": {
278
+
"name": "teletex-personal-name",
279
+
"type": {
280
+
"name": "INTEGER",
281
+
"type": "builtin"
282
+
},
283
+
"value": 4
284
+
},
285
+
"teletex-organizational-unit-names": {
286
+
"name": "teletex-organizational-unit-names",
287
+
"type": {
288
+
"name": "INTEGER",
289
+
"type": "builtin"
290
+
},
291
+
"value": 5
292
+
},
293
+
"pds-name": {
294
+
"name": "pds-name",
295
+
"type": {
296
+
"name": "INTEGER",
297
+
"type": "builtin"
298
+
},
299
+
"value": 7
300
+
},
301
+
"physical-delivery-country-name": {
302
+
"name": "physical-delivery-country-name",
303
+
"type": {
304
+
"name": "INTEGER",
305
+
"type": "builtin"
306
+
},
307
+
"value": 8
308
+
},
309
+
"postal-code": {
310
+
"name": "postal-code",
311
+
"type": {
312
+
"name": "INTEGER",
313
+
"type": "builtin"
314
+
},
315
+
"value": 9
316
+
},
317
+
"physical-delivery-office-name": {
318
+
"name": "physical-delivery-office-name",
319
+
"type": {
320
+
"name": "INTEGER",
321
+
"type": "builtin"
322
+
},
323
+
"value": 10
324
+
},
325
+
"physical-delivery-office-number": {
326
+
"name": "physical-delivery-office-number",
327
+
"type": {
328
+
"name": "INTEGER",
329
+
"type": "builtin"
330
+
},
331
+
"value": 11
332
+
},
333
+
"extension-OR-address-components": {
334
+
"name": "extension-OR-address-components",
335
+
"type": {
336
+
"name": "INTEGER",
337
+
"type": "builtin"
338
+
},
339
+
"value": 12
340
+
},
341
+
"physical-delivery-personal-name": {
342
+
"name": "physical-delivery-personal-name",
343
+
"type": {
344
+
"name": "INTEGER",
345
+
"type": "builtin"
346
+
},
347
+
"value": 13
348
+
},
349
+
"physical-delivery-organization-name": {
350
+
"name": "physical-delivery-organization-name",
351
+
"type": {
352
+
"name": "INTEGER",
353
+
"type": "builtin"
354
+
},
355
+
"value": 14
356
+
},
357
+
"extension-physical-delivery-address-components": {
358
+
"name": "extension-physical-delivery-address-components",
359
+
"type": {
360
+
"name": "INTEGER",
361
+
"type": "builtin"
362
+
},
363
+
"value": 15
364
+
},
365
+
"unformatted-postal-address": {
366
+
"name": "unformatted-postal-address",
367
+
"type": {
368
+
"name": "INTEGER",
369
+
"type": "builtin"
370
+
},
371
+
"value": 16
372
+
},
373
+
"street-address": {
374
+
"name": "street-address",
375
+
"type": {
376
+
"name": "INTEGER",
377
+
"type": "builtin"
378
+
},
379
+
"value": 17
380
+
},
381
+
"post-office-box-address": {
382
+
"name": "post-office-box-address",
383
+
"type": {
384
+
"name": "INTEGER",
385
+
"type": "builtin"
386
+
},
387
+
"value": 18
388
+
},
389
+
"poste-restante-address": {
390
+
"name": "poste-restante-address",
391
+
"type": {
392
+
"name": "INTEGER",
393
+
"type": "builtin"
394
+
},
395
+
"value": 19
396
+
},
397
+
"unique-postal-name": {
398
+
"name": "unique-postal-name",
399
+
"type": {
400
+
"name": "INTEGER",
401
+
"type": "builtin"
402
+
},
403
+
"value": 20
404
+
},
405
+
"local-postal-attributes": {
406
+
"name": "local-postal-attributes",
407
+
"type": {
408
+
"name": "INTEGER",
409
+
"type": "builtin"
410
+
},
411
+
"value": 21
412
+
},
413
+
"extended-network-address": {
414
+
"name": "extended-network-address",
415
+
"type": {
416
+
"name": "INTEGER",
417
+
"type": "builtin"
418
+
},
419
+
"value": 22
420
+
},
421
+
"terminal-type": {
422
+
"name": "terminal-type",
423
+
"type": {
424
+
"name": "INTEGER",
425
+
"type": "builtin"
426
+
},
427
+
"value": 23
428
+
},
429
+
"teletex-domain-defined-attributes": {
430
+
"name": "teletex-domain-defined-attributes",
431
+
"type": {
432
+
"name": "INTEGER",
433
+
"type": "builtin"
434
+
},
435
+
"value": 6
436
+
},
437
+
"ub-name": {
438
+
"name": "ub-name",
439
+
"type": {
440
+
"name": "INTEGER",
441
+
"type": "builtin"
442
+
},
443
+
"value": 32768
444
+
},
445
+
"ub-common-name": {
446
+
"name": "ub-common-name",
447
+
"type": {
448
+
"name": "INTEGER",
449
+
"type": "builtin"
450
+
},
451
+
"value": 64
452
+
},
453
+
"ub-locality-name": {
454
+
"name": "ub-locality-name",
455
+
"type": {
456
+
"name": "INTEGER",
457
+
"type": "builtin"
458
+
},
459
+
"value": 128
460
+
},
461
+
"ub-state-name": {
462
+
"name": "ub-state-name",
463
+
"type": {
464
+
"name": "INTEGER",
465
+
"type": "builtin"
466
+
},
467
+
"value": 128
468
+
},
469
+
"ub-organization-name": {
470
+
"name": "ub-organization-name",
471
+
"type": {
472
+
"name": "INTEGER",
473
+
"type": "builtin"
474
+
},
475
+
"value": 64
476
+
},
477
+
"ub-organizational-unit-name": {
478
+
"name": "ub-organizational-unit-name",
479
+
"type": {
480
+
"name": "INTEGER",
481
+
"type": "builtin"
482
+
},
483
+
"value": 64
484
+
},
485
+
"ub-title": {
486
+
"name": "ub-title",
487
+
"type": {
488
+
"name": "INTEGER",
489
+
"type": "builtin"
490
+
},
491
+
"value": 64
492
+
},
493
+
"ub-serial-number": {
494
+
"name": "ub-serial-number",
495
+
"type": {
496
+
"name": "INTEGER",
497
+
"type": "builtin"
498
+
},
499
+
"value": 64
500
+
},
501
+
"ub-match": {
502
+
"name": "ub-match",
503
+
"type": {
504
+
"name": "INTEGER",
505
+
"type": "builtin"
506
+
},
507
+
"value": 128
508
+
},
509
+
"ub-emailaddress-length": {
510
+
"name": "ub-emailaddress-length",
511
+
"type": {
512
+
"name": "INTEGER",
513
+
"type": "builtin"
514
+
},
515
+
"value": 255
516
+
},
517
+
"ub-common-name-length": {
518
+
"name": "ub-common-name-length",
519
+
"type": {
520
+
"name": "INTEGER",
521
+
"type": "builtin"
522
+
},
523
+
"value": 64
524
+
},
525
+
"ub-country-name-alpha-length": {
526
+
"name": "ub-country-name-alpha-length",
527
+
"type": {
528
+
"name": "INTEGER",
529
+
"type": "builtin"
530
+
},
531
+
"value": 2
532
+
},
533
+
"ub-country-name-numeric-length": {
534
+
"name": "ub-country-name-numeric-length",
535
+
"type": {
536
+
"name": "INTEGER",
537
+
"type": "builtin"
538
+
},
539
+
"value": 3
540
+
},
541
+
"ub-domain-defined-attributes": {
542
+
"name": "ub-domain-defined-attributes",
543
+
"type": {
544
+
"name": "INTEGER",
545
+
"type": "builtin"
546
+
},
547
+
"value": 4
548
+
},
549
+
"ub-domain-defined-attribute-type-length": {
550
+
"name": "ub-domain-defined-attribute-type-length",
551
+
"type": {
552
+
"name": "INTEGER",
553
+
"type": "builtin"
554
+
},
555
+
"value": 8
556
+
},
557
+
"ub-domain-defined-attribute-value-length": {
558
+
"name": "ub-domain-defined-attribute-value-length",
559
+
"type": {
560
+
"name": "INTEGER",
561
+
"type": "builtin"
562
+
},
563
+
"value": 128
564
+
},
565
+
"ub-domain-name-length": {
566
+
"name": "ub-domain-name-length",
567
+
"type": {
568
+
"name": "INTEGER",
569
+
"type": "builtin"
570
+
},
571
+
"value": 16
572
+
},
573
+
"ub-extension-attributes": {
574
+
"name": "ub-extension-attributes",
575
+
"type": {
576
+
"name": "INTEGER",
577
+
"type": "builtin"
578
+
},
579
+
"value": 256
580
+
},
581
+
"ub-e163-4-number-length": {
582
+
"name": "ub-e163-4-number-length",
583
+
"type": {
584
+
"name": "INTEGER",
585
+
"type": "builtin"
586
+
},
587
+
"value": 15
588
+
},
589
+
"ub-e163-4-sub-address-length": {
590
+
"name": "ub-e163-4-sub-address-length",
591
+
"type": {
592
+
"name": "INTEGER",
593
+
"type": "builtin"
594
+
},
595
+
"value": 40
596
+
},
597
+
"ub-generation-qualifier-length": {
598
+
"name": "ub-generation-qualifier-length",
599
+
"type": {
600
+
"name": "INTEGER",
601
+
"type": "builtin"
602
+
},
603
+
"value": 3
604
+
},
605
+
"ub-given-name-length": {
606
+
"name": "ub-given-name-length",
607
+
"type": {
608
+
"name": "INTEGER",
609
+
"type": "builtin"
610
+
},
611
+
"value": 16
612
+
},
613
+
"ub-initials-length": {
614
+
"name": "ub-initials-length",
615
+
"type": {
616
+
"name": "INTEGER",
617
+
"type": "builtin"
618
+
},
619
+
"value": 5
620
+
},
621
+
"ub-integer-options": {
622
+
"name": "ub-integer-options",
623
+
"type": {
624
+
"name": "INTEGER",
625
+
"type": "builtin"
626
+
},
627
+
"value": 256
628
+
},
629
+
"ub-numeric-user-id-length": {
630
+
"name": "ub-numeric-user-id-length",
631
+
"type": {
632
+
"name": "INTEGER",
633
+
"type": "builtin"
634
+
},
635
+
"value": 32
636
+
},
637
+
"ub-organization-name-length": {
638
+
"name": "ub-organization-name-length",
639
+
"type": {
640
+
"name": "INTEGER",
641
+
"type": "builtin"
642
+
},
643
+
"value": 64
644
+
},
645
+
"ub-organizational-unit-name-length": {
646
+
"name": "ub-organizational-unit-name-length",
647
+
"type": {
648
+
"name": "INTEGER",
649
+
"type": "builtin"
650
+
},
651
+
"value": 32
652
+
},
653
+
"ub-organizational-units": {
654
+
"name": "ub-organizational-units",
655
+
"type": {
656
+
"name": "INTEGER",
657
+
"type": "builtin"
658
+
},
659
+
"value": 4
660
+
},
661
+
"ub-pds-name-length": {
662
+
"name": "ub-pds-name-length",
663
+
"type": {
664
+
"name": "INTEGER",
665
+
"type": "builtin"
666
+
},
667
+
"value": 16
668
+
},
669
+
"ub-pds-parameter-length": {
670
+
"name": "ub-pds-parameter-length",
671
+
"type": {
672
+
"name": "INTEGER",
673
+
"type": "builtin"
674
+
},
675
+
"value": 30
676
+
},
677
+
"ub-pds-physical-address-lines": {
678
+
"name": "ub-pds-physical-address-lines",
679
+
"type": {
680
+
"name": "INTEGER",
681
+
"type": "builtin"
682
+
},
683
+
"value": 6
684
+
},
685
+
"ub-postal-code-length": {
686
+
"name": "ub-postal-code-length",
687
+
"type": {
688
+
"name": "INTEGER",
689
+
"type": "builtin"
690
+
},
691
+
"value": 16
692
+
},
693
+
"ub-pseudonym": {
694
+
"name": "ub-pseudonym",
695
+
"type": {
696
+
"name": "INTEGER",
697
+
"type": "builtin"
698
+
},
699
+
"value": 128
700
+
},
701
+
"ub-surname-length": {
702
+
"name": "ub-surname-length",
703
+
"type": {
704
+
"name": "INTEGER",
705
+
"type": "builtin"
706
+
},
707
+
"value": 40
708
+
},
709
+
"ub-terminal-id-length": {
710
+
"name": "ub-terminal-id-length",
711
+
"type": {
712
+
"name": "INTEGER",
713
+
"type": "builtin"
714
+
},
715
+
"value": 24
716
+
},
717
+
"ub-unformatted-address-length": {
718
+
"name": "ub-unformatted-address-length",
719
+
"type": {
720
+
"name": "INTEGER",
721
+
"type": "builtin"
722
+
},
723
+
"value": 180
724
+
},
725
+
"ub-x121-address-length": {
726
+
"name": "ub-x121-address-length",
727
+
"type": {
728
+
"name": "INTEGER",
729
+
"type": "builtin"
730
+
},
731
+
"value": 16
732
+
}
733
+
},
734
+
"types": {
735
+
"UniversalString": {
736
+
"name": "UniversalString",
737
+
"type": {
738
+
"name": "[28]",
739
+
"type": "tag",
740
+
"class": "UNIVERSAL",
741
+
"explicit": false,
742
+
"content": [
743
+
{
744
+
"name": "",
745
+
"type": {
746
+
"name": "OCTET STRING",
747
+
"type": "builtin"
748
+
}
749
+
}
750
+
]
751
+
}
752
+
},
753
+
"BMPString": {
754
+
"name": "BMPString",
755
+
"type": {
756
+
"name": "[30]",
757
+
"type": "tag",
758
+
"class": "UNIVERSAL",
759
+
"explicit": false,
760
+
"content": [
761
+
{
762
+
"name": "",
763
+
"type": {
764
+
"name": "OCTET STRING",
765
+
"type": "builtin"
766
+
}
767
+
}
768
+
]
769
+
}
770
+
},
771
+
"UTF8String": {
772
+
"name": "UTF8String",
773
+
"type": {
774
+
"name": "[12]",
775
+
"type": "tag",
776
+
"class": "UNIVERSAL",
777
+
"explicit": false,
778
+
"content": [
779
+
{
780
+
"name": "",
781
+
"type": {
782
+
"name": "OCTET STRING",
783
+
"type": "builtin"
784
+
}
785
+
}
786
+
]
787
+
}
788
+
},
789
+
"Attribute": {
790
+
"name": "Attribute",
791
+
"type": {
792
+
"name": "SEQUENCE",
793
+
"type": "builtin",
794
+
"content": [
795
+
{
796
+
"id": "type",
797
+
"name": "AttributeType",
798
+
"type": "defined"
799
+
},
800
+
{
801
+
"id": "values",
802
+
"name": "SET",
803
+
"type": "builtin",
804
+
"typeOf": 1,
805
+
"content": [
806
+
{
807
+
"name": "AttributeValue",
808
+
"type": "defined"
809
+
}
810
+
]
811
+
}
812
+
]
813
+
}
814
+
},
815
+
"AttributeType": {
816
+
"name": "AttributeType",
817
+
"type": {
818
+
"name": "OBJECT IDENTIFIER",
819
+
"type": "builtin"
820
+
}
821
+
},
822
+
"AttributeValue": {
823
+
"name": "AttributeValue",
824
+
"type": {
825
+
"name": "ANY",
826
+
"type": "builtin"
827
+
}
828
+
},
829
+
"AttributeTypeAndValue": {
830
+
"name": "AttributeTypeAndValue",
831
+
"type": {
832
+
"name": "SEQUENCE",
833
+
"type": "builtin",
834
+
"content": [
835
+
{
836
+
"id": "type",
837
+
"name": "AttributeType",
838
+
"type": "defined"
839
+
},
840
+
{
841
+
"id": "value",
842
+
"name": "AttributeValue",
843
+
"type": "defined"
844
+
}
845
+
]
846
+
}
847
+
},
848
+
"X520name": {
849
+
"name": "X520name",
850
+
"type": {
851
+
"name": "CHOICE",
852
+
"type": "builtin",
853
+
"content": [
854
+
{
855
+
"id": "teletexString",
856
+
"name": "TeletexString",
857
+
"type": "builtin",
858
+
"size": [
859
+
1,
860
+
"ub-name"
861
+
]
862
+
},
863
+
{
864
+
"id": "printableString",
865
+
"name": "PrintableString",
866
+
"type": "builtin",
867
+
"size": [
868
+
1,
869
+
"ub-name"
870
+
]
871
+
},
872
+
{
873
+
"id": "universalString",
874
+
"name": "UniversalString",
875
+
"type": "builtin",
876
+
"size": [
877
+
1,
878
+
"ub-name"
879
+
]
880
+
},
881
+
{
882
+
"id": "utf8String",
883
+
"name": "UTF8String",
884
+
"type": "builtin",
885
+
"size": [
886
+
1,
887
+
"ub-name"
888
+
]
889
+
},
890
+
{
891
+
"id": "bmpString",
892
+
"name": "BMPString",
893
+
"type": "builtin",
894
+
"size": [
895
+
1,
896
+
"ub-name"
897
+
]
898
+
}
899
+
]
900
+
}
901
+
},
902
+
"X520CommonName": {
903
+
"name": "X520CommonName",
904
+
"type": {
905
+
"name": "CHOICE",
906
+
"type": "builtin",
907
+
"content": [
908
+
{
909
+
"id": "teletexString",
910
+
"name": "TeletexString",
911
+
"type": "builtin",
912
+
"size": [
913
+
1,
914
+
"ub-common-name"
915
+
]
916
+
},
917
+
{
918
+
"id": "printableString",
919
+
"name": "PrintableString",
920
+
"type": "builtin",
921
+
"size": [
922
+
1,
923
+
"ub-common-name"
924
+
]
925
+
},
926
+
{
927
+
"id": "universalString",
928
+
"name": "UniversalString",
929
+
"type": "builtin",
930
+
"size": [
931
+
1,
932
+
"ub-common-name"
933
+
]
934
+
},
935
+
{
936
+
"id": "utf8String",
937
+
"name": "UTF8String",
938
+
"type": "builtin",
939
+
"size": [
940
+
1,
941
+
"ub-common-name"
942
+
]
943
+
},
944
+
{
945
+
"id": "bmpString",
946
+
"name": "BMPString",
947
+
"type": "builtin",
948
+
"size": [
949
+
1,
950
+
"ub-common-name"
951
+
]
952
+
}
953
+
]
954
+
}
955
+
},
956
+
"X520LocalityName": {
957
+
"name": "X520LocalityName",
958
+
"type": {
959
+
"name": "CHOICE",
960
+
"type": "builtin",
961
+
"content": [
962
+
{
963
+
"id": "teletexString",
964
+
"name": "TeletexString",
965
+
"type": "builtin",
966
+
"size": [
967
+
1,
968
+
"ub-locality-name"
969
+
]
970
+
},
971
+
{
972
+
"id": "printableString",
973
+
"name": "PrintableString",
974
+
"type": "builtin",
975
+
"size": [
976
+
1,
977
+
"ub-locality-name"
978
+
]
979
+
},
980
+
{
981
+
"id": "universalString",
982
+
"name": "UniversalString",
983
+
"type": "builtin",
984
+
"size": [
985
+
1,
986
+
"ub-locality-name"
987
+
]
988
+
},
989
+
{
990
+
"id": "utf8String",
991
+
"name": "UTF8String",
992
+
"type": "builtin",
993
+
"size": [
994
+
1,
995
+
"ub-locality-name"
996
+
]
997
+
},
998
+
{
999
+
"id": "bmpString",
1000
+
"name": "BMPString",
1001
+
"type": "builtin",
1002
+
"size": [
1003
+
1,
1004
+
"ub-locality-name"
1005
+
]
1006
+
}
1007
+
]
1008
+
}
1009
+
},
1010
+
"X520StateOrProvinceName": {
1011
+
"name": "X520StateOrProvinceName",
1012
+
"type": {
1013
+
"name": "CHOICE",
1014
+
"type": "builtin",
1015
+
"content": [
1016
+
{
1017
+
"id": "teletexString",
1018
+
"name": "TeletexString",
1019
+
"type": "builtin",
1020
+
"size": [
1021
+
1,
1022
+
"ub-state-name"
1023
+
]
1024
+
},
1025
+
{
1026
+
"id": "printableString",
1027
+
"name": "PrintableString",
1028
+
"type": "builtin",
1029
+
"size": [
1030
+
1,
1031
+
"ub-state-name"
1032
+
]
1033
+
},
1034
+
{
1035
+
"id": "universalString",
1036
+
"name": "UniversalString",
1037
+
"type": "builtin",
1038
+
"size": [
1039
+
1,
1040
+
"ub-state-name"
1041
+
]
1042
+
},
1043
+
{
1044
+
"id": "utf8String",
1045
+
"name": "UTF8String",
1046
+
"type": "builtin",
1047
+
"size": [
1048
+
1,
1049
+
"ub-state-name"
1050
+
]
1051
+
},
1052
+
{
1053
+
"id": "bmpString",
1054
+
"name": "BMPString",
1055
+
"type": "builtin",
1056
+
"size": [
1057
+
1,
1058
+
"ub-state-name"
1059
+
]
1060
+
}
1061
+
]
1062
+
}
1063
+
},
1064
+
"X520OrganizationName": {
1065
+
"name": "X520OrganizationName",
1066
+
"type": {
1067
+
"name": "CHOICE",
1068
+
"type": "builtin",
1069
+
"content": [
1070
+
{
1071
+
"id": "teletexString",
1072
+
"name": "TeletexString",
1073
+
"type": "builtin",
1074
+
"size": [
1075
+
1,
1076
+
"ub-organization-name"
1077
+
]
1078
+
},
1079
+
{
1080
+
"id": "printableString",
1081
+
"name": "PrintableString",
1082
+
"type": "builtin",
1083
+
"size": [
1084
+
1,
1085
+
"ub-organization-name"
1086
+
]
1087
+
},
1088
+
{
1089
+
"id": "universalString",
1090
+
"name": "UniversalString",
1091
+
"type": "builtin",
1092
+
"size": [
1093
+
1,
1094
+
"ub-organization-name"
1095
+
]
1096
+
},
1097
+
{
1098
+
"id": "utf8String",
1099
+
"name": "UTF8String",
1100
+
"type": "builtin",
1101
+
"size": [
1102
+
1,
1103
+
"ub-organization-name"
1104
+
]
1105
+
},
1106
+
{
1107
+
"id": "bmpString",
1108
+
"name": "BMPString",
1109
+
"type": "builtin",
1110
+
"size": [
1111
+
1,
1112
+
"ub-organization-name"
1113
+
]
1114
+
}
1115
+
]
1116
+
}
1117
+
},
1118
+
"X520OrganizationalUnitName": {
1119
+
"name": "X520OrganizationalUnitName",
1120
+
"type": {
1121
+
"name": "CHOICE",
1122
+
"type": "builtin",
1123
+
"content": [
1124
+
{
1125
+
"id": "teletexString",
1126
+
"name": "TeletexString",
1127
+
"type": "builtin",
1128
+
"size": [
1129
+
1,
1130
+
"ub-organizational-unit-name"
1131
+
]
1132
+
},
1133
+
{
1134
+
"id": "printableString",
1135
+
"name": "PrintableString",
1136
+
"type": "builtin",
1137
+
"size": [
1138
+
1,
1139
+
"ub-organizational-unit-name"
1140
+
]
1141
+
},
1142
+
{
1143
+
"id": "universalString",
1144
+
"name": "UniversalString",
1145
+
"type": "builtin",
1146
+
"size": [
1147
+
1,
1148
+
"ub-organizational-unit-name"
1149
+
]
1150
+
},
1151
+
{
1152
+
"id": "utf8String",
1153
+
"name": "UTF8String",
1154
+
"type": "builtin",
1155
+
"size": [
1156
+
1,
1157
+
"ub-organizational-unit-name"
1158
+
]
1159
+
},
1160
+
{
1161
+
"id": "bmpString",
1162
+
"name": "BMPString",
1163
+
"type": "builtin",
1164
+
"size": [
1165
+
1,
1166
+
"ub-organizational-unit-name"
1167
+
]
1168
+
}
1169
+
]
1170
+
}
1171
+
},
1172
+
"X520Title": {
1173
+
"name": "X520Title",
1174
+
"type": {
1175
+
"name": "CHOICE",
1176
+
"type": "builtin",
1177
+
"content": [
1178
+
{
1179
+
"id": "teletexString",
1180
+
"name": "TeletexString",
1181
+
"type": "builtin",
1182
+
"size": [
1183
+
1,
1184
+
"ub-title"
1185
+
]
1186
+
},
1187
+
{
1188
+
"id": "printableString",
1189
+
"name": "PrintableString",
1190
+
"type": "builtin",
1191
+
"size": [
1192
+
1,
1193
+
"ub-title"
1194
+
]
1195
+
},
1196
+
{
1197
+
"id": "universalString",
1198
+
"name": "UniversalString",
1199
+
"type": "builtin",
1200
+
"size": [
1201
+
1,
1202
+
"ub-title"
1203
+
]
1204
+
},
1205
+
{
1206
+
"id": "utf8String",
1207
+
"name": "UTF8String",
1208
+
"type": "builtin",
1209
+
"size": [
1210
+
1,
1211
+
"ub-title"
1212
+
]
1213
+
},
1214
+
{
1215
+
"id": "bmpString",
1216
+
"name": "BMPString",
1217
+
"type": "builtin",
1218
+
"size": [
1219
+
1,
1220
+
"ub-title"
1221
+
]
1222
+
}
1223
+
]
1224
+
}
1225
+
},
1226
+
"X520dnQualifier": {
1227
+
"name": "X520dnQualifier",
1228
+
"type": {
1229
+
"name": "PrintableString",
1230
+
"type": "builtin"
1231
+
}
1232
+
},
1233
+
"X520countryName": {
1234
+
"name": "X520countryName",
1235
+
"type": {
1236
+
"name": "PrintableString",
1237
+
"type": "builtin",
1238
+
"size": 2
1239
+
}
1240
+
},
1241
+
"X520SerialNumber": {
1242
+
"name": "X520SerialNumber",
1243
+
"type": {
1244
+
"name": "PrintableString",
1245
+
"type": "builtin",
1246
+
"size": [
1247
+
1,
1248
+
"ub-serial-number"
1249
+
]
1250
+
}
1251
+
},
1252
+
"X520Pseudonym": {
1253
+
"name": "X520Pseudonym",
1254
+
"type": {
1255
+
"name": "CHOICE",
1256
+
"type": "builtin",
1257
+
"content": [
1258
+
{
1259
+
"id": "teletexString",
1260
+
"name": "TeletexString",
1261
+
"type": "builtin",
1262
+
"size": [
1263
+
1,
1264
+
"ub-pseudonym"
1265
+
]
1266
+
},
1267
+
{
1268
+
"id": "printableString",
1269
+
"name": "PrintableString",
1270
+
"type": "builtin",
1271
+
"size": [
1272
+
1,
1273
+
"ub-pseudonym"
1274
+
]
1275
+
},
1276
+
{
1277
+
"id": "universalString",
1278
+
"name": "UniversalString",
1279
+
"type": "builtin",
1280
+
"size": [
1281
+
1,
1282
+
"ub-pseudonym"
1283
+
]
1284
+
},
1285
+
{
1286
+
"id": "utf8String",
1287
+
"name": "UTF8String",
1288
+
"type": "builtin",
1289
+
"size": [
1290
+
1,
1291
+
"ub-pseudonym"
1292
+
]
1293
+
},
1294
+
{
1295
+
"id": "bmpString",
1296
+
"name": "BMPString",
1297
+
"type": "builtin",
1298
+
"size": [
1299
+
1,
1300
+
"ub-pseudonym"
1301
+
]
1302
+
}
1303
+
]
1304
+
}
1305
+
},
1306
+
"DomainComponent": {
1307
+
"name": "DomainComponent",
1308
+
"type": {
1309
+
"name": "IA5String",
1310
+
"type": "builtin"
1311
+
}
1312
+
},
1313
+
"EmailAddress": {
1314
+
"name": "EmailAddress",
1315
+
"type": {
1316
+
"name": "IA5String",
1317
+
"type": "builtin",
1318
+
"size": [
1319
+
1,
1320
+
"ub-emailaddress-length"
1321
+
]
1322
+
}
1323
+
},
1324
+
"Name": {
1325
+
"name": "Name",
1326
+
"type": {
1327
+
"name": "CHOICE",
1328
+
"type": "builtin",
1329
+
"content": [
1330
+
{
1331
+
"id": "rdnSequence",
1332
+
"name": "RDNSequence",
1333
+
"type": "defined"
1334
+
}
1335
+
]
1336
+
}
1337
+
},
1338
+
"RDNSequence": {
1339
+
"name": "RDNSequence",
1340
+
"type": {
1341
+
"name": "SEQUENCE",
1342
+
"type": "builtin",
1343
+
"typeOf": 1,
1344
+
"content": [
1345
+
{
1346
+
"name": "RelativeDistinguishedName",
1347
+
"type": "defined"
1348
+
}
1349
+
]
1350
+
}
1351
+
},
1352
+
"DistinguishedName": {
1353
+
"name": "DistinguishedName",
1354
+
"type": {
1355
+
"name": "RDNSequence",
1356
+
"type": "defined"
1357
+
}
1358
+
},
1359
+
"RelativeDistinguishedName": {
1360
+
"name": "RelativeDistinguishedName",
1361
+
"type": {
1362
+
"name": "SET",
1363
+
"type": "builtin",
1364
+
"typeOf": 1,
1365
+
"size": [
1366
+
1,
1367
+
"MAX"
1368
+
],
1369
+
"content": [
1370
+
{
1371
+
"name": "AttributeTypeAndValue",
1372
+
"type": "defined"
1373
+
}
1374
+
]
1375
+
}
1376
+
},
1377
+
"DirectoryString": {
1378
+
"name": "DirectoryString",
1379
+
"type": {
1380
+
"name": "CHOICE",
1381
+
"type": "builtin",
1382
+
"content": [
1383
+
{
1384
+
"id": "teletexString",
1385
+
"name": "TeletexString",
1386
+
"type": "builtin",
1387
+
"size": [
1388
+
1,
1389
+
"MAX"
1390
+
]
1391
+
},
1392
+
{
1393
+
"id": "printableString",
1394
+
"name": "PrintableString",
1395
+
"type": "builtin",
1396
+
"size": [
1397
+
1,
1398
+
"MAX"
1399
+
]
1400
+
},
1401
+
{
1402
+
"id": "universalString",
1403
+
"name": "UniversalString",
1404
+
"type": "builtin",
1405
+
"size": [
1406
+
1,
1407
+
"MAX"
1408
+
]
1409
+
},
1410
+
{
1411
+
"id": "utf8String",
1412
+
"name": "UTF8String",
1413
+
"type": "builtin",
1414
+
"size": [
1415
+
1,
1416
+
"MAX"
1417
+
]
1418
+
},
1419
+
{
1420
+
"id": "bmpString",
1421
+
"name": "BMPString",
1422
+
"type": "builtin",
1423
+
"size": [
1424
+
1,
1425
+
"MAX"
1426
+
]
1427
+
}
1428
+
]
1429
+
}
1430
+
},
1431
+
"Certificate": {
1432
+
"name": "Certificate",
1433
+
"type": {
1434
+
"name": "SEQUENCE",
1435
+
"type": "builtin",
1436
+
"content": [
1437
+
{
1438
+
"id": "tbsCertificate",
1439
+
"name": "TBSCertificate",
1440
+
"type": "defined"
1441
+
},
1442
+
{
1443
+
"id": "signatureAlgorithm",
1444
+
"name": "AlgorithmIdentifier",
1445
+
"type": "defined"
1446
+
},
1447
+
{
1448
+
"id": "signature",
1449
+
"name": "BIT STRING",
1450
+
"type": "builtin"
1451
+
}
1452
+
]
1453
+
}
1454
+
},
1455
+
"TBSCertificate": {
1456
+
"name": "TBSCertificate",
1457
+
"type": {
1458
+
"name": "SEQUENCE",
1459
+
"type": "builtin",
1460
+
"content": [
1461
+
{
1462
+
"id": "version",
1463
+
"name": "[0]",
1464
+
"type": "tag",
1465
+
"class": "CONTEXT",
1466
+
"explicit": true,
1467
+
"content": [
1468
+
{
1469
+
"name": "",
1470
+
"type": {
1471
+
"name": "Version",
1472
+
"type": "defined"
1473
+
}
1474
+
}
1475
+
],
1476
+
"default": "v1"
1477
+
},
1478
+
{
1479
+
"id": "serialNumber",
1480
+
"name": "CertificateSerialNumber",
1481
+
"type": "defined"
1482
+
},
1483
+
{
1484
+
"id": "signature",
1485
+
"name": "AlgorithmIdentifier",
1486
+
"type": "defined"
1487
+
},
1488
+
{
1489
+
"id": "issuer",
1490
+
"name": "Name",
1491
+
"type": "defined"
1492
+
},
1493
+
{
1494
+
"id": "validity",
1495
+
"name": "Validity",
1496
+
"type": "defined"
1497
+
},
1498
+
{
1499
+
"id": "subject",
1500
+
"name": "Name",
1501
+
"type": "defined"
1502
+
},
1503
+
{
1504
+
"id": "subjectPublicKeyInfo",
1505
+
"name": "SubjectPublicKeyInfo",
1506
+
"type": "defined"
1507
+
},
1508
+
{
1509
+
"id": "issuerUniqueID",
1510
+
"name": "[1]",
1511
+
"type": "tag",
1512
+
"class": "CONTEXT",
1513
+
"explicit": false,
1514
+
"content": [
1515
+
{
1516
+
"name": "",
1517
+
"type": {
1518
+
"name": "UniqueIdentifier",
1519
+
"type": "defined"
1520
+
}
1521
+
}
1522
+
],
1523
+
"optional": true
1524
+
},
1525
+
{
1526
+
"id": "subjectUniqueID",
1527
+
"name": "[2]",
1528
+
"type": "tag",
1529
+
"class": "CONTEXT",
1530
+
"explicit": false,
1531
+
"content": [
1532
+
{
1533
+
"name": "",
1534
+
"type": {
1535
+
"name": "UniqueIdentifier",
1536
+
"type": "defined"
1537
+
}
1538
+
}
1539
+
],
1540
+
"optional": true
1541
+
},
1542
+
{
1543
+
"id": "extensions",
1544
+
"name": "[3]",
1545
+
"type": "tag",
1546
+
"class": "CONTEXT",
1547
+
"explicit": true,
1548
+
"content": [
1549
+
{
1550
+
"name": "",
1551
+
"type": {
1552
+
"name": "Extensions",
1553
+
"type": "defined"
1554
+
}
1555
+
}
1556
+
],
1557
+
"optional": true
1558
+
}
1559
+
]
1560
+
}
1561
+
},
1562
+
"Version": {
1563
+
"name": "Version",
1564
+
"type": {
1565
+
"name": "INTEGER",
1566
+
"type": "builtin",
1567
+
"content": {
1568
+
"v1": 0,
1569
+
"v2": 1,
1570
+
"v3": 2
1571
+
}
1572
+
}
1573
+
},
1574
+
"CertificateSerialNumber": {
1575
+
"name": "CertificateSerialNumber",
1576
+
"type": {
1577
+
"name": "INTEGER",
1578
+
"type": "builtin"
1579
+
}
1580
+
},
1581
+
"Validity": {
1582
+
"name": "Validity",
1583
+
"type": {
1584
+
"name": "SEQUENCE",
1585
+
"type": "builtin",
1586
+
"content": [
1587
+
{
1588
+
"id": "notBefore",
1589
+
"name": "Time",
1590
+
"type": "defined"
1591
+
},
1592
+
{
1593
+
"id": "notAfter",
1594
+
"name": "Time",
1595
+
"type": "defined"
1596
+
}
1597
+
]
1598
+
}
1599
+
},
1600
+
"Time": {
1601
+
"name": "Time",
1602
+
"type": {
1603
+
"name": "CHOICE",
1604
+
"type": "builtin",
1605
+
"content": [
1606
+
{
1607
+
"id": "utcTime",
1608
+
"name": "UTCTime",
1609
+
"type": "builtin"
1610
+
},
1611
+
{
1612
+
"id": "generalTime",
1613
+
"name": "GeneralizedTime",
1614
+
"type": "builtin"
1615
+
}
1616
+
]
1617
+
}
1618
+
},
1619
+
"UniqueIdentifier": {
1620
+
"name": "UniqueIdentifier",
1621
+
"type": {
1622
+
"name": "BIT STRING",
1623
+
"type": "builtin"
1624
+
}
1625
+
},
1626
+
"SubjectPublicKeyInfo": {
1627
+
"name": "SubjectPublicKeyInfo",
1628
+
"type": {
1629
+
"name": "SEQUENCE",
1630
+
"type": "builtin",
1631
+
"content": [
1632
+
{
1633
+
"id": "algorithm",
1634
+
"name": "AlgorithmIdentifier",
1635
+
"type": "defined"
1636
+
},
1637
+
{
1638
+
"id": "subjectPublicKey",
1639
+
"name": "BIT STRING",
1640
+
"type": "builtin"
1641
+
}
1642
+
]
1643
+
}
1644
+
},
1645
+
"Extensions": {
1646
+
"name": "Extensions",
1647
+
"type": {
1648
+
"name": "SEQUENCE",
1649
+
"type": "builtin",
1650
+
"typeOf": 1,
1651
+
"size": [
1652
+
1,
1653
+
"MAX"
1654
+
],
1655
+
"content": [
1656
+
{
1657
+
"name": "Extension",
1658
+
"type": "defined"
1659
+
}
1660
+
]
1661
+
}
1662
+
},
1663
+
"Extension": {
1664
+
"name": "Extension",
1665
+
"type": {
1666
+
"name": "SEQUENCE",
1667
+
"type": "builtin",
1668
+
"content": [
1669
+
{
1670
+
"id": "extnID",
1671
+
"name": "OBJECT IDENTIFIER",
1672
+
"type": "builtin"
1673
+
},
1674
+
{
1675
+
"id": "critical",
1676
+
"name": "BOOLEAN",
1677
+
"type": "builtin",
1678
+
"default": false
1679
+
},
1680
+
{
1681
+
"id": "extnValue",
1682
+
"name": "OCTET STRING",
1683
+
"type": "builtin"
1684
+
}
1685
+
]
1686
+
}
1687
+
},
1688
+
"CertificateList": {
1689
+
"name": "CertificateList",
1690
+
"type": {
1691
+
"name": "SEQUENCE",
1692
+
"type": "builtin",
1693
+
"content": [
1694
+
{
1695
+
"id": "tbsCertList",
1696
+
"name": "TBSCertList",
1697
+
"type": "defined"
1698
+
},
1699
+
{
1700
+
"id": "signatureAlgorithm",
1701
+
"name": "AlgorithmIdentifier",
1702
+
"type": "defined"
1703
+
},
1704
+
{
1705
+
"id": "signature",
1706
+
"name": "BIT STRING",
1707
+
"type": "builtin"
1708
+
}
1709
+
]
1710
+
}
1711
+
},
1712
+
"TBSCertList": {
1713
+
"name": "TBSCertList",
1714
+
"type": {
1715
+
"name": "SEQUENCE",
1716
+
"type": "builtin",
1717
+
"content": [
1718
+
{
1719
+
"id": "version",
1720
+
"name": "Version",
1721
+
"type": "defined",
1722
+
"optional": true
1723
+
},
1724
+
{
1725
+
"id": "signature",
1726
+
"name": "AlgorithmIdentifier",
1727
+
"type": "defined"
1728
+
},
1729
+
{
1730
+
"id": "issuer",
1731
+
"name": "Name",
1732
+
"type": "defined"
1733
+
},
1734
+
{
1735
+
"id": "thisUpdate",
1736
+
"name": "Time",
1737
+
"type": "defined"
1738
+
},
1739
+
{
1740
+
"id": "nextUpdate",
1741
+
"name": "Time",
1742
+
"type": "defined",
1743
+
"optional": true
1744
+
},
1745
+
{
1746
+
"id": "revokedCertificates",
1747
+
"name": "SEQUENCE",
1748
+
"type": "builtin",
1749
+
"typeOf": 1,
1750
+
"content": [
1751
+
{
1752
+
"name": "SEQUENCE",
1753
+
"type": "builtin",
1754
+
"content": [
1755
+
{
1756
+
"id": "userCertificate",
1757
+
"name": "CertificateSerialNumber",
1758
+
"type": "defined"
1759
+
},
1760
+
{
1761
+
"id": "revocationDate",
1762
+
"name": "Time",
1763
+
"type": "defined"
1764
+
},
1765
+
{
1766
+
"id": "crlEntryExtensions",
1767
+
"name": "Extensions",
1768
+
"type": "defined",
1769
+
"optional": true
1770
+
}
1771
+
]
1772
+
}
1773
+
],
1774
+
"optional": true
1775
+
},
1776
+
{
1777
+
"id": "crlExtensions",
1778
+
"name": "[0]",
1779
+
"type": "tag",
1780
+
"class": "CONTEXT",
1781
+
"explicit": true,
1782
+
"content": [
1783
+
{
1784
+
"name": "",
1785
+
"type": {
1786
+
"name": "Extensions",
1787
+
"type": "defined"
1788
+
}
1789
+
}
1790
+
],
1791
+
"optional": true
1792
+
}
1793
+
]
1794
+
}
1795
+
},
1796
+
"AlgorithmIdentifier": {
1797
+
"name": "AlgorithmIdentifier",
1798
+
"type": {
1799
+
"name": "SEQUENCE",
1800
+
"type": "builtin",
1801
+
"content": [
1802
+
{
1803
+
"id": "algorithm",
1804
+
"name": "OBJECT IDENTIFIER",
1805
+
"type": "builtin"
1806
+
},
1807
+
{
1808
+
"id": "parameters",
1809
+
"name": "ANY",
1810
+
"type": "builtin",
1811
+
"definedBy": "algorithm",
1812
+
"optional": true
1813
+
}
1814
+
]
1815
+
}
1816
+
},
1817
+
"ORAddress": {
1818
+
"name": "ORAddress",
1819
+
"type": {
1820
+
"name": "SEQUENCE",
1821
+
"type": "builtin",
1822
+
"content": [
1823
+
{
1824
+
"id": "built-in-standard-attributes",
1825
+
"name": "BuiltInStandardAttributes",
1826
+
"type": "defined"
1827
+
},
1828
+
{
1829
+
"id": "built-in-domain-defined-attributes",
1830
+
"name": "BuiltInDomainDefinedAttributes",
1831
+
"type": "defined",
1832
+
"optional": true
1833
+
},
1834
+
{
1835
+
"id": "extension-attributes",
1836
+
"name": "ExtensionAttributes",
1837
+
"type": "defined",
1838
+
"optional": true
1839
+
}
1840
+
]
1841
+
}
1842
+
},
1843
+
"BuiltInStandardAttributes": {
1844
+
"name": "BuiltInStandardAttributes",
1845
+
"type": {
1846
+
"name": "SEQUENCE",
1847
+
"type": "builtin",
1848
+
"content": [
1849
+
{
1850
+
"id": "country-name",
1851
+
"name": "CountryName",
1852
+
"type": "defined",
1853
+
"optional": true
1854
+
},
1855
+
{
1856
+
"id": "administration-domain-name",
1857
+
"name": "AdministrationDomainName",
1858
+
"type": "defined",
1859
+
"optional": true
1860
+
},
1861
+
{
1862
+
"id": "network-address",
1863
+
"name": "[0]",
1864
+
"type": "tag",
1865
+
"class": "CONTEXT",
1866
+
"explicit": false,
1867
+
"content": [
1868
+
{
1869
+
"name": "",
1870
+
"type": {
1871
+
"name": "NetworkAddress",
1872
+
"type": "defined"
1873
+
}
1874
+
}
1875
+
],
1876
+
"optional": true
1877
+
},
1878
+
{
1879
+
"id": "terminal-identifier",
1880
+
"name": "[1]",
1881
+
"type": "tag",
1882
+
"class": "CONTEXT",
1883
+
"explicit": false,
1884
+
"content": [
1885
+
{
1886
+
"name": "",
1887
+
"type": {
1888
+
"name": "TerminalIdentifier",
1889
+
"type": "defined"
1890
+
}
1891
+
}
1892
+
],
1893
+
"optional": true
1894
+
},
1895
+
{
1896
+
"id": "private-domain-name",
1897
+
"name": "[2]",
1898
+
"type": "tag",
1899
+
"class": "CONTEXT",
1900
+
"explicit": true,
1901
+
"content": [
1902
+
{
1903
+
"name": "",
1904
+
"type": {
1905
+
"name": "PrivateDomainName",
1906
+
"type": "defined"
1907
+
}
1908
+
}
1909
+
],
1910
+
"optional": true
1911
+
},
1912
+
{
1913
+
"id": "organization-name",
1914
+
"name": "[3]",
1915
+
"type": "tag",
1916
+
"class": "CONTEXT",
1917
+
"explicit": false,
1918
+
"content": [
1919
+
{
1920
+
"name": "",
1921
+
"type": {
1922
+
"name": "OrganizationName",
1923
+
"type": "defined"
1924
+
}
1925
+
}
1926
+
],
1927
+
"optional": true
1928
+
},
1929
+
{
1930
+
"id": "numeric-user-identifier",
1931
+
"name": "[4]",
1932
+
"type": "tag",
1933
+
"class": "CONTEXT",
1934
+
"explicit": false,
1935
+
"content": [
1936
+
{
1937
+
"name": "",
1938
+
"type": {
1939
+
"name": "NumericUserIdentifier",
1940
+
"type": "defined"
1941
+
}
1942
+
}
1943
+
],
1944
+
"optional": true
1945
+
},
1946
+
{
1947
+
"id": "personal-name",
1948
+
"name": "[5]",
1949
+
"type": "tag",
1950
+
"class": "CONTEXT",
1951
+
"explicit": false,
1952
+
"content": [
1953
+
{
1954
+
"name": "",
1955
+
"type": {
1956
+
"name": "PersonalName",
1957
+
"type": "defined"
1958
+
}
1959
+
}
1960
+
],
1961
+
"optional": true
1962
+
},
1963
+
{
1964
+
"id": "organizational-unit-names",
1965
+
"name": "[6]",
1966
+
"type": "tag",
1967
+
"class": "CONTEXT",
1968
+
"explicit": false,
1969
+
"content": [
1970
+
{
1971
+
"name": "",
1972
+
"type": {
1973
+
"name": "OrganizationalUnitNames",
1974
+
"type": "defined"
1975
+
}
1976
+
}
1977
+
],
1978
+
"optional": true
1979
+
}
1980
+
]
1981
+
}
1982
+
},
1983
+
"CountryName": {
1984
+
"name": "CountryName",
1985
+
"type": {
1986
+
"name": "Application 1",
1987
+
"type": "tag",
1988
+
"class": "APPLICATION",
1989
+
"explicit": true,
1990
+
"content": [
1991
+
{
1992
+
"name": "",
1993
+
"type": {
1994
+
"name": "CHOICE",
1995
+
"type": "builtin",
1996
+
"content": [
1997
+
{
1998
+
"id": "x121-dcc-code",
1999
+
"name": "NumericString",
2000
+
"type": "builtin",
2001
+
"size": "ub-country-name-numeric-length"
2002
+
},
2003
+
{
2004
+
"id": "iso-3166-alpha2-code",
2005
+
"name": "PrintableString",
2006
+
"type": "builtin",
2007
+
"size": "ub-country-name-alpha-length"
2008
+
}
2009
+
]
2010
+
}
2011
+
}
2012
+
]
2013
+
}
2014
+
},
2015
+
"AdministrationDomainName": {
2016
+
"name": "AdministrationDomainName",
2017
+
"type": {
2018
+
"name": "Application 2",
2019
+
"type": "tag",
2020
+
"class": "APPLICATION",
2021
+
"explicit": true,
2022
+
"content": [
2023
+
{
2024
+
"name": "",
2025
+
"type": {
2026
+
"name": "CHOICE",
2027
+
"type": "builtin",
2028
+
"content": [
2029
+
{
2030
+
"id": "numeric",
2031
+
"name": "NumericString",
2032
+
"type": "builtin",
2033
+
"size": [
2034
+
0,
2035
+
"ub-domain-name-length"
2036
+
]
2037
+
},
2038
+
{
2039
+
"id": "printable",
2040
+
"name": "PrintableString",
2041
+
"type": "builtin",
2042
+
"size": [
2043
+
0,
2044
+
"ub-domain-name-length"
2045
+
]
2046
+
}
2047
+
]
2048
+
}
2049
+
}
2050
+
]
2051
+
}
2052
+
},
2053
+
"NetworkAddress": {
2054
+
"name": "NetworkAddress",
2055
+
"type": {
2056
+
"name": "X121Address",
2057
+
"type": "defined"
2058
+
}
2059
+
},
2060
+
"X121Address": {
2061
+
"name": "X121Address",
2062
+
"type": {
2063
+
"name": "NumericString",
2064
+
"type": "builtin",
2065
+
"size": [
2066
+
1,
2067
+
"ub-x121-address-length"
2068
+
]
2069
+
}
2070
+
},
2071
+
"TerminalIdentifier": {
2072
+
"name": "TerminalIdentifier",
2073
+
"type": {
2074
+
"name": "PrintableString",
2075
+
"type": "builtin",
2076
+
"size": [
2077
+
1,
2078
+
"ub-terminal-id-length"
2079
+
]
2080
+
}
2081
+
},
2082
+
"PrivateDomainName": {
2083
+
"name": "PrivateDomainName",
2084
+
"type": {
2085
+
"name": "CHOICE",
2086
+
"type": "builtin",
2087
+
"content": [
2088
+
{
2089
+
"id": "numeric",
2090
+
"name": "NumericString",
2091
+
"type": "builtin",
2092
+
"size": [
2093
+
1,
2094
+
"ub-domain-name-length"
2095
+
]
2096
+
},
2097
+
{
2098
+
"id": "printable",
2099
+
"name": "PrintableString",
2100
+
"type": "builtin",
2101
+
"size": [
2102
+
1,
2103
+
"ub-domain-name-length"
2104
+
]
2105
+
}
2106
+
]
2107
+
}
2108
+
},
2109
+
"OrganizationName": {
2110
+
"name": "OrganizationName",
2111
+
"type": {
2112
+
"name": "PrintableString",
2113
+
"type": "builtin",
2114
+
"size": [
2115
+
1,
2116
+
"ub-organization-name-length"
2117
+
]
2118
+
}
2119
+
},
2120
+
"NumericUserIdentifier": {
2121
+
"name": "NumericUserIdentifier",
2122
+
"type": {
2123
+
"name": "NumericString",
2124
+
"type": "builtin",
2125
+
"size": [
2126
+
1,
2127
+
"ub-numeric-user-id-length"
2128
+
]
2129
+
}
2130
+
},
2131
+
"PersonalName": {
2132
+
"name": "PersonalName",
2133
+
"type": {
2134
+
"name": "SET",
2135
+
"type": "builtin",
2136
+
"content": [
2137
+
{
2138
+
"id": "surname",
2139
+
"name": "[0]",
2140
+
"type": "tag",
2141
+
"class": "CONTEXT",
2142
+
"explicit": false,
2143
+
"content": [
2144
+
{
2145
+
"name": "",
2146
+
"type": {
2147
+
"name": "PrintableString",
2148
+
"type": "builtin",
2149
+
"size": [
2150
+
1,
2151
+
"ub-surname-length"
2152
+
]
2153
+
}
2154
+
}
2155
+
]
2156
+
},
2157
+
{
2158
+
"id": "given-name",
2159
+
"name": "[1]",
2160
+
"type": "tag",
2161
+
"class": "CONTEXT",
2162
+
"explicit": false,
2163
+
"content": [
2164
+
{
2165
+
"name": "",
2166
+
"type": {
2167
+
"name": "PrintableString",
2168
+
"type": "builtin",
2169
+
"size": [
2170
+
1,
2171
+
"ub-given-name-length"
2172
+
]
2173
+
}
2174
+
}
2175
+
],
2176
+
"optional": true
2177
+
},
2178
+
{
2179
+
"id": "initials",
2180
+
"name": "[2]",
2181
+
"type": "tag",
2182
+
"class": "CONTEXT",
2183
+
"explicit": false,
2184
+
"content": [
2185
+
{
2186
+
"name": "",
2187
+
"type": {
2188
+
"name": "PrintableString",
2189
+
"type": "builtin",
2190
+
"size": [
2191
+
1,
2192
+
"ub-initials-length"
2193
+
]
2194
+
}
2195
+
}
2196
+
],
2197
+
"optional": true
2198
+
},
2199
+
{
2200
+
"id": "generation-qualifier",
2201
+
"name": "[3]",
2202
+
"type": "tag",
2203
+
"class": "CONTEXT",
2204
+
"explicit": false,
2205
+
"content": [
2206
+
{
2207
+
"name": "",
2208
+
"type": {
2209
+
"name": "PrintableString",
2210
+
"type": "builtin",
2211
+
"size": [
2212
+
1,
2213
+
"ub-generation-qualifier-length"
2214
+
]
2215
+
}
2216
+
}
2217
+
],
2218
+
"optional": true
2219
+
}
2220
+
]
2221
+
}
2222
+
},
2223
+
"OrganizationalUnitNames": {
2224
+
"name": "OrganizationalUnitNames",
2225
+
"type": {
2226
+
"name": "SEQUENCE",
2227
+
"type": "builtin",
2228
+
"typeOf": 1,
2229
+
"size": [
2230
+
1,
2231
+
"ub-organizational-units"
2232
+
],
2233
+
"content": [
2234
+
{
2235
+
"name": "OrganizationalUnitName",
2236
+
"type": "defined"
2237
+
}
2238
+
]
2239
+
}
2240
+
},
2241
+
"OrganizationalUnitName": {
2242
+
"name": "OrganizationalUnitName",
2243
+
"type": {
2244
+
"name": "PrintableString",
2245
+
"type": "builtin",
2246
+
"size": [
2247
+
1,
2248
+
"ub-organizational-unit-name-length"
2249
+
]
2250
+
}
2251
+
},
2252
+
"BuiltInDomainDefinedAttributes": {
2253
+
"name": "BuiltInDomainDefinedAttributes",
2254
+
"type": {
2255
+
"name": "SEQUENCE",
2256
+
"type": "builtin",
2257
+
"typeOf": 1,
2258
+
"size": [
2259
+
1,
2260
+
"ub-domain-defined-attributes"
2261
+
],
2262
+
"content": [
2263
+
{
2264
+
"name": "BuiltInDomainDefinedAttribute",
2265
+
"type": "defined"
2266
+
}
2267
+
]
2268
+
}
2269
+
},
2270
+
"BuiltInDomainDefinedAttribute": {
2271
+
"name": "BuiltInDomainDefinedAttribute",
2272
+
"type": {
2273
+
"name": "SEQUENCE",
2274
+
"type": "builtin",
2275
+
"content": [
2276
+
{
2277
+
"id": "type",
2278
+
"name": "PrintableString",
2279
+
"type": "builtin",
2280
+
"size": [
2281
+
1,
2282
+
"ub-domain-defined-attribute-type-length"
2283
+
]
2284
+
},
2285
+
{
2286
+
"id": "value",
2287
+
"name": "PrintableString",
2288
+
"type": "builtin",
2289
+
"size": [
2290
+
1,
2291
+
"ub-domain-defined-attribute-value-length"
2292
+
]
2293
+
}
2294
+
]
2295
+
}
2296
+
},
2297
+
"ExtensionAttributes": {
2298
+
"name": "ExtensionAttributes",
2299
+
"type": {
2300
+
"name": "SET",
2301
+
"type": "builtin",
2302
+
"typeOf": 1,
2303
+
"size": [
2304
+
1,
2305
+
"ub-extension-attributes"
2306
+
],
2307
+
"content": [
2308
+
{
2309
+
"name": "ExtensionAttribute",
2310
+
"type": "defined"
2311
+
}
2312
+
]
2313
+
}
2314
+
},
2315
+
"ExtensionAttribute": {
2316
+
"name": "ExtensionAttribute",
2317
+
"type": {
2318
+
"name": "SEQUENCE",
2319
+
"type": "builtin",
2320
+
"content": [
2321
+
{
2322
+
"id": "extension-attribute-type",
2323
+
"name": "[0]",
2324
+
"type": "tag",
2325
+
"class": "CONTEXT",
2326
+
"explicit": false,
2327
+
"content": [
2328
+
{
2329
+
"name": "",
2330
+
"type": {
2331
+
"name": "INTEGER",
2332
+
"type": "builtin",
2333
+
"range": [
2334
+
0,
2335
+
"ub-extension-attributes"
2336
+
]
2337
+
}
2338
+
}
2339
+
]
2340
+
},
2341
+
{
2342
+
"id": "extension-attribute-value",
2343
+
"name": "[1]",
2344
+
"type": "tag",
2345
+
"class": "CONTEXT",
2346
+
"explicit": true,
2347
+
"content": [
2348
+
{
2349
+
"name": "",
2350
+
"type": {
2351
+
"name": "ANY",
2352
+
"type": "builtin",
2353
+
"definedBy": "extension-attribute-type"
2354
+
}
2355
+
}
2356
+
]
2357
+
}
2358
+
]
2359
+
}
2360
+
},
2361
+
"CommonName": {
2362
+
"name": "CommonName",
2363
+
"type": {
2364
+
"name": "PrintableString",
2365
+
"type": "builtin",
2366
+
"size": [
2367
+
1,
2368
+
"ub-common-name-length"
2369
+
]
2370
+
}
2371
+
},
2372
+
"TeletexCommonName": {
2373
+
"name": "TeletexCommonName",
2374
+
"type": {
2375
+
"name": "TeletexString",
2376
+
"type": "builtin",
2377
+
"size": [
2378
+
1,
2379
+
"ub-common-name-length"
2380
+
]
2381
+
}
2382
+
},
2383
+
"TeletexOrganizationName": {
2384
+
"name": "TeletexOrganizationName",
2385
+
"type": {
2386
+
"name": "TeletexString",
2387
+
"type": "builtin",
2388
+
"size": [
2389
+
1,
2390
+
"ub-organization-name-length"
2391
+
]
2392
+
}
2393
+
},
2394
+
"TeletexPersonalName": {
2395
+
"name": "TeletexPersonalName",
2396
+
"type": {
2397
+
"name": "SET",
2398
+
"type": "builtin",
2399
+
"content": [
2400
+
{
2401
+
"id": "surname",
2402
+
"name": "[0]",
2403
+
"type": "tag",
2404
+
"class": "CONTEXT",
2405
+
"explicit": false,
2406
+
"content": [
2407
+
{
2408
+
"name": "",
2409
+
"type": {
2410
+
"name": "TeletexString",
2411
+
"type": "builtin",
2412
+
"size": [
2413
+
1,
2414
+
"ub-surname-length"
2415
+
]
2416
+
}
2417
+
}
2418
+
]
2419
+
},
2420
+
{
2421
+
"id": "given-name",
2422
+
"name": "[1]",
2423
+
"type": "tag",
2424
+
"class": "CONTEXT",
2425
+
"explicit": false,
2426
+
"content": [
2427
+
{
2428
+
"name": "",
2429
+
"type": {
2430
+
"name": "TeletexString",
2431
+
"type": "builtin",
2432
+
"size": [
2433
+
1,
2434
+
"ub-given-name-length"
2435
+
]
2436
+
}
2437
+
}
2438
+
],
2439
+
"optional": true
2440
+
},
2441
+
{
2442
+
"id": "initials",
2443
+
"name": "[2]",
2444
+
"type": "tag",
2445
+
"class": "CONTEXT",
2446
+
"explicit": false,
2447
+
"content": [
2448
+
{
2449
+
"name": "",
2450
+
"type": {
2451
+
"name": "TeletexString",
2452
+
"type": "builtin",
2453
+
"size": [
2454
+
1,
2455
+
"ub-initials-length"
2456
+
]
2457
+
}
2458
+
}
2459
+
],
2460
+
"optional": true
2461
+
},
2462
+
{
2463
+
"id": "generation-qualifier",
2464
+
"name": "[3]",
2465
+
"type": "tag",
2466
+
"class": "CONTEXT",
2467
+
"explicit": false,
2468
+
"content": [
2469
+
{
2470
+
"name": "",
2471
+
"type": {
2472
+
"name": "TeletexString",
2473
+
"type": "builtin",
2474
+
"size": [
2475
+
1,
2476
+
"ub-generation-qualifier-length"
2477
+
]
2478
+
}
2479
+
}
2480
+
],
2481
+
"optional": true
2482
+
}
2483
+
]
2484
+
}
2485
+
},
2486
+
"TeletexOrganizationalUnitNames": {
2487
+
"name": "TeletexOrganizationalUnitNames",
2488
+
"type": {
2489
+
"name": "SEQUENCE",
2490
+
"type": "builtin",
2491
+
"typeOf": 1,
2492
+
"size": [
2493
+
1,
2494
+
"ub-organizational-units"
2495
+
],
2496
+
"content": [
2497
+
{
2498
+
"name": "TeletexOrganizationalUnitName",
2499
+
"type": "defined"
2500
+
}
2501
+
]
2502
+
}
2503
+
},
2504
+
"TeletexOrganizationalUnitName": {
2505
+
"name": "TeletexOrganizationalUnitName",
2506
+
"type": {
2507
+
"name": "TeletexString",
2508
+
"type": "builtin",
2509
+
"size": [
2510
+
1,
2511
+
"ub-organizational-unit-name-length"
2512
+
]
2513
+
}
2514
+
},
2515
+
"PDSName": {
2516
+
"name": "PDSName",
2517
+
"type": {
2518
+
"name": "PrintableString",
2519
+
"type": "builtin",
2520
+
"size": [
2521
+
1,
2522
+
"ub-pds-name-length"
2523
+
]
2524
+
}
2525
+
},
2526
+
"PhysicalDeliveryCountryName": {
2527
+
"name": "PhysicalDeliveryCountryName",
2528
+
"type": {
2529
+
"name": "CHOICE",
2530
+
"type": "builtin",
2531
+
"content": [
2532
+
{
2533
+
"id": "x121-dcc-code",
2534
+
"name": "NumericString",
2535
+
"type": "builtin",
2536
+
"size": "ub-country-name-numeric-length"
2537
+
},
2538
+
{
2539
+
"id": "iso-3166-alpha2-code",
2540
+
"name": "PrintableString",
2541
+
"type": "builtin",
2542
+
"size": "ub-country-name-alpha-length"
2543
+
}
2544
+
]
2545
+
}
2546
+
},
2547
+
"PostalCode": {
2548
+
"name": "PostalCode",
2549
+
"type": {
2550
+
"name": "CHOICE",
2551
+
"type": "builtin",
2552
+
"content": [
2553
+
{
2554
+
"id": "numeric-code",
2555
+
"name": "NumericString",
2556
+
"type": "builtin",
2557
+
"size": [
2558
+
1,
2559
+
"ub-postal-code-length"
2560
+
]
2561
+
},
2562
+
{
2563
+
"id": "printable-code",
2564
+
"name": "PrintableString",
2565
+
"type": "builtin",
2566
+
"size": [
2567
+
1,
2568
+
"ub-postal-code-length"
2569
+
]
2570
+
}
2571
+
]
2572
+
}
2573
+
},
2574
+
"PhysicalDeliveryOfficeName": {
2575
+
"name": "PhysicalDeliveryOfficeName",
2576
+
"type": {
2577
+
"name": "PDSParameter",
2578
+
"type": "defined"
2579
+
}
2580
+
},
2581
+
"PhysicalDeliveryOfficeNumber": {
2582
+
"name": "PhysicalDeliveryOfficeNumber",
2583
+
"type": {
2584
+
"name": "PDSParameter",
2585
+
"type": "defined"
2586
+
}
2587
+
},
2588
+
"ExtensionORAddressComponents": {
2589
+
"name": "ExtensionORAddressComponents",
2590
+
"type": {
2591
+
"name": "PDSParameter",
2592
+
"type": "defined"
2593
+
}
2594
+
},
2595
+
"PhysicalDeliveryPersonalName": {
2596
+
"name": "PhysicalDeliveryPersonalName",
2597
+
"type": {
2598
+
"name": "PDSParameter",
2599
+
"type": "defined"
2600
+
}
2601
+
},
2602
+
"PhysicalDeliveryOrganizationName": {
2603
+
"name": "PhysicalDeliveryOrganizationName",
2604
+
"type": {
2605
+
"name": "PDSParameter",
2606
+
"type": "defined"
2607
+
}
2608
+
},
2609
+
"ExtensionPhysicalDeliveryAddressComponents": {
2610
+
"name": "ExtensionPhysicalDeliveryAddressComponents",
2611
+
"type": {
2612
+
"name": "PDSParameter",
2613
+
"type": "defined"
2614
+
}
2615
+
},
2616
+
"UnformattedPostalAddress": {
2617
+
"name": "UnformattedPostalAddress",
2618
+
"type": {
2619
+
"name": "SET",
2620
+
"type": "builtin",
2621
+
"content": [
2622
+
{
2623
+
"id": "printable-address",
2624
+
"name": "SEQUENCE",
2625
+
"type": "builtin",
2626
+
"typeOf": 1,
2627
+
"size": [
2628
+
1,
2629
+
"ub-pds-physical-address-lines"
2630
+
],
2631
+
"content": [
2632
+
{
2633
+
"name": "PrintableString",
2634
+
"type": "builtin",
2635
+
"size": [
2636
+
1,
2637
+
"ub-pds-parameter-length"
2638
+
]
2639
+
}
2640
+
],
2641
+
"optional": true
2642
+
},
2643
+
{
2644
+
"id": "teletex-string",
2645
+
"name": "TeletexString",
2646
+
"type": "builtin",
2647
+
"size": [
2648
+
1,
2649
+
"ub-unformatted-address-length"
2650
+
],
2651
+
"optional": true
2652
+
}
2653
+
]
2654
+
}
2655
+
},
2656
+
"StreetAddress": {
2657
+
"name": "StreetAddress",
2658
+
"type": {
2659
+
"name": "PDSParameter",
2660
+
"type": "defined"
2661
+
}
2662
+
},
2663
+
"PostOfficeBoxAddress": {
2664
+
"name": "PostOfficeBoxAddress",
2665
+
"type": {
2666
+
"name": "PDSParameter",
2667
+
"type": "defined"
2668
+
}
2669
+
},
2670
+
"PosteRestanteAddress": {
2671
+
"name": "PosteRestanteAddress",
2672
+
"type": {
2673
+
"name": "PDSParameter",
2674
+
"type": "defined"
2675
+
}
2676
+
},
2677
+
"UniquePostalName": {
2678
+
"name": "UniquePostalName",
2679
+
"type": {
2680
+
"name": "PDSParameter",
2681
+
"type": "defined"
2682
+
}
2683
+
},
2684
+
"LocalPostalAttributes": {
2685
+
"name": "LocalPostalAttributes",
2686
+
"type": {
2687
+
"name": "PDSParameter",
2688
+
"type": "defined"
2689
+
}
2690
+
},
2691
+
"PDSParameter": {
2692
+
"name": "PDSParameter",
2693
+
"type": {
2694
+
"name": "SET",
2695
+
"type": "builtin",
2696
+
"content": [
2697
+
{
2698
+
"id": "printable-string",
2699
+
"name": "PrintableString",
2700
+
"type": "builtin",
2701
+
"size": [
2702
+
1,
2703
+
"ub-pds-parameter-length"
2704
+
],
2705
+
"optional": true
2706
+
},
2707
+
{
2708
+
"id": "teletex-string",
2709
+
"name": "TeletexString",
2710
+
"type": "builtin",
2711
+
"size": [
2712
+
1,
2713
+
"ub-pds-parameter-length"
2714
+
],
2715
+
"optional": true
2716
+
}
2717
+
]
2718
+
}
2719
+
},
2720
+
"ExtendedNetworkAddress": {
2721
+
"name": "ExtendedNetworkAddress",
2722
+
"type": {
2723
+
"name": "CHOICE",
2724
+
"type": "builtin",
2725
+
"content": [
2726
+
{
2727
+
"id": "e163-4-address",
2728
+
"name": "SEQUENCE",
2729
+
"type": "builtin",
2730
+
"content": [
2731
+
{
2732
+
"id": "number",
2733
+
"name": "[0]",
2734
+
"type": "tag",
2735
+
"class": "CONTEXT",
2736
+
"explicit": false,
2737
+
"content": [
2738
+
{
2739
+
"name": "",
2740
+
"type": {
2741
+
"name": "NumericString",
2742
+
"type": "builtin",
2743
+
"size": [
2744
+
1,
2745
+
"ub-e163-4-number-length"
2746
+
]
2747
+
}
2748
+
}
2749
+
]
2750
+
},
2751
+
{
2752
+
"id": "sub-address",
2753
+
"name": "[1]",
2754
+
"type": "tag",
2755
+
"class": "CONTEXT",
2756
+
"explicit": false,
2757
+
"content": [
2758
+
{
2759
+
"name": "",
2760
+
"type": {
2761
+
"name": "NumericString",
2762
+
"type": "builtin",
2763
+
"size": [
2764
+
1,
2765
+
"ub-e163-4-sub-address-length"
2766
+
]
2767
+
}
2768
+
}
2769
+
],
2770
+
"optional": true
2771
+
}
2772
+
]
2773
+
},
2774
+
{
2775
+
"id": "psap-address",
2776
+
"name": "[0]",
2777
+
"type": "tag",
2778
+
"class": "CONTEXT",
2779
+
"explicit": false,
2780
+
"content": [
2781
+
{
2782
+
"name": "",
2783
+
"type": {
2784
+
"name": "PresentationAddress",
2785
+
"type": "defined"
2786
+
}
2787
+
}
2788
+
]
2789
+
}
2790
+
]
2791
+
}
2792
+
},
2793
+
"PresentationAddress": {
2794
+
"name": "PresentationAddress",
2795
+
"type": {
2796
+
"name": "SEQUENCE",
2797
+
"type": "builtin",
2798
+
"content": [
2799
+
{
2800
+
"id": "pSelector",
2801
+
"name": "[0]",
2802
+
"type": "tag",
2803
+
"class": "CONTEXT",
2804
+
"explicit": true,
2805
+
"content": [
2806
+
{
2807
+
"name": "",
2808
+
"type": {
2809
+
"name": "OCTET STRING",
2810
+
"type": "builtin"
2811
+
}
2812
+
}
2813
+
],
2814
+
"optional": true
2815
+
},
2816
+
{
2817
+
"id": "sSelector",
2818
+
"name": "[1]",
2819
+
"type": "tag",
2820
+
"class": "CONTEXT",
2821
+
"explicit": true,
2822
+
"content": [
2823
+
{
2824
+
"name": "",
2825
+
"type": {
2826
+
"name": "OCTET STRING",
2827
+
"type": "builtin"
2828
+
}
2829
+
}
2830
+
],
2831
+
"optional": true
2832
+
},
2833
+
{
2834
+
"id": "tSelector",
2835
+
"name": "[2]",
2836
+
"type": "tag",
2837
+
"class": "CONTEXT",
2838
+
"explicit": true,
2839
+
"content": [
2840
+
{
2841
+
"name": "",
2842
+
"type": {
2843
+
"name": "OCTET STRING",
2844
+
"type": "builtin"
2845
+
}
2846
+
}
2847
+
],
2848
+
"optional": true
2849
+
},
2850
+
{
2851
+
"id": "nAddresses",
2852
+
"name": "[3]",
2853
+
"type": "tag",
2854
+
"class": "CONTEXT",
2855
+
"explicit": true,
2856
+
"content": [
2857
+
{
2858
+
"name": "",
2859
+
"type": {
2860
+
"name": "SET",
2861
+
"type": "builtin",
2862
+
"typeOf": 1,
2863
+
"size": [
2864
+
1,
2865
+
"MAX"
2866
+
],
2867
+
"content": [
2868
+
{
2869
+
"name": "OCTET STRING",
2870
+
"type": "builtin"
2871
+
}
2872
+
]
2873
+
}
2874
+
}
2875
+
]
2876
+
}
2877
+
]
2878
+
}
2879
+
},
2880
+
"TerminalType": {
2881
+
"name": "TerminalType",
2882
+
"type": {
2883
+
"name": "INTEGER",
2884
+
"type": "builtin",
2885
+
"content": {
2886
+
"telex": 3,
2887
+
"teletex": 4,
2888
+
"g3-facsimile": 5,
2889
+
"g4-facsimile": 6,
2890
+
"ia5-terminal": 7,
2891
+
"videotex": 8
2892
+
}
2893
+
}
2894
+
},
2895
+
"TeletexDomainDefinedAttributes": {
2896
+
"name": "TeletexDomainDefinedAttributes",
2897
+
"type": {
2898
+
"name": "SEQUENCE",
2899
+
"type": "builtin",
2900
+
"typeOf": 1,
2901
+
"size": [
2902
+
1,
2903
+
"ub-domain-defined-attributes"
2904
+
],
2905
+
"content": [
2906
+
{
2907
+
"name": "TeletexDomainDefinedAttribute",
2908
+
"type": "defined"
2909
+
}
2910
+
]
2911
+
}
2912
+
},
2913
+
"TeletexDomainDefinedAttribute": {
2914
+
"name": "TeletexDomainDefinedAttribute",
2915
+
"type": {
2916
+
"name": "SEQUENCE",
2917
+
"type": "builtin",
2918
+
"content": [
2919
+
{
2920
+
"id": "type",
2921
+
"name": "TeletexString",
2922
+
"type": "builtin",
2923
+
"size": [
2924
+
1,
2925
+
"ub-domain-defined-attribute-type-length"
2926
+
]
2927
+
},
2928
+
{
2929
+
"id": "value",
2930
+
"name": "TeletexString",
2931
+
"type": "builtin",
2932
+
"size": [
2933
+
1,
2934
+
"ub-domain-defined-attribute-value-length"
2935
+
]
2936
+
}
2937
+
]
2938
+
}
2939
+
}
2940
+
}
2941
+
},
2942
+
"1.3.6.1.5.5.7.0.19": {
2943
+
"name": "PKIX1Implicit88",
2944
+
"oid": "1.3.6.1.5.5.7.0.19",
2945
+
"source": "rfc5280.txt",
2946
+
"tagDefault": "IMPLICIT",
2947
+
"imports": {
2948
+
"1.3.6.1.5.5.7.0.18": {
2949
+
"name": "PKIX1Explicit88",
2950
+
"oid": "1.3.6.1.5.5.7.0.18",
2951
+
"types": [
2952
+
"id-pe",
2953
+
"id-kp",
2954
+
"id-qt-unotice",
2955
+
"id-qt-cps",
2956
+
"BMPString",
2957
+
"UTF8String",
2958
+
"ORAddress",
2959
+
"Name",
2960
+
"RelativeDistinguishedName",
2961
+
"CertificateSerialNumber",
2962
+
"Attribute",
2963
+
"DirectoryString"
2964
+
]
2965
+
}
2966
+
},
2967
+
"values": {
2968
+
"id-ce": {
2969
+
"name": "id-ce",
2970
+
"type": {
2971
+
"name": "OBJECT IDENTIFIER",
2972
+
"type": "builtin"
2973
+
},
2974
+
"value": "2.5.29"
2975
+
},
2976
+
"id-ce-authorityKeyIdentifier": {
2977
+
"name": "id-ce-authorityKeyIdentifier",
2978
+
"type": {
2979
+
"name": "OBJECT IDENTIFIER",
2980
+
"type": "builtin"
2981
+
},
2982
+
"value": "2.5.29.35"
2983
+
},
2984
+
"id-ce-subjectKeyIdentifier": {
2985
+
"name": "id-ce-subjectKeyIdentifier",
2986
+
"type": {
2987
+
"name": "OBJECT IDENTIFIER",
2988
+
"type": "builtin"
2989
+
},
2990
+
"value": "2.5.29.14"
2991
+
},
2992
+
"id-ce-keyUsage": {
2993
+
"name": "id-ce-keyUsage",
2994
+
"type": {
2995
+
"name": "OBJECT IDENTIFIER",
2996
+
"type": "builtin"
2997
+
},
2998
+
"value": "2.5.29.15"
2999
+
},
3000
+
"id-ce-privateKeyUsagePeriod": {
3001
+
"name": "id-ce-privateKeyUsagePeriod",
3002
+
"type": {
3003
+
"name": "OBJECT IDENTIFIER",
3004
+
"type": "builtin"
3005
+
},
3006
+
"value": "2.5.29.16"
3007
+
},
3008
+
"id-ce-certificatePolicies": {
3009
+
"name": "id-ce-certificatePolicies",
3010
+
"type": {
3011
+
"name": "OBJECT IDENTIFIER",
3012
+
"type": "builtin"
3013
+
},
3014
+
"value": "2.5.29.32"
3015
+
},
3016
+
"anyPolicy": {
3017
+
"name": "anyPolicy",
3018
+
"type": {
3019
+
"name": "OBJECT IDENTIFIER",
3020
+
"type": "builtin"
3021
+
},
3022
+
"value": "2.5.29.32.0"
3023
+
},
3024
+
"id-ce-policyMappings": {
3025
+
"name": "id-ce-policyMappings",
3026
+
"type": {
3027
+
"name": "OBJECT IDENTIFIER",
3028
+
"type": "builtin"
3029
+
},
3030
+
"value": "2.5.29.33"
3031
+
},
3032
+
"id-ce-subjectAltName": {
3033
+
"name": "id-ce-subjectAltName",
3034
+
"type": {
3035
+
"name": "OBJECT IDENTIFIER",
3036
+
"type": "builtin"
3037
+
},
3038
+
"value": "2.5.29.17"
3039
+
},
3040
+
"id-ce-issuerAltName": {
3041
+
"name": "id-ce-issuerAltName",
3042
+
"type": {
3043
+
"name": "OBJECT IDENTIFIER",
3044
+
"type": "builtin"
3045
+
},
3046
+
"value": "2.5.29.18"
3047
+
},
3048
+
"id-ce-subjectDirectoryAttributes": {
3049
+
"name": "id-ce-subjectDirectoryAttributes",
3050
+
"type": {
3051
+
"name": "OBJECT IDENTIFIER",
3052
+
"type": "builtin"
3053
+
},
3054
+
"value": "2.5.29.9"
3055
+
},
3056
+
"id-ce-basicConstraints": {
3057
+
"name": "id-ce-basicConstraints",
3058
+
"type": {
3059
+
"name": "OBJECT IDENTIFIER",
3060
+
"type": "builtin"
3061
+
},
3062
+
"value": "2.5.29.19"
3063
+
},
3064
+
"id-ce-nameConstraints": {
3065
+
"name": "id-ce-nameConstraints",
3066
+
"type": {
3067
+
"name": "OBJECT IDENTIFIER",
3068
+
"type": "builtin"
3069
+
},
3070
+
"value": "2.5.29.30"
3071
+
},
3072
+
"id-ce-policyConstraints": {
3073
+
"name": "id-ce-policyConstraints",
3074
+
"type": {
3075
+
"name": "OBJECT IDENTIFIER",
3076
+
"type": "builtin"
3077
+
},
3078
+
"value": "2.5.29.36"
3079
+
},
3080
+
"id-ce-cRLDistributionPoints": {
3081
+
"name": "id-ce-cRLDistributionPoints",
3082
+
"type": {
3083
+
"name": "OBJECT IDENTIFIER",
3084
+
"type": "builtin"
3085
+
},
3086
+
"value": "2.5.29.31"
3087
+
},
3088
+
"id-ce-extKeyUsage": {
3089
+
"name": "id-ce-extKeyUsage",
3090
+
"type": {
3091
+
"name": "OBJECT IDENTIFIER",
3092
+
"type": "builtin"
3093
+
},
3094
+
"value": "2.5.29.37"
3095
+
},
3096
+
"anyExtendedKeyUsage": {
3097
+
"name": "anyExtendedKeyUsage",
3098
+
"type": {
3099
+
"name": "OBJECT IDENTIFIER",
3100
+
"type": "builtin"
3101
+
},
3102
+
"value": "2.5.29.37.0"
3103
+
},
3104
+
"id-kp-serverAuth": {
3105
+
"name": "id-kp-serverAuth",
3106
+
"type": {
3107
+
"name": "OBJECT IDENTIFIER",
3108
+
"type": "builtin"
3109
+
},
3110
+
"value": "[object Object].1"
3111
+
},
3112
+
"id-kp-clientAuth": {
3113
+
"name": "id-kp-clientAuth",
3114
+
"type": {
3115
+
"name": "OBJECT IDENTIFIER",
3116
+
"type": "builtin"
3117
+
},
3118
+
"value": "[object Object].2"
3119
+
},
3120
+
"id-kp-codeSigning": {
3121
+
"name": "id-kp-codeSigning",
3122
+
"type": {
3123
+
"name": "OBJECT IDENTIFIER",
3124
+
"type": "builtin"
3125
+
},
3126
+
"value": "[object Object].3"
3127
+
},
3128
+
"id-kp-emailProtection": {
3129
+
"name": "id-kp-emailProtection",
3130
+
"type": {
3131
+
"name": "OBJECT IDENTIFIER",
3132
+
"type": "builtin"
3133
+
},
3134
+
"value": "[object Object].4"
3135
+
},
3136
+
"id-kp-timeStamping": {
3137
+
"name": "id-kp-timeStamping",
3138
+
"type": {
3139
+
"name": "OBJECT IDENTIFIER",
3140
+
"type": "builtin"
3141
+
},
3142
+
"value": "[object Object].8"
3143
+
},
3144
+
"id-kp-OCSPSigning": {
3145
+
"name": "id-kp-OCSPSigning",
3146
+
"type": {
3147
+
"name": "OBJECT IDENTIFIER",
3148
+
"type": "builtin"
3149
+
},
3150
+
"value": "[object Object].9"
3151
+
},
3152
+
"id-ce-inhibitAnyPolicy": {
3153
+
"name": "id-ce-inhibitAnyPolicy",
3154
+
"type": {
3155
+
"name": "OBJECT IDENTIFIER",
3156
+
"type": "builtin"
3157
+
},
3158
+
"value": "2.5.29.54"
3159
+
},
3160
+
"id-ce-freshestCRL": {
3161
+
"name": "id-ce-freshestCRL",
3162
+
"type": {
3163
+
"name": "OBJECT IDENTIFIER",
3164
+
"type": "builtin"
3165
+
},
3166
+
"value": "2.5.29.46"
3167
+
},
3168
+
"id-pe-authorityInfoAccess": {
3169
+
"name": "id-pe-authorityInfoAccess",
3170
+
"type": {
3171
+
"name": "OBJECT IDENTIFIER",
3172
+
"type": "builtin"
3173
+
},
3174
+
"value": "[object Object].1"
3175
+
},
3176
+
"id-pe-subjectInfoAccess": {
3177
+
"name": "id-pe-subjectInfoAccess",
3178
+
"type": {
3179
+
"name": "OBJECT IDENTIFIER",
3180
+
"type": "builtin"
3181
+
},
3182
+
"value": "[object Object].11"
3183
+
},
3184
+
"id-ce-cRLNumber": {
3185
+
"name": "id-ce-cRLNumber",
3186
+
"type": {
3187
+
"name": "OBJECT IDENTIFIER",
3188
+
"type": "builtin"
3189
+
},
3190
+
"value": "2.5.29.20"
3191
+
},
3192
+
"id-ce-issuingDistributionPoint": {
3193
+
"name": "id-ce-issuingDistributionPoint",
3194
+
"type": {
3195
+
"name": "OBJECT IDENTIFIER",
3196
+
"type": "builtin"
3197
+
},
3198
+
"value": "2.5.29.28"
3199
+
},
3200
+
"id-ce-deltaCRLIndicator": {
3201
+
"name": "id-ce-deltaCRLIndicator",
3202
+
"type": {
3203
+
"name": "OBJECT IDENTIFIER",
3204
+
"type": "builtin"
3205
+
},
3206
+
"value": "2.5.29.27"
3207
+
},
3208
+
"id-ce-cRLReasons": {
3209
+
"name": "id-ce-cRLReasons",
3210
+
"type": {
3211
+
"name": "OBJECT IDENTIFIER",
3212
+
"type": "builtin"
3213
+
},
3214
+
"value": "2.5.29.21"
3215
+
},
3216
+
"id-ce-certificateIssuer": {
3217
+
"name": "id-ce-certificateIssuer",
3218
+
"type": {
3219
+
"name": "OBJECT IDENTIFIER",
3220
+
"type": "builtin"
3221
+
},
3222
+
"value": "2.5.29.29"
3223
+
},
3224
+
"id-ce-holdInstructionCode": {
3225
+
"name": "id-ce-holdInstructionCode",
3226
+
"type": {
3227
+
"name": "OBJECT IDENTIFIER",
3228
+
"type": "builtin"
3229
+
},
3230
+
"value": "2.5.29.23"
3231
+
},
3232
+
"holdInstruction": {
3233
+
"name": "holdInstruction",
3234
+
"type": {
3235
+
"name": "OBJECT IDENTIFIER",
3236
+
"type": "builtin"
3237
+
},
3238
+
"value": "2.2.840.10040.2"
3239
+
},
3240
+
"id-holdinstruction-none": {
3241
+
"name": "id-holdinstruction-none",
3242
+
"type": {
3243
+
"name": "OBJECT IDENTIFIER",
3244
+
"type": "builtin"
3245
+
},
3246
+
"value": "2.2.840.10040.2.1"
3247
+
},
3248
+
"id-holdinstruction-callissuer": {
3249
+
"name": "id-holdinstruction-callissuer",
3250
+
"type": {
3251
+
"name": "OBJECT IDENTIFIER",
3252
+
"type": "builtin"
3253
+
},
3254
+
"value": "2.2.840.10040.2.2"
3255
+
},
3256
+
"id-holdinstruction-reject": {
3257
+
"name": "id-holdinstruction-reject",
3258
+
"type": {
3259
+
"name": "OBJECT IDENTIFIER",
3260
+
"type": "builtin"
3261
+
},
3262
+
"value": "2.2.840.10040.2.3"
3263
+
},
3264
+
"id-ce-invalidityDate": {
3265
+
"name": "id-ce-invalidityDate",
3266
+
"type": {
3267
+
"name": "OBJECT IDENTIFIER",
3268
+
"type": "builtin"
3269
+
},
3270
+
"value": "2.5.29.24"
3271
+
}
3272
+
},
3273
+
"types": {
3274
+
"AuthorityKeyIdentifier": {
3275
+
"name": "AuthorityKeyIdentifier",
3276
+
"type": {
3277
+
"name": "SEQUENCE",
3278
+
"type": "builtin",
3279
+
"content": [
3280
+
{
3281
+
"id": "keyIdentifier",
3282
+
"name": "[0]",
3283
+
"type": "tag",
3284
+
"class": "CONTEXT",
3285
+
"explicit": false,
3286
+
"content": [
3287
+
{
3288
+
"name": "",
3289
+
"type": {
3290
+
"name": "KeyIdentifier",
3291
+
"type": "defined"
3292
+
}
3293
+
}
3294
+
],
3295
+
"optional": true
3296
+
},
3297
+
{
3298
+
"id": "authorityCertIssuer",
3299
+
"name": "[1]",
3300
+
"type": "tag",
3301
+
"class": "CONTEXT",
3302
+
"explicit": false,
3303
+
"content": [
3304
+
{
3305
+
"name": "",
3306
+
"type": {
3307
+
"name": "GeneralNames",
3308
+
"type": "defined"
3309
+
}
3310
+
}
3311
+
],
3312
+
"optional": true
3313
+
},
3314
+
{
3315
+
"id": "authorityCertSerialNumber",
3316
+
"name": "[2]",
3317
+
"type": "tag",
3318
+
"class": "CONTEXT",
3319
+
"explicit": false,
3320
+
"content": [
3321
+
{
3322
+
"name": "",
3323
+
"type": {
3324
+
"name": "CertificateSerialNumber",
3325
+
"type": "defined"
3326
+
}
3327
+
}
3328
+
],
3329
+
"optional": true
3330
+
}
3331
+
]
3332
+
}
3333
+
},
3334
+
"KeyIdentifier": {
3335
+
"name": "KeyIdentifier",
3336
+
"type": {
3337
+
"name": "OCTET STRING",
3338
+
"type": "builtin"
3339
+
}
3340
+
},
3341
+
"SubjectKeyIdentifier": {
3342
+
"name": "SubjectKeyIdentifier",
3343
+
"type": {
3344
+
"name": "KeyIdentifier",
3345
+
"type": "defined"
3346
+
}
3347
+
},
3348
+
"KeyUsage": {
3349
+
"name": "KeyUsage",
3350
+
"type": {
3351
+
"name": "BIT STRING",
3352
+
"type": "builtin",
3353
+
"content": {
3354
+
"digitalSignature": 0,
3355
+
"nonRepudiation": 1,
3356
+
"keyEncipherment": 2,
3357
+
"dataEncipherment": 3,
3358
+
"keyAgreement": 4,
3359
+
"keyCertSign": 5,
3360
+
"cRLSign": 6,
3361
+
"encipherOnly": 7,
3362
+
"decipherOnly": 8
3363
+
}
3364
+
}
3365
+
},
3366
+
"PrivateKeyUsagePeriod": {
3367
+
"name": "PrivateKeyUsagePeriod",
3368
+
"type": {
3369
+
"name": "SEQUENCE",
3370
+
"type": "builtin",
3371
+
"content": [
3372
+
{
3373
+
"id": "notBefore",
3374
+
"name": "[0]",
3375
+
"type": "tag",
3376
+
"class": "CONTEXT",
3377
+
"explicit": false,
3378
+
"content": [
3379
+
{
3380
+
"name": "",
3381
+
"type": {
3382
+
"name": "GeneralizedTime",
3383
+
"type": "builtin"
3384
+
}
3385
+
}
3386
+
],
3387
+
"optional": true
3388
+
},
3389
+
{
3390
+
"id": "notAfter",
3391
+
"name": "[1]",
3392
+
"type": "tag",
3393
+
"class": "CONTEXT",
3394
+
"explicit": false,
3395
+
"content": [
3396
+
{
3397
+
"name": "",
3398
+
"type": {
3399
+
"name": "GeneralizedTime",
3400
+
"type": "builtin"
3401
+
}
3402
+
}
3403
+
],
3404
+
"optional": true
3405
+
}
3406
+
]
3407
+
}
3408
+
},
3409
+
"CertificatePolicies": {
3410
+
"name": "CertificatePolicies",
3411
+
"type": {
3412
+
"name": "SEQUENCE",
3413
+
"type": "builtin",
3414
+
"typeOf": 1,
3415
+
"size": [
3416
+
1,
3417
+
"MAX"
3418
+
],
3419
+
"content": [
3420
+
{
3421
+
"name": "PolicyInformation",
3422
+
"type": "defined"
3423
+
}
3424
+
]
3425
+
}
3426
+
},
3427
+
"PolicyInformation": {
3428
+
"name": "PolicyInformation",
3429
+
"type": {
3430
+
"name": "SEQUENCE",
3431
+
"type": "builtin",
3432
+
"content": [
3433
+
{
3434
+
"id": "policyIdentifier",
3435
+
"name": "CertPolicyId",
3436
+
"type": "defined"
3437
+
},
3438
+
{
3439
+
"id": "policyQualifiers",
3440
+
"name": "SEQUENCE",
3441
+
"type": "builtin",
3442
+
"typeOf": 1,
3443
+
"size": [
3444
+
1,
3445
+
"MAX"
3446
+
],
3447
+
"content": [
3448
+
{
3449
+
"name": "PolicyQualifierInfo",
3450
+
"type": "defined"
3451
+
}
3452
+
],
3453
+
"optional": true
3454
+
}
3455
+
]
3456
+
}
3457
+
},
3458
+
"CertPolicyId": {
3459
+
"name": "CertPolicyId",
3460
+
"type": {
3461
+
"name": "OBJECT IDENTIFIER",
3462
+
"type": "builtin"
3463
+
}
3464
+
},
3465
+
"PolicyQualifierInfo": {
3466
+
"name": "PolicyQualifierInfo",
3467
+
"type": {
3468
+
"name": "SEQUENCE",
3469
+
"type": "builtin",
3470
+
"content": [
3471
+
{
3472
+
"id": "policyQualifierId",
3473
+
"name": "PolicyQualifierId",
3474
+
"type": "defined"
3475
+
},
3476
+
{
3477
+
"id": "qualifier",
3478
+
"name": "ANY",
3479
+
"type": "builtin",
3480
+
"definedBy": "policyQualifierId"
3481
+
}
3482
+
]
3483
+
}
3484
+
},
3485
+
"PolicyQualifierId": {
3486
+
"name": "PolicyQualifierId",
3487
+
"type": {
3488
+
"name": "OBJECT IDENTIFIER",
3489
+
"type": "builtin"
3490
+
}
3491
+
},
3492
+
"CPSuri": {
3493
+
"name": "CPSuri",
3494
+
"type": {
3495
+
"name": "IA5String",
3496
+
"type": "builtin"
3497
+
}
3498
+
},
3499
+
"UserNotice": {
3500
+
"name": "UserNotice",
3501
+
"type": {
3502
+
"name": "SEQUENCE",
3503
+
"type": "builtin",
3504
+
"content": [
3505
+
{
3506
+
"id": "noticeRef",
3507
+
"name": "NoticeReference",
3508
+
"type": "defined",
3509
+
"optional": true
3510
+
},
3511
+
{
3512
+
"id": "explicitText",
3513
+
"name": "DisplayText",
3514
+
"type": "defined",
3515
+
"optional": true
3516
+
}
3517
+
]
3518
+
}
3519
+
},
3520
+
"NoticeReference": {
3521
+
"name": "NoticeReference",
3522
+
"type": {
3523
+
"name": "SEQUENCE",
3524
+
"type": "builtin",
3525
+
"content": [
3526
+
{
3527
+
"id": "organization",
3528
+
"name": "DisplayText",
3529
+
"type": "defined"
3530
+
},
3531
+
{
3532
+
"id": "noticeNumbers",
3533
+
"name": "SEQUENCE",
3534
+
"type": "builtin",
3535
+
"typeOf": 1,
3536
+
"content": [
3537
+
{
3538
+
"name": "INTEGER",
3539
+
"type": "builtin"
3540
+
}
3541
+
]
3542
+
}
3543
+
]
3544
+
}
3545
+
},
3546
+
"DisplayText": {
3547
+
"name": "DisplayText",
3548
+
"type": {
3549
+
"name": "CHOICE",
3550
+
"type": "builtin",
3551
+
"content": [
3552
+
{
3553
+
"id": "ia5String",
3554
+
"name": "IA5String",
3555
+
"type": "builtin",
3556
+
"size": [
3557
+
1,
3558
+
200
3559
+
]
3560
+
},
3561
+
{
3562
+
"id": "visibleString",
3563
+
"name": "VisibleString",
3564
+
"type": "builtin",
3565
+
"size": [
3566
+
1,
3567
+
200
3568
+
]
3569
+
},
3570
+
{
3571
+
"id": "bmpString",
3572
+
"name": "BMPString",
3573
+
"type": "builtin",
3574
+
"size": [
3575
+
1,
3576
+
200
3577
+
]
3578
+
},
3579
+
{
3580
+
"id": "utf8String",
3581
+
"name": "UTF8String",
3582
+
"type": "builtin",
3583
+
"size": [
3584
+
1,
3585
+
200
3586
+
]
3587
+
}
3588
+
]
3589
+
}
3590
+
},
3591
+
"PolicyMappings": {
3592
+
"name": "PolicyMappings",
3593
+
"type": {
3594
+
"name": "SEQUENCE",
3595
+
"type": "builtin",
3596
+
"typeOf": 1,
3597
+
"size": [
3598
+
1,
3599
+
"MAX"
3600
+
],
3601
+
"content": [
3602
+
{
3603
+
"name": "SEQUENCE",
3604
+
"type": "builtin",
3605
+
"content": [
3606
+
{
3607
+
"id": "issuerDomainPolicy",
3608
+
"name": "CertPolicyId",
3609
+
"type": "defined"
3610
+
},
3611
+
{
3612
+
"id": "subjectDomainPolicy",
3613
+
"name": "CertPolicyId",
3614
+
"type": "defined"
3615
+
}
3616
+
]
3617
+
}
3618
+
]
3619
+
}
3620
+
},
3621
+
"SubjectAltName": {
3622
+
"name": "SubjectAltName",
3623
+
"type": {
3624
+
"name": "GeneralNames",
3625
+
"type": "defined"
3626
+
}
3627
+
},
3628
+
"GeneralNames": {
3629
+
"name": "GeneralNames",
3630
+
"type": {
3631
+
"name": "SEQUENCE",
3632
+
"type": "builtin",
3633
+
"typeOf": 1,
3634
+
"size": [
3635
+
1,
3636
+
"MAX"
3637
+
],
3638
+
"content": [
3639
+
{
3640
+
"name": "GeneralName",
3641
+
"type": "defined"
3642
+
}
3643
+
]
3644
+
}
3645
+
},
3646
+
"GeneralName": {
3647
+
"name": "GeneralName",
3648
+
"type": {
3649
+
"name": "CHOICE",
3650
+
"type": "builtin",
3651
+
"content": [
3652
+
{
3653
+
"id": "otherName",
3654
+
"name": "[0]",
3655
+
"type": "tag",
3656
+
"class": "CONTEXT",
3657
+
"explicit": false,
3658
+
"content": [
3659
+
{
3660
+
"name": "",
3661
+
"type": {
3662
+
"name": "AnotherName",
3663
+
"type": "defined"
3664
+
}
3665
+
}
3666
+
]
3667
+
},
3668
+
{
3669
+
"id": "rfc822Name",
3670
+
"name": "[1]",
3671
+
"type": "tag",
3672
+
"class": "CONTEXT",
3673
+
"explicit": false,
3674
+
"content": [
3675
+
{
3676
+
"name": "",
3677
+
"type": {
3678
+
"name": "IA5String",
3679
+
"type": "builtin"
3680
+
}
3681
+
}
3682
+
]
3683
+
},
3684
+
{
3685
+
"id": "dNSName",
3686
+
"name": "[2]",
3687
+
"type": "tag",
3688
+
"class": "CONTEXT",
3689
+
"explicit": false,
3690
+
"content": [
3691
+
{
3692
+
"name": "",
3693
+
"type": {
3694
+
"name": "IA5String",
3695
+
"type": "builtin"
3696
+
}
3697
+
}
3698
+
]
3699
+
},
3700
+
{
3701
+
"id": "x400Address",
3702
+
"name": "[3]",
3703
+
"type": "tag",
3704
+
"class": "CONTEXT",
3705
+
"explicit": false,
3706
+
"content": [
3707
+
{
3708
+
"name": "",
3709
+
"type": {
3710
+
"name": "ORAddress",
3711
+
"type": "defined"
3712
+
}
3713
+
}
3714
+
]
3715
+
},
3716
+
{
3717
+
"id": "directoryName",
3718
+
"name": "[4]",
3719
+
"type": "tag",
3720
+
"class": "CONTEXT",
3721
+
"explicit": false,
3722
+
"content": [
3723
+
{
3724
+
"name": "",
3725
+
"type": {
3726
+
"name": "Name",
3727
+
"type": "defined"
3728
+
}
3729
+
}
3730
+
]
3731
+
},
3732
+
{
3733
+
"id": "ediPartyName",
3734
+
"name": "[5]",
3735
+
"type": "tag",
3736
+
"class": "CONTEXT",
3737
+
"explicit": false,
3738
+
"content": [
3739
+
{
3740
+
"name": "",
3741
+
"type": {
3742
+
"name": "EDIPartyName",
3743
+
"type": "defined"
3744
+
}
3745
+
}
3746
+
]
3747
+
},
3748
+
{
3749
+
"id": "uniformResourceIdentifier",
3750
+
"name": "[6]",
3751
+
"type": "tag",
3752
+
"class": "CONTEXT",
3753
+
"explicit": false,
3754
+
"content": [
3755
+
{
3756
+
"name": "",
3757
+
"type": {
3758
+
"name": "IA5String",
3759
+
"type": "builtin"
3760
+
}
3761
+
}
3762
+
]
3763
+
},
3764
+
{
3765
+
"id": "iPAddress",
3766
+
"name": "[7]",
3767
+
"type": "tag",
3768
+
"class": "CONTEXT",
3769
+
"explicit": false,
3770
+
"content": [
3771
+
{
3772
+
"name": "",
3773
+
"type": {
3774
+
"name": "OCTET STRING",
3775
+
"type": "builtin"
3776
+
}
3777
+
}
3778
+
]
3779
+
},
3780
+
{
3781
+
"id": "registeredID",
3782
+
"name": "[8]",
3783
+
"type": "tag",
3784
+
"class": "CONTEXT",
3785
+
"explicit": false,
3786
+
"content": [
3787
+
{
3788
+
"name": "",
3789
+
"type": {
3790
+
"name": "OBJECT IDENTIFIER",
3791
+
"type": "builtin"
3792
+
}
3793
+
}
3794
+
]
3795
+
}
3796
+
]
3797
+
}
3798
+
},
3799
+
"AnotherName": {
3800
+
"name": "AnotherName",
3801
+
"type": {
3802
+
"name": "SEQUENCE",
3803
+
"type": "builtin",
3804
+
"content": [
3805
+
{
3806
+
"id": "type-id",
3807
+
"name": "OBJECT IDENTIFIER",
3808
+
"type": "builtin"
3809
+
},
3810
+
{
3811
+
"id": "value",
3812
+
"name": "[0]",
3813
+
"type": "tag",
3814
+
"class": "CONTEXT",
3815
+
"explicit": true,
3816
+
"content": [
3817
+
{
3818
+
"name": "",
3819
+
"type": {
3820
+
"name": "ANY",
3821
+
"type": "builtin",
3822
+
"definedBy": "type-id"
3823
+
}
3824
+
}
3825
+
]
3826
+
}
3827
+
]
3828
+
}
3829
+
},
3830
+
"EDIPartyName": {
3831
+
"name": "EDIPartyName",
3832
+
"type": {
3833
+
"name": "SEQUENCE",
3834
+
"type": "builtin",
3835
+
"content": [
3836
+
{
3837
+
"id": "nameAssigner",
3838
+
"name": "[0]",
3839
+
"type": "tag",
3840
+
"class": "CONTEXT",
3841
+
"explicit": false,
3842
+
"content": [
3843
+
{
3844
+
"name": "",
3845
+
"type": {
3846
+
"name": "DirectoryString",
3847
+
"type": "defined"
3848
+
}
3849
+
}
3850
+
],
3851
+
"optional": true
3852
+
},
3853
+
{
3854
+
"id": "partyName",
3855
+
"name": "[1]",
3856
+
"type": "tag",
3857
+
"class": "CONTEXT",
3858
+
"explicit": false,
3859
+
"content": [
3860
+
{
3861
+
"name": "",
3862
+
"type": {
3863
+
"name": "DirectoryString",
3864
+
"type": "defined"
3865
+
}
3866
+
}
3867
+
]
3868
+
}
3869
+
]
3870
+
}
3871
+
},
3872
+
"IssuerAltName": {
3873
+
"name": "IssuerAltName",
3874
+
"type": {
3875
+
"name": "GeneralNames",
3876
+
"type": "defined"
3877
+
}
3878
+
},
3879
+
"SubjectDirectoryAttributes": {
3880
+
"name": "SubjectDirectoryAttributes",
3881
+
"type": {
3882
+
"name": "SEQUENCE",
3883
+
"type": "builtin",
3884
+
"typeOf": 1,
3885
+
"size": [
3886
+
1,
3887
+
"MAX"
3888
+
],
3889
+
"content": [
3890
+
{
3891
+
"name": "Attribute",
3892
+
"type": "defined"
3893
+
}
3894
+
]
3895
+
}
3896
+
},
3897
+
"BasicConstraints": {
3898
+
"name": "BasicConstraints",
3899
+
"type": {
3900
+
"name": "SEQUENCE",
3901
+
"type": "builtin",
3902
+
"content": [
3903
+
{
3904
+
"id": "cA",
3905
+
"name": "BOOLEAN",
3906
+
"type": "builtin",
3907
+
"default": false
3908
+
},
3909
+
{
3910
+
"id": "pathLenConstraint",
3911
+
"name": "INTEGER",
3912
+
"type": "builtin",
3913
+
"range": [
3914
+
0,
3915
+
"MAX"
3916
+
],
3917
+
"optional": true
3918
+
}
3919
+
]
3920
+
}
3921
+
},
3922
+
"NameConstraints": {
3923
+
"name": "NameConstraints",
3924
+
"type": {
3925
+
"name": "SEQUENCE",
3926
+
"type": "builtin",
3927
+
"content": [
3928
+
{
3929
+
"id": "permittedSubtrees",
3930
+
"name": "[0]",
3931
+
"type": "tag",
3932
+
"class": "CONTEXT",
3933
+
"explicit": false,
3934
+
"content": [
3935
+
{
3936
+
"name": "",
3937
+
"type": {
3938
+
"name": "GeneralSubtrees",
3939
+
"type": "defined"
3940
+
}
3941
+
}
3942
+
],
3943
+
"optional": true
3944
+
},
3945
+
{
3946
+
"id": "excludedSubtrees",
3947
+
"name": "[1]",
3948
+
"type": "tag",
3949
+
"class": "CONTEXT",
3950
+
"explicit": false,
3951
+
"content": [
3952
+
{
3953
+
"name": "",
3954
+
"type": {
3955
+
"name": "GeneralSubtrees",
3956
+
"type": "defined"
3957
+
}
3958
+
}
3959
+
],
3960
+
"optional": true
3961
+
}
3962
+
]
3963
+
}
3964
+
},
3965
+
"GeneralSubtrees": {
3966
+
"name": "GeneralSubtrees",
3967
+
"type": {
3968
+
"name": "SEQUENCE",
3969
+
"type": "builtin",
3970
+
"typeOf": 1,
3971
+
"size": [
3972
+
1,
3973
+
"MAX"
3974
+
],
3975
+
"content": [
3976
+
{
3977
+
"name": "GeneralSubtree",
3978
+
"type": "defined"
3979
+
}
3980
+
]
3981
+
}
3982
+
},
3983
+
"GeneralSubtree": {
3984
+
"name": "GeneralSubtree",
3985
+
"type": {
3986
+
"name": "SEQUENCE",
3987
+
"type": "builtin",
3988
+
"content": [
3989
+
{
3990
+
"id": "base",
3991
+
"name": "GeneralName",
3992
+
"type": "defined"
3993
+
},
3994
+
{
3995
+
"id": "minimum",
3996
+
"name": "[0]",
3997
+
"type": "tag",
3998
+
"class": "CONTEXT",
3999
+
"explicit": false,
4000
+
"content": [
4001
+
{
4002
+
"name": "",
4003
+
"type": {
4004
+
"name": "BaseDistance",
4005
+
"type": "defined"
4006
+
}
4007
+
}
4008
+
],
4009
+
"default": 0
4010
+
},
4011
+
{
4012
+
"id": "maximum",
4013
+
"name": "[1]",
4014
+
"type": "tag",
4015
+
"class": "CONTEXT",
4016
+
"explicit": false,
4017
+
"content": [
4018
+
{
4019
+
"name": "",
4020
+
"type": {
4021
+
"name": "BaseDistance",
4022
+
"type": "defined"
4023
+
}
4024
+
}
4025
+
],
4026
+
"optional": true
4027
+
}
4028
+
]
4029
+
}
4030
+
},
4031
+
"BaseDistance": {
4032
+
"name": "BaseDistance",
4033
+
"type": {
4034
+
"name": "INTEGER",
4035
+
"type": "builtin",
4036
+
"range": [
4037
+
0,
4038
+
"MAX"
4039
+
]
4040
+
}
4041
+
},
4042
+
"PolicyConstraints": {
4043
+
"name": "PolicyConstraints",
4044
+
"type": {
4045
+
"name": "SEQUENCE",
4046
+
"type": "builtin",
4047
+
"content": [
4048
+
{
4049
+
"id": "requireExplicitPolicy",
4050
+
"name": "[0]",
4051
+
"type": "tag",
4052
+
"class": "CONTEXT",
4053
+
"explicit": false,
4054
+
"content": [
4055
+
{
4056
+
"name": "",
4057
+
"type": {
4058
+
"name": "SkipCerts",
4059
+
"type": "defined"
4060
+
}
4061
+
}
4062
+
],
4063
+
"optional": true
4064
+
},
4065
+
{
4066
+
"id": "inhibitPolicyMapping",
4067
+
"name": "[1]",
4068
+
"type": "tag",
4069
+
"class": "CONTEXT",
4070
+
"explicit": false,
4071
+
"content": [
4072
+
{
4073
+
"name": "",
4074
+
"type": {
4075
+
"name": "SkipCerts",
4076
+
"type": "defined"
4077
+
}
4078
+
}
4079
+
],
4080
+
"optional": true
4081
+
}
4082
+
]
4083
+
}
4084
+
},
4085
+
"SkipCerts": {
4086
+
"name": "SkipCerts",
4087
+
"type": {
4088
+
"name": "INTEGER",
4089
+
"type": "builtin",
4090
+
"range": [
4091
+
0,
4092
+
"MAX"
4093
+
]
4094
+
}
4095
+
},
4096
+
"CRLDistributionPoints": {
4097
+
"name": "CRLDistributionPoints",
4098
+
"type": {
4099
+
"name": "SEQUENCE",
4100
+
"type": "builtin",
4101
+
"typeOf": 1,
4102
+
"size": [
4103
+
1,
4104
+
"MAX"
4105
+
],
4106
+
"content": [
4107
+
{
4108
+
"name": "DistributionPoint",
4109
+
"type": "defined"
4110
+
}
4111
+
]
4112
+
}
4113
+
},
4114
+
"DistributionPoint": {
4115
+
"name": "DistributionPoint",
4116
+
"type": {
4117
+
"name": "SEQUENCE",
4118
+
"type": "builtin",
4119
+
"content": [
4120
+
{
4121
+
"id": "distributionPoint",
4122
+
"name": "[0]",
4123
+
"type": "tag",
4124
+
"class": "CONTEXT",
4125
+
"explicit": false,
4126
+
"content": [
4127
+
{
4128
+
"name": "",
4129
+
"type": {
4130
+
"name": "DistributionPointName",
4131
+
"type": "defined"
4132
+
}
4133
+
}
4134
+
],
4135
+
"optional": true
4136
+
},
4137
+
{
4138
+
"id": "reasons",
4139
+
"name": "[1]",
4140
+
"type": "tag",
4141
+
"class": "CONTEXT",
4142
+
"explicit": false,
4143
+
"content": [
4144
+
{
4145
+
"name": "",
4146
+
"type": {
4147
+
"name": "ReasonFlags",
4148
+
"type": "defined"
4149
+
}
4150
+
}
4151
+
],
4152
+
"optional": true
4153
+
},
4154
+
{
4155
+
"id": "cRLIssuer",
4156
+
"name": "[2]",
4157
+
"type": "tag",
4158
+
"class": "CONTEXT",
4159
+
"explicit": false,
4160
+
"content": [
4161
+
{
4162
+
"name": "",
4163
+
"type": {
4164
+
"name": "GeneralNames",
4165
+
"type": "defined"
4166
+
}
4167
+
}
4168
+
],
4169
+
"optional": true
4170
+
}
4171
+
]
4172
+
}
4173
+
},
4174
+
"DistributionPointName": {
4175
+
"name": "DistributionPointName",
4176
+
"type": {
4177
+
"name": "CHOICE",
4178
+
"type": "builtin",
4179
+
"content": [
4180
+
{
4181
+
"id": "fullName",
4182
+
"name": "[0]",
4183
+
"type": "tag",
4184
+
"class": "CONTEXT",
4185
+
"explicit": false,
4186
+
"content": [
4187
+
{
4188
+
"name": "",
4189
+
"type": {
4190
+
"name": "GeneralNames",
4191
+
"type": "defined"
4192
+
}
4193
+
}
4194
+
]
4195
+
},
4196
+
{
4197
+
"id": "nameRelativeToCRLIssuer",
4198
+
"name": "[1]",
4199
+
"type": "tag",
4200
+
"class": "CONTEXT",
4201
+
"explicit": false,
4202
+
"content": [
4203
+
{
4204
+
"name": "",
4205
+
"type": {
4206
+
"name": "RelativeDistinguishedName",
4207
+
"type": "defined"
4208
+
}
4209
+
}
4210
+
]
4211
+
}
4212
+
]
4213
+
}
4214
+
},
4215
+
"ReasonFlags": {
4216
+
"name": "ReasonFlags",
4217
+
"type": {
4218
+
"name": "BIT STRING",
4219
+
"type": "builtin",
4220
+
"content": {
4221
+
"unused": 0,
4222
+
"keyCompromise": 1,
4223
+
"cACompromise": 2,
4224
+
"affiliationChanged": 3,
4225
+
"superseded": 4,
4226
+
"cessationOfOperation": 5,
4227
+
"certificateHold": 6,
4228
+
"privilegeWithdrawn": 7,
4229
+
"aACompromise": 8
4230
+
}
4231
+
}
4232
+
},
4233
+
"ExtKeyUsageSyntax": {
4234
+
"name": "ExtKeyUsageSyntax",
4235
+
"type": {
4236
+
"name": "SEQUENCE",
4237
+
"type": "builtin",
4238
+
"typeOf": 1,
4239
+
"size": [
4240
+
1,
4241
+
"MAX"
4242
+
],
4243
+
"content": [
4244
+
{
4245
+
"name": "KeyPurposeId",
4246
+
"type": "defined"
4247
+
}
4248
+
]
4249
+
}
4250
+
},
4251
+
"KeyPurposeId": {
4252
+
"name": "KeyPurposeId",
4253
+
"type": {
4254
+
"name": "OBJECT IDENTIFIER",
4255
+
"type": "builtin"
4256
+
}
4257
+
},
4258
+
"InhibitAnyPolicy": {
4259
+
"name": "InhibitAnyPolicy",
4260
+
"type": {
4261
+
"name": "SkipCerts",
4262
+
"type": "defined"
4263
+
}
4264
+
},
4265
+
"FreshestCRL": {
4266
+
"name": "FreshestCRL",
4267
+
"type": {
4268
+
"name": "CRLDistributionPoints",
4269
+
"type": "defined"
4270
+
}
4271
+
},
4272
+
"AuthorityInfoAccessSyntax": {
4273
+
"name": "AuthorityInfoAccessSyntax",
4274
+
"type": {
4275
+
"name": "SEQUENCE",
4276
+
"type": "builtin",
4277
+
"typeOf": 1,
4278
+
"size": [
4279
+
1,
4280
+
"MAX"
4281
+
],
4282
+
"content": [
4283
+
{
4284
+
"name": "AccessDescription",
4285
+
"type": "defined"
4286
+
}
4287
+
]
4288
+
}
4289
+
},
4290
+
"AccessDescription": {
4291
+
"name": "AccessDescription",
4292
+
"type": {
4293
+
"name": "SEQUENCE",
4294
+
"type": "builtin",
4295
+
"content": [
4296
+
{
4297
+
"id": "accessMethod",
4298
+
"name": "OBJECT IDENTIFIER",
4299
+
"type": "builtin"
4300
+
},
4301
+
{
4302
+
"id": "accessLocation",
4303
+
"name": "GeneralName",
4304
+
"type": "defined"
4305
+
}
4306
+
]
4307
+
}
4308
+
},
4309
+
"SubjectInfoAccessSyntax": {
4310
+
"name": "SubjectInfoAccessSyntax",
4311
+
"type": {
4312
+
"name": "SEQUENCE",
4313
+
"type": "builtin",
4314
+
"typeOf": 1,
4315
+
"size": [
4316
+
1,
4317
+
"MAX"
4318
+
],
4319
+
"content": [
4320
+
{
4321
+
"name": "AccessDescription",
4322
+
"type": "defined"
4323
+
}
4324
+
]
4325
+
}
4326
+
},
4327
+
"CRLNumber": {
4328
+
"name": "CRLNumber",
4329
+
"type": {
4330
+
"name": "INTEGER",
4331
+
"type": "builtin",
4332
+
"range": [
4333
+
0,
4334
+
"MAX"
4335
+
]
4336
+
}
4337
+
},
4338
+
"IssuingDistributionPoint": {
4339
+
"name": "IssuingDistributionPoint",
4340
+
"type": {
4341
+
"name": "SEQUENCE",
4342
+
"type": "builtin",
4343
+
"content": [
4344
+
{
4345
+
"id": "distributionPoint",
4346
+
"name": "[0]",
4347
+
"type": "tag",
4348
+
"class": "CONTEXT",
4349
+
"explicit": false,
4350
+
"content": [
4351
+
{
4352
+
"name": "",
4353
+
"type": {
4354
+
"name": "DistributionPointName",
4355
+
"type": "defined"
4356
+
}
4357
+
}
4358
+
],
4359
+
"optional": true
4360
+
},
4361
+
{
4362
+
"id": "onlyContainsUserCerts",
4363
+
"name": "[1]",
4364
+
"type": "tag",
4365
+
"class": "CONTEXT",
4366
+
"explicit": false,
4367
+
"content": [
4368
+
{
4369
+
"name": "",
4370
+
"type": {
4371
+
"name": "BOOLEAN",
4372
+
"type": "builtin"
4373
+
}
4374
+
}
4375
+
],
4376
+
"default": false
4377
+
},
4378
+
{
4379
+
"id": "onlyContainsCACerts",
4380
+
"name": "[2]",
4381
+
"type": "tag",
4382
+
"class": "CONTEXT",
4383
+
"explicit": false,
4384
+
"content": [
4385
+
{
4386
+
"name": "",
4387
+
"type": {
4388
+
"name": "BOOLEAN",
4389
+
"type": "builtin"
4390
+
}
4391
+
}
4392
+
],
4393
+
"default": false
4394
+
},
4395
+
{
4396
+
"id": "onlySomeReasons",
4397
+
"name": "[3]",
4398
+
"type": "tag",
4399
+
"class": "CONTEXT",
4400
+
"explicit": false,
4401
+
"content": [
4402
+
{
4403
+
"name": "",
4404
+
"type": {
4405
+
"name": "ReasonFlags",
4406
+
"type": "defined"
4407
+
}
4408
+
}
4409
+
],
4410
+
"optional": true
4411
+
},
4412
+
{
4413
+
"id": "indirectCRL",
4414
+
"name": "[4]",
4415
+
"type": "tag",
4416
+
"class": "CONTEXT",
4417
+
"explicit": false,
4418
+
"content": [
4419
+
{
4420
+
"name": "",
4421
+
"type": {
4422
+
"name": "BOOLEAN",
4423
+
"type": "builtin"
4424
+
}
4425
+
}
4426
+
],
4427
+
"default": false
4428
+
},
4429
+
{
4430
+
"id": "onlyContainsAttributeCerts",
4431
+
"name": "[5]",
4432
+
"type": "tag",
4433
+
"class": "CONTEXT",
4434
+
"explicit": false,
4435
+
"content": [
4436
+
{
4437
+
"name": "",
4438
+
"type": {
4439
+
"name": "BOOLEAN",
4440
+
"type": "builtin"
4441
+
}
4442
+
}
4443
+
],
4444
+
"default": false
4445
+
}
4446
+
]
4447
+
}
4448
+
},
4449
+
"BaseCRLNumber": {
4450
+
"name": "BaseCRLNumber",
4451
+
"type": {
4452
+
"name": "CRLNumber",
4453
+
"type": "defined"
4454
+
}
4455
+
},
4456
+
"CRLReason": {
4457
+
"name": "CRLReason",
4458
+
"type": {
4459
+
"name": "ENUMERATED",
4460
+
"type": "builtin",
4461
+
"content": {
4462
+
"unspecified": 0,
4463
+
"keyCompromise": 1,
4464
+
"cACompromise": 2,
4465
+
"affiliationChanged": 3,
4466
+
"superseded": 4,
4467
+
"cessationOfOperation": 5,
4468
+
"certificateHold": 6,
4469
+
"removeFromCRL": 8,
4470
+
"privilegeWithdrawn": 9,
4471
+
"aACompromise": 10
4472
+
}
4473
+
}
4474
+
},
4475
+
"CertificateIssuer": {
4476
+
"name": "CertificateIssuer",
4477
+
"type": {
4478
+
"name": "GeneralNames",
4479
+
"type": "defined"
4480
+
}
4481
+
},
4482
+
"HoldInstructionCode": {
4483
+
"name": "HoldInstructionCode",
4484
+
"type": {
4485
+
"name": "OBJECT IDENTIFIER",
4486
+
"type": "builtin"
4487
+
}
4488
+
},
4489
+
"InvalidityDate": {
4490
+
"name": "InvalidityDate",
4491
+
"type": {
4492
+
"name": "GeneralizedTime",
4493
+
"type": "builtin"
4494
+
}
4495
+
}
4496
+
}
4497
+
},
4498
+
"1.2.840.113549.1.8.1.1": {
4499
+
"name": "PKCS-8",
4500
+
"oid": "1.2.840.113549.1.8.1.1",
4501
+
"source": "rfc5208.txt",
4502
+
"tagDefault": "IMPLICIT",
4503
+
"imports": {
4504
+
"2.5.1.0.3": {
4505
+
"name": "InformationFramework",
4506
+
"oid": "2.5.1.0.3",
4507
+
"types": [
4508
+
"Attribute"
4509
+
]
4510
+
},
4511
+
"1.2.840.113549.1.5.16.1": {
4512
+
"name": "PKCS-5",
4513
+
"oid": "1.2.840.113549.1.5.16.1",
4514
+
"types": [
4515
+
"AlgorithmIdentifier",
4516
+
"ALGORITHM-IDENTIFIER"
4517
+
]
4518
+
}
4519
+
},
4520
+
"values": {
4521
+
"PrivateKeyAlgorithms": {
4522
+
"name": "PrivateKeyAlgorithms",
4523
+
"type": {
4524
+
"name": "ALGORITHM-IDENTIFIER",
4525
+
"type": "defined"
4526
+
},
4527
+
"value": ""
4528
+
},
4529
+
"KeyEncryptionAlgorithms": {
4530
+
"name": "KeyEncryptionAlgorithms",
4531
+
"type": {
4532
+
"name": "ALGORITHM-IDENTIFIER",
4533
+
"type": "defined"
4534
+
},
4535
+
"value": ""
4536
+
}
4537
+
},
4538
+
"types": {
4539
+
"PrivateKeyInfo": {
4540
+
"name": "PrivateKeyInfo",
4541
+
"type": {
4542
+
"name": "SEQUENCE",
4543
+
"type": "builtin",
4544
+
"content": [
4545
+
{
4546
+
"id": "version",
4547
+
"name": "Version",
4548
+
"type": "defined"
4549
+
},
4550
+
{
4551
+
"id": "privateKeyAlgorithm",
4552
+
"name": "AlgorithmIdentifier",
4553
+
"type": "defined"
4554
+
},
4555
+
{
4556
+
"id": "privateKey",
4557
+
"name": "PrivateKey",
4558
+
"type": "defined"
4559
+
},
4560
+
{
4561
+
"id": "attributes",
4562
+
"name": "[0]",
4563
+
"type": "tag",
4564
+
"class": "CONTEXT",
4565
+
"explicit": false,
4566
+
"content": [
4567
+
{
4568
+
"name": "",
4569
+
"type": {
4570
+
"name": "Attributes",
4571
+
"type": "defined"
4572
+
}
4573
+
}
4574
+
],
4575
+
"optional": true
4576
+
}
4577
+
]
4578
+
}
4579
+
},
4580
+
"Version": {
4581
+
"name": "Version",
4582
+
"type": {
4583
+
"name": "INTEGER",
4584
+
"type": "builtin",
4585
+
"content": {
4586
+
"v1": 0
4587
+
}
4588
+
}
4589
+
},
4590
+
"PrivateKey": {
4591
+
"name": "PrivateKey",
4592
+
"type": {
4593
+
"name": "OCTET STRING",
4594
+
"type": "builtin"
4595
+
}
4596
+
},
4597
+
"Attributes": {
4598
+
"name": "Attributes",
4599
+
"type": {
4600
+
"name": "SET",
4601
+
"type": "builtin",
4602
+
"typeOf": 1,
4603
+
"content": [
4604
+
{
4605
+
"name": "Attribute",
4606
+
"type": "defined"
4607
+
}
4608
+
]
4609
+
}
4610
+
},
4611
+
"EncryptedPrivateKeyInfo": {
4612
+
"name": "EncryptedPrivateKeyInfo",
4613
+
"type": {
4614
+
"name": "SEQUENCE",
4615
+
"type": "builtin",
4616
+
"content": [
4617
+
{
4618
+
"id": "encryptionAlgorithm",
4619
+
"name": "AlgorithmIdentifier",
4620
+
"type": "defined"
4621
+
},
4622
+
{
4623
+
"id": "encryptedData",
4624
+
"name": "EncryptedData",
4625
+
"type": "defined"
4626
+
}
4627
+
]
4628
+
}
4629
+
},
4630
+
"EncryptedData": {
4631
+
"name": "EncryptedData",
4632
+
"type": {
4633
+
"name": "OCTET STRING",
4634
+
"type": "builtin"
4635
+
}
4636
+
}
4637
+
}
4638
+
},
4639
+
"1.2.840.113549.1.9.16.0.14": {
4640
+
"name": "CryptographicMessageSyntax",
4641
+
"oid": "1.2.840.113549.1.9.16.0.14",
4642
+
"source": "rfc3369.txt",
4643
+
"tagDefault": "IMPLICIT",
4644
+
"imports": {
4645
+
"1.3.6.1.5.5.7.0.18": {
4646
+
"name": "PKIX1Explicit88",
4647
+
"oid": "1.3.6.1.5.5.7.0.18",
4648
+
"types": [
4649
+
"AlgorithmIdentifier",
4650
+
"Certificate",
4651
+
"CertificateList",
4652
+
"CertificateSerialNumber",
4653
+
"Name"
4654
+
]
4655
+
},
4656
+
"1.3.6.1.5.5.7.0.12": {
4657
+
"name": "PKIXAttributeCertificate",
4658
+
"oid": "1.3.6.1.5.5.7.0.12",
4659
+
"types": [
4660
+
"AttributeCertificate"
4661
+
]
4662
+
},
4663
+
"1.2.840.113549.1.9.16.0.15": {
4664
+
"name": "AttributeCertificateVersion1",
4665
+
"oid": "1.2.840.113549.1.9.16.0.15",
4666
+
"types": [
4667
+
"AttributeCertificateV1"
4668
+
]
4669
+
}
4670
+
},
4671
+
"values": {
4672
+
"id-contentType": {
4673
+
"name": "id-contentType",
4674
+
"type": {
4675
+
"name": "OBJECT IDENTIFIER",
4676
+
"type": "builtin"
4677
+
},
4678
+
"value": "1.2.840.113549.1.9.3"
4679
+
},
4680
+
"id-messageDigest": {
4681
+
"name": "id-messageDigest",
4682
+
"type": {
4683
+
"name": "OBJECT IDENTIFIER",
4684
+
"type": "builtin"
4685
+
},
4686
+
"value": "1.2.840.113549.1.9.4"
4687
+
},
4688
+
"id-signingTime": {
4689
+
"name": "id-signingTime",
4690
+
"type": {
4691
+
"name": "OBJECT IDENTIFIER",
4692
+
"type": "builtin"
4693
+
},
4694
+
"value": "1.2.840.113549.1.9.5"
4695
+
},
4696
+
"id-countersignature": {
4697
+
"name": "id-countersignature",
4698
+
"type": {
4699
+
"name": "OBJECT IDENTIFIER",
4700
+
"type": "builtin"
4701
+
},
4702
+
"value": "1.2.840.113549.1.9.6"
4703
+
}
4704
+
},
4705
+
"types": {
4706
+
"ContentInfo": {
4707
+
"name": "ContentInfo",
4708
+
"type": {
4709
+
"name": "SEQUENCE",
4710
+
"type": "builtin",
4711
+
"content": [
4712
+
{
4713
+
"id": "contentType",
4714
+
"name": "ContentType",
4715
+
"type": "defined"
4716
+
},
4717
+
{
4718
+
"id": "content",
4719
+
"name": "[0]",
4720
+
"type": "tag",
4721
+
"class": "CONTEXT",
4722
+
"explicit": true,
4723
+
"content": [
4724
+
{
4725
+
"name": "",
4726
+
"type": {
4727
+
"name": "ANY",
4728
+
"type": "builtin",
4729
+
"definedBy": "contentType"
4730
+
}
4731
+
}
4732
+
]
4733
+
}
4734
+
]
4735
+
}
4736
+
},
4737
+
"ContentType": {
4738
+
"name": "ContentType",
4739
+
"type": {
4740
+
"name": "OBJECT IDENTIFIER",
4741
+
"type": "builtin"
4742
+
}
4743
+
},
4744
+
"SignedData": {
4745
+
"name": "SignedData",
4746
+
"type": {
4747
+
"name": "SEQUENCE",
4748
+
"type": "builtin",
4749
+
"content": [
4750
+
{
4751
+
"id": "version",
4752
+
"name": "CMSVersion",
4753
+
"type": "defined"
4754
+
},
4755
+
{
4756
+
"id": "digestAlgorithms",
4757
+
"name": "DigestAlgorithmIdentifiers",
4758
+
"type": "defined"
4759
+
},
4760
+
{
4761
+
"id": "encapContentInfo",
4762
+
"name": "EncapsulatedContentInfo",
4763
+
"type": "defined"
4764
+
},
4765
+
{
4766
+
"id": "certificates",
4767
+
"name": "[0]",
4768
+
"type": "tag",
4769
+
"class": "CONTEXT",
4770
+
"explicit": false,
4771
+
"content": [
4772
+
{
4773
+
"name": "",
4774
+
"type": {
4775
+
"name": "CertificateSet",
4776
+
"type": "defined"
4777
+
}
4778
+
}
4779
+
],
4780
+
"optional": true
4781
+
},
4782
+
{
4783
+
"id": "crls",
4784
+
"name": "[1]",
4785
+
"type": "tag",
4786
+
"class": "CONTEXT",
4787
+
"explicit": false,
4788
+
"content": [
4789
+
{
4790
+
"name": "",
4791
+
"type": {
4792
+
"name": "CertificateRevocationLists",
4793
+
"type": "defined"
4794
+
}
4795
+
}
4796
+
],
4797
+
"optional": true
4798
+
},
4799
+
{
4800
+
"id": "signerInfos",
4801
+
"name": "SignerInfos",
4802
+
"type": "defined"
4803
+
}
4804
+
]
4805
+
}
4806
+
},
4807
+
"DigestAlgorithmIdentifiers": {
4808
+
"name": "DigestAlgorithmIdentifiers",
4809
+
"type": {
4810
+
"name": "SET",
4811
+
"type": "builtin",
4812
+
"typeOf": 1,
4813
+
"content": [
4814
+
{
4815
+
"name": "DigestAlgorithmIdentifier",
4816
+
"type": "defined"
4817
+
}
4818
+
]
4819
+
}
4820
+
},
4821
+
"SignerInfos": {
4822
+
"name": "SignerInfos",
4823
+
"type": {
4824
+
"name": "SET",
4825
+
"type": "builtin",
4826
+
"typeOf": 1,
4827
+
"content": [
4828
+
{
4829
+
"name": "SignerInfo",
4830
+
"type": "defined"
4831
+
}
4832
+
]
4833
+
}
4834
+
},
4835
+
"EncapsulatedContentInfo": {
4836
+
"name": "EncapsulatedContentInfo",
4837
+
"type": {
4838
+
"name": "SEQUENCE",
4839
+
"type": "builtin",
4840
+
"content": [
4841
+
{
4842
+
"id": "eContentType",
4843
+
"name": "ContentType",
4844
+
"type": "defined"
4845
+
},
4846
+
{
4847
+
"id": "eContent",
4848
+
"name": "[0]",
4849
+
"type": "tag",
4850
+
"class": "CONTEXT",
4851
+
"explicit": true,
4852
+
"content": [
4853
+
{
4854
+
"name": "",
4855
+
"type": {
4856
+
"name": "OCTET STRING",
4857
+
"type": "builtin"
4858
+
}
4859
+
}
4860
+
],
4861
+
"optional": true
4862
+
}
4863
+
]
4864
+
}
4865
+
},
4866
+
"SignerInfo": {
4867
+
"name": "SignerInfo",
4868
+
"type": {
4869
+
"name": "SEQUENCE",
4870
+
"type": "builtin",
4871
+
"content": [
4872
+
{
4873
+
"id": "version",
4874
+
"name": "CMSVersion",
4875
+
"type": "defined"
4876
+
},
4877
+
{
4878
+
"id": "sid",
4879
+
"name": "SignerIdentifier",
4880
+
"type": "defined"
4881
+
},
4882
+
{
4883
+
"id": "digestAlgorithm",
4884
+
"name": "DigestAlgorithmIdentifier",
4885
+
"type": "defined"
4886
+
},
4887
+
{
4888
+
"id": "signedAttrs",
4889
+
"name": "[0]",
4890
+
"type": "tag",
4891
+
"class": "CONTEXT",
4892
+
"explicit": false,
4893
+
"content": [
4894
+
{
4895
+
"name": "",
4896
+
"type": {
4897
+
"name": "SignedAttributes",
4898
+
"type": "defined"
4899
+
}
4900
+
}
4901
+
],
4902
+
"optional": true
4903
+
},
4904
+
{
4905
+
"id": "signatureAlgorithm",
4906
+
"name": "SignatureAlgorithmIdentifier",
4907
+
"type": "defined"
4908
+
},
4909
+
{
4910
+
"id": "signature",
4911
+
"name": "SignatureValue",
4912
+
"type": "defined"
4913
+
},
4914
+
{
4915
+
"id": "unsignedAttrs",
4916
+
"name": "[1]",
4917
+
"type": "tag",
4918
+
"class": "CONTEXT",
4919
+
"explicit": false,
4920
+
"content": [
4921
+
{
4922
+
"name": "",
4923
+
"type": {
4924
+
"name": "UnsignedAttributes",
4925
+
"type": "defined"
4926
+
}
4927
+
}
4928
+
],
4929
+
"optional": true
4930
+
}
4931
+
]
4932
+
}
4933
+
},
4934
+
"SignerIdentifier": {
4935
+
"name": "SignerIdentifier",
4936
+
"type": {
4937
+
"name": "CHOICE",
4938
+
"type": "builtin",
4939
+
"content": [
4940
+
{
4941
+
"id": "issuerAndSerialNumber",
4942
+
"name": "IssuerAndSerialNumber",
4943
+
"type": "defined"
4944
+
},
4945
+
{
4946
+
"id": "subjectKeyIdentifier",
4947
+
"name": "[0]",
4948
+
"type": "tag",
4949
+
"class": "CONTEXT",
4950
+
"explicit": false,
4951
+
"content": [
4952
+
{
4953
+
"name": "",
4954
+
"type": {
4955
+
"name": "SubjectKeyIdentifier",
4956
+
"type": "defined"
4957
+
}
4958
+
}
4959
+
]
4960
+
}
4961
+
]
4962
+
}
4963
+
},
4964
+
"SignedAttributes": {
4965
+
"name": "SignedAttributes",
4966
+
"type": {
4967
+
"name": "SET",
4968
+
"type": "builtin",
4969
+
"typeOf": 1,
4970
+
"size": [
4971
+
1,
4972
+
"MAX"
4973
+
],
4974
+
"content": [
4975
+
{
4976
+
"name": "Attribute",
4977
+
"type": "defined"
4978
+
}
4979
+
]
4980
+
}
4981
+
},
4982
+
"UnsignedAttributes": {
4983
+
"name": "UnsignedAttributes",
4984
+
"type": {
4985
+
"name": "SET",
4986
+
"type": "builtin",
4987
+
"typeOf": 1,
4988
+
"size": [
4989
+
1,
4990
+
"MAX"
4991
+
],
4992
+
"content": [
4993
+
{
4994
+
"name": "Attribute",
4995
+
"type": "defined"
4996
+
}
4997
+
]
4998
+
}
4999
+
},
5000
+
"Attribute": {
5001
+
"name": "Attribute",
5002
+
"type": {
5003
+
"name": "SEQUENCE",
5004
+
"type": "builtin",
5005
+
"content": [
5006
+
{
5007
+
"id": "attrType",
5008
+
"name": "OBJECT IDENTIFIER",
5009
+
"type": "builtin"
5010
+
},
5011
+
{
5012
+
"id": "attrValues",
5013
+
"name": "SET",
5014
+
"type": "builtin",
5015
+
"typeOf": 1,
5016
+
"content": [
5017
+
{
5018
+
"name": "AttributeValue",
5019
+
"type": "defined"
5020
+
}
5021
+
]
5022
+
}
5023
+
]
5024
+
}
5025
+
},
5026
+
"AttributeValue": {
5027
+
"name": "AttributeValue",
5028
+
"type": {
5029
+
"name": "ANY",
5030
+
"type": "builtin"
5031
+
}
5032
+
},
5033
+
"SignatureValue": {
5034
+
"name": "SignatureValue",
5035
+
"type": {
5036
+
"name": "OCTET STRING",
5037
+
"type": "builtin"
5038
+
}
5039
+
},
5040
+
"EnvelopedData": {
5041
+
"name": "EnvelopedData",
5042
+
"type": {
5043
+
"name": "SEQUENCE",
5044
+
"type": "builtin",
5045
+
"content": [
5046
+
{
5047
+
"id": "version",
5048
+
"name": "CMSVersion",
5049
+
"type": "defined"
5050
+
},
5051
+
{
5052
+
"id": "originatorInfo",
5053
+
"name": "[0]",
5054
+
"type": "tag",
5055
+
"class": "CONTEXT",
5056
+
"explicit": false,
5057
+
"content": [
5058
+
{
5059
+
"name": "",
5060
+
"type": {
5061
+
"name": "OriginatorInfo",
5062
+
"type": "defined"
5063
+
}
5064
+
}
5065
+
],
5066
+
"optional": true
5067
+
},
5068
+
{
5069
+
"id": "recipientInfos",
5070
+
"name": "RecipientInfos",
5071
+
"type": "defined"
5072
+
},
5073
+
{
5074
+
"id": "encryptedContentInfo",
5075
+
"name": "EncryptedContentInfo",
5076
+
"type": "defined"
5077
+
},
5078
+
{
5079
+
"id": "unprotectedAttrs",
5080
+
"name": "[1]",
5081
+
"type": "tag",
5082
+
"class": "CONTEXT",
5083
+
"explicit": false,
5084
+
"content": [
5085
+
{
5086
+
"name": "",
5087
+
"type": {
5088
+
"name": "UnprotectedAttributes",
5089
+
"type": "defined"
5090
+
}
5091
+
}
5092
+
],
5093
+
"optional": true
5094
+
}
5095
+
]
5096
+
}
5097
+
},
5098
+
"OriginatorInfo": {
5099
+
"name": "OriginatorInfo",
5100
+
"type": {
5101
+
"name": "SEQUENCE",
5102
+
"type": "builtin",
5103
+
"content": [
5104
+
{
5105
+
"id": "certs",
5106
+
"name": "[0]",
5107
+
"type": "tag",
5108
+
"class": "CONTEXT",
5109
+
"explicit": false,
5110
+
"content": [
5111
+
{
5112
+
"name": "",
5113
+
"type": {
5114
+
"name": "CertificateSet",
5115
+
"type": "defined"
5116
+
}
5117
+
}
5118
+
],
5119
+
"optional": true
5120
+
},
5121
+
{
5122
+
"id": "crls",
5123
+
"name": "[1]",
5124
+
"type": "tag",
5125
+
"class": "CONTEXT",
5126
+
"explicit": false,
5127
+
"content": [
5128
+
{
5129
+
"name": "",
5130
+
"type": {
5131
+
"name": "CertificateRevocationLists",
5132
+
"type": "defined"
5133
+
}
5134
+
}
5135
+
],
5136
+
"optional": true
5137
+
}
5138
+
]
5139
+
}
5140
+
},
5141
+
"RecipientInfos": {
5142
+
"name": "RecipientInfos",
5143
+
"type": {
5144
+
"name": "SET",
5145
+
"type": "builtin",
5146
+
"typeOf": 1,
5147
+
"size": [
5148
+
1,
5149
+
"MAX"
5150
+
],
5151
+
"content": [
5152
+
{
5153
+
"name": "RecipientInfo",
5154
+
"type": "defined"
5155
+
}
5156
+
]
5157
+
}
5158
+
},
5159
+
"EncryptedContentInfo": {
5160
+
"name": "EncryptedContentInfo",
5161
+
"type": {
5162
+
"name": "SEQUENCE",
5163
+
"type": "builtin",
5164
+
"content": [
5165
+
{
5166
+
"id": "contentType",
5167
+
"name": "ContentType",
5168
+
"type": "defined"
5169
+
},
5170
+
{
5171
+
"id": "contentEncryptionAlgorithm",
5172
+
"name": "ContentEncryptionAlgorithmIdentifier",
5173
+
"type": "defined"
5174
+
},
5175
+
{
5176
+
"id": "encryptedContent",
5177
+
"name": "[0]",
5178
+
"type": "tag",
5179
+
"class": "CONTEXT",
5180
+
"explicit": false,
5181
+
"content": [
5182
+
{
5183
+
"name": "",
5184
+
"type": {
5185
+
"name": "EncryptedContent",
5186
+
"type": "defined"
5187
+
}
5188
+
}
5189
+
],
5190
+
"optional": true
5191
+
}
5192
+
]
5193
+
}
5194
+
},
5195
+
"EncryptedContent": {
5196
+
"name": "EncryptedContent",
5197
+
"type": {
5198
+
"name": "OCTET STRING",
5199
+
"type": "builtin"
5200
+
}
5201
+
},
5202
+
"UnprotectedAttributes": {
5203
+
"name": "UnprotectedAttributes",
5204
+
"type": {
5205
+
"name": "SET",
5206
+
"type": "builtin",
5207
+
"typeOf": 1,
5208
+
"size": [
5209
+
1,
5210
+
"MAX"
5211
+
],
5212
+
"content": [
5213
+
{
5214
+
"name": "Attribute",
5215
+
"type": "defined"
5216
+
}
5217
+
]
5218
+
}
5219
+
},
5220
+
"RecipientInfo": {
5221
+
"name": "RecipientInfo",
5222
+
"type": {
5223
+
"name": "CHOICE",
5224
+
"type": "builtin",
5225
+
"content": [
5226
+
{
5227
+
"id": "ktri",
5228
+
"name": "KeyTransRecipientInfo",
5229
+
"type": "defined"
5230
+
},
5231
+
{
5232
+
"id": "kari",
5233
+
"name": "[1]",
5234
+
"type": "tag",
5235
+
"class": "CONTEXT",
5236
+
"explicit": false,
5237
+
"content": [
5238
+
{
5239
+
"name": "",
5240
+
"type": {
5241
+
"name": "KeyAgreeRecipientInfo",
5242
+
"type": "defined"
5243
+
}
5244
+
}
5245
+
]
5246
+
},
5247
+
{
5248
+
"id": "kekri",
5249
+
"name": "[2]",
5250
+
"type": "tag",
5251
+
"class": "CONTEXT",
5252
+
"explicit": false,
5253
+
"content": [
5254
+
{
5255
+
"name": "",
5256
+
"type": {
5257
+
"name": "KEKRecipientInfo",
5258
+
"type": "defined"
5259
+
}
5260
+
}
5261
+
]
5262
+
},
5263
+
{
5264
+
"id": "pwri",
5265
+
"name": "[3]",
5266
+
"type": "tag",
5267
+
"class": "CONTEXT",
5268
+
"explicit": false,
5269
+
"content": [
5270
+
{
5271
+
"name": "",
5272
+
"type": {
5273
+
"name": "PasswordRecipientInfo",
5274
+
"type": "defined"
5275
+
}
5276
+
}
5277
+
]
5278
+
},
5279
+
{
5280
+
"id": "ori",
5281
+
"name": "[4]",
5282
+
"type": "tag",
5283
+
"class": "CONTEXT",
5284
+
"explicit": false,
5285
+
"content": [
5286
+
{
5287
+
"name": "",
5288
+
"type": {
5289
+
"name": "OtherRecipientInfo",
5290
+
"type": "defined"
5291
+
}
5292
+
}
5293
+
]
5294
+
}
5295
+
]
5296
+
}
5297
+
},
5298
+
"EncryptedKey": {
5299
+
"name": "EncryptedKey",
5300
+
"type": {
5301
+
"name": "OCTET STRING",
5302
+
"type": "builtin"
5303
+
}
5304
+
},
5305
+
"KeyTransRecipientInfo": {
5306
+
"name": "KeyTransRecipientInfo",
5307
+
"type": {
5308
+
"name": "SEQUENCE",
5309
+
"type": "builtin",
5310
+
"content": [
5311
+
{
5312
+
"id": "version",
5313
+
"name": "CMSVersion",
5314
+
"type": "defined"
5315
+
},
5316
+
{
5317
+
"id": "rid",
5318
+
"name": "RecipientIdentifier",
5319
+
"type": "defined"
5320
+
},
5321
+
{
5322
+
"id": "keyEncryptionAlgorithm",
5323
+
"name": "KeyEncryptionAlgorithmIdentifier",
5324
+
"type": "defined"
5325
+
},
5326
+
{
5327
+
"id": "encryptedKey",
5328
+
"name": "EncryptedKey",
5329
+
"type": "defined"
5330
+
}
5331
+
]
5332
+
}
5333
+
},
5334
+
"RecipientIdentifier": {
5335
+
"name": "RecipientIdentifier",
5336
+
"type": {
5337
+
"name": "CHOICE",
5338
+
"type": "builtin",
5339
+
"content": [
5340
+
{
5341
+
"id": "issuerAndSerialNumber",
5342
+
"name": "IssuerAndSerialNumber",
5343
+
"type": "defined"
5344
+
},
5345
+
{
5346
+
"id": "subjectKeyIdentifier",
5347
+
"name": "[0]",
5348
+
"type": "tag",
5349
+
"class": "CONTEXT",
5350
+
"explicit": false,
5351
+
"content": [
5352
+
{
5353
+
"name": "",
5354
+
"type": {
5355
+
"name": "SubjectKeyIdentifier",
5356
+
"type": "defined"
5357
+
}
5358
+
}
5359
+
]
5360
+
}
5361
+
]
5362
+
}
5363
+
},
5364
+
"KeyAgreeRecipientInfo": {
5365
+
"name": "KeyAgreeRecipientInfo",
5366
+
"type": {
5367
+
"name": "SEQUENCE",
5368
+
"type": "builtin",
5369
+
"content": [
5370
+
{
5371
+
"id": "version",
5372
+
"name": "CMSVersion",
5373
+
"type": "defined"
5374
+
},
5375
+
{
5376
+
"id": "originator",
5377
+
"name": "[0]",
5378
+
"type": "tag",
5379
+
"class": "CONTEXT",
5380
+
"explicit": true,
5381
+
"content": [
5382
+
{
5383
+
"name": "",
5384
+
"type": {
5385
+
"name": "OriginatorIdentifierOrKey",
5386
+
"type": "defined"
5387
+
}
5388
+
}
5389
+
]
5390
+
},
5391
+
{
5392
+
"id": "ukm",
5393
+
"name": "[1]",
5394
+
"type": "tag",
5395
+
"class": "CONTEXT",
5396
+
"explicit": true,
5397
+
"content": [
5398
+
{
5399
+
"name": "",
5400
+
"type": {
5401
+
"name": "UserKeyingMaterial",
5402
+
"type": "defined"
5403
+
}
5404
+
}
5405
+
],
5406
+
"optional": true
5407
+
},
5408
+
{
5409
+
"id": "keyEncryptionAlgorithm",
5410
+
"name": "KeyEncryptionAlgorithmIdentifier",
5411
+
"type": "defined"
5412
+
},
5413
+
{
5414
+
"id": "recipientEncryptedKeys",
5415
+
"name": "RecipientEncryptedKeys",
5416
+
"type": "defined"
5417
+
}
5418
+
]
5419
+
}
5420
+
},
5421
+
"OriginatorIdentifierOrKey": {
5422
+
"name": "OriginatorIdentifierOrKey",
5423
+
"type": {
5424
+
"name": "CHOICE",
5425
+
"type": "builtin",
5426
+
"content": [
5427
+
{
5428
+
"id": "issuerAndSerialNumber",
5429
+
"name": "IssuerAndSerialNumber",
5430
+
"type": "defined"
5431
+
},
5432
+
{
5433
+
"id": "subjectKeyIdentifier",
5434
+
"name": "[0]",
5435
+
"type": "tag",
5436
+
"class": "CONTEXT",
5437
+
"explicit": false,
5438
+
"content": [
5439
+
{
5440
+
"name": "",
5441
+
"type": {
5442
+
"name": "SubjectKeyIdentifier",
5443
+
"type": "defined"
5444
+
}
5445
+
}
5446
+
]
5447
+
},
5448
+
{
5449
+
"id": "originatorKey",
5450
+
"name": "[1]",
5451
+
"type": "tag",
5452
+
"class": "CONTEXT",
5453
+
"explicit": false,
5454
+
"content": [
5455
+
{
5456
+
"name": "",
5457
+
"type": {
5458
+
"name": "OriginatorPublicKey",
5459
+
"type": "defined"
5460
+
}
5461
+
}
5462
+
]
5463
+
}
5464
+
]
5465
+
}
5466
+
},
5467
+
"OriginatorPublicKey": {
5468
+
"name": "OriginatorPublicKey",
5469
+
"type": {
5470
+
"name": "SEQUENCE",
5471
+
"type": "builtin",
5472
+
"content": [
5473
+
{
5474
+
"id": "algorithm",
5475
+
"name": "AlgorithmIdentifier",
5476
+
"type": "defined"
5477
+
},
5478
+
{
5479
+
"id": "publicKey",
5480
+
"name": "BIT STRING",
5481
+
"type": "builtin"
5482
+
}
5483
+
]
5484
+
}
5485
+
},
5486
+
"RecipientEncryptedKeys": {
5487
+
"name": "RecipientEncryptedKeys",
5488
+
"type": {
5489
+
"name": "SEQUENCE",
5490
+
"type": "builtin",
5491
+
"typeOf": 1,
5492
+
"content": [
5493
+
{
5494
+
"name": "RecipientEncryptedKey",
5495
+
"type": "defined"
5496
+
}
5497
+
]
5498
+
}
5499
+
},
5500
+
"RecipientEncryptedKey": {
5501
+
"name": "RecipientEncryptedKey",
5502
+
"type": {
5503
+
"name": "SEQUENCE",
5504
+
"type": "builtin",
5505
+
"content": [
5506
+
{
5507
+
"id": "rid",
5508
+
"name": "KeyAgreeRecipientIdentifier",
5509
+
"type": "defined"
5510
+
},
5511
+
{
5512
+
"id": "encryptedKey",
5513
+
"name": "EncryptedKey",
5514
+
"type": "defined"
5515
+
}
5516
+
]
5517
+
}
5518
+
},
5519
+
"KeyAgreeRecipientIdentifier": {
5520
+
"name": "KeyAgreeRecipientIdentifier",
5521
+
"type": {
5522
+
"name": "CHOICE",
5523
+
"type": "builtin",
5524
+
"content": [
5525
+
{
5526
+
"id": "issuerAndSerialNumber",
5527
+
"name": "IssuerAndSerialNumber",
5528
+
"type": "defined"
5529
+
},
5530
+
{
5531
+
"id": "rKeyId",
5532
+
"name": "[0]",
5533
+
"type": "tag",
5534
+
"class": "CONTEXT",
5535
+
"explicit": false,
5536
+
"content": [
5537
+
{
5538
+
"name": "",
5539
+
"type": {
5540
+
"name": "RecipientKeyIdentifier",
5541
+
"type": "defined"
5542
+
}
5543
+
}
5544
+
]
5545
+
}
5546
+
]
5547
+
}
5548
+
},
5549
+
"RecipientKeyIdentifier": {
5550
+
"name": "RecipientKeyIdentifier",
5551
+
"type": {
5552
+
"name": "SEQUENCE",
5553
+
"type": "builtin",
5554
+
"content": [
5555
+
{
5556
+
"id": "subjectKeyIdentifier",
5557
+
"name": "SubjectKeyIdentifier",
5558
+
"type": "defined"
5559
+
},
5560
+
{
5561
+
"id": "date",
5562
+
"name": "GeneralizedTime",
5563
+
"type": "builtin",
5564
+
"optional": true
5565
+
},
5566
+
{
5567
+
"id": "other",
5568
+
"name": "OtherKeyAttribute",
5569
+
"type": "defined",
5570
+
"optional": true
5571
+
}
5572
+
]
5573
+
}
5574
+
},
5575
+
"SubjectKeyIdentifier": {
5576
+
"name": "SubjectKeyIdentifier",
5577
+
"type": {
5578
+
"name": "OCTET STRING",
5579
+
"type": "builtin"
5580
+
}
5581
+
},
5582
+
"KEKRecipientInfo": {
5583
+
"name": "KEKRecipientInfo",
5584
+
"type": {
5585
+
"name": "SEQUENCE",
5586
+
"type": "builtin",
5587
+
"content": [
5588
+
{
5589
+
"id": "version",
5590
+
"name": "CMSVersion",
5591
+
"type": "defined"
5592
+
},
5593
+
{
5594
+
"id": "kekid",
5595
+
"name": "KEKIdentifier",
5596
+
"type": "defined"
5597
+
},
5598
+
{
5599
+
"id": "keyEncryptionAlgorithm",
5600
+
"name": "KeyEncryptionAlgorithmIdentifier",
5601
+
"type": "defined"
5602
+
},
5603
+
{
5604
+
"id": "encryptedKey",
5605
+
"name": "EncryptedKey",
5606
+
"type": "defined"
5607
+
}
5608
+
]
5609
+
}
5610
+
},
5611
+
"KEKIdentifier": {
5612
+
"name": "KEKIdentifier",
5613
+
"type": {
5614
+
"name": "SEQUENCE",
5615
+
"type": "builtin",
5616
+
"content": [
5617
+
{
5618
+
"id": "keyIdentifier",
5619
+
"name": "OCTET STRING",
5620
+
"type": "builtin"
5621
+
},
5622
+
{
5623
+
"id": "date",
5624
+
"name": "GeneralizedTime",
5625
+
"type": "builtin",
5626
+
"optional": true
5627
+
},
5628
+
{
5629
+
"id": "other",
5630
+
"name": "OtherKeyAttribute",
5631
+
"type": "defined",
5632
+
"optional": true
5633
+
}
5634
+
]
5635
+
}
5636
+
},
5637
+
"PasswordRecipientInfo": {
5638
+
"name": "PasswordRecipientInfo",
5639
+
"type": {
5640
+
"name": "SEQUENCE",
5641
+
"type": "builtin",
5642
+
"content": [
5643
+
{
5644
+
"id": "version",
5645
+
"name": "CMSVersion",
5646
+
"type": "defined"
5647
+
},
5648
+
{
5649
+
"id": "keyDerivationAlgorithm",
5650
+
"name": "[0]",
5651
+
"type": "tag",
5652
+
"class": "CONTEXT",
5653
+
"explicit": false,
5654
+
"content": [
5655
+
{
5656
+
"name": "",
5657
+
"type": {
5658
+
"name": "KeyDerivationAlgorithmIdentifier",
5659
+
"type": "defined"
5660
+
}
5661
+
}
5662
+
],
5663
+
"optional": true
5664
+
},
5665
+
{
5666
+
"id": "keyEncryptionAlgorithm",
5667
+
"name": "KeyEncryptionAlgorithmIdentifier",
5668
+
"type": "defined"
5669
+
},
5670
+
{
5671
+
"id": "encryptedKey",
5672
+
"name": "EncryptedKey",
5673
+
"type": "defined"
5674
+
}
5675
+
]
5676
+
}
5677
+
},
5678
+
"OtherRecipientInfo": {
5679
+
"name": "OtherRecipientInfo",
5680
+
"type": {
5681
+
"name": "SEQUENCE",
5682
+
"type": "builtin",
5683
+
"content": [
5684
+
{
5685
+
"id": "oriType",
5686
+
"name": "OBJECT IDENTIFIER",
5687
+
"type": "builtin"
5688
+
},
5689
+
{
5690
+
"id": "oriValue",
5691
+
"name": "ANY",
5692
+
"type": "builtin",
5693
+
"definedBy": "oriType"
5694
+
}
5695
+
]
5696
+
}
5697
+
},
5698
+
"DigestedData": {
5699
+
"name": "DigestedData",
5700
+
"type": {
5701
+
"name": "SEQUENCE",
5702
+
"type": "builtin",
5703
+
"content": [
5704
+
{
5705
+
"id": "version",
5706
+
"name": "CMSVersion",
5707
+
"type": "defined"
5708
+
},
5709
+
{
5710
+
"id": "digestAlgorithm",
5711
+
"name": "DigestAlgorithmIdentifier",
5712
+
"type": "defined"
5713
+
},
5714
+
{
5715
+
"id": "encapContentInfo",
5716
+
"name": "EncapsulatedContentInfo",
5717
+
"type": "defined"
5718
+
},
5719
+
{
5720
+
"id": "digest",
5721
+
"name": "Digest",
5722
+
"type": "defined"
5723
+
}
5724
+
]
5725
+
}
5726
+
},
5727
+
"Digest": {
5728
+
"name": "Digest",
5729
+
"type": {
5730
+
"name": "OCTET STRING",
5731
+
"type": "builtin"
5732
+
}
5733
+
},
5734
+
"EncryptedData": {
5735
+
"name": "EncryptedData",
5736
+
"type": {
5737
+
"name": "SEQUENCE",
5738
+
"type": "builtin",
5739
+
"content": [
5740
+
{
5741
+
"id": "version",
5742
+
"name": "CMSVersion",
5743
+
"type": "defined"
5744
+
},
5745
+
{
5746
+
"id": "encryptedContentInfo",
5747
+
"name": "EncryptedContentInfo",
5748
+
"type": "defined"
5749
+
},
5750
+
{
5751
+
"id": "unprotectedAttrs",
5752
+
"name": "[1]",
5753
+
"type": "tag",
5754
+
"class": "CONTEXT",
5755
+
"explicit": false,
5756
+
"content": [
5757
+
{
5758
+
"name": "",
5759
+
"type": {
5760
+
"name": "UnprotectedAttributes",
5761
+
"type": "defined"
5762
+
}
5763
+
}
5764
+
],
5765
+
"optional": true
5766
+
}
5767
+
]
5768
+
}
5769
+
},
5770
+
"AuthenticatedData": {
5771
+
"name": "AuthenticatedData",
5772
+
"type": {
5773
+
"name": "SEQUENCE",
5774
+
"type": "builtin",
5775
+
"content": [
5776
+
{
5777
+
"id": "version",
5778
+
"name": "CMSVersion",
5779
+
"type": "defined"
5780
+
},
5781
+
{
5782
+
"id": "originatorInfo",
5783
+
"name": "[0]",
5784
+
"type": "tag",
5785
+
"class": "CONTEXT",
5786
+
"explicit": false,
5787
+
"content": [
5788
+
{
5789
+
"name": "",
5790
+
"type": {
5791
+
"name": "OriginatorInfo",
5792
+
"type": "defined"
5793
+
}
5794
+
}
5795
+
],
5796
+
"optional": true
5797
+
},
5798
+
{
5799
+
"id": "recipientInfos",
5800
+
"name": "RecipientInfos",
5801
+
"type": "defined"
5802
+
},
5803
+
{
5804
+
"id": "macAlgorithm",
5805
+
"name": "MessageAuthenticationCodeAlgorithm",
5806
+
"type": "defined"
5807
+
},
5808
+
{
5809
+
"id": "digestAlgorithm",
5810
+
"name": "[1]",
5811
+
"type": "tag",
5812
+
"class": "CONTEXT",
5813
+
"explicit": false,
5814
+
"content": [
5815
+
{
5816
+
"name": "",
5817
+
"type": {
5818
+
"name": "DigestAlgorithmIdentifier",
5819
+
"type": "defined"
5820
+
}
5821
+
}
5822
+
],
5823
+
"optional": true
5824
+
},
5825
+
{
5826
+
"id": "encapContentInfo",
5827
+
"name": "EncapsulatedContentInfo",
5828
+
"type": "defined"
5829
+
},
5830
+
{
5831
+
"id": "authAttrs",
5832
+
"name": "[2]",
5833
+
"type": "tag",
5834
+
"class": "CONTEXT",
5835
+
"explicit": false,
5836
+
"content": [
5837
+
{
5838
+
"name": "",
5839
+
"type": {
5840
+
"name": "AuthAttributes",
5841
+
"type": "defined"
5842
+
}
5843
+
}
5844
+
],
5845
+
"optional": true
5846
+
},
5847
+
{
5848
+
"id": "mac",
5849
+
"name": "MessageAuthenticationCode",
5850
+
"type": "defined"
5851
+
},
5852
+
{
5853
+
"id": "unauthAttrs",
5854
+
"name": "[3]",
5855
+
"type": "tag",
5856
+
"class": "CONTEXT",
5857
+
"explicit": false,
5858
+
"content": [
5859
+
{
5860
+
"name": "",
5861
+
"type": {
5862
+
"name": "UnauthAttributes",
5863
+
"type": "defined"
5864
+
}
5865
+
}
5866
+
],
5867
+
"optional": true
5868
+
}
5869
+
]
5870
+
}
5871
+
},
5872
+
"AuthAttributes": {
5873
+
"name": "AuthAttributes",
5874
+
"type": {
5875
+
"name": "SET",
5876
+
"type": "builtin",
5877
+
"typeOf": 1,
5878
+
"size": [
5879
+
1,
5880
+
"MAX"
5881
+
],
5882
+
"content": [
5883
+
{
5884
+
"name": "Attribute",
5885
+
"type": "defined"
5886
+
}
5887
+
]
5888
+
}
5889
+
},
5890
+
"UnauthAttributes": {
5891
+
"name": "UnauthAttributes",
5892
+
"type": {
5893
+
"name": "SET",
5894
+
"type": "builtin",
5895
+
"typeOf": 1,
5896
+
"size": [
5897
+
1,
5898
+
"MAX"
5899
+
],
5900
+
"content": [
5901
+
{
5902
+
"name": "Attribute",
5903
+
"type": "defined"
5904
+
}
5905
+
]
5906
+
}
5907
+
},
5908
+
"MessageAuthenticationCode": {
5909
+
"name": "MessageAuthenticationCode",
5910
+
"type": {
5911
+
"name": "OCTET STRING",
5912
+
"type": "builtin"
5913
+
}
5914
+
},
5915
+
"DigestAlgorithmIdentifier": {
5916
+
"name": "DigestAlgorithmIdentifier",
5917
+
"type": {
5918
+
"name": "AlgorithmIdentifier",
5919
+
"type": "defined"
5920
+
}
5921
+
},
5922
+
"SignatureAlgorithmIdentifier": {
5923
+
"name": "SignatureAlgorithmIdentifier",
5924
+
"type": {
5925
+
"name": "AlgorithmIdentifier",
5926
+
"type": "defined"
5927
+
}
5928
+
},
5929
+
"KeyEncryptionAlgorithmIdentifier": {
5930
+
"name": "KeyEncryptionAlgorithmIdentifier",
5931
+
"type": {
5932
+
"name": "AlgorithmIdentifier",
5933
+
"type": "defined"
5934
+
}
5935
+
},
5936
+
"ContentEncryptionAlgorithmIdentifier": {
5937
+
"name": "ContentEncryptionAlgorithmIdentifier",
5938
+
"type": {
5939
+
"name": "AlgorithmIdentifier",
5940
+
"type": "defined"
5941
+
}
5942
+
},
5943
+
"MessageAuthenticationCodeAlgorithm": {
5944
+
"name": "MessageAuthenticationCodeAlgorithm",
5945
+
"type": {
5946
+
"name": "AlgorithmIdentifier",
5947
+
"type": "defined"
5948
+
}
5949
+
},
5950
+
"KeyDerivationAlgorithmIdentifier": {
5951
+
"name": "KeyDerivationAlgorithmIdentifier",
5952
+
"type": {
5953
+
"name": "AlgorithmIdentifier",
5954
+
"type": "defined"
5955
+
}
5956
+
},
5957
+
"CertificateRevocationLists": {
5958
+
"name": "CertificateRevocationLists",
5959
+
"type": {
5960
+
"name": "SET",
5961
+
"type": "builtin",
5962
+
"typeOf": 1,
5963
+
"content": [
5964
+
{
5965
+
"name": "CertificateList",
5966
+
"type": "defined"
5967
+
}
5968
+
]
5969
+
}
5970
+
},
5971
+
"CertificateChoices": {
5972
+
"name": "CertificateChoices",
5973
+
"type": {
5974
+
"name": "CHOICE",
5975
+
"type": "builtin",
5976
+
"content": [
5977
+
{
5978
+
"id": "certificate",
5979
+
"name": "Certificate",
5980
+
"type": "defined"
5981
+
},
5982
+
{
5983
+
"id": "extendedCertificate",
5984
+
"name": "[0]",
5985
+
"type": "tag",
5986
+
"class": "CONTEXT",
5987
+
"explicit": false,
5988
+
"content": [
5989
+
{
5990
+
"name": "",
5991
+
"type": {
5992
+
"name": "ExtendedCertificate",
5993
+
"type": "defined"
5994
+
}
5995
+
}
5996
+
]
5997
+
},
5998
+
{
5999
+
"id": "v1AttrCert",
6000
+
"name": "[1]",
6001
+
"type": "tag",
6002
+
"class": "CONTEXT",
6003
+
"explicit": false,
6004
+
"content": [
6005
+
{
6006
+
"name": "",
6007
+
"type": {
6008
+
"name": "AttributeCertificateV1",
6009
+
"type": "defined"
6010
+
}
6011
+
}
6012
+
]
6013
+
},
6014
+
{
6015
+
"id": "v2AttrCert",
6016
+
"name": "[2]",
6017
+
"type": "tag",
6018
+
"class": "CONTEXT",
6019
+
"explicit": false,
6020
+
"content": [
6021
+
{
6022
+
"name": "",
6023
+
"type": {
6024
+
"name": "AttributeCertificateV2",
6025
+
"type": "defined"
6026
+
}
6027
+
}
6028
+
]
6029
+
}
6030
+
]
6031
+
}
6032
+
},
6033
+
"AttributeCertificateV2": {
6034
+
"name": "AttributeCertificateV2",
6035
+
"type": {
6036
+
"name": "AttributeCertificate",
6037
+
"type": "defined"
6038
+
}
6039
+
},
6040
+
"CertificateSet": {
6041
+
"name": "CertificateSet",
6042
+
"type": {
6043
+
"name": "SET",
6044
+
"type": "builtin",
6045
+
"typeOf": 1,
6046
+
"content": [
6047
+
{
6048
+
"name": "CertificateChoices",
6049
+
"type": "defined"
6050
+
}
6051
+
]
6052
+
}
6053
+
},
6054
+
"IssuerAndSerialNumber": {
6055
+
"name": "IssuerAndSerialNumber",
6056
+
"type": {
6057
+
"name": "SEQUENCE",
6058
+
"type": "builtin",
6059
+
"content": [
6060
+
{
6061
+
"id": "issuer",
6062
+
"name": "Name",
6063
+
"type": "defined"
6064
+
},
6065
+
{
6066
+
"id": "serialNumber",
6067
+
"name": "CertificateSerialNumber",
6068
+
"type": "defined"
6069
+
}
6070
+
]
6071
+
}
6072
+
},
6073
+
"CMSVersion": {
6074
+
"name": "CMSVersion",
6075
+
"type": {
6076
+
"name": "INTEGER",
6077
+
"type": "builtin",
6078
+
"content": {
6079
+
"v0": 0,
6080
+
"v1": 1,
6081
+
"v2": 2,
6082
+
"v3": 3,
6083
+
"v4": 4
6084
+
}
6085
+
}
6086
+
},
6087
+
"UserKeyingMaterial": {
6088
+
"name": "UserKeyingMaterial",
6089
+
"type": {
6090
+
"name": "OCTET STRING",
6091
+
"type": "builtin"
6092
+
}
6093
+
},
6094
+
"OtherKeyAttribute": {
6095
+
"name": "OtherKeyAttribute",
6096
+
"type": {
6097
+
"name": "SEQUENCE",
6098
+
"type": "builtin",
6099
+
"content": [
6100
+
{
6101
+
"id": "keyAttrId",
6102
+
"name": "OBJECT IDENTIFIER",
6103
+
"type": "builtin"
6104
+
},
6105
+
{
6106
+
"id": "keyAttr",
6107
+
"name": "ANY",
6108
+
"type": "builtin",
6109
+
"definedBy": "keyAttrId",
6110
+
"optional": true
6111
+
}
6112
+
]
6113
+
}
6114
+
},
6115
+
"MessageDigest": {
6116
+
"name": "MessageDigest",
6117
+
"type": {
6118
+
"name": "OCTET STRING",
6119
+
"type": "builtin"
6120
+
}
6121
+
},
6122
+
"SigningTime": {
6123
+
"name": "SigningTime",
6124
+
"type": {
6125
+
"name": "Time",
6126
+
"type": "defined"
6127
+
}
6128
+
},
6129
+
"Time": {
6130
+
"name": "Time",
6131
+
"type": {
6132
+
"name": "CHOICE",
6133
+
"type": "builtin",
6134
+
"content": [
6135
+
{
6136
+
"id": "utcTime",
6137
+
"name": "UTCTime",
6138
+
"type": "builtin"
6139
+
},
6140
+
{
6141
+
"id": "generalTime",
6142
+
"name": "GeneralizedTime",
6143
+
"type": "builtin"
6144
+
}
6145
+
]
6146
+
}
6147
+
},
6148
+
"Countersignature": {
6149
+
"name": "Countersignature",
6150
+
"type": {
6151
+
"name": "SignerInfo",
6152
+
"type": "defined"
6153
+
}
6154
+
},
6155
+
"ExtendedCertificateOrCertificate": {
6156
+
"name": "ExtendedCertificateOrCertificate",
6157
+
"type": {
6158
+
"name": "CHOICE",
6159
+
"type": "builtin",
6160
+
"content": [
6161
+
{
6162
+
"id": "certificate",
6163
+
"name": "Certificate",
6164
+
"type": "defined"
6165
+
},
6166
+
{
6167
+
"id": "extendedCertificate",
6168
+
"name": "[0]",
6169
+
"type": "tag",
6170
+
"class": "CONTEXT",
6171
+
"explicit": false,
6172
+
"content": [
6173
+
{
6174
+
"name": "",
6175
+
"type": {
6176
+
"name": "ExtendedCertificate",
6177
+
"type": "defined"
6178
+
}
6179
+
}
6180
+
]
6181
+
}
6182
+
]
6183
+
}
6184
+
},
6185
+
"ExtendedCertificate": {
6186
+
"name": "ExtendedCertificate",
6187
+
"type": {
6188
+
"name": "SEQUENCE",
6189
+
"type": "builtin",
6190
+
"content": [
6191
+
{
6192
+
"id": "extendedCertificateInfo",
6193
+
"name": "ExtendedCertificateInfo",
6194
+
"type": "defined"
6195
+
},
6196
+
{
6197
+
"id": "signatureAlgorithm",
6198
+
"name": "SignatureAlgorithmIdentifier",
6199
+
"type": "defined"
6200
+
},
6201
+
{
6202
+
"id": "signature",
6203
+
"name": "Signature",
6204
+
"type": "defined"
6205
+
}
6206
+
]
6207
+
}
6208
+
},
6209
+
"ExtendedCertificateInfo": {
6210
+
"name": "ExtendedCertificateInfo",
6211
+
"type": {
6212
+
"name": "SEQUENCE",
6213
+
"type": "builtin",
6214
+
"content": [
6215
+
{
6216
+
"id": "version",
6217
+
"name": "CMSVersion",
6218
+
"type": "defined"
6219
+
},
6220
+
{
6221
+
"id": "certificate",
6222
+
"name": "Certificate",
6223
+
"type": "defined"
6224
+
},
6225
+
{
6226
+
"id": "attributes",
6227
+
"name": "UnauthAttributes",
6228
+
"type": "defined"
6229
+
}
6230
+
]
6231
+
}
6232
+
},
6233
+
"Signature": {
6234
+
"name": "Signature",
6235
+
"type": {
6236
+
"name": "BIT STRING",
6237
+
"type": "builtin"
6238
+
}
6239
+
}
6240
+
}
6241
+
},
6242
+
"1.2.840.113549.1.9.16.0.15": {
6243
+
"name": "AttributeCertificateVersion1",
6244
+
"oid": "1.2.840.113549.1.9.16.0.15",
6245
+
"source": "rfc3369.txt",
6246
+
"tagDefault": "IMPLICIT",
6247
+
"imports": {
6248
+
"1.3.6.1.5.5.7.0.18": {
6249
+
"name": "PKIX1Explicit88",
6250
+
"oid": "1.3.6.1.5.5.7.0.18",
6251
+
"types": [
6252
+
"AlgorithmIdentifier",
6253
+
"Attribute",
6254
+
"CertificateSerialNumber",
6255
+
"Extensions",
6256
+
"UniqueIdentifier"
6257
+
]
6258
+
},
6259
+
"1.3.6.1.5.5.7.0.19": {
6260
+
"name": "PKIX1Implicit88",
6261
+
"oid": "1.3.6.1.5.5.7.0.19",
6262
+
"types": [
6263
+
"GeneralNames"
6264
+
]
6265
+
},
6266
+
"1.3.6.1.5.5.7.0.12": {
6267
+
"name": "PKIXAttributeCertificate",
6268
+
"oid": "1.3.6.1.5.5.7.0.12",
6269
+
"types": [
6270
+
"AttCertValidityPeriod",
6271
+
"IssuerSerial"
6272
+
]
6273
+
}
6274
+
},
6275
+
"values": {},
6276
+
"types": {
6277
+
"AttributeCertificateV1": {
6278
+
"name": "AttributeCertificateV1",
6279
+
"type": {
6280
+
"name": "SEQUENCE",
6281
+
"type": "builtin",
6282
+
"content": [
6283
+
{
6284
+
"id": "acInfo",
6285
+
"name": "AttributeCertificateInfoV1",
6286
+
"type": "defined"
6287
+
},
6288
+
{
6289
+
"id": "signatureAlgorithm",
6290
+
"name": "AlgorithmIdentifier",
6291
+
"type": "defined"
6292
+
},
6293
+
{
6294
+
"id": "signature",
6295
+
"name": "BIT STRING",
6296
+
"type": "builtin"
6297
+
}
6298
+
]
6299
+
}
6300
+
},
6301
+
"AttributeCertificateInfoV1": {
6302
+
"name": "AttributeCertificateInfoV1",
6303
+
"type": {
6304
+
"name": "SEQUENCE",
6305
+
"type": "builtin",
6306
+
"content": [
6307
+
{
6308
+
"id": "version",
6309
+
"name": "AttCertVersionV1",
6310
+
"type": "defined",
6311
+
"default": "v1"
6312
+
},
6313
+
{
6314
+
"id": "subject",
6315
+
"name": "CHOICE",
6316
+
"type": "builtin",
6317
+
"content": [
6318
+
{
6319
+
"id": "baseCertificateID",
6320
+
"name": "[0]",
6321
+
"type": "tag",
6322
+
"class": "CONTEXT",
6323
+
"explicit": false,
6324
+
"content": [
6325
+
{
6326
+
"name": "",
6327
+
"type": {
6328
+
"name": "IssuerSerial",
6329
+
"type": "defined"
6330
+
}
6331
+
}
6332
+
]
6333
+
},
6334
+
{
6335
+
"id": "subjectName",
6336
+
"name": "[1]",
6337
+
"type": "tag",
6338
+
"class": "CONTEXT",
6339
+
"explicit": false,
6340
+
"content": [
6341
+
{
6342
+
"name": "",
6343
+
"type": {
6344
+
"name": "GeneralNames",
6345
+
"type": "defined"
6346
+
}
6347
+
}
6348
+
]
6349
+
}
6350
+
]
6351
+
},
6352
+
{
6353
+
"id": "issuer",
6354
+
"name": "GeneralNames",
6355
+
"type": "defined"
6356
+
},
6357
+
{
6358
+
"id": "signature",
6359
+
"name": "AlgorithmIdentifier",
6360
+
"type": "defined"
6361
+
},
6362
+
{
6363
+
"id": "serialNumber",
6364
+
"name": "CertificateSerialNumber",
6365
+
"type": "defined"
6366
+
},
6367
+
{
6368
+
"id": "attCertValidityPeriod",
6369
+
"name": "AttCertValidityPeriod",
6370
+
"type": "defined"
6371
+
},
6372
+
{
6373
+
"id": "attributes",
6374
+
"name": "SEQUENCE",
6375
+
"type": "builtin",
6376
+
"typeOf": 1,
6377
+
"content": [
6378
+
{
6379
+
"name": "Attribute",
6380
+
"type": "defined"
6381
+
}
6382
+
]
6383
+
},
6384
+
{
6385
+
"id": "issuerUniqueID",
6386
+
"name": "UniqueIdentifier",
6387
+
"type": "defined",
6388
+
"optional": true
6389
+
},
6390
+
{
6391
+
"id": "extensions",
6392
+
"name": "Extensions",
6393
+
"type": "defined",
6394
+
"optional": true
6395
+
}
6396
+
]
6397
+
}
6398
+
},
6399
+
"AttCertVersionV1": {
6400
+
"name": "AttCertVersionV1",
6401
+
"type": {
6402
+
"name": "INTEGER",
6403
+
"type": "builtin",
6404
+
"content": {
6405
+
"v1": 0
6406
+
}
6407
+
}
6408
+
}
6409
+
}
6410
+
},
6411
+
"1.3.6.1.5.5.7.0.13": {
6412
+
"name": "PKIXTSP",
6413
+
"oid": "1.3.6.1.5.5.7.0.13",
6414
+
"source": "rfc3161.txt",
6415
+
"tagDefault": "IMPLICIT",
6416
+
"imports": {
6417
+
"1.3.6.1.5.5.7.0.1": {
6418
+
"name": "PKIX1Explicit88",
6419
+
"oid": "1.3.6.1.5.5.7.0.1",
6420
+
"types": [
6421
+
"Extensions",
6422
+
"AlgorithmIdentifier"
6423
+
]
6424
+
},
6425
+
"1.3.6.1.5.5.7.0.2": {
6426
+
"name": "PKIX1Implicit88",
6427
+
"oid": "1.3.6.1.5.5.7.0.2",
6428
+
"types": [
6429
+
"GeneralName"
6430
+
]
6431
+
},
6432
+
"1.2.840.113549.1.9.16.0.1": {
6433
+
"name": "CryptographicMessageSyntax",
6434
+
"oid": "1.2.840.113549.1.9.16.0.1",
6435
+
"types": [
6436
+
"ContentInfo"
6437
+
]
6438
+
},
6439
+
"1.3.6.1.5.5.7.0.9": {
6440
+
"name": "PKIXCMP",
6441
+
"oid": "1.3.6.1.5.5.7.0.9",
6442
+
"types": [
6443
+
"PKIFreeText"
6444
+
]
6445
+
}
6446
+
},
6447
+
"values": {
6448
+
"id-ct-TSTInfo": {
6449
+
"name": "id-ct-TSTInfo",
6450
+
"type": {
6451
+
"name": "OBJECT IDENTIFIER",
6452
+
"type": "builtin"
6453
+
},
6454
+
"value": "1.2.840.113549.1.9.16.1.4"
6455
+
}
6456
+
},
6457
+
"types": {
6458
+
"TimeStampReq": {
6459
+
"name": "TimeStampReq",
6460
+
"type": {
6461
+
"name": "SEQUENCE",
6462
+
"type": "builtin",
6463
+
"content": [
6464
+
{
6465
+
"id": "version",
6466
+
"name": "INTEGER",
6467
+
"type": "builtin",
6468
+
"content": {
6469
+
"v1": 1
6470
+
}
6471
+
},
6472
+
{
6473
+
"id": "messageImprint",
6474
+
"name": "MessageImprint",
6475
+
"type": "defined"
6476
+
},
6477
+
{
6478
+
"id": "reqPolicy",
6479
+
"name": "TSAPolicyId",
6480
+
"type": "defined",
6481
+
"optional": true
6482
+
},
6483
+
{
6484
+
"id": "nonce",
6485
+
"name": "INTEGER",
6486
+
"type": "builtin",
6487
+
"optional": true
6488
+
},
6489
+
{
6490
+
"id": "certReq",
6491
+
"name": "BOOLEAN",
6492
+
"type": "builtin",
6493
+
"default": false
6494
+
},
6495
+
{
6496
+
"id": "extensions",
6497
+
"name": "[0]",
6498
+
"type": "tag",
6499
+
"class": "CONTEXT",
6500
+
"explicit": false,
6501
+
"content": [
6502
+
{
6503
+
"name": "",
6504
+
"type": {
6505
+
"name": "Extensions",
6506
+
"type": "defined"
6507
+
}
6508
+
}
6509
+
],
6510
+
"optional": true
6511
+
}
6512
+
]
6513
+
}
6514
+
},
6515
+
"MessageImprint": {
6516
+
"name": "MessageImprint",
6517
+
"type": {
6518
+
"name": "SEQUENCE",
6519
+
"type": "builtin",
6520
+
"content": [
6521
+
{
6522
+
"id": "hashAlgorithm",
6523
+
"name": "AlgorithmIdentifier",
6524
+
"type": "defined"
6525
+
},
6526
+
{
6527
+
"id": "hashedMessage",
6528
+
"name": "OCTET STRING",
6529
+
"type": "builtin"
6530
+
}
6531
+
]
6532
+
}
6533
+
},
6534
+
"TSAPolicyId": {
6535
+
"name": "TSAPolicyId",
6536
+
"type": {
6537
+
"name": "OBJECT IDENTIFIER",
6538
+
"type": "builtin"
6539
+
}
6540
+
},
6541
+
"TimeStampResp": {
6542
+
"name": "TimeStampResp",
6543
+
"type": {
6544
+
"name": "SEQUENCE",
6545
+
"type": "builtin",
6546
+
"content": [
6547
+
{
6548
+
"id": "status",
6549
+
"name": "PKIStatusInfo",
6550
+
"type": "defined"
6551
+
},
6552
+
{
6553
+
"id": "timeStampToken",
6554
+
"name": "TimeStampToken",
6555
+
"type": "defined",
6556
+
"optional": true
6557
+
}
6558
+
]
6559
+
}
6560
+
},
6561
+
"PKIStatusInfo": {
6562
+
"name": "PKIStatusInfo",
6563
+
"type": {
6564
+
"name": "SEQUENCE",
6565
+
"type": "builtin",
6566
+
"content": [
6567
+
{
6568
+
"id": "status",
6569
+
"name": "PKIStatus",
6570
+
"type": "defined"
6571
+
},
6572
+
{
6573
+
"id": "statusString",
6574
+
"name": "PKIFreeText",
6575
+
"type": "defined",
6576
+
"optional": true
6577
+
},
6578
+
{
6579
+
"id": "failInfo",
6580
+
"name": "PKIFailureInfo",
6581
+
"type": "defined",
6582
+
"optional": true
6583
+
}
6584
+
]
6585
+
}
6586
+
},
6587
+
"PKIStatus": {
6588
+
"name": "PKIStatus",
6589
+
"type": {
6590
+
"name": "INTEGER",
6591
+
"type": "builtin",
6592
+
"content": {
6593
+
"granted": 0,
6594
+
"grantedWithMods": 1,
6595
+
"rejection": 2,
6596
+
"waiting": 3,
6597
+
"revocationWarning": 4,
6598
+
"revocationNotification": 5
6599
+
}
6600
+
}
6601
+
},
6602
+
"PKIFailureInfo": {
6603
+
"name": "PKIFailureInfo",
6604
+
"type": {
6605
+
"name": "BIT STRING",
6606
+
"type": "builtin",
6607
+
"content": {
6608
+
"badAlg": 0,
6609
+
"badRequest": 2,
6610
+
"badDataFormat": 5,
6611
+
"timeNotAvailable": 14,
6612
+
"unacceptedPolicy": 15,
6613
+
"unacceptedExtension": 16,
6614
+
"addInfoNotAvailable": 17,
6615
+
"systemFailure": 25
6616
+
}
6617
+
}
6618
+
},
6619
+
"TimeStampToken": {
6620
+
"name": "TimeStampToken",
6621
+
"type": {
6622
+
"name": "ContentInfo",
6623
+
"type": "defined"
6624
+
}
6625
+
},
6626
+
"TSTInfo": {
6627
+
"name": "TSTInfo",
6628
+
"type": {
6629
+
"name": "SEQUENCE",
6630
+
"type": "builtin",
6631
+
"content": [
6632
+
{
6633
+
"id": "version",
6634
+
"name": "INTEGER",
6635
+
"type": "builtin",
6636
+
"content": {
6637
+
"v1": 1
6638
+
}
6639
+
},
6640
+
{
6641
+
"id": "policy",
6642
+
"name": "TSAPolicyId",
6643
+
"type": "defined"
6644
+
},
6645
+
{
6646
+
"id": "messageImprint",
6647
+
"name": "MessageImprint",
6648
+
"type": "defined"
6649
+
},
6650
+
{
6651
+
"id": "serialNumber",
6652
+
"name": "INTEGER",
6653
+
"type": "builtin"
6654
+
},
6655
+
{
6656
+
"id": "genTime",
6657
+
"name": "GeneralizedTime",
6658
+
"type": "builtin"
6659
+
},
6660
+
{
6661
+
"id": "accuracy",
6662
+
"name": "Accuracy",
6663
+
"type": "defined",
6664
+
"optional": true
6665
+
},
6666
+
{
6667
+
"id": "ordering",
6668
+
"name": "BOOLEAN",
6669
+
"type": "builtin",
6670
+
"default": false
6671
+
},
6672
+
{
6673
+
"id": "nonce",
6674
+
"name": "INTEGER",
6675
+
"type": "builtin",
6676
+
"optional": true
6677
+
},
6678
+
{
6679
+
"id": "tsa",
6680
+
"name": "[0]",
6681
+
"type": "tag",
6682
+
"class": "CONTEXT",
6683
+
"explicit": false,
6684
+
"content": [
6685
+
{
6686
+
"name": "",
6687
+
"type": {
6688
+
"name": "GeneralName",
6689
+
"type": "defined"
6690
+
}
6691
+
}
6692
+
],
6693
+
"optional": true
6694
+
},
6695
+
{
6696
+
"id": "extensions",
6697
+
"name": "[1]",
6698
+
"type": "tag",
6699
+
"class": "CONTEXT",
6700
+
"explicit": false,
6701
+
"content": [
6702
+
{
6703
+
"name": "",
6704
+
"type": {
6705
+
"name": "Extensions",
6706
+
"type": "defined"
6707
+
}
6708
+
}
6709
+
],
6710
+
"optional": true
6711
+
}
6712
+
]
6713
+
}
6714
+
},
6715
+
"Accuracy": {
6716
+
"name": "Accuracy",
6717
+
"type": {
6718
+
"name": "SEQUENCE",
6719
+
"type": "builtin",
6720
+
"content": [
6721
+
{
6722
+
"id": "seconds",
6723
+
"name": "INTEGER",
6724
+
"type": "builtin",
6725
+
"optional": true
6726
+
},
6727
+
{
6728
+
"id": "millis",
6729
+
"name": "[0]",
6730
+
"type": "tag",
6731
+
"class": "CONTEXT",
6732
+
"explicit": false,
6733
+
"content": [
6734
+
{
6735
+
"name": "",
6736
+
"type": {
6737
+
"name": "INTEGER",
6738
+
"type": "builtin",
6739
+
"range": [
6740
+
1,
6741
+
999
6742
+
]
6743
+
}
6744
+
}
6745
+
],
6746
+
"optional": true
6747
+
},
6748
+
{
6749
+
"id": "micros",
6750
+
"name": "[1]",
6751
+
"type": "tag",
6752
+
"class": "CONTEXT",
6753
+
"explicit": false,
6754
+
"content": [
6755
+
{
6756
+
"name": "",
6757
+
"type": {
6758
+
"name": "INTEGER",
6759
+
"type": "builtin",
6760
+
"range": [
6761
+
1,
6762
+
999
6763
+
]
6764
+
}
6765
+
}
6766
+
],
6767
+
"optional": true
6768
+
}
6769
+
]
6770
+
}
6771
+
}
6772
+
}
6773
+
},
6774
+
"1.2.840.113549.1.10.1.1": {
6775
+
"name": "PKCS-10",
6776
+
"oid": "1.2.840.113549.1.10.1.1",
6777
+
"source": "rfc2986.txt",
6778
+
"tagDefault": "IMPLICIT",
6779
+
"imports": {
6780
+
"2.5.1.0.3": {
6781
+
"name": "AuthenticationFramework",
6782
+
"oid": "2.5.1.0.3",
6783
+
"types": [
6784
+
"ALGORITHM"
6785
+
]
6786
+
}
6787
+
},
6788
+
"values": {},
6789
+
"types": {
6790
+
"CertificationRequestInfo": {
6791
+
"name": "CertificationRequestInfo",
6792
+
"type": {
6793
+
"name": "SEQUENCE",
6794
+
"type": "builtin",
6795
+
"content": [
6796
+
{
6797
+
"id": "version",
6798
+
"name": "INTEGER",
6799
+
"type": "builtin",
6800
+
"content": {
6801
+
"v1": 0
6802
+
}
6803
+
},
6804
+
{
6805
+
"id": "subject",
6806
+
"name": "Name",
6807
+
"type": "defined"
6808
+
},
6809
+
{
6810
+
"id": "subjectPKInfo",
6811
+
"name": "SubjectPublicKeyInfo",
6812
+
"type": "defined"
6813
+
},
6814
+
{
6815
+
"id": "attributes",
6816
+
"name": "[0]",
6817
+
"type": "tag",
6818
+
"class": "CONTEXT",
6819
+
"explicit": false,
6820
+
"content": [
6821
+
{
6822
+
"name": "",
6823
+
"type": {
6824
+
"name": "Attributes",
6825
+
"type": "defined"
6826
+
}
6827
+
}
6828
+
]
6829
+
}
6830
+
]
6831
+
}
6832
+
},
6833
+
"SubjectPublicKeyInfo": {
6834
+
"name": "SubjectPublicKeyInfo",
6835
+
"type": {
6836
+
"name": "SEQUENCE",
6837
+
"type": "builtin",
6838
+
"content": [
6839
+
{
6840
+
"id": "algorithm",
6841
+
"name": "AlgorithmIdentifier",
6842
+
"type": "defined"
6843
+
},
6844
+
{
6845
+
"id": "subjectPublicKey",
6846
+
"name": "BIT STRING",
6847
+
"type": "builtin"
6848
+
}
6849
+
]
6850
+
}
6851
+
},
6852
+
"Attributes": {
6853
+
"name": "Attributes",
6854
+
"type": {
6855
+
"name": "SET",
6856
+
"type": "builtin",
6857
+
"typeOf": 1,
6858
+
"content": [
6859
+
{
6860
+
"name": "Attribute",
6861
+
"type": "defined"
6862
+
}
6863
+
]
6864
+
}
6865
+
},
6866
+
"Attribute": {
6867
+
"name": "Attribute",
6868
+
"type": {
6869
+
"name": "SEQUENCE",
6870
+
"type": "builtin",
6871
+
"content": [
6872
+
{
6873
+
"id": "type",
6874
+
"name": "OBJECT IDENTIFIER",
6875
+
"type": "builtin"
6876
+
},
6877
+
{
6878
+
"id": "values",
6879
+
"name": "SET",
6880
+
"type": "builtin",
6881
+
"typeOf": 1,
6882
+
"size": [
6883
+
1,
6884
+
"MAX"
6885
+
],
6886
+
"content": [
6887
+
{
6888
+
"name": "ANY",
6889
+
"type": "builtin"
6890
+
}
6891
+
]
6892
+
}
6893
+
]
6894
+
}
6895
+
},
6896
+
"CertificationRequest": {
6897
+
"name": "CertificationRequest",
6898
+
"type": {
6899
+
"name": "SEQUENCE",
6900
+
"type": "builtin",
6901
+
"content": [
6902
+
{
6903
+
"id": "certificationRequestInfo",
6904
+
"name": "CertificationRequestInfo",
6905
+
"type": "defined"
6906
+
},
6907
+
{
6908
+
"id": "signatureAlgorithm",
6909
+
"name": "AlgorithmIdentifier",
6910
+
"type": "defined"
6911
+
},
6912
+
{
6913
+
"id": "signature",
6914
+
"name": "BIT STRING",
6915
+
"type": "builtin"
6916
+
}
6917
+
]
6918
+
}
6919
+
},
6920
+
"AlgorithmIdentifier": {
6921
+
"name": "AlgorithmIdentifier",
6922
+
"type": {
6923
+
"name": "SEQUENCE",
6924
+
"type": "builtin",
6925
+
"content": [
6926
+
{
6927
+
"id": "algorithm",
6928
+
"name": "OBJECT IDENTIFIER",
6929
+
"type": "builtin"
6930
+
},
6931
+
{
6932
+
"id": "parameters",
6933
+
"name": "ANY",
6934
+
"type": "builtin",
6935
+
"optional": true
6936
+
}
6937
+
]
6938
+
}
6939
+
}
6940
+
}
6941
+
},
6942
+
"1.3.6.1.5.5.7.0.36": {
6943
+
"name": "PKIXCRMF-2005",
6944
+
"oid": "1.3.6.1.5.5.7.0.36",
6945
+
"source": "rfc4211.txt",
6946
+
"tagDefault": "IMPLICIT",
6947
+
"imports": {
6948
+
"1.3.6.1.5.5.7.0.18": {
6949
+
"name": "PKIX1Explicit88",
6950
+
"oid": "1.3.6.1.5.5.7.0.18",
6951
+
"types": [
6952
+
"Version",
6953
+
"AlgorithmIdentifier",
6954
+
"Name",
6955
+
"Time",
6956
+
"SubjectPublicKeyInfo",
6957
+
"Extensions",
6958
+
"UniqueIdentifier",
6959
+
"Attribute"
6960
+
]
6961
+
},
6962
+
"1.3.6.1.5.5.7.0.19": {
6963
+
"name": "PKIX1Implicit88",
6964
+
"oid": "1.3.6.1.5.5.7.0.19",
6965
+
"types": [
6966
+
"GeneralName"
6967
+
]
6968
+
},
6969
+
"1.2.840.113549.1.9.16.0.24": {
6970
+
"name": "CryptographicMessageSyntax2004",
6971
+
"oid": "1.2.840.113549.1.9.16.0.24",
6972
+
"types": [
6973
+
"EnvelopedData"
6974
+
]
6975
+
}
6976
+
},
6977
+
"values": {
6978
+
"id-pkix": {
6979
+
"name": "id-pkix",
6980
+
"type": {
6981
+
"name": "OBJECT IDENTIFIER",
6982
+
"type": "builtin"
6983
+
},
6984
+
"value": "1.3.6.1.5.5.7"
6985
+
},
6986
+
"id-pkip": {
6987
+
"name": "id-pkip",
6988
+
"type": {
6989
+
"name": "OBJECT IDENTIFIER",
6990
+
"type": "builtin"
6991
+
},
6992
+
"value": "1.3.6.1.5.5.7.5"
6993
+
},
6994
+
"id-smime": {
6995
+
"name": "id-smime",
6996
+
"type": {
6997
+
"name": "OBJECT IDENTIFIER",
6998
+
"type": "builtin"
6999
+
},
7000
+
"value": "1.2.840.113549.1.9.16"
7001
+
},
7002
+
"id-ct": {
7003
+
"name": "id-ct",
7004
+
"type": {
7005
+
"name": "OBJECT IDENTIFIER",
7006
+
"type": "builtin"
7007
+
},
7008
+
"value": "1.2.840.113549.1.9.16.1"
7009
+
},
7010
+
"id-regCtrl": {
7011
+
"name": "id-regCtrl",
7012
+
"type": {
7013
+
"name": "OBJECT IDENTIFIER",
7014
+
"type": "builtin"
7015
+
},
7016
+
"value": "1.3.6.1.5.5.7.5.1"
7017
+
},
7018
+
"id-regCtrl-regToken": {
7019
+
"name": "id-regCtrl-regToken",
7020
+
"type": {
7021
+
"name": "OBJECT IDENTIFIER",
7022
+
"type": "builtin"
7023
+
},
7024
+
"value": "1.3.6.1.5.5.7.5.1.1"
7025
+
},
7026
+
"id-regCtrl-authenticator": {
7027
+
"name": "id-regCtrl-authenticator",
7028
+
"type": {
7029
+
"name": "OBJECT IDENTIFIER",
7030
+
"type": "builtin"
7031
+
},
7032
+
"value": "1.3.6.1.5.5.7.5.1.2"
7033
+
},
7034
+
"id-regCtrl-pkiPublicationInfo": {
7035
+
"name": "id-regCtrl-pkiPublicationInfo",
7036
+
"type": {
7037
+
"name": "OBJECT IDENTIFIER",
7038
+
"type": "builtin"
7039
+
},
7040
+
"value": "1.3.6.1.5.5.7.5.1.3"
7041
+
},
7042
+
"id-regCtrl-pkiArchiveOptions": {
7043
+
"name": "id-regCtrl-pkiArchiveOptions",
7044
+
"type": {
7045
+
"name": "OBJECT IDENTIFIER",
7046
+
"type": "builtin"
7047
+
},
7048
+
"value": "1.3.6.1.5.5.7.5.1.4"
7049
+
},
7050
+
"id-regCtrl-oldCertID": {
7051
+
"name": "id-regCtrl-oldCertID",
7052
+
"type": {
7053
+
"name": "OBJECT IDENTIFIER",
7054
+
"type": "builtin"
7055
+
},
7056
+
"value": "1.3.6.1.5.5.7.5.1.5"
7057
+
},
7058
+
"id-regCtrl-protocolEncrKey": {
7059
+
"name": "id-regCtrl-protocolEncrKey",
7060
+
"type": {
7061
+
"name": "OBJECT IDENTIFIER",
7062
+
"type": "builtin"
7063
+
},
7064
+
"value": "1.3.6.1.5.5.7.5.1.6"
7065
+
},
7066
+
"id-regInfo": {
7067
+
"name": "id-regInfo",
7068
+
"type": {
7069
+
"name": "OBJECT IDENTIFIER",
7070
+
"type": "builtin"
7071
+
},
7072
+
"value": "1.3.6.1.5.5.7.5.2"
7073
+
},
7074
+
"id-regInfo-utf8Pairs": {
7075
+
"name": "id-regInfo-utf8Pairs",
7076
+
"type": {
7077
+
"name": "OBJECT IDENTIFIER",
7078
+
"type": "builtin"
7079
+
},
7080
+
"value": "1.3.6.1.5.5.7.5.2.1"
7081
+
},
7082
+
"id-regInfo-certReq": {
7083
+
"name": "id-regInfo-certReq",
7084
+
"type": {
7085
+
"name": "OBJECT IDENTIFIER",
7086
+
"type": "builtin"
7087
+
},
7088
+
"value": "1.3.6.1.5.5.7.5.2.2"
7089
+
},
7090
+
"id-ct-encKeyWithID": {
7091
+
"name": "id-ct-encKeyWithID",
7092
+
"type": {
7093
+
"name": "OBJECT IDENTIFIER",
7094
+
"type": "builtin"
7095
+
},
7096
+
"value": "1.2.840.113549.1.9.16.1.21"
7097
+
}
7098
+
},
7099
+
"types": {
7100
+
"CertReqMessages": {
7101
+
"name": "CertReqMessages",
7102
+
"type": {
7103
+
"name": "SEQUENCE",
7104
+
"type": "builtin",
7105
+
"typeOf": 1,
7106
+
"size": [
7107
+
1,
7108
+
"MAX"
7109
+
],
7110
+
"content": [
7111
+
{
7112
+
"name": "CertReqMsg",
7113
+
"type": "defined"
7114
+
}
7115
+
]
7116
+
}
7117
+
},
7118
+
"CertReqMsg": {
7119
+
"name": "CertReqMsg",
7120
+
"type": {
7121
+
"name": "SEQUENCE",
7122
+
"type": "builtin",
7123
+
"content": [
7124
+
{
7125
+
"id": "certReq",
7126
+
"name": "CertRequest",
7127
+
"type": "defined"
7128
+
},
7129
+
{
7130
+
"id": "popo",
7131
+
"name": "ProofOfPossession",
7132
+
"type": "defined",
7133
+
"optional": true
7134
+
},
7135
+
{
7136
+
"id": "regInfo",
7137
+
"name": "SEQUENCE",
7138
+
"type": "builtin",
7139
+
"typeOf": 1,
7140
+
"size": [
7141
+
1,
7142
+
"MAX"
7143
+
],
7144
+
"content": [
7145
+
{
7146
+
"name": "AttributeTypeAndValue",
7147
+
"type": "defined"
7148
+
}
7149
+
],
7150
+
"optional": true
7151
+
}
7152
+
]
7153
+
}
7154
+
},
7155
+
"CertRequest": {
7156
+
"name": "CertRequest",
7157
+
"type": {
7158
+
"name": "SEQUENCE",
7159
+
"type": "builtin",
7160
+
"content": [
7161
+
{
7162
+
"id": "certReqId",
7163
+
"name": "INTEGER",
7164
+
"type": "builtin"
7165
+
},
7166
+
{
7167
+
"id": "certTemplate",
7168
+
"name": "CertTemplate",
7169
+
"type": "defined"
7170
+
},
7171
+
{
7172
+
"id": "controls",
7173
+
"name": "Controls",
7174
+
"type": "defined",
7175
+
"optional": true
7176
+
}
7177
+
]
7178
+
}
7179
+
},
7180
+
"CertTemplate": {
7181
+
"name": "CertTemplate",
7182
+
"type": {
7183
+
"name": "SEQUENCE",
7184
+
"type": "builtin",
7185
+
"content": [
7186
+
{
7187
+
"id": "version",
7188
+
"name": "[0]",
7189
+
"type": "tag",
7190
+
"class": "CONTEXT",
7191
+
"explicit": false,
7192
+
"content": [
7193
+
{
7194
+
"name": "",
7195
+
"type": {
7196
+
"name": "Version",
7197
+
"type": "defined"
7198
+
}
7199
+
}
7200
+
],
7201
+
"optional": true
7202
+
},
7203
+
{
7204
+
"id": "serialNumber",
7205
+
"name": "[1]",
7206
+
"type": "tag",
7207
+
"class": "CONTEXT",
7208
+
"explicit": false,
7209
+
"content": [
7210
+
{
7211
+
"name": "",
7212
+
"type": {
7213
+
"name": "INTEGER",
7214
+
"type": "builtin"
7215
+
}
7216
+
}
7217
+
],
7218
+
"optional": true
7219
+
},
7220
+
{
7221
+
"id": "signingAlg",
7222
+
"name": "[2]",
7223
+
"type": "tag",
7224
+
"class": "CONTEXT",
7225
+
"explicit": false,
7226
+
"content": [
7227
+
{
7228
+
"name": "",
7229
+
"type": {
7230
+
"name": "AlgorithmIdentifier",
7231
+
"type": "defined"
7232
+
}
7233
+
}
7234
+
],
7235
+
"optional": true
7236
+
},
7237
+
{
7238
+
"id": "issuer",
7239
+
"name": "[3]",
7240
+
"type": "tag",
7241
+
"class": "CONTEXT",
7242
+
"explicit": false,
7243
+
"content": [
7244
+
{
7245
+
"name": "",
7246
+
"type": {
7247
+
"name": "Name",
7248
+
"type": "defined"
7249
+
}
7250
+
}
7251
+
],
7252
+
"optional": true
7253
+
},
7254
+
{
7255
+
"id": "validity",
7256
+
"name": "[4]",
7257
+
"type": "tag",
7258
+
"class": "CONTEXT",
7259
+
"explicit": false,
7260
+
"content": [
7261
+
{
7262
+
"name": "",
7263
+
"type": {
7264
+
"name": "OptionalValidity",
7265
+
"type": "defined"
7266
+
}
7267
+
}
7268
+
],
7269
+
"optional": true
7270
+
},
7271
+
{
7272
+
"id": "subject",
7273
+
"name": "[5]",
7274
+
"type": "tag",
7275
+
"class": "CONTEXT",
7276
+
"explicit": false,
7277
+
"content": [
7278
+
{
7279
+
"name": "",
7280
+
"type": {
7281
+
"name": "Name",
7282
+
"type": "defined"
7283
+
}
7284
+
}
7285
+
],
7286
+
"optional": true
7287
+
},
7288
+
{
7289
+
"id": "publicKey",
7290
+
"name": "[6]",
7291
+
"type": "tag",
7292
+
"class": "CONTEXT",
7293
+
"explicit": false,
7294
+
"content": [
7295
+
{
7296
+
"name": "",
7297
+
"type": {
7298
+
"name": "SubjectPublicKeyInfo",
7299
+
"type": "defined"
7300
+
}
7301
+
}
7302
+
],
7303
+
"optional": true
7304
+
},
7305
+
{
7306
+
"id": "issuerUID",
7307
+
"name": "[7]",
7308
+
"type": "tag",
7309
+
"class": "CONTEXT",
7310
+
"explicit": false,
7311
+
"content": [
7312
+
{
7313
+
"name": "",
7314
+
"type": {
7315
+
"name": "UniqueIdentifier",
7316
+
"type": "defined"
7317
+
}
7318
+
}
7319
+
],
7320
+
"optional": true
7321
+
},
7322
+
{
7323
+
"id": "subjectUID",
7324
+
"name": "[8]",
7325
+
"type": "tag",
7326
+
"class": "CONTEXT",
7327
+
"explicit": false,
7328
+
"content": [
7329
+
{
7330
+
"name": "",
7331
+
"type": {
7332
+
"name": "UniqueIdentifier",
7333
+
"type": "defined"
7334
+
}
7335
+
}
7336
+
],
7337
+
"optional": true
7338
+
},
7339
+
{
7340
+
"id": "extensions",
7341
+
"name": "[9]",
7342
+
"type": "tag",
7343
+
"class": "CONTEXT",
7344
+
"explicit": false,
7345
+
"content": [
7346
+
{
7347
+
"name": "",
7348
+
"type": {
7349
+
"name": "Extensions",
7350
+
"type": "defined"
7351
+
}
7352
+
}
7353
+
],
7354
+
"optional": true
7355
+
}
7356
+
]
7357
+
}
7358
+
},
7359
+
"OptionalValidity": {
7360
+
"name": "OptionalValidity",
7361
+
"type": {
7362
+
"name": "SEQUENCE",
7363
+
"type": "builtin",
7364
+
"content": [
7365
+
{
7366
+
"id": "notBefore",
7367
+
"name": "[0]",
7368
+
"type": "tag",
7369
+
"class": "CONTEXT",
7370
+
"explicit": false,
7371
+
"content": [
7372
+
{
7373
+
"name": "",
7374
+
"type": {
7375
+
"name": "Time",
7376
+
"type": "defined"
7377
+
}
7378
+
}
7379
+
],
7380
+
"optional": true
7381
+
},
7382
+
{
7383
+
"id": "notAfter",
7384
+
"name": "[1]",
7385
+
"type": "tag",
7386
+
"class": "CONTEXT",
7387
+
"explicit": false,
7388
+
"content": [
7389
+
{
7390
+
"name": "",
7391
+
"type": {
7392
+
"name": "Time",
7393
+
"type": "defined"
7394
+
}
7395
+
}
7396
+
],
7397
+
"optional": true
7398
+
}
7399
+
]
7400
+
}
7401
+
},
7402
+
"Controls": {
7403
+
"name": "Controls",
7404
+
"type": {
7405
+
"name": "SEQUENCE",
7406
+
"type": "builtin",
7407
+
"typeOf": 1,
7408
+
"size": [
7409
+
1,
7410
+
"MAX"
7411
+
],
7412
+
"content": [
7413
+
{
7414
+
"name": "AttributeTypeAndValue",
7415
+
"type": "defined"
7416
+
}
7417
+
]
7418
+
}
7419
+
},
7420
+
"AttributeTypeAndValue": {
7421
+
"name": "AttributeTypeAndValue",
7422
+
"type": {
7423
+
"name": "SEQUENCE",
7424
+
"type": "builtin",
7425
+
"content": [
7426
+
{
7427
+
"id": "type",
7428
+
"name": "OBJECT IDENTIFIER",
7429
+
"type": "builtin"
7430
+
},
7431
+
{
7432
+
"id": "value",
7433
+
"name": "ANY",
7434
+
"type": "builtin",
7435
+
"definedBy": "type"
7436
+
}
7437
+
]
7438
+
}
7439
+
},
7440
+
"ProofOfPossession": {
7441
+
"name": "ProofOfPossession",
7442
+
"type": {
7443
+
"name": "CHOICE",
7444
+
"type": "builtin",
7445
+
"content": [
7446
+
{
7447
+
"id": "raVerified",
7448
+
"name": "[0]",
7449
+
"type": "tag",
7450
+
"class": "CONTEXT",
7451
+
"explicit": false,
7452
+
"content": [
7453
+
{
7454
+
"name": "",
7455
+
"type": {
7456
+
"name": "NULL",
7457
+
"type": "builtin"
7458
+
}
7459
+
}
7460
+
]
7461
+
},
7462
+
{
7463
+
"id": "signature",
7464
+
"name": "[1]",
7465
+
"type": "tag",
7466
+
"class": "CONTEXT",
7467
+
"explicit": false,
7468
+
"content": [
7469
+
{
7470
+
"name": "",
7471
+
"type": {
7472
+
"name": "POPOSigningKey",
7473
+
"type": "defined"
7474
+
}
7475
+
}
7476
+
]
7477
+
},
7478
+
{
7479
+
"id": "keyEncipherment",
7480
+
"name": "[2]",
7481
+
"type": "tag",
7482
+
"class": "CONTEXT",
7483
+
"explicit": false,
7484
+
"content": [
7485
+
{
7486
+
"name": "",
7487
+
"type": {
7488
+
"name": "POPOPrivKey",
7489
+
"type": "defined"
7490
+
}
7491
+
}
7492
+
]
7493
+
},
7494
+
{
7495
+
"id": "keyAgreement",
7496
+
"name": "[3]",
7497
+
"type": "tag",
7498
+
"class": "CONTEXT",
7499
+
"explicit": false,
7500
+
"content": [
7501
+
{
7502
+
"name": "",
7503
+
"type": {
7504
+
"name": "POPOPrivKey",
7505
+
"type": "defined"
7506
+
}
7507
+
}
7508
+
]
7509
+
}
7510
+
]
7511
+
}
7512
+
},
7513
+
"POPOSigningKey": {
7514
+
"name": "POPOSigningKey",
7515
+
"type": {
7516
+
"name": "SEQUENCE",
7517
+
"type": "builtin",
7518
+
"content": [
7519
+
{
7520
+
"id": "poposkInput",
7521
+
"name": "[0]",
7522
+
"type": "tag",
7523
+
"class": "CONTEXT",
7524
+
"explicit": false,
7525
+
"content": [
7526
+
{
7527
+
"name": "",
7528
+
"type": {
7529
+
"name": "POPOSigningKeyInput",
7530
+
"type": "defined"
7531
+
}
7532
+
}
7533
+
],
7534
+
"optional": true
7535
+
},
7536
+
{
7537
+
"id": "algorithmIdentifier",
7538
+
"name": "AlgorithmIdentifier",
7539
+
"type": "defined"
7540
+
},
7541
+
{
7542
+
"id": "signature",
7543
+
"name": "BIT STRING",
7544
+
"type": "builtin"
7545
+
}
7546
+
]
7547
+
}
7548
+
},
7549
+
"POPOSigningKeyInput": {
7550
+
"name": "POPOSigningKeyInput",
7551
+
"type": {
7552
+
"name": "SEQUENCE",
7553
+
"type": "builtin",
7554
+
"content": [
7555
+
{
7556
+
"id": "authInfo",
7557
+
"name": "CHOICE",
7558
+
"type": "builtin",
7559
+
"content": [
7560
+
{
7561
+
"id": "sender",
7562
+
"name": "[0]",
7563
+
"type": "tag",
7564
+
"class": "CONTEXT",
7565
+
"explicit": false,
7566
+
"content": [
7567
+
{
7568
+
"name": "",
7569
+
"type": {
7570
+
"name": "GeneralName",
7571
+
"type": "defined"
7572
+
}
7573
+
}
7574
+
]
7575
+
},
7576
+
{
7577
+
"id": "publicKeyMAC",
7578
+
"name": "PKMACValue",
7579
+
"type": "defined"
7580
+
}
7581
+
]
7582
+
},
7583
+
{
7584
+
"id": "publicKey",
7585
+
"name": "SubjectPublicKeyInfo",
7586
+
"type": "defined"
7587
+
}
7588
+
]
7589
+
}
7590
+
},
7591
+
"PKMACValue": {
7592
+
"name": "PKMACValue",
7593
+
"type": {
7594
+
"name": "SEQUENCE",
7595
+
"type": "builtin",
7596
+
"content": [
7597
+
{
7598
+
"id": "algId",
7599
+
"name": "AlgorithmIdentifier",
7600
+
"type": "defined"
7601
+
},
7602
+
{
7603
+
"id": "value",
7604
+
"name": "BIT STRING",
7605
+
"type": "builtin"
7606
+
}
7607
+
]
7608
+
}
7609
+
},
7610
+
"PBMParameter": {
7611
+
"name": "PBMParameter",
7612
+
"type": {
7613
+
"name": "SEQUENCE",
7614
+
"type": "builtin",
7615
+
"content": [
7616
+
{
7617
+
"id": "salt",
7618
+
"name": "OCTET STRING",
7619
+
"type": "builtin"
7620
+
},
7621
+
{
7622
+
"id": "owf",
7623
+
"name": "AlgorithmIdentifier",
7624
+
"type": "defined"
7625
+
},
7626
+
{
7627
+
"id": "iterationCount",
7628
+
"name": "INTEGER",
7629
+
"type": "builtin"
7630
+
},
7631
+
{
7632
+
"id": "mac",
7633
+
"name": "AlgorithmIdentifier",
7634
+
"type": "defined"
7635
+
}
7636
+
]
7637
+
}
7638
+
},
7639
+
"POPOPrivKey": {
7640
+
"name": "POPOPrivKey",
7641
+
"type": {
7642
+
"name": "CHOICE",
7643
+
"type": "builtin",
7644
+
"content": [
7645
+
{
7646
+
"id": "thisMessage",
7647
+
"name": "[0]",
7648
+
"type": "tag",
7649
+
"class": "CONTEXT",
7650
+
"explicit": false,
7651
+
"content": [
7652
+
{
7653
+
"name": "",
7654
+
"type": {
7655
+
"name": "BIT STRING",
7656
+
"type": "builtin"
7657
+
}
7658
+
}
7659
+
]
7660
+
},
7661
+
{
7662
+
"id": "subsequentMessage",
7663
+
"name": "[1]",
7664
+
"type": "tag",
7665
+
"class": "CONTEXT",
7666
+
"explicit": false,
7667
+
"content": [
7668
+
{
7669
+
"name": "",
7670
+
"type": {
7671
+
"name": "SubsequentMessage",
7672
+
"type": "defined"
7673
+
}
7674
+
}
7675
+
]
7676
+
},
7677
+
{
7678
+
"id": "dhMAC",
7679
+
"name": "[2]",
7680
+
"type": "tag",
7681
+
"class": "CONTEXT",
7682
+
"explicit": false,
7683
+
"content": [
7684
+
{
7685
+
"name": "",
7686
+
"type": {
7687
+
"name": "BIT STRING",
7688
+
"type": "builtin"
7689
+
}
7690
+
}
7691
+
]
7692
+
},
7693
+
{
7694
+
"id": "agreeMAC",
7695
+
"name": "[3]",
7696
+
"type": "tag",
7697
+
"class": "CONTEXT",
7698
+
"explicit": false,
7699
+
"content": [
7700
+
{
7701
+
"name": "",
7702
+
"type": {
7703
+
"name": "PKMACValue",
7704
+
"type": "defined"
7705
+
}
7706
+
}
7707
+
]
7708
+
},
7709
+
{
7710
+
"id": "encryptedKey",
7711
+
"name": "[4]",
7712
+
"type": "tag",
7713
+
"class": "CONTEXT",
7714
+
"explicit": false,
7715
+
"content": [
7716
+
{
7717
+
"name": "",
7718
+
"type": {
7719
+
"name": "EnvelopedData",
7720
+
"type": "defined"
7721
+
}
7722
+
}
7723
+
]
7724
+
}
7725
+
]
7726
+
}
7727
+
},
7728
+
"SubsequentMessage": {
7729
+
"name": "SubsequentMessage",
7730
+
"type": {
7731
+
"name": "INTEGER",
7732
+
"type": "builtin",
7733
+
"content": {
7734
+
"encrCert": 0,
7735
+
"challengeResp": 1
7736
+
}
7737
+
}
7738
+
},
7739
+
"RegToken": {
7740
+
"name": "RegToken",
7741
+
"type": {
7742
+
"name": "UTF8String",
7743
+
"type": "builtin"
7744
+
}
7745
+
},
7746
+
"Authenticator": {
7747
+
"name": "Authenticator",
7748
+
"type": {
7749
+
"name": "UTF8String",
7750
+
"type": "builtin"
7751
+
}
7752
+
},
7753
+
"PKIPublicationInfo": {
7754
+
"name": "PKIPublicationInfo",
7755
+
"type": {
7756
+
"name": "SEQUENCE",
7757
+
"type": "builtin",
7758
+
"content": [
7759
+
{
7760
+
"id": "action",
7761
+
"name": "INTEGER",
7762
+
"type": "builtin",
7763
+
"content": {
7764
+
"dontPublish": 0,
7765
+
"pleasePublish": 1
7766
+
}
7767
+
},
7768
+
{
7769
+
"id": "pubInfos",
7770
+
"name": "SEQUENCE",
7771
+
"type": "builtin",
7772
+
"typeOf": 1,
7773
+
"size": [
7774
+
1,
7775
+
"MAX"
7776
+
],
7777
+
"content": [
7778
+
{
7779
+
"name": "SinglePubInfo",
7780
+
"type": "defined"
7781
+
}
7782
+
],
7783
+
"optional": true
7784
+
}
7785
+
]
7786
+
}
7787
+
},
7788
+
"SinglePubInfo": {
7789
+
"name": "SinglePubInfo",
7790
+
"type": {
7791
+
"name": "SEQUENCE",
7792
+
"type": "builtin",
7793
+
"content": [
7794
+
{
7795
+
"id": "pubMethod",
7796
+
"name": "INTEGER",
7797
+
"type": "builtin",
7798
+
"content": {
7799
+
"dontCare": 0,
7800
+
"x500": 1,
7801
+
"web": 2,
7802
+
"ldap": 3
7803
+
}
7804
+
},
7805
+
{
7806
+
"id": "pubLocation",
7807
+
"name": "GeneralName",
7808
+
"type": "defined",
7809
+
"optional": true
7810
+
}
7811
+
]
7812
+
}
7813
+
},
7814
+
"PKIArchiveOptions": {
7815
+
"name": "PKIArchiveOptions",
7816
+
"type": {
7817
+
"name": "CHOICE",
7818
+
"type": "builtin",
7819
+
"content": [
7820
+
{
7821
+
"id": "encryptedPrivKey",
7822
+
"name": "[0]",
7823
+
"type": "tag",
7824
+
"class": "CONTEXT",
7825
+
"explicit": false,
7826
+
"content": [
7827
+
{
7828
+
"name": "",
7829
+
"type": {
7830
+
"name": "EncryptedKey",
7831
+
"type": "defined"
7832
+
}
7833
+
}
7834
+
]
7835
+
},
7836
+
{
7837
+
"id": "keyGenParameters",
7838
+
"name": "[1]",
7839
+
"type": "tag",
7840
+
"class": "CONTEXT",
7841
+
"explicit": false,
7842
+
"content": [
7843
+
{
7844
+
"name": "",
7845
+
"type": {
7846
+
"name": "KeyGenParameters",
7847
+
"type": "defined"
7848
+
}
7849
+
}
7850
+
]
7851
+
},
7852
+
{
7853
+
"id": "archiveRemGenPrivKey",
7854
+
"name": "[2]",
7855
+
"type": "tag",
7856
+
"class": "CONTEXT",
7857
+
"explicit": false,
7858
+
"content": [
7859
+
{
7860
+
"name": "",
7861
+
"type": {
7862
+
"name": "BOOLEAN",
7863
+
"type": "builtin"
7864
+
}
7865
+
}
7866
+
]
7867
+
}
7868
+
]
7869
+
}
7870
+
},
7871
+
"EncryptedKey": {
7872
+
"name": "EncryptedKey",
7873
+
"type": {
7874
+
"name": "CHOICE",
7875
+
"type": "builtin",
7876
+
"content": [
7877
+
{
7878
+
"id": "encryptedValue",
7879
+
"name": "EncryptedValue",
7880
+
"type": "defined"
7881
+
},
7882
+
{
7883
+
"id": "envelopedData",
7884
+
"name": "[0]",
7885
+
"type": "tag",
7886
+
"class": "CONTEXT",
7887
+
"explicit": false,
7888
+
"content": [
7889
+
{
7890
+
"name": "",
7891
+
"type": {
7892
+
"name": "EnvelopedData",
7893
+
"type": "defined"
7894
+
}
7895
+
}
7896
+
]
7897
+
}
7898
+
]
7899
+
}
7900
+
},
7901
+
"EncryptedValue": {
7902
+
"name": "EncryptedValue",
7903
+
"type": {
7904
+
"name": "SEQUENCE",
7905
+
"type": "builtin",
7906
+
"content": [
7907
+
{
7908
+
"id": "intendedAlg",
7909
+
"name": "[0]",
7910
+
"type": "tag",
7911
+
"class": "CONTEXT",
7912
+
"explicit": false,
7913
+
"content": [
7914
+
{
7915
+
"name": "",
7916
+
"type": {
7917
+
"name": "AlgorithmIdentifier",
7918
+
"type": "defined"
7919
+
}
7920
+
}
7921
+
],
7922
+
"optional": true
7923
+
},
7924
+
{
7925
+
"id": "symmAlg",
7926
+
"name": "[1]",
7927
+
"type": "tag",
7928
+
"class": "CONTEXT",
7929
+
"explicit": false,
7930
+
"content": [
7931
+
{
7932
+
"name": "",
7933
+
"type": {
7934
+
"name": "AlgorithmIdentifier",
7935
+
"type": "defined"
7936
+
}
7937
+
}
7938
+
],
7939
+
"optional": true
7940
+
},
7941
+
{
7942
+
"id": "encSymmKey",
7943
+
"name": "[2]",
7944
+
"type": "tag",
7945
+
"class": "CONTEXT",
7946
+
"explicit": false,
7947
+
"content": [
7948
+
{
7949
+
"name": "",
7950
+
"type": {
7951
+
"name": "BIT STRING",
7952
+
"type": "builtin"
7953
+
}
7954
+
}
7955
+
],
7956
+
"optional": true
7957
+
},
7958
+
{
7959
+
"id": "keyAlg",
7960
+
"name": "[3]",
7961
+
"type": "tag",
7962
+
"class": "CONTEXT",
7963
+
"explicit": false,
7964
+
"content": [
7965
+
{
7966
+
"name": "",
7967
+
"type": {
7968
+
"name": "AlgorithmIdentifier",
7969
+
"type": "defined"
7970
+
}
7971
+
}
7972
+
],
7973
+
"optional": true
7974
+
},
7975
+
{
7976
+
"id": "valueHint",
7977
+
"name": "[4]",
7978
+
"type": "tag",
7979
+
"class": "CONTEXT",
7980
+
"explicit": false,
7981
+
"content": [
7982
+
{
7983
+
"name": "",
7984
+
"type": {
7985
+
"name": "OCTET STRING",
7986
+
"type": "builtin"
7987
+
}
7988
+
}
7989
+
],
7990
+
"optional": true
7991
+
},
7992
+
{
7993
+
"id": "encValue",
7994
+
"name": "BIT STRING",
7995
+
"type": "builtin"
7996
+
}
7997
+
]
7998
+
}
7999
+
},
8000
+
"KeyGenParameters": {
8001
+
"name": "KeyGenParameters",
8002
+
"type": {
8003
+
"name": "OCTET STRING",
8004
+
"type": "builtin"
8005
+
}
8006
+
},
8007
+
"OldCertId": {
8008
+
"name": "OldCertId",
8009
+
"type": {
8010
+
"name": "CertId",
8011
+
"type": "defined"
8012
+
}
8013
+
},
8014
+
"CertId": {
8015
+
"name": "CertId",
8016
+
"type": {
8017
+
"name": "SEQUENCE",
8018
+
"type": "builtin",
8019
+
"content": [
8020
+
{
8021
+
"id": "issuer",
8022
+
"name": "GeneralName",
8023
+
"type": "defined"
8024
+
},
8025
+
{
8026
+
"id": "serialNumber",
8027
+
"name": "INTEGER",
8028
+
"type": "builtin"
8029
+
}
8030
+
]
8031
+
}
8032
+
},
8033
+
"ProtocolEncrKey": {
8034
+
"name": "ProtocolEncrKey",
8035
+
"type": {
8036
+
"name": "SubjectPublicKeyInfo",
8037
+
"type": "defined"
8038
+
}
8039
+
},
8040
+
"UTF8Pairs": {
8041
+
"name": "UTF8Pairs",
8042
+
"type": {
8043
+
"name": "UTF8String",
8044
+
"type": "builtin"
8045
+
}
8046
+
},
8047
+
"CertReq": {
8048
+
"name": "CertReq",
8049
+
"type": {
8050
+
"name": "CertRequest",
8051
+
"type": "defined"
8052
+
}
8053
+
},
8054
+
"EncKeyWithID": {
8055
+
"name": "EncKeyWithID",
8056
+
"type": {
8057
+
"name": "SEQUENCE",
8058
+
"type": "builtin",
8059
+
"content": [
8060
+
{
8061
+
"id": "privateKey",
8062
+
"name": "PrivateKeyInfo",
8063
+
"type": "defined"
8064
+
},
8065
+
{
8066
+
"id": "identifier",
8067
+
"name": "CHOICE",
8068
+
"type": "builtin",
8069
+
"content": [
8070
+
{
8071
+
"id": "string",
8072
+
"name": "UTF8String",
8073
+
"type": "builtin"
8074
+
},
8075
+
{
8076
+
"id": "generalName",
8077
+
"name": "GeneralName",
8078
+
"type": "defined"
8079
+
}
8080
+
],
8081
+
"optional": true
8082
+
}
8083
+
]
8084
+
}
8085
+
},
8086
+
"PrivateKeyInfo": {
8087
+
"name": "PrivateKeyInfo",
8088
+
"type": {
8089
+
"name": "SEQUENCE",
8090
+
"type": "builtin",
8091
+
"content": [
8092
+
{
8093
+
"id": "version",
8094
+
"name": "INTEGER",
8095
+
"type": "builtin"
8096
+
},
8097
+
{
8098
+
"id": "privateKeyAlgorithm",
8099
+
"name": "AlgorithmIdentifier",
8100
+
"type": "defined"
8101
+
},
8102
+
{
8103
+
"id": "privateKey",
8104
+
"name": "OCTET STRING",
8105
+
"type": "builtin"
8106
+
},
8107
+
{
8108
+
"id": "attributes",
8109
+
"name": "[0]",
8110
+
"type": "tag",
8111
+
"class": "CONTEXT",
8112
+
"explicit": false,
8113
+
"content": [
8114
+
{
8115
+
"name": "",
8116
+
"type": {
8117
+
"name": "Attributes",
8118
+
"type": "defined"
8119
+
}
8120
+
}
8121
+
],
8122
+
"optional": true
8123
+
}
8124
+
]
8125
+
}
8126
+
},
8127
+
"Attributes": {
8128
+
"name": "Attributes",
8129
+
"type": {
8130
+
"name": "SET",
8131
+
"type": "builtin",
8132
+
"typeOf": 1,
8133
+
"content": [
8134
+
{
8135
+
"name": "Attribute",
8136
+
"type": "defined"
8137
+
}
8138
+
]
8139
+
}
8140
+
}
8141
+
}
8142
+
},
8143
+
"1.3.6.1.5.5.7.0.16": {
8144
+
"name": "PKIXCMP",
8145
+
"oid": "1.3.6.1.5.5.7.0.16",
8146
+
"source": "rfc4210.txt",
8147
+
"tagDefault": "EXPLICIT",
8148
+
"imports": {
8149
+
"1.3.6.1.5.5.7.0.1": {
8150
+
"name": "PKIX1Explicit88",
8151
+
"oid": "1.3.6.1.5.5.7.0.1",
8152
+
"types": [
8153
+
"Certificate",
8154
+
"CertificateList",
8155
+
"Extensions",
8156
+
"AlgorithmIdentifier",
8157
+
"UTF8String"
8158
+
]
8159
+
},
8160
+
"1.3.6.1.5.5.7.0.2": {
8161
+
"name": "PKIX1Implicit88",
8162
+
"oid": "1.3.6.1.5.5.7.0.2",
8163
+
"types": [
8164
+
"GeneralName",
8165
+
"KeyIdentifier"
8166
+
]
8167
+
},
8168
+
"1.3.6.1.5.5.7.0.36": {
8169
+
"name": "PKIXCRMF-2005",
8170
+
"oid": "1.3.6.1.5.5.7.0.36",
8171
+
"types": [
8172
+
"CertTemplate",
8173
+
"PKIPublicationInfo",
8174
+
"EncryptedValue",
8175
+
"CertId",
8176
+
"CertReqMessages"
8177
+
]
8178
+
},
8179
+
"1.2.840.113549.1.10.1.1": {
8180
+
"name": "PKCS-10",
8181
+
"oid": "1.2.840.113549.1.10.1.1",
8182
+
"types": [
8183
+
"CertificationRequest"
8184
+
]
8185
+
}
8186
+
},
8187
+
"values": {
8188
+
"id-PasswordBasedMac": {
8189
+
"name": "id-PasswordBasedMac",
8190
+
"type": {
8191
+
"name": "OBJECT IDENTIFIER",
8192
+
"type": "builtin"
8193
+
},
8194
+
"value": "1.2.840.113533.7.66.13"
8195
+
},
8196
+
"id-DHBasedMac": {
8197
+
"name": "id-DHBasedMac",
8198
+
"type": {
8199
+
"name": "OBJECT IDENTIFIER",
8200
+
"type": "builtin"
8201
+
},
8202
+
"value": "1.2.840.113533.7.66.30"
8203
+
}
8204
+
},
8205
+
"types": {
8206
+
"CMPCertificate": {
8207
+
"name": "CMPCertificate",
8208
+
"type": {
8209
+
"name": "CHOICE",
8210
+
"type": "builtin",
8211
+
"content": [
8212
+
{
8213
+
"id": "x509v3PKCert",
8214
+
"name": "Certificate",
8215
+
"type": "defined"
8216
+
}
8217
+
]
8218
+
}
8219
+
},
8220
+
"PKIMessage": {
8221
+
"name": "PKIMessage",
8222
+
"type": {
8223
+
"name": "SEQUENCE",
8224
+
"type": "builtin",
8225
+
"content": [
8226
+
{
8227
+
"id": "header",
8228
+
"name": "PKIHeader",
8229
+
"type": "defined"
8230
+
},
8231
+
{
8232
+
"id": "body",
8233
+
"name": "PKIBody",
8234
+
"type": "defined"
8235
+
},
8236
+
{
8237
+
"id": "protection",
8238
+
"name": "[0]",
8239
+
"type": "tag",
8240
+
"class": "CONTEXT",
8241
+
"explicit": true,
8242
+
"content": [
8243
+
{
8244
+
"name": "",
8245
+
"type": {
8246
+
"name": "PKIProtection",
8247
+
"type": "defined"
8248
+
}
8249
+
}
8250
+
],
8251
+
"optional": true
8252
+
},
8253
+
{
8254
+
"id": "extraCerts",
8255
+
"name": "[1]",
8256
+
"type": "tag",
8257
+
"class": "CONTEXT",
8258
+
"explicit": true,
8259
+
"content": [
8260
+
{
8261
+
"name": "",
8262
+
"type": {
8263
+
"name": "SEQUENCE",
8264
+
"type": "builtin",
8265
+
"typeOf": 1,
8266
+
"size": [
8267
+
1,
8268
+
"MAX"
8269
+
],
8270
+
"content": [
8271
+
{
8272
+
"name": "CMPCertificate",
8273
+
"type": "defined"
8274
+
}
8275
+
]
8276
+
}
8277
+
}
8278
+
],
8279
+
"optional": true
8280
+
}
8281
+
]
8282
+
}
8283
+
},
8284
+
"PKIMessages": {
8285
+
"name": "PKIMessages",
8286
+
"type": {
8287
+
"name": "SEQUENCE",
8288
+
"type": "builtin",
8289
+
"typeOf": 1,
8290
+
"size": [
8291
+
1,
8292
+
"MAX"
8293
+
],
8294
+
"content": [
8295
+
{
8296
+
"name": "PKIMessage",
8297
+
"type": "defined"
8298
+
}
8299
+
]
8300
+
}
8301
+
},
8302
+
"PKIHeader": {
8303
+
"name": "PKIHeader",
8304
+
"type": {
8305
+
"name": "SEQUENCE",
8306
+
"type": "builtin",
8307
+
"content": [
8308
+
{
8309
+
"id": "pvno",
8310
+
"name": "INTEGER",
8311
+
"type": "builtin",
8312
+
"content": {
8313
+
"cmp1999": 1,
8314
+
"cmp2000": 2
8315
+
}
8316
+
},
8317
+
{
8318
+
"id": "sender",
8319
+
"name": "GeneralName",
8320
+
"type": "defined"
8321
+
},
8322
+
{
8323
+
"id": "recipient",
8324
+
"name": "GeneralName",
8325
+
"type": "defined"
8326
+
},
8327
+
{
8328
+
"id": "messageTime",
8329
+
"name": "[0]",
8330
+
"type": "tag",
8331
+
"class": "CONTEXT",
8332
+
"explicit": true,
8333
+
"content": [
8334
+
{
8335
+
"name": "",
8336
+
"type": {
8337
+
"name": "GeneralizedTime",
8338
+
"type": "builtin"
8339
+
}
8340
+
}
8341
+
],
8342
+
"optional": true
8343
+
},
8344
+
{
8345
+
"id": "protectionAlg",
8346
+
"name": "[1]",
8347
+
"type": "tag",
8348
+
"class": "CONTEXT",
8349
+
"explicit": true,
8350
+
"content": [
8351
+
{
8352
+
"name": "",
8353
+
"type": {
8354
+
"name": "AlgorithmIdentifier",
8355
+
"type": "defined"
8356
+
}
8357
+
}
8358
+
],
8359
+
"optional": true
8360
+
},
8361
+
{
8362
+
"id": "senderKID",
8363
+
"name": "[2]",
8364
+
"type": "tag",
8365
+
"class": "CONTEXT",
8366
+
"explicit": true,
8367
+
"content": [
8368
+
{
8369
+
"name": "",
8370
+
"type": {
8371
+
"name": "KeyIdentifier",
8372
+
"type": "defined"
8373
+
}
8374
+
}
8375
+
],
8376
+
"optional": true
8377
+
},
8378
+
{
8379
+
"id": "recipKID",
8380
+
"name": "[3]",
8381
+
"type": "tag",
8382
+
"class": "CONTEXT",
8383
+
"explicit": true,
8384
+
"content": [
8385
+
{
8386
+
"name": "",
8387
+
"type": {
8388
+
"name": "KeyIdentifier",
8389
+
"type": "defined"
8390
+
}
8391
+
}
8392
+
],
8393
+
"optional": true
8394
+
},
8395
+
{
8396
+
"id": "transactionID",
8397
+
"name": "[4]",
8398
+
"type": "tag",
8399
+
"class": "CONTEXT",
8400
+
"explicit": true,
8401
+
"content": [
8402
+
{
8403
+
"name": "",
8404
+
"type": {
8405
+
"name": "OCTET STRING",
8406
+
"type": "builtin"
8407
+
}
8408
+
}
8409
+
],
8410
+
"optional": true
8411
+
},
8412
+
{
8413
+
"id": "senderNonce",
8414
+
"name": "[5]",
8415
+
"type": "tag",
8416
+
"class": "CONTEXT",
8417
+
"explicit": true,
8418
+
"content": [
8419
+
{
8420
+
"name": "",
8421
+
"type": {
8422
+
"name": "OCTET STRING",
8423
+
"type": "builtin"
8424
+
}
8425
+
}
8426
+
],
8427
+
"optional": true
8428
+
},
8429
+
{
8430
+
"id": "recipNonce",
8431
+
"name": "[6]",
8432
+
"type": "tag",
8433
+
"class": "CONTEXT",
8434
+
"explicit": true,
8435
+
"content": [
8436
+
{
8437
+
"name": "",
8438
+
"type": {
8439
+
"name": "OCTET STRING",
8440
+
"type": "builtin"
8441
+
}
8442
+
}
8443
+
],
8444
+
"optional": true
8445
+
},
8446
+
{
8447
+
"id": "freeText",
8448
+
"name": "[7]",
8449
+
"type": "tag",
8450
+
"class": "CONTEXT",
8451
+
"explicit": true,
8452
+
"content": [
8453
+
{
8454
+
"name": "",
8455
+
"type": {
8456
+
"name": "PKIFreeText",
8457
+
"type": "defined"
8458
+
}
8459
+
}
8460
+
],
8461
+
"optional": true
8462
+
},
8463
+
{
8464
+
"id": "generalInfo",
8465
+
"name": "[8]",
8466
+
"type": "tag",
8467
+
"class": "CONTEXT",
8468
+
"explicit": true,
8469
+
"content": [
8470
+
{
8471
+
"name": "",
8472
+
"type": {
8473
+
"name": "SEQUENCE",
8474
+
"type": "builtin",
8475
+
"typeOf": 1,
8476
+
"size": [
8477
+
1,
8478
+
"MAX"
8479
+
],
8480
+
"content": [
8481
+
{
8482
+
"name": "InfoTypeAndValue",
8483
+
"type": "defined"
8484
+
}
8485
+
]
8486
+
}
8487
+
}
8488
+
],
8489
+
"optional": true
8490
+
}
8491
+
]
8492
+
}
8493
+
},
8494
+
"PKIFreeText": {
8495
+
"name": "PKIFreeText",
8496
+
"type": {
8497
+
"name": "SEQUENCE",
8498
+
"type": "builtin",
8499
+
"typeOf": 1,
8500
+
"size": [
8501
+
1,
8502
+
"MAX"
8503
+
],
8504
+
"content": [
8505
+
{
8506
+
"name": "UTF8String",
8507
+
"type": "builtin"
8508
+
}
8509
+
]
8510
+
}
8511
+
},
8512
+
"PKIBody": {
8513
+
"name": "PKIBody",
8514
+
"type": {
8515
+
"name": "CHOICE",
8516
+
"type": "builtin",
8517
+
"content": [
8518
+
{
8519
+
"id": "ir",
8520
+
"name": "[0]",
8521
+
"type": "tag",
8522
+
"class": "CONTEXT",
8523
+
"explicit": true,
8524
+
"content": [
8525
+
{
8526
+
"name": "",
8527
+
"type": {
8528
+
"name": "CertReqMessages",
8529
+
"type": "defined"
8530
+
}
8531
+
}
8532
+
]
8533
+
},
8534
+
{
8535
+
"id": "ip",
8536
+
"name": "[1]",
8537
+
"type": "tag",
8538
+
"class": "CONTEXT",
8539
+
"explicit": true,
8540
+
"content": [
8541
+
{
8542
+
"name": "",
8543
+
"type": {
8544
+
"name": "CertRepMessage",
8545
+
"type": "defined"
8546
+
}
8547
+
}
8548
+
]
8549
+
},
8550
+
{
8551
+
"id": "cr",
8552
+
"name": "[2]",
8553
+
"type": "tag",
8554
+
"class": "CONTEXT",
8555
+
"explicit": true,
8556
+
"content": [
8557
+
{
8558
+
"name": "",
8559
+
"type": {
8560
+
"name": "CertReqMessages",
8561
+
"type": "defined"
8562
+
}
8563
+
}
8564
+
]
8565
+
},
8566
+
{
8567
+
"id": "cp",
8568
+
"name": "[3]",
8569
+
"type": "tag",
8570
+
"class": "CONTEXT",
8571
+
"explicit": true,
8572
+
"content": [
8573
+
{
8574
+
"name": "",
8575
+
"type": {
8576
+
"name": "CertRepMessage",
8577
+
"type": "defined"
8578
+
}
8579
+
}
8580
+
]
8581
+
},
8582
+
{
8583
+
"id": "p10cr",
8584
+
"name": "[4]",
8585
+
"type": "tag",
8586
+
"class": "CONTEXT",
8587
+
"explicit": true,
8588
+
"content": [
8589
+
{
8590
+
"name": "",
8591
+
"type": {
8592
+
"name": "CertificationRequest",
8593
+
"type": "defined"
8594
+
}
8595
+
}
8596
+
]
8597
+
},
8598
+
{
8599
+
"id": "popdecc",
8600
+
"name": "[5]",
8601
+
"type": "tag",
8602
+
"class": "CONTEXT",
8603
+
"explicit": true,
8604
+
"content": [
8605
+
{
8606
+
"name": "",
8607
+
"type": {
8608
+
"name": "POPODecKeyChallContent",
8609
+
"type": "defined"
8610
+
}
8611
+
}
8612
+
]
8613
+
},
8614
+
{
8615
+
"id": "popdecr",
8616
+
"name": "[6]",
8617
+
"type": "tag",
8618
+
"class": "CONTEXT",
8619
+
"explicit": true,
8620
+
"content": [
8621
+
{
8622
+
"name": "",
8623
+
"type": {
8624
+
"name": "POPODecKeyRespContent",
8625
+
"type": "defined"
8626
+
}
8627
+
}
8628
+
]
8629
+
},
8630
+
{
8631
+
"id": "kur",
8632
+
"name": "[7]",
8633
+
"type": "tag",
8634
+
"class": "CONTEXT",
8635
+
"explicit": true,
8636
+
"content": [
8637
+
{
8638
+
"name": "",
8639
+
"type": {
8640
+
"name": "CertReqMessages",
8641
+
"type": "defined"
8642
+
}
8643
+
}
8644
+
]
8645
+
},
8646
+
{
8647
+
"id": "kup",
8648
+
"name": "[8]",
8649
+
"type": "tag",
8650
+
"class": "CONTEXT",
8651
+
"explicit": true,
8652
+
"content": [
8653
+
{
8654
+
"name": "",
8655
+
"type": {
8656
+
"name": "CertRepMessage",
8657
+
"type": "defined"
8658
+
}
8659
+
}
8660
+
]
8661
+
},
8662
+
{
8663
+
"id": "krr",
8664
+
"name": "[9]",
8665
+
"type": "tag",
8666
+
"class": "CONTEXT",
8667
+
"explicit": true,
8668
+
"content": [
8669
+
{
8670
+
"name": "",
8671
+
"type": {
8672
+
"name": "CertReqMessages",
8673
+
"type": "defined"
8674
+
}
8675
+
}
8676
+
]
8677
+
},
8678
+
{
8679
+
"id": "krp",
8680
+
"name": "[10]",
8681
+
"type": "tag",
8682
+
"class": "CONTEXT",
8683
+
"explicit": true,
8684
+
"content": [
8685
+
{
8686
+
"name": "",
8687
+
"type": {
8688
+
"name": "KeyRecRepContent",
8689
+
"type": "defined"
8690
+
}
8691
+
}
8692
+
]
8693
+
},
8694
+
{
8695
+
"id": "rr",
8696
+
"name": "[11]",
8697
+
"type": "tag",
8698
+
"class": "CONTEXT",
8699
+
"explicit": true,
8700
+
"content": [
8701
+
{
8702
+
"name": "",
8703
+
"type": {
8704
+
"name": "RevReqContent",
8705
+
"type": "defined"
8706
+
}
8707
+
}
8708
+
]
8709
+
},
8710
+
{
8711
+
"id": "rp",
8712
+
"name": "[12]",
8713
+
"type": "tag",
8714
+
"class": "CONTEXT",
8715
+
"explicit": true,
8716
+
"content": [
8717
+
{
8718
+
"name": "",
8719
+
"type": {
8720
+
"name": "RevRepContent",
8721
+
"type": "defined"
8722
+
}
8723
+
}
8724
+
]
8725
+
},
8726
+
{
8727
+
"id": "ccr",
8728
+
"name": "[13]",
8729
+
"type": "tag",
8730
+
"class": "CONTEXT",
8731
+
"explicit": true,
8732
+
"content": [
8733
+
{
8734
+
"name": "",
8735
+
"type": {
8736
+
"name": "CertReqMessages",
8737
+
"type": "defined"
8738
+
}
8739
+
}
8740
+
]
8741
+
},
8742
+
{
8743
+
"id": "ccp",
8744
+
"name": "[14]",
8745
+
"type": "tag",
8746
+
"class": "CONTEXT",
8747
+
"explicit": true,
8748
+
"content": [
8749
+
{
8750
+
"name": "",
8751
+
"type": {
8752
+
"name": "CertRepMessage",
8753
+
"type": "defined"
8754
+
}
8755
+
}
8756
+
]
8757
+
},
8758
+
{
8759
+
"id": "ckuann",
8760
+
"name": "[15]",
8761
+
"type": "tag",
8762
+
"class": "CONTEXT",
8763
+
"explicit": true,
8764
+
"content": [
8765
+
{
8766
+
"name": "",
8767
+
"type": {
8768
+
"name": "CAKeyUpdAnnContent",
8769
+
"type": "defined"
8770
+
}
8771
+
}
8772
+
]
8773
+
},
8774
+
{
8775
+
"id": "cann",
8776
+
"name": "[16]",
8777
+
"type": "tag",
8778
+
"class": "CONTEXT",
8779
+
"explicit": true,
8780
+
"content": [
8781
+
{
8782
+
"name": "",
8783
+
"type": {
8784
+
"name": "CertAnnContent",
8785
+
"type": "defined"
8786
+
}
8787
+
}
8788
+
]
8789
+
},
8790
+
{
8791
+
"id": "rann",
8792
+
"name": "[17]",
8793
+
"type": "tag",
8794
+
"class": "CONTEXT",
8795
+
"explicit": true,
8796
+
"content": [
8797
+
{
8798
+
"name": "",
8799
+
"type": {
8800
+
"name": "RevAnnContent",
8801
+
"type": "defined"
8802
+
}
8803
+
}
8804
+
]
8805
+
},
8806
+
{
8807
+
"id": "crlann",
8808
+
"name": "[18]",
8809
+
"type": "tag",
8810
+
"class": "CONTEXT",
8811
+
"explicit": true,
8812
+
"content": [
8813
+
{
8814
+
"name": "",
8815
+
"type": {
8816
+
"name": "CRLAnnContent",
8817
+
"type": "defined"
8818
+
}
8819
+
}
8820
+
]
8821
+
},
8822
+
{
8823
+
"id": "pkiconf",
8824
+
"name": "[19]",
8825
+
"type": "tag",
8826
+
"class": "CONTEXT",
8827
+
"explicit": true,
8828
+
"content": [
8829
+
{
8830
+
"name": "",
8831
+
"type": {
8832
+
"name": "PKIConfirmContent",
8833
+
"type": "defined"
8834
+
}
8835
+
}
8836
+
]
8837
+
},
8838
+
{
8839
+
"id": "nested",
8840
+
"name": "[20]",
8841
+
"type": "tag",
8842
+
"class": "CONTEXT",
8843
+
"explicit": true,
8844
+
"content": [
8845
+
{
8846
+
"name": "",
8847
+
"type": {
8848
+
"name": "NestedMessageContent",
8849
+
"type": "defined"
8850
+
}
8851
+
}
8852
+
]
8853
+
},
8854
+
{
8855
+
"id": "genm",
8856
+
"name": "[21]",
8857
+
"type": "tag",
8858
+
"class": "CONTEXT",
8859
+
"explicit": true,
8860
+
"content": [
8861
+
{
8862
+
"name": "",
8863
+
"type": {
8864
+
"name": "GenMsgContent",
8865
+
"type": "defined"
8866
+
}
8867
+
}
8868
+
]
8869
+
},
8870
+
{
8871
+
"id": "genp",
8872
+
"name": "[22]",
8873
+
"type": "tag",
8874
+
"class": "CONTEXT",
8875
+
"explicit": true,
8876
+
"content": [
8877
+
{
8878
+
"name": "",
8879
+
"type": {
8880
+
"name": "GenRepContent",
8881
+
"type": "defined"
8882
+
}
8883
+
}
8884
+
]
8885
+
},
8886
+
{
8887
+
"id": "error",
8888
+
"name": "[23]",
8889
+
"type": "tag",
8890
+
"class": "CONTEXT",
8891
+
"explicit": true,
8892
+
"content": [
8893
+
{
8894
+
"name": "",
8895
+
"type": {
8896
+
"name": "ErrorMsgContent",
8897
+
"type": "defined"
8898
+
}
8899
+
}
8900
+
]
8901
+
},
8902
+
{
8903
+
"id": "certConf",
8904
+
"name": "[24]",
8905
+
"type": "tag",
8906
+
"class": "CONTEXT",
8907
+
"explicit": true,
8908
+
"content": [
8909
+
{
8910
+
"name": "",
8911
+
"type": {
8912
+
"name": "CertConfirmContent",
8913
+
"type": "defined"
8914
+
}
8915
+
}
8916
+
]
8917
+
},
8918
+
{
8919
+
"id": "pollReq",
8920
+
"name": "[25]",
8921
+
"type": "tag",
8922
+
"class": "CONTEXT",
8923
+
"explicit": true,
8924
+
"content": [
8925
+
{
8926
+
"name": "",
8927
+
"type": {
8928
+
"name": "PollReqContent",
8929
+
"type": "defined"
8930
+
}
8931
+
}
8932
+
]
8933
+
},
8934
+
{
8935
+
"id": "pollRep",
8936
+
"name": "[26]",
8937
+
"type": "tag",
8938
+
"class": "CONTEXT",
8939
+
"explicit": true,
8940
+
"content": [
8941
+
{
8942
+
"name": "",
8943
+
"type": {
8944
+
"name": "PollRepContent",
8945
+
"type": "defined"
8946
+
}
8947
+
}
8948
+
]
8949
+
}
8950
+
]
8951
+
}
8952
+
},
8953
+
"PKIProtection": {
8954
+
"name": "PKIProtection",
8955
+
"type": {
8956
+
"name": "BIT STRING",
8957
+
"type": "builtin"
8958
+
}
8959
+
},
8960
+
"ProtectedPart": {
8961
+
"name": "ProtectedPart",
8962
+
"type": {
8963
+
"name": "SEQUENCE",
8964
+
"type": "builtin",
8965
+
"content": [
8966
+
{
8967
+
"id": "header",
8968
+
"name": "PKIHeader",
8969
+
"type": "defined"
8970
+
},
8971
+
{
8972
+
"id": "body",
8973
+
"name": "PKIBody",
8974
+
"type": "defined"
8975
+
}
8976
+
]
8977
+
}
8978
+
},
8979
+
"PBMParameter": {
8980
+
"name": "PBMParameter",
8981
+
"type": {
8982
+
"name": "SEQUENCE",
8983
+
"type": "builtin",
8984
+
"content": [
8985
+
{
8986
+
"id": "salt",
8987
+
"name": "OCTET STRING",
8988
+
"type": "builtin"
8989
+
},
8990
+
{
8991
+
"id": "owf",
8992
+
"name": "AlgorithmIdentifier",
8993
+
"type": "defined"
8994
+
},
8995
+
{
8996
+
"id": "iterationCount",
8997
+
"name": "INTEGER",
8998
+
"type": "builtin"
8999
+
},
9000
+
{
9001
+
"id": "mac",
9002
+
"name": "AlgorithmIdentifier",
9003
+
"type": "defined"
9004
+
}
9005
+
]
9006
+
}
9007
+
},
9008
+
"DHBMParameter": {
9009
+
"name": "DHBMParameter",
9010
+
"type": {
9011
+
"name": "SEQUENCE",
9012
+
"type": "builtin",
9013
+
"content": [
9014
+
{
9015
+
"id": "owf",
9016
+
"name": "AlgorithmIdentifier",
9017
+
"type": "defined"
9018
+
},
9019
+
{
9020
+
"id": "mac",
9021
+
"name": "AlgorithmIdentifier",
9022
+
"type": "defined"
9023
+
}
9024
+
]
9025
+
}
9026
+
},
9027
+
"NestedMessageContent": {
9028
+
"name": "NestedMessageContent",
9029
+
"type": {
9030
+
"name": "PKIMessages",
9031
+
"type": "defined"
9032
+
}
9033
+
},
9034
+
"PKIStatus": {
9035
+
"name": "PKIStatus",
9036
+
"type": {
9037
+
"name": "INTEGER",
9038
+
"type": "builtin",
9039
+
"content": {
9040
+
"accepted": 0,
9041
+
"grantedWithMods": 1,
9042
+
"rejection": 2,
9043
+
"waiting": 3,
9044
+
"revocationWarning": 4,
9045
+
"revocationNotification": 5,
9046
+
"keyUpdateWarning": 6
9047
+
}
9048
+
}
9049
+
},
9050
+
"PKIFailureInfo": {
9051
+
"name": "PKIFailureInfo",
9052
+
"type": {
9053
+
"name": "BIT STRING",
9054
+
"type": "builtin",
9055
+
"content": {
9056
+
"badAlg": 0,
9057
+
"badMessageCheck": 1,
9058
+
"badRequest": 2,
9059
+
"badTime": 3,
9060
+
"badCertId": 4,
9061
+
"badDataFormat": 5,
9062
+
"wrongAuthority": 6,
9063
+
"incorrectData": 7,
9064
+
"missingTimeStamp": 8,
9065
+
"badPOP": 9,
9066
+
"certRevoked": 10,
9067
+
"certConfirmed": 11,
9068
+
"wrongIntegrity": 12,
9069
+
"badRecipientNonce": 13,
9070
+
"timeNotAvailable": 14,
9071
+
"unacceptedPolicy": 15,
9072
+
"unacceptedExtension": 16,
9073
+
"addInfoNotAvailable": 17,
9074
+
"badSenderNonce": 18,
9075
+
"badCertTemplate": 19,
9076
+
"signerNotTrusted": 20,
9077
+
"transactionIdInUse": 21,
9078
+
"unsupportedVersion": 22,
9079
+
"notAuthorized": 23,
9080
+
"systemUnavail": 24,
9081
+
"systemFailure": 25,
9082
+
"duplicateCertReq": 26
9083
+
}
9084
+
}
9085
+
},
9086
+
"PKIStatusInfo": {
9087
+
"name": "PKIStatusInfo",
9088
+
"type": {
9089
+
"name": "SEQUENCE",
9090
+
"type": "builtin",
9091
+
"content": [
9092
+
{
9093
+
"id": "status",
9094
+
"name": "PKIStatus",
9095
+
"type": "defined"
9096
+
},
9097
+
{
9098
+
"id": "statusString",
9099
+
"name": "PKIFreeText",
9100
+
"type": "defined",
9101
+
"optional": true
9102
+
},
9103
+
{
9104
+
"id": "failInfo",
9105
+
"name": "PKIFailureInfo",
9106
+
"type": "defined",
9107
+
"optional": true
9108
+
}
9109
+
]
9110
+
}
9111
+
},
9112
+
"OOBCert": {
9113
+
"name": "OOBCert",
9114
+
"type": {
9115
+
"name": "CMPCertificate",
9116
+
"type": "defined"
9117
+
}
9118
+
},
9119
+
"OOBCertHash": {
9120
+
"name": "OOBCertHash",
9121
+
"type": {
9122
+
"name": "SEQUENCE",
9123
+
"type": "builtin",
9124
+
"content": [
9125
+
{
9126
+
"id": "hashAlg",
9127
+
"name": "[0]",
9128
+
"type": "tag",
9129
+
"class": "CONTEXT",
9130
+
"explicit": true,
9131
+
"content": [
9132
+
{
9133
+
"name": "",
9134
+
"type": {
9135
+
"name": "AlgorithmIdentifier",
9136
+
"type": "defined"
9137
+
}
9138
+
}
9139
+
],
9140
+
"optional": true
9141
+
},
9142
+
{
9143
+
"id": "certId",
9144
+
"name": "[1]",
9145
+
"type": "tag",
9146
+
"class": "CONTEXT",
9147
+
"explicit": true,
9148
+
"content": [
9149
+
{
9150
+
"name": "",
9151
+
"type": {
9152
+
"name": "CertId",
9153
+
"type": "defined"
9154
+
}
9155
+
}
9156
+
],
9157
+
"optional": true
9158
+
},
9159
+
{
9160
+
"id": "hashVal",
9161
+
"name": "BIT STRING",
9162
+
"type": "builtin"
9163
+
}
9164
+
]
9165
+
}
9166
+
},
9167
+
"POPODecKeyChallContent": {
9168
+
"name": "POPODecKeyChallContent",
9169
+
"type": {
9170
+
"name": "SEQUENCE",
9171
+
"type": "builtin",
9172
+
"typeOf": 1,
9173
+
"content": [
9174
+
{
9175
+
"name": "Challenge",
9176
+
"type": "defined"
9177
+
}
9178
+
]
9179
+
}
9180
+
},
9181
+
"Challenge": {
9182
+
"name": "Challenge",
9183
+
"type": {
9184
+
"name": "SEQUENCE",
9185
+
"type": "builtin",
9186
+
"content": [
9187
+
{
9188
+
"id": "owf",
9189
+
"name": "AlgorithmIdentifier",
9190
+
"type": "defined",
9191
+
"optional": true
9192
+
},
9193
+
{
9194
+
"id": "witness",
9195
+
"name": "OCTET STRING",
9196
+
"type": "builtin"
9197
+
},
9198
+
{
9199
+
"id": "challenge",
9200
+
"name": "OCTET STRING",
9201
+
"type": "builtin"
9202
+
}
9203
+
]
9204
+
}
9205
+
},
9206
+
"POPODecKeyRespContent": {
9207
+
"name": "POPODecKeyRespContent",
9208
+
"type": {
9209
+
"name": "SEQUENCE",
9210
+
"type": "builtin",
9211
+
"typeOf": 1,
9212
+
"content": [
9213
+
{
9214
+
"name": "INTEGER",
9215
+
"type": "builtin"
9216
+
}
9217
+
]
9218
+
}
9219
+
},
9220
+
"CertRepMessage": {
9221
+
"name": "CertRepMessage",
9222
+
"type": {
9223
+
"name": "SEQUENCE",
9224
+
"type": "builtin",
9225
+
"content": [
9226
+
{
9227
+
"id": "caPubs",
9228
+
"name": "[1]",
9229
+
"type": "tag",
9230
+
"class": "CONTEXT",
9231
+
"explicit": true,
9232
+
"content": [
9233
+
{
9234
+
"name": "",
9235
+
"type": {
9236
+
"name": "SEQUENCE",
9237
+
"type": "builtin",
9238
+
"typeOf": 1,
9239
+
"size": [
9240
+
1,
9241
+
"MAX"
9242
+
],
9243
+
"content": [
9244
+
{
9245
+
"name": "CMPCertificate",
9246
+
"type": "defined"
9247
+
}
9248
+
]
9249
+
}
9250
+
}
9251
+
],
9252
+
"optional": true
9253
+
},
9254
+
{
9255
+
"id": "response",
9256
+
"name": "SEQUENCE",
9257
+
"type": "builtin",
9258
+
"typeOf": 1,
9259
+
"content": [
9260
+
{
9261
+
"name": "CertResponse",
9262
+
"type": "defined"
9263
+
}
9264
+
]
9265
+
}
9266
+
]
9267
+
}
9268
+
},
9269
+
"CertResponse": {
9270
+
"name": "CertResponse",
9271
+
"type": {
9272
+
"name": "SEQUENCE",
9273
+
"type": "builtin",
9274
+
"content": [
9275
+
{
9276
+
"id": "certReqId",
9277
+
"name": "INTEGER",
9278
+
"type": "builtin"
9279
+
},
9280
+
{
9281
+
"id": "status",
9282
+
"name": "PKIStatusInfo",
9283
+
"type": "defined"
9284
+
},
9285
+
{
9286
+
"id": "certifiedKeyPair",
9287
+
"name": "CertifiedKeyPair",
9288
+
"type": "defined",
9289
+
"optional": true
9290
+
},
9291
+
{
9292
+
"id": "rspInfo",
9293
+
"name": "OCTET STRING",
9294
+
"type": "builtin",
9295
+
"optional": true
9296
+
}
9297
+
]
9298
+
}
9299
+
},
9300
+
"CertifiedKeyPair": {
9301
+
"name": "CertifiedKeyPair",
9302
+
"type": {
9303
+
"name": "SEQUENCE",
9304
+
"type": "builtin",
9305
+
"content": [
9306
+
{
9307
+
"id": "certOrEncCert",
9308
+
"name": "CertOrEncCert",
9309
+
"type": "defined"
9310
+
},
9311
+
{
9312
+
"id": "privateKey",
9313
+
"name": "[0]",
9314
+
"type": "tag",
9315
+
"class": "CONTEXT",
9316
+
"explicit": true,
9317
+
"content": [
9318
+
{
9319
+
"name": "",
9320
+
"type": {
9321
+
"name": "EncryptedValue",
9322
+
"type": "defined"
9323
+
}
9324
+
}
9325
+
],
9326
+
"optional": true
9327
+
},
9328
+
{
9329
+
"id": "publicationInfo",
9330
+
"name": "[1]",
9331
+
"type": "tag",
9332
+
"class": "CONTEXT",
9333
+
"explicit": true,
9334
+
"content": [
9335
+
{
9336
+
"name": "",
9337
+
"type": {
9338
+
"name": "PKIPublicationInfo",
9339
+
"type": "defined"
9340
+
}
9341
+
}
9342
+
],
9343
+
"optional": true
9344
+
}
9345
+
]
9346
+
}
9347
+
},
9348
+
"CertOrEncCert": {
9349
+
"name": "CertOrEncCert",
9350
+
"type": {
9351
+
"name": "CHOICE",
9352
+
"type": "builtin",
9353
+
"content": [
9354
+
{
9355
+
"id": "certificate",
9356
+
"name": "[0]",
9357
+
"type": "tag",
9358
+
"class": "CONTEXT",
9359
+
"explicit": true,
9360
+
"content": [
9361
+
{
9362
+
"name": "",
9363
+
"type": {
9364
+
"name": "CMPCertificate",
9365
+
"type": "defined"
9366
+
}
9367
+
}
9368
+
]
9369
+
},
9370
+
{
9371
+
"id": "encryptedCert",
9372
+
"name": "[1]",
9373
+
"type": "tag",
9374
+
"class": "CONTEXT",
9375
+
"explicit": true,
9376
+
"content": [
9377
+
{
9378
+
"name": "",
9379
+
"type": {
9380
+
"name": "EncryptedValue",
9381
+
"type": "defined"
9382
+
}
9383
+
}
9384
+
]
9385
+
}
9386
+
]
9387
+
}
9388
+
},
9389
+
"KeyRecRepContent": {
9390
+
"name": "KeyRecRepContent",
9391
+
"type": {
9392
+
"name": "SEQUENCE",
9393
+
"type": "builtin",
9394
+
"content": [
9395
+
{
9396
+
"id": "status",
9397
+
"name": "PKIStatusInfo",
9398
+
"type": "defined"
9399
+
},
9400
+
{
9401
+
"id": "newSigCert",
9402
+
"name": "[0]",
9403
+
"type": "tag",
9404
+
"class": "CONTEXT",
9405
+
"explicit": true,
9406
+
"content": [
9407
+
{
9408
+
"name": "",
9409
+
"type": {
9410
+
"name": "CMPCertificate",
9411
+
"type": "defined"
9412
+
}
9413
+
}
9414
+
],
9415
+
"optional": true
9416
+
},
9417
+
{
9418
+
"id": "caCerts",
9419
+
"name": "[1]",
9420
+
"type": "tag",
9421
+
"class": "CONTEXT",
9422
+
"explicit": true,
9423
+
"content": [
9424
+
{
9425
+
"name": "",
9426
+
"type": {
9427
+
"name": "SEQUENCE",
9428
+
"type": "builtin",
9429
+
"typeOf": 1,
9430
+
"size": [
9431
+
1,
9432
+
"MAX"
9433
+
],
9434
+
"content": [
9435
+
{
9436
+
"name": "CMPCertificate",
9437
+
"type": "defined"
9438
+
}
9439
+
]
9440
+
}
9441
+
}
9442
+
],
9443
+
"optional": true
9444
+
},
9445
+
{
9446
+
"id": "keyPairHist",
9447
+
"name": "[2]",
9448
+
"type": "tag",
9449
+
"class": "CONTEXT",
9450
+
"explicit": true,
9451
+
"content": [
9452
+
{
9453
+
"name": "",
9454
+
"type": {
9455
+
"name": "SEQUENCE",
9456
+
"type": "builtin",
9457
+
"typeOf": 1,
9458
+
"size": [
9459
+
1,
9460
+
"MAX"
9461
+
],
9462
+
"content": [
9463
+
{
9464
+
"name": "CertifiedKeyPair",
9465
+
"type": "defined"
9466
+
}
9467
+
]
9468
+
}
9469
+
}
9470
+
],
9471
+
"optional": true
9472
+
}
9473
+
]
9474
+
}
9475
+
},
9476
+
"RevReqContent": {
9477
+
"name": "RevReqContent",
9478
+
"type": {
9479
+
"name": "SEQUENCE",
9480
+
"type": "builtin",
9481
+
"typeOf": 1,
9482
+
"content": [
9483
+
{
9484
+
"name": "RevDetails",
9485
+
"type": "defined"
9486
+
}
9487
+
]
9488
+
}
9489
+
},
9490
+
"RevDetails": {
9491
+
"name": "RevDetails",
9492
+
"type": {
9493
+
"name": "SEQUENCE",
9494
+
"type": "builtin",
9495
+
"content": [
9496
+
{
9497
+
"id": "certDetails",
9498
+
"name": "CertTemplate",
9499
+
"type": "defined"
9500
+
},
9501
+
{
9502
+
"id": "crlEntryDetails",
9503
+
"name": "Extensions",
9504
+
"type": "defined",
9505
+
"optional": true
9506
+
}
9507
+
]
9508
+
}
9509
+
},
9510
+
"RevRepContent": {
9511
+
"name": "RevRepContent",
9512
+
"type": {
9513
+
"name": "SEQUENCE",
9514
+
"type": "builtin",
9515
+
"content": [
9516
+
{
9517
+
"id": "status",
9518
+
"name": "SEQUENCE",
9519
+
"type": "builtin",
9520
+
"typeOf": 1,
9521
+
"size": [
9522
+
1,
9523
+
"MAX"
9524
+
],
9525
+
"content": [
9526
+
{
9527
+
"name": "PKIStatusInfo",
9528
+
"type": "defined"
9529
+
}
9530
+
]
9531
+
},
9532
+
{
9533
+
"id": "revCerts",
9534
+
"name": "[0]",
9535
+
"type": "tag",
9536
+
"class": "CONTEXT",
9537
+
"explicit": true,
9538
+
"content": [
9539
+
{
9540
+
"name": "",
9541
+
"type": {
9542
+
"name": "SEQUENCE",
9543
+
"type": "builtin",
9544
+
"typeOf": 1,
9545
+
"size": [
9546
+
1,
9547
+
"MAX"
9548
+
],
9549
+
"content": [
9550
+
{
9551
+
"name": "CertId",
9552
+
"type": "defined"
9553
+
}
9554
+
]
9555
+
}
9556
+
}
9557
+
],
9558
+
"optional": true
9559
+
},
9560
+
{
9561
+
"id": "crls",
9562
+
"name": "[1]",
9563
+
"type": "tag",
9564
+
"class": "CONTEXT",
9565
+
"explicit": true,
9566
+
"content": [
9567
+
{
9568
+
"name": "",
9569
+
"type": {
9570
+
"name": "SEQUENCE",
9571
+
"type": "builtin",
9572
+
"typeOf": 1,
9573
+
"size": [
9574
+
1,
9575
+
"MAX"
9576
+
],
9577
+
"content": [
9578
+
{
9579
+
"name": "CertificateList",
9580
+
"type": "defined"
9581
+
}
9582
+
]
9583
+
}
9584
+
}
9585
+
],
9586
+
"optional": true
9587
+
}
9588
+
]
9589
+
}
9590
+
},
9591
+
"CAKeyUpdAnnContent": {
9592
+
"name": "CAKeyUpdAnnContent",
9593
+
"type": {
9594
+
"name": "SEQUENCE",
9595
+
"type": "builtin",
9596
+
"content": [
9597
+
{
9598
+
"id": "oldWithNew",
9599
+
"name": "CMPCertificate",
9600
+
"type": "defined"
9601
+
},
9602
+
{
9603
+
"id": "newWithOld",
9604
+
"name": "CMPCertificate",
9605
+
"type": "defined"
9606
+
},
9607
+
{
9608
+
"id": "newWithNew",
9609
+
"name": "CMPCertificate",
9610
+
"type": "defined"
9611
+
}
9612
+
]
9613
+
}
9614
+
},
9615
+
"CertAnnContent": {
9616
+
"name": "CertAnnContent",
9617
+
"type": {
9618
+
"name": "CMPCertificate",
9619
+
"type": "defined"
9620
+
}
9621
+
},
9622
+
"RevAnnContent": {
9623
+
"name": "RevAnnContent",
9624
+
"type": {
9625
+
"name": "SEQUENCE",
9626
+
"type": "builtin",
9627
+
"content": [
9628
+
{
9629
+
"id": "status",
9630
+
"name": "PKIStatus",
9631
+
"type": "defined"
9632
+
},
9633
+
{
9634
+
"id": "certId",
9635
+
"name": "CertId",
9636
+
"type": "defined"
9637
+
},
9638
+
{
9639
+
"id": "willBeRevokedAt",
9640
+
"name": "GeneralizedTime",
9641
+
"type": "builtin"
9642
+
},
9643
+
{
9644
+
"id": "badSinceDate",
9645
+
"name": "GeneralizedTime",
9646
+
"type": "builtin"
9647
+
},
9648
+
{
9649
+
"id": "crlDetails",
9650
+
"name": "Extensions",
9651
+
"type": "defined",
9652
+
"optional": true
9653
+
}
9654
+
]
9655
+
}
9656
+
},
9657
+
"CRLAnnContent": {
9658
+
"name": "CRLAnnContent",
9659
+
"type": {
9660
+
"name": "SEQUENCE",
9661
+
"type": "builtin",
9662
+
"typeOf": 1,
9663
+
"content": [
9664
+
{
9665
+
"name": "CertificateList",
9666
+
"type": "defined"
9667
+
}
9668
+
]
9669
+
}
9670
+
},
9671
+
"CertConfirmContent": {
9672
+
"name": "CertConfirmContent",
9673
+
"type": {
9674
+
"name": "SEQUENCE",
9675
+
"type": "builtin",
9676
+
"typeOf": 1,
9677
+
"content": [
9678
+
{
9679
+
"name": "CertStatus",
9680
+
"type": "defined"
9681
+
}
9682
+
]
9683
+
}
9684
+
},
9685
+
"CertStatus": {
9686
+
"name": "CertStatus",
9687
+
"type": {
9688
+
"name": "SEQUENCE",
9689
+
"type": "builtin",
9690
+
"content": [
9691
+
{
9692
+
"id": "certHash",
9693
+
"name": "OCTET STRING",
9694
+
"type": "builtin"
9695
+
},
9696
+
{
9697
+
"id": "certReqId",
9698
+
"name": "INTEGER",
9699
+
"type": "builtin"
9700
+
},
9701
+
{
9702
+
"id": "statusInfo",
9703
+
"name": "PKIStatusInfo",
9704
+
"type": "defined",
9705
+
"optional": true
9706
+
}
9707
+
]
9708
+
}
9709
+
},
9710
+
"PKIConfirmContent": {
9711
+
"name": "PKIConfirmContent",
9712
+
"type": {
9713
+
"name": "NULL",
9714
+
"type": "builtin"
9715
+
}
9716
+
},
9717
+
"InfoTypeAndValue": {
9718
+
"name": "InfoTypeAndValue",
9719
+
"type": {
9720
+
"name": "SEQUENCE",
9721
+
"type": "builtin",
9722
+
"content": [
9723
+
{
9724
+
"id": "infoType",
9725
+
"name": "OBJECT IDENTIFIER",
9726
+
"type": "builtin"
9727
+
},
9728
+
{
9729
+
"id": "infoValue",
9730
+
"name": "ANY",
9731
+
"type": "builtin",
9732
+
"definedBy": "infoType",
9733
+
"optional": true
9734
+
}
9735
+
]
9736
+
}
9737
+
},
9738
+
"GenMsgContent": {
9739
+
"name": "GenMsgContent",
9740
+
"type": {
9741
+
"name": "SEQUENCE",
9742
+
"type": "builtin",
9743
+
"typeOf": 1,
9744
+
"content": [
9745
+
{
9746
+
"name": "InfoTypeAndValue",
9747
+
"type": "defined"
9748
+
}
9749
+
]
9750
+
}
9751
+
},
9752
+
"GenRepContent": {
9753
+
"name": "GenRepContent",
9754
+
"type": {
9755
+
"name": "SEQUENCE",
9756
+
"type": "builtin",
9757
+
"typeOf": 1,
9758
+
"content": [
9759
+
{
9760
+
"name": "InfoTypeAndValue",
9761
+
"type": "defined"
9762
+
}
9763
+
]
9764
+
}
9765
+
},
9766
+
"ErrorMsgContent": {
9767
+
"name": "ErrorMsgContent",
9768
+
"type": {
9769
+
"name": "SEQUENCE",
9770
+
"type": "builtin",
9771
+
"content": [
9772
+
{
9773
+
"id": "pKIStatusInfo",
9774
+
"name": "PKIStatusInfo",
9775
+
"type": "defined"
9776
+
},
9777
+
{
9778
+
"id": "errorCode",
9779
+
"name": "INTEGER",
9780
+
"type": "builtin",
9781
+
"optional": true
9782
+
},
9783
+
{
9784
+
"id": "errorDetails",
9785
+
"name": "PKIFreeText",
9786
+
"type": "defined",
9787
+
"optional": true
9788
+
}
9789
+
]
9790
+
}
9791
+
},
9792
+
"PollReqContent": {
9793
+
"name": "PollReqContent",
9794
+
"type": {
9795
+
"name": "SEQUENCE",
9796
+
"type": "builtin",
9797
+
"typeOf": 1,
9798
+
"content": [
9799
+
{
9800
+
"name": "SEQUENCE",
9801
+
"type": "builtin",
9802
+
"content": [
9803
+
{
9804
+
"id": "certReqId",
9805
+
"name": "INTEGER",
9806
+
"type": "builtin"
9807
+
}
9808
+
]
9809
+
}
9810
+
]
9811
+
}
9812
+
},
9813
+
"PollRepContent": {
9814
+
"name": "PollRepContent",
9815
+
"type": {
9816
+
"name": "SEQUENCE",
9817
+
"type": "builtin",
9818
+
"typeOf": 1,
9819
+
"content": [
9820
+
{
9821
+
"name": "SEQUENCE",
9822
+
"type": "builtin",
9823
+
"content": [
9824
+
{
9825
+
"id": "certReqId",
9826
+
"name": "INTEGER",
9827
+
"type": "builtin"
9828
+
},
9829
+
{
9830
+
"id": "checkAfter",
9831
+
"name": "INTEGER",
9832
+
"type": "builtin"
9833
+
},
9834
+
{
9835
+
"id": "reason",
9836
+
"name": "PKIFreeText",
9837
+
"type": "defined",
9838
+
"optional": true
9839
+
}
9840
+
]
9841
+
}
9842
+
]
9843
+
}
9844
+
}
9845
+
}
9846
+
},
9847
+
"1.2.840.113549.1.1.0.1": {
9848
+
"name": "PKCS-1",
9849
+
"oid": "1.2.840.113549.1.1.0.1",
9850
+
"source": "rfc8017.txt",
9851
+
"tagDefault": "EXPLICIT",
9852
+
"imports": {
9853
+
"2.16.840.1.101.3.4.2": {
9854
+
"name": "NIST-SHA2",
9855
+
"oid": "2.16.840.1.101.3.4.2",
9856
+
"types": [
9857
+
"id-sha224",
9858
+
"id-sha256",
9859
+
"id-sha384",
9860
+
"id-sha512",
9861
+
"id-sha512-224",
9862
+
"id-sha512-256"
9863
+
]
9864
+
}
9865
+
},
9866
+
"values": {
9867
+
"pkcs-1": {
9868
+
"name": "pkcs-1",
9869
+
"type": {
9870
+
"name": "OBJECT IDENTIFIER",
9871
+
"type": "builtin"
9872
+
},
9873
+
"value": "1.2.840.113549.1.1"
9874
+
},
9875
+
"rsaEncryption": {
9876
+
"name": "rsaEncryption",
9877
+
"type": {
9878
+
"name": "OBJECT IDENTIFIER",
9879
+
"type": "builtin"
9880
+
},
9881
+
"value": "1.2.840.113549.1.1.1"
9882
+
},
9883
+
"id-RSAES-OAEP": {
9884
+
"name": "id-RSAES-OAEP",
9885
+
"type": {
9886
+
"name": "OBJECT IDENTIFIER",
9887
+
"type": "builtin"
9888
+
},
9889
+
"value": "1.2.840.113549.1.1.7"
9890
+
},
9891
+
"id-pSpecified": {
9892
+
"name": "id-pSpecified",
9893
+
"type": {
9894
+
"name": "OBJECT IDENTIFIER",
9895
+
"type": "builtin"
9896
+
},
9897
+
"value": "1.2.840.113549.1.1.9"
9898
+
},
9899
+
"id-RSASSA-PSS": {
9900
+
"name": "id-RSASSA-PSS",
9901
+
"type": {
9902
+
"name": "OBJECT IDENTIFIER",
9903
+
"type": "builtin"
9904
+
},
9905
+
"value": "1.2.840.113549.1.1.10"
9906
+
},
9907
+
"md2WithRSAEncryption": {
9908
+
"name": "md2WithRSAEncryption",
9909
+
"type": {
9910
+
"name": "OBJECT IDENTIFIER",
9911
+
"type": "builtin"
9912
+
},
9913
+
"value": "1.2.840.113549.1.1.2"
9914
+
},
9915
+
"md5WithRSAEncryption": {
9916
+
"name": "md5WithRSAEncryption",
9917
+
"type": {
9918
+
"name": "OBJECT IDENTIFIER",
9919
+
"type": "builtin"
9920
+
},
9921
+
"value": "1.2.840.113549.1.1.4"
9922
+
},
9923
+
"sha1WithRSAEncryption": {
9924
+
"name": "sha1WithRSAEncryption",
9925
+
"type": {
9926
+
"name": "OBJECT IDENTIFIER",
9927
+
"type": "builtin"
9928
+
},
9929
+
"value": "1.2.840.113549.1.1.5"
9930
+
},
9931
+
"sha224WithRSAEncryption": {
9932
+
"name": "sha224WithRSAEncryption",
9933
+
"type": {
9934
+
"name": "OBJECT IDENTIFIER",
9935
+
"type": "builtin"
9936
+
},
9937
+
"value": "1.2.840.113549.1.1.14"
9938
+
},
9939
+
"sha256WithRSAEncryption": {
9940
+
"name": "sha256WithRSAEncryption",
9941
+
"type": {
9942
+
"name": "OBJECT IDENTIFIER",
9943
+
"type": "builtin"
9944
+
},
9945
+
"value": "1.2.840.113549.1.1.11"
9946
+
},
9947
+
"sha384WithRSAEncryption": {
9948
+
"name": "sha384WithRSAEncryption",
9949
+
"type": {
9950
+
"name": "OBJECT IDENTIFIER",
9951
+
"type": "builtin"
9952
+
},
9953
+
"value": "1.2.840.113549.1.1.12"
9954
+
},
9955
+
"sha512WithRSAEncryption": {
9956
+
"name": "sha512WithRSAEncryption",
9957
+
"type": {
9958
+
"name": "OBJECT IDENTIFIER",
9959
+
"type": "builtin"
9960
+
},
9961
+
"value": "1.2.840.113549.1.1.13"
9962
+
},
9963
+
"sha512-224WithRSAEncryption": {
9964
+
"name": "sha512-224WithRSAEncryption",
9965
+
"type": {
9966
+
"name": "OBJECT IDENTIFIER",
9967
+
"type": "builtin"
9968
+
},
9969
+
"value": "1.2.840.113549.1.1.15"
9970
+
},
9971
+
"sha512-256WithRSAEncryption": {
9972
+
"name": "sha512-256WithRSAEncryption",
9973
+
"type": {
9974
+
"name": "OBJECT IDENTIFIER",
9975
+
"type": "builtin"
9976
+
},
9977
+
"value": "1.2.840.113549.1.1.16"
9978
+
},
9979
+
"id-sha1": {
9980
+
"name": "id-sha1",
9981
+
"type": {
9982
+
"name": "OBJECT IDENTIFIER",
9983
+
"type": "builtin"
9984
+
},
9985
+
"value": "1.3.14.3.2.26"
9986
+
},
9987
+
"id-md2": {
9988
+
"name": "id-md2",
9989
+
"type": {
9990
+
"name": "OBJECT IDENTIFIER",
9991
+
"type": "builtin"
9992
+
},
9993
+
"value": "1.2.840.113549.2.2"
9994
+
},
9995
+
"id-md5": {
9996
+
"name": "id-md5",
9997
+
"type": {
9998
+
"name": "OBJECT IDENTIFIER",
9999
+
"type": "builtin"
10000
+
},
10001
+
"value": "1.2.840.113549.2.5"
10002
+
},
10003
+
"id-mgf1": {
10004
+
"name": "id-mgf1",
10005
+
"type": {
10006
+
"name": "OBJECT IDENTIFIER",
10007
+
"type": "builtin"
10008
+
},
10009
+
"value": "1.2.840.113549.1.1.8"
10010
+
}
10011
+
},
10012
+
"types": {
10013
+
"AlgorithmIdentifier": {
10014
+
"name": "AlgorithmIdentifier",
10015
+
"type": {
10016
+
"name": "ANY",
10017
+
"type": "builtin"
10018
+
}
10019
+
},
10020
+
"HashAlgorithm": {
10021
+
"name": "HashAlgorithm",
10022
+
"type": {
10023
+
"name": "AlgorithmIdentifier",
10024
+
"type": "defined"
10025
+
}
10026
+
},
10027
+
"SHA1Parameters": {
10028
+
"name": "SHA1Parameters",
10029
+
"type": {
10030
+
"name": "NULL",
10031
+
"type": "builtin"
10032
+
}
10033
+
},
10034
+
"MaskGenAlgorithm": {
10035
+
"name": "MaskGenAlgorithm",
10036
+
"type": {
10037
+
"name": "AlgorithmIdentifier",
10038
+
"type": "defined"
10039
+
}
10040
+
},
10041
+
"EncodingParameters": {
10042
+
"name": "EncodingParameters",
10043
+
"type": {
10044
+
"name": "OCTET STRING",
10045
+
"type": "builtin"
10046
+
}
10047
+
},
10048
+
"PSourceAlgorithm": {
10049
+
"name": "PSourceAlgorithm",
10050
+
"type": {
10051
+
"name": "AlgorithmIdentifier",
10052
+
"type": "defined"
10053
+
}
10054
+
},
10055
+
"RSAPublicKey": {
10056
+
"name": "RSAPublicKey",
10057
+
"type": {
10058
+
"name": "SEQUENCE",
10059
+
"type": "builtin",
10060
+
"content": [
10061
+
{
10062
+
"id": "modulus",
10063
+
"name": "INTEGER",
10064
+
"type": "builtin"
10065
+
},
10066
+
{
10067
+
"id": "publicExponent",
10068
+
"name": "INTEGER",
10069
+
"type": "builtin"
10070
+
}
10071
+
]
10072
+
}
10073
+
},
10074
+
"RSAPrivateKey": {
10075
+
"name": "RSAPrivateKey",
10076
+
"type": {
10077
+
"name": "SEQUENCE",
10078
+
"type": "builtin",
10079
+
"content": [
10080
+
{
10081
+
"id": "version",
10082
+
"name": "Version",
10083
+
"type": "defined"
10084
+
},
10085
+
{
10086
+
"id": "modulus",
10087
+
"name": "INTEGER",
10088
+
"type": "builtin"
10089
+
},
10090
+
{
10091
+
"id": "publicExponent",
10092
+
"name": "INTEGER",
10093
+
"type": "builtin"
10094
+
},
10095
+
{
10096
+
"id": "privateExponent",
10097
+
"name": "INTEGER",
10098
+
"type": "builtin"
10099
+
},
10100
+
{
10101
+
"id": "prime1",
10102
+
"name": "INTEGER",
10103
+
"type": "builtin"
10104
+
},
10105
+
{
10106
+
"id": "prime2",
10107
+
"name": "INTEGER",
10108
+
"type": "builtin"
10109
+
},
10110
+
{
10111
+
"id": "exponent1",
10112
+
"name": "INTEGER",
10113
+
"type": "builtin"
10114
+
},
10115
+
{
10116
+
"id": "exponent2",
10117
+
"name": "INTEGER",
10118
+
"type": "builtin"
10119
+
},
10120
+
{
10121
+
"id": "coefficient",
10122
+
"name": "INTEGER",
10123
+
"type": "builtin"
10124
+
},
10125
+
{
10126
+
"id": "otherPrimeInfos",
10127
+
"name": "OtherPrimeInfos",
10128
+
"type": "defined",
10129
+
"optional": true
10130
+
}
10131
+
]
10132
+
}
10133
+
},
10134
+
"Version": {
10135
+
"name": "Version",
10136
+
"type": {
10137
+
"name": "INTEGER",
10138
+
"type": "builtin",
10139
+
"content": {
10140
+
"two-prime": 0,
10141
+
"multi": 1
10142
+
}
10143
+
}
10144
+
},
10145
+
"OtherPrimeInfos": {
10146
+
"name": "OtherPrimeInfos",
10147
+
"type": {
10148
+
"name": "SEQUENCE",
10149
+
"type": "builtin",
10150
+
"typeOf": 1,
10151
+
"size": [
10152
+
1,
10153
+
"MAX"
10154
+
],
10155
+
"content": [
10156
+
{
10157
+
"name": "OtherPrimeInfo",
10158
+
"type": "defined"
10159
+
}
10160
+
]
10161
+
}
10162
+
},
10163
+
"OtherPrimeInfo": {
10164
+
"name": "OtherPrimeInfo",
10165
+
"type": {
10166
+
"name": "SEQUENCE",
10167
+
"type": "builtin",
10168
+
"content": [
10169
+
{
10170
+
"id": "prime",
10171
+
"name": "INTEGER",
10172
+
"type": "builtin"
10173
+
},
10174
+
{
10175
+
"id": "exponent",
10176
+
"name": "INTEGER",
10177
+
"type": "builtin"
10178
+
},
10179
+
{
10180
+
"id": "coefficient",
10181
+
"name": "INTEGER",
10182
+
"type": "builtin"
10183
+
}
10184
+
]
10185
+
}
10186
+
},
10187
+
"RSAES-OAEP-params": {
10188
+
"name": "RSAES-OAEP-params",
10189
+
"type": {
10190
+
"name": "SEQUENCE",
10191
+
"type": "builtin",
10192
+
"content": [
10193
+
{
10194
+
"id": "hashAlgorithm",
10195
+
"name": "[0]",
10196
+
"type": "tag",
10197
+
"class": "CONTEXT",
10198
+
"explicit": true,
10199
+
"content": [
10200
+
{
10201
+
"name": "",
10202
+
"type": {
10203
+
"name": "HashAlgorithm",
10204
+
"type": "defined"
10205
+
}
10206
+
}
10207
+
],
10208
+
"default": "sha1"
10209
+
},
10210
+
{
10211
+
"id": "maskGenAlgorithm",
10212
+
"name": "[1]",
10213
+
"type": "tag",
10214
+
"class": "CONTEXT",
10215
+
"explicit": true,
10216
+
"content": [
10217
+
{
10218
+
"name": "",
10219
+
"type": {
10220
+
"name": "MaskGenAlgorithm",
10221
+
"type": "defined"
10222
+
}
10223
+
}
10224
+
],
10225
+
"default": "mgf1SHA1"
10226
+
},
10227
+
{
10228
+
"id": "pSourceAlgorithm",
10229
+
"name": "[2]",
10230
+
"type": "tag",
10231
+
"class": "CONTEXT",
10232
+
"explicit": true,
10233
+
"content": [
10234
+
{
10235
+
"name": "",
10236
+
"type": {
10237
+
"name": "PSourceAlgorithm",
10238
+
"type": "defined"
10239
+
}
10240
+
}
10241
+
],
10242
+
"default": "pSpecifiedEmpty"
10243
+
}
10244
+
]
10245
+
}
10246
+
},
10247
+
"RSAES-AlgorithmIdentifier": {
10248
+
"name": "RSAES-AlgorithmIdentifier",
10249
+
"type": {
10250
+
"name": "AlgorithmIdentifier",
10251
+
"type": "defined"
10252
+
}
10253
+
},
10254
+
"RSASSA-PSS-params": {
10255
+
"name": "RSASSA-PSS-params",
10256
+
"type": {
10257
+
"name": "SEQUENCE",
10258
+
"type": "builtin",
10259
+
"content": [
10260
+
{
10261
+
"id": "hashAlgorithm",
10262
+
"name": "[0]",
10263
+
"type": "tag",
10264
+
"class": "CONTEXT",
10265
+
"explicit": true,
10266
+
"content": [
10267
+
{
10268
+
"name": "",
10269
+
"type": {
10270
+
"name": "HashAlgorithm",
10271
+
"type": "defined"
10272
+
}
10273
+
}
10274
+
],
10275
+
"default": "sha1"
10276
+
},
10277
+
{
10278
+
"id": "maskGenAlgorithm",
10279
+
"name": "[1]",
10280
+
"type": "tag",
10281
+
"class": "CONTEXT",
10282
+
"explicit": true,
10283
+
"content": [
10284
+
{
10285
+
"name": "",
10286
+
"type": {
10287
+
"name": "MaskGenAlgorithm",
10288
+
"type": "defined"
10289
+
}
10290
+
}
10291
+
],
10292
+
"default": "mgf1SHA1"
10293
+
},
10294
+
{
10295
+
"id": "saltLength",
10296
+
"name": "[2]",
10297
+
"type": "tag",
10298
+
"class": "CONTEXT",
10299
+
"explicit": true,
10300
+
"content": [
10301
+
{
10302
+
"name": "",
10303
+
"type": {
10304
+
"name": "INTEGER",
10305
+
"type": "builtin"
10306
+
}
10307
+
}
10308
+
],
10309
+
"default": 20
10310
+
},
10311
+
{
10312
+
"id": "trailerField",
10313
+
"name": "[3]",
10314
+
"type": "tag",
10315
+
"class": "CONTEXT",
10316
+
"explicit": true,
10317
+
"content": [
10318
+
{
10319
+
"name": "",
10320
+
"type": {
10321
+
"name": "TrailerField",
10322
+
"type": "defined"
10323
+
}
10324
+
}
10325
+
],
10326
+
"default": "trailerFieldBC"
10327
+
}
10328
+
]
10329
+
}
10330
+
},
10331
+
"TrailerField": {
10332
+
"name": "TrailerField",
10333
+
"type": {
10334
+
"name": "INTEGER",
10335
+
"type": "builtin",
10336
+
"content": {
10337
+
"trailerFieldBC": 1
10338
+
}
10339
+
}
10340
+
},
10341
+
"RSASSA-AlgorithmIdentifier": {
10342
+
"name": "RSASSA-AlgorithmIdentifier",
10343
+
"type": {
10344
+
"name": "AlgorithmIdentifier",
10345
+
"type": "defined"
10346
+
}
10347
+
},
10348
+
"DigestInfo": {
10349
+
"name": "DigestInfo",
10350
+
"type": {
10351
+
"name": "SEQUENCE",
10352
+
"type": "builtin",
10353
+
"content": [
10354
+
{
10355
+
"id": "digestAlgorithm",
10356
+
"name": "DigestAlgorithm",
10357
+
"type": "defined"
10358
+
},
10359
+
{
10360
+
"id": "digest",
10361
+
"name": "OCTET STRING",
10362
+
"type": "builtin"
10363
+
}
10364
+
]
10365
+
}
10366
+
},
10367
+
"DigestAlgorithm": {
10368
+
"name": "DigestAlgorithm",
10369
+
"type": {
10370
+
"name": "AlgorithmIdentifier",
10371
+
"type": "defined"
10372
+
}
10373
+
}
10374
+
}
10375
+
},
10376
+
"1.3.6.1.1.18": {
10377
+
"name": "Lightweight-Directory-Access-Protocol-V3",
10378
+
"oid": "1.3.6.1.1.18",
10379
+
"source": "rfc4511.txt",
10380
+
"tagDefault": "IMPLICIT",
10381
+
"values": {
10382
+
"maxInt": {
10383
+
"name": "maxInt",
10384
+
"type": {
10385
+
"name": "INTEGER",
10386
+
"type": "builtin"
10387
+
},
10388
+
"value": 2147483647
10389
+
}
10390
+
},
10391
+
"types": {
10392
+
"LDAPMessage": {
10393
+
"name": "LDAPMessage",
10394
+
"type": {
10395
+
"name": "SEQUENCE",
10396
+
"type": "builtin",
10397
+
"content": [
10398
+
{
10399
+
"id": "messageID",
10400
+
"name": "MessageID",
10401
+
"type": "defined"
10402
+
},
10403
+
{
10404
+
"id": "protocolOp",
10405
+
"name": "CHOICE",
10406
+
"type": "builtin",
10407
+
"content": [
10408
+
{
10409
+
"id": "bindRequest",
10410
+
"name": "BindRequest",
10411
+
"type": "defined"
10412
+
},
10413
+
{
10414
+
"id": "bindResponse",
10415
+
"name": "BindResponse",
10416
+
"type": "defined"
10417
+
},
10418
+
{
10419
+
"id": "unbindRequest",
10420
+
"name": "UnbindRequest",
10421
+
"type": "defined"
10422
+
},
10423
+
{
10424
+
"id": "searchRequest",
10425
+
"name": "SearchRequest",
10426
+
"type": "defined"
10427
+
},
10428
+
{
10429
+
"id": "searchResEntry",
10430
+
"name": "SearchResultEntry",
10431
+
"type": "defined"
10432
+
},
10433
+
{
10434
+
"id": "searchResDone",
10435
+
"name": "SearchResultDone",
10436
+
"type": "defined"
10437
+
},
10438
+
{
10439
+
"id": "searchResRef",
10440
+
"name": "SearchResultReference",
10441
+
"type": "defined"
10442
+
},
10443
+
{
10444
+
"id": "modifyRequest",
10445
+
"name": "ModifyRequest",
10446
+
"type": "defined"
10447
+
},
10448
+
{
10449
+
"id": "modifyResponse",
10450
+
"name": "ModifyResponse",
10451
+
"type": "defined"
10452
+
},
10453
+
{
10454
+
"id": "addRequest",
10455
+
"name": "AddRequest",
10456
+
"type": "defined"
10457
+
},
10458
+
{
10459
+
"id": "addResponse",
10460
+
"name": "AddResponse",
10461
+
"type": "defined"
10462
+
},
10463
+
{
10464
+
"id": "delRequest",
10465
+
"name": "DelRequest",
10466
+
"type": "defined"
10467
+
},
10468
+
{
10469
+
"id": "delResponse",
10470
+
"name": "DelResponse",
10471
+
"type": "defined"
10472
+
},
10473
+
{
10474
+
"id": "modDNRequest",
10475
+
"name": "ModifyDNRequest",
10476
+
"type": "defined"
10477
+
},
10478
+
{
10479
+
"id": "modDNResponse",
10480
+
"name": "ModifyDNResponse",
10481
+
"type": "defined"
10482
+
},
10483
+
{
10484
+
"id": "compareRequest",
10485
+
"name": "CompareRequest",
10486
+
"type": "defined"
10487
+
},
10488
+
{
10489
+
"id": "compareResponse",
10490
+
"name": "CompareResponse",
10491
+
"type": "defined"
10492
+
},
10493
+
{
10494
+
"id": "abandonRequest",
10495
+
"name": "AbandonRequest",
10496
+
"type": "defined"
10497
+
},
10498
+
{
10499
+
"id": "extendedReq",
10500
+
"name": "ExtendedRequest",
10501
+
"type": "defined"
10502
+
},
10503
+
{
10504
+
"id": "extendedResp",
10505
+
"name": "ExtendedResponse",
10506
+
"type": "defined"
10507
+
},
10508
+
{
10509
+
"id": "intermediateResponse",
10510
+
"name": "IntermediateResponse",
10511
+
"type": "defined"
10512
+
}
10513
+
]
10514
+
},
10515
+
{
10516
+
"id": "controls",
10517
+
"name": "[0]",
10518
+
"type": "tag",
10519
+
"class": "CONTEXT",
10520
+
"explicit": false,
10521
+
"content": [
10522
+
{
10523
+
"name": "",
10524
+
"type": {
10525
+
"name": "Controls",
10526
+
"type": "defined"
10527
+
}
10528
+
}
10529
+
],
10530
+
"optional": true
10531
+
}
10532
+
]
10533
+
}
10534
+
},
10535
+
"MessageID": {
10536
+
"name": "MessageID",
10537
+
"type": {
10538
+
"name": "INTEGER",
10539
+
"type": "builtin",
10540
+
"range": [
10541
+
0,
10542
+
"maxInt"
10543
+
]
10544
+
}
10545
+
},
10546
+
"LDAPString": {
10547
+
"name": "LDAPString",
10548
+
"type": {
10549
+
"name": "OCTET STRING",
10550
+
"type": "builtin"
10551
+
}
10552
+
},
10553
+
"LDAPOID": {
10554
+
"name": "LDAPOID",
10555
+
"type": {
10556
+
"name": "OCTET STRING",
10557
+
"type": "builtin"
10558
+
}
10559
+
},
10560
+
"LDAPDN": {
10561
+
"name": "LDAPDN",
10562
+
"type": {
10563
+
"name": "LDAPString",
10564
+
"type": "defined"
10565
+
}
10566
+
},
10567
+
"RelativeLDAPDN": {
10568
+
"name": "RelativeLDAPDN",
10569
+
"type": {
10570
+
"name": "LDAPString",
10571
+
"type": "defined"
10572
+
}
10573
+
},
10574
+
"AttributeDescription": {
10575
+
"name": "AttributeDescription",
10576
+
"type": {
10577
+
"name": "LDAPString",
10578
+
"type": "defined"
10579
+
}
10580
+
},
10581
+
"AttributeValue": {
10582
+
"name": "AttributeValue",
10583
+
"type": {
10584
+
"name": "OCTET STRING",
10585
+
"type": "builtin"
10586
+
}
10587
+
},
10588
+
"AttributeValueAssertion": {
10589
+
"name": "AttributeValueAssertion",
10590
+
"type": {
10591
+
"name": "SEQUENCE",
10592
+
"type": "builtin",
10593
+
"content": [
10594
+
{
10595
+
"id": "attributeDesc",
10596
+
"name": "AttributeDescription",
10597
+
"type": "defined"
10598
+
},
10599
+
{
10600
+
"id": "assertionValue",
10601
+
"name": "AssertionValue",
10602
+
"type": "defined"
10603
+
}
10604
+
]
10605
+
}
10606
+
},
10607
+
"AssertionValue": {
10608
+
"name": "AssertionValue",
10609
+
"type": {
10610
+
"name": "OCTET STRING",
10611
+
"type": "builtin"
10612
+
}
10613
+
},
10614
+
"PartialAttribute": {
10615
+
"name": "PartialAttribute",
10616
+
"type": {
10617
+
"name": "SEQUENCE",
10618
+
"type": "builtin",
10619
+
"content": [
10620
+
{
10621
+
"id": "type",
10622
+
"name": "AttributeDescription",
10623
+
"type": "defined"
10624
+
},
10625
+
{
10626
+
"id": "vals",
10627
+
"name": "SET",
10628
+
"type": "builtin",
10629
+
"typeOf": 1,
10630
+
"size": [
10631
+
1,
10632
+
"MAX"
10633
+
],
10634
+
"content": [
10635
+
{
10636
+
"name": "AttributeValue",
10637
+
"type": "defined"
10638
+
}
10639
+
]
10640
+
}
10641
+
]
10642
+
}
10643
+
},
10644
+
"MatchingRuleId": {
10645
+
"name": "MatchingRuleId",
10646
+
"type": {
10647
+
"name": "LDAPString",
10648
+
"type": "defined"
10649
+
}
10650
+
},
10651
+
"LDAPResult": {
10652
+
"name": "LDAPResult",
10653
+
"type": {
10654
+
"name": "SEQUENCE",
10655
+
"type": "builtin",
10656
+
"content": [
10657
+
{
10658
+
"id": "resultCode",
10659
+
"name": "ENUMERATED",
10660
+
"type": "builtin",
10661
+
"content": {
10662
+
"success": 0,
10663
+
"operationsError": 1,
10664
+
"protocolError": 2,
10665
+
"timeLimitExceeded": 3,
10666
+
"sizeLimitExceeded": 4,
10667
+
"compareFalse": 5,
10668
+
"compareTrue": 6,
10669
+
"authMethodNotSupported": 7,
10670
+
"strongerAuthRequired": 8,
10671
+
"referral": 10,
10672
+
"adminLimitExceeded": 11,
10673
+
"unavailableCriticalExtension": 12,
10674
+
"confidentialityRequired": 13,
10675
+
"saslBindInProgress": 14,
10676
+
"noSuchAttribute": 16,
10677
+
"undefinedAttributeType": 17,
10678
+
"inappropriateMatching": 18,
10679
+
"constraintViolation": 19,
10680
+
"attributeOrValueExists": 20,
10681
+
"invalidAttributeSyntax": 21,
10682
+
"noSuchObject": 32,
10683
+
"aliasProblem": 33,
10684
+
"invalidDNSyntax": 34,
10685
+
"aliasDereferencingProblem": 36,
10686
+
"inappropriateAuthentication": 48,
10687
+
"invalidCredentials": 49,
10688
+
"insufficientAccessRights": 50,
10689
+
"busy": 51,
10690
+
"unavailable": 52,
10691
+
"unwillingToPerform": 53,
10692
+
"loopDetect": 54,
10693
+
"namingViolation": 64,
10694
+
"objectClassViolation": 65,
10695
+
"notAllowedOnNonLeaf": 66,
10696
+
"notAllowedOnRDN": 67,
10697
+
"entryAlreadyExists": 68,
10698
+
"objectClassModsProhibited": 69,
10699
+
"affectsMultipleDSAs": 71,
10700
+
"other": 80
10701
+
}
10702
+
},
10703
+
{
10704
+
"id": "matchedDN",
10705
+
"name": "LDAPDN",
10706
+
"type": "defined"
10707
+
},
10708
+
{
10709
+
"id": "diagnosticMessage",
10710
+
"name": "LDAPString",
10711
+
"type": "defined"
10712
+
},
10713
+
{
10714
+
"id": "referral",
10715
+
"name": "[3]",
10716
+
"type": "tag",
10717
+
"class": "CONTEXT",
10718
+
"explicit": false,
10719
+
"content": [
10720
+
{
10721
+
"name": "",
10722
+
"type": {
10723
+
"name": "Referral",
10724
+
"type": "defined"
10725
+
}
10726
+
}
10727
+
],
10728
+
"optional": true
10729
+
}
10730
+
]
10731
+
}
10732
+
},
10733
+
"Referral": {
10734
+
"name": "Referral",
10735
+
"type": {
10736
+
"name": "SEQUENCE",
10737
+
"type": "builtin",
10738
+
"typeOf": 1,
10739
+
"size": [
10740
+
1,
10741
+
"MAX"
10742
+
],
10743
+
"content": [
10744
+
{
10745
+
"name": "URI",
10746
+
"type": "defined"
10747
+
}
10748
+
]
10749
+
}
10750
+
},
10751
+
"URI": {
10752
+
"name": "URI",
10753
+
"type": {
10754
+
"name": "LDAPString",
10755
+
"type": "defined"
10756
+
}
10757
+
},
10758
+
"Controls": {
10759
+
"name": "Controls",
10760
+
"type": {
10761
+
"name": "SEQUENCE",
10762
+
"type": "builtin",
10763
+
"typeOf": 1,
10764
+
"content": [
10765
+
{
10766
+
"name": "Control",
10767
+
"type": "defined"
10768
+
}
10769
+
]
10770
+
}
10771
+
},
10772
+
"Control": {
10773
+
"name": "Control",
10774
+
"type": {
10775
+
"name": "SEQUENCE",
10776
+
"type": "builtin",
10777
+
"content": [
10778
+
{
10779
+
"id": "controlType",
10780
+
"name": "LDAPOID",
10781
+
"type": "defined"
10782
+
},
10783
+
{
10784
+
"id": "criticality",
10785
+
"name": "BOOLEAN",
10786
+
"type": "builtin",
10787
+
"default": false
10788
+
},
10789
+
{
10790
+
"id": "controlValue",
10791
+
"name": "OCTET STRING",
10792
+
"type": "builtin",
10793
+
"optional": true
10794
+
}
10795
+
]
10796
+
}
10797
+
},
10798
+
"BindRequest": {
10799
+
"name": "BindRequest",
10800
+
"type": {
10801
+
"name": "Application 0",
10802
+
"type": "tag",
10803
+
"class": "APPLICATION",
10804
+
"explicit": false,
10805
+
"content": [
10806
+
{
10807
+
"name": "",
10808
+
"type": {
10809
+
"name": "SEQUENCE",
10810
+
"type": "builtin",
10811
+
"content": [
10812
+
{
10813
+
"id": "version",
10814
+
"name": "INTEGER",
10815
+
"type": "builtin",
10816
+
"range": [
10817
+
1,
10818
+
127
10819
+
]
10820
+
},
10821
+
{
10822
+
"id": "name",
10823
+
"name": "LDAPDN",
10824
+
"type": "defined"
10825
+
},
10826
+
{
10827
+
"id": "authentication",
10828
+
"name": "AuthenticationChoice",
10829
+
"type": "defined"
10830
+
}
10831
+
]
10832
+
}
10833
+
}
10834
+
]
10835
+
}
10836
+
},
10837
+
"AuthenticationChoice": {
10838
+
"name": "AuthenticationChoice",
10839
+
"type": {
10840
+
"name": "CHOICE",
10841
+
"type": "builtin",
10842
+
"content": [
10843
+
{
10844
+
"id": "simple",
10845
+
"name": "[0]",
10846
+
"type": "tag",
10847
+
"class": "CONTEXT",
10848
+
"explicit": false,
10849
+
"content": [
10850
+
{
10851
+
"name": "",
10852
+
"type": {
10853
+
"name": "OCTET STRING",
10854
+
"type": "builtin"
10855
+
}
10856
+
}
10857
+
]
10858
+
},
10859
+
{
10860
+
"id": "sasl",
10861
+
"name": "[3]",
10862
+
"type": "tag",
10863
+
"class": "CONTEXT",
10864
+
"explicit": false,
10865
+
"content": [
10866
+
{
10867
+
"name": "",
10868
+
"type": {
10869
+
"name": "SaslCredentials",
10870
+
"type": "defined"
10871
+
}
10872
+
}
10873
+
]
10874
+
}
10875
+
]
10876
+
}
10877
+
},
10878
+
"SaslCredentials": {
10879
+
"name": "SaslCredentials",
10880
+
"type": {
10881
+
"name": "SEQUENCE",
10882
+
"type": "builtin",
10883
+
"content": [
10884
+
{
10885
+
"id": "mechanism",
10886
+
"name": "LDAPString",
10887
+
"type": "defined"
10888
+
},
10889
+
{
10890
+
"id": "credentials",
10891
+
"name": "OCTET STRING",
10892
+
"type": "builtin",
10893
+
"optional": true
10894
+
}
10895
+
]
10896
+
}
10897
+
},
10898
+
"BindResponse": {
10899
+
"name": "BindResponse",
10900
+
"type": {
10901
+
"name": "ANY",
10902
+
"type": "builtin"
10903
+
}
10904
+
},
10905
+
"UnbindRequest": {
10906
+
"name": "UnbindRequest",
10907
+
"type": {
10908
+
"name": "Application 2",
10909
+
"type": "tag",
10910
+
"class": "APPLICATION",
10911
+
"explicit": false,
10912
+
"content": [
10913
+
{
10914
+
"name": "",
10915
+
"type": {
10916
+
"name": "NULL",
10917
+
"type": "builtin"
10918
+
}
10919
+
}
10920
+
]
10921
+
}
10922
+
},
10923
+
"SearchRequest": {
10924
+
"name": "SearchRequest",
10925
+
"type": {
10926
+
"name": "Application 3",
10927
+
"type": "tag",
10928
+
"class": "APPLICATION",
10929
+
"explicit": false,
10930
+
"content": [
10931
+
{
10932
+
"name": "",
10933
+
"type": {
10934
+
"name": "SEQUENCE",
10935
+
"type": "builtin",
10936
+
"content": [
10937
+
{
10938
+
"id": "baseObject",
10939
+
"name": "LDAPDN",
10940
+
"type": "defined"
10941
+
},
10942
+
{
10943
+
"id": "scope",
10944
+
"name": "ENUMERATED",
10945
+
"type": "builtin",
10946
+
"content": {
10947
+
"baseObject": 0,
10948
+
"singleLevel": 1,
10949
+
"wholeSubtree": 2
10950
+
}
10951
+
},
10952
+
{
10953
+
"id": "derefAliases",
10954
+
"name": "ENUMERATED",
10955
+
"type": "builtin",
10956
+
"content": {
10957
+
"neverDerefAliases": 0,
10958
+
"derefInSearching": 1,
10959
+
"derefFindingBaseObj": 2,
10960
+
"derefAlways": 3
10961
+
}
10962
+
},
10963
+
{
10964
+
"id": "sizeLimit",
10965
+
"name": "INTEGER",
10966
+
"type": "builtin",
10967
+
"range": [
10968
+
0,
10969
+
"maxInt"
10970
+
]
10971
+
},
10972
+
{
10973
+
"id": "timeLimit",
10974
+
"name": "INTEGER",
10975
+
"type": "builtin",
10976
+
"range": [
10977
+
0,
10978
+
"maxInt"
10979
+
]
10980
+
},
10981
+
{
10982
+
"id": "typesOnly",
10983
+
"name": "BOOLEAN",
10984
+
"type": "builtin"
10985
+
},
10986
+
{
10987
+
"id": "filter",
10988
+
"name": "Filter",
10989
+
"type": "defined"
10990
+
},
10991
+
{
10992
+
"id": "attributes",
10993
+
"name": "AttributeSelection",
10994
+
"type": "defined"
10995
+
}
10996
+
]
10997
+
}
10998
+
}
10999
+
]
11000
+
}
11001
+
},
11002
+
"AttributeSelection": {
11003
+
"name": "AttributeSelection",
11004
+
"type": {
11005
+
"name": "SEQUENCE",
11006
+
"type": "builtin",
11007
+
"typeOf": 1,
11008
+
"content": [
11009
+
{
11010
+
"name": "LDAPString",
11011
+
"type": "defined"
11012
+
}
11013
+
]
11014
+
}
11015
+
},
11016
+
"Filter": {
11017
+
"name": "Filter",
11018
+
"type": {
11019
+
"name": "CHOICE",
11020
+
"type": "builtin",
11021
+
"content": [
11022
+
{
11023
+
"id": "and",
11024
+
"name": "[0]",
11025
+
"type": "tag",
11026
+
"class": "CONTEXT",
11027
+
"explicit": false,
11028
+
"content": [
11029
+
{
11030
+
"name": "",
11031
+
"type": {
11032
+
"name": "SET",
11033
+
"type": "builtin",
11034
+
"typeOf": 1,
11035
+
"size": [
11036
+
1,
11037
+
"MAX"
11038
+
],
11039
+
"content": [
11040
+
{
11041
+
"name": "Filter",
11042
+
"type": "defined"
11043
+
}
11044
+
]
11045
+
}
11046
+
}
11047
+
]
11048
+
},
11049
+
{
11050
+
"id": "or",
11051
+
"name": "[1]",
11052
+
"type": "tag",
11053
+
"class": "CONTEXT",
11054
+
"explicit": false,
11055
+
"content": [
11056
+
{
11057
+
"name": "",
11058
+
"type": {
11059
+
"name": "SET",
11060
+
"type": "builtin",
11061
+
"typeOf": 1,
11062
+
"size": [
11063
+
1,
11064
+
"MAX"
11065
+
],
11066
+
"content": [
11067
+
{
11068
+
"name": "Filter",
11069
+
"type": "defined"
11070
+
}
11071
+
]
11072
+
}
11073
+
}
11074
+
]
11075
+
},
11076
+
{
11077
+
"id": "not",
11078
+
"name": "[2]",
11079
+
"type": "tag",
11080
+
"class": "CONTEXT",
11081
+
"explicit": false,
11082
+
"content": [
11083
+
{
11084
+
"name": "",
11085
+
"type": {
11086
+
"name": "Filter",
11087
+
"type": "defined"
11088
+
}
11089
+
}
11090
+
]
11091
+
},
11092
+
{
11093
+
"id": "equalityMatch",
11094
+
"name": "[3]",
11095
+
"type": "tag",
11096
+
"class": "CONTEXT",
11097
+
"explicit": false,
11098
+
"content": [
11099
+
{
11100
+
"name": "",
11101
+
"type": {
11102
+
"name": "AttributeValueAssertion",
11103
+
"type": "defined"
11104
+
}
11105
+
}
11106
+
]
11107
+
},
11108
+
{
11109
+
"id": "substrings",
11110
+
"name": "[4]",
11111
+
"type": "tag",
11112
+
"class": "CONTEXT",
11113
+
"explicit": false,
11114
+
"content": [
11115
+
{
11116
+
"name": "",
11117
+
"type": {
11118
+
"name": "SubstringFilter",
11119
+
"type": "defined"
11120
+
}
11121
+
}
11122
+
]
11123
+
},
11124
+
{
11125
+
"id": "greaterOrEqual",
11126
+
"name": "[5]",
11127
+
"type": "tag",
11128
+
"class": "CONTEXT",
11129
+
"explicit": false,
11130
+
"content": [
11131
+
{
11132
+
"name": "",
11133
+
"type": {
11134
+
"name": "AttributeValueAssertion",
11135
+
"type": "defined"
11136
+
}
11137
+
}
11138
+
]
11139
+
},
11140
+
{
11141
+
"id": "lessOrEqual",
11142
+
"name": "[6]",
11143
+
"type": "tag",
11144
+
"class": "CONTEXT",
11145
+
"explicit": false,
11146
+
"content": [
11147
+
{
11148
+
"name": "",
11149
+
"type": {
11150
+
"name": "AttributeValueAssertion",
11151
+
"type": "defined"
11152
+
}
11153
+
}
11154
+
]
11155
+
},
11156
+
{
11157
+
"id": "present",
11158
+
"name": "[7]",
11159
+
"type": "tag",
11160
+
"class": "CONTEXT",
11161
+
"explicit": false,
11162
+
"content": [
11163
+
{
11164
+
"name": "",
11165
+
"type": {
11166
+
"name": "AttributeDescription",
11167
+
"type": "defined"
11168
+
}
11169
+
}
11170
+
]
11171
+
},
11172
+
{
11173
+
"id": "approxMatch",
11174
+
"name": "[8]",
11175
+
"type": "tag",
11176
+
"class": "CONTEXT",
11177
+
"explicit": false,
11178
+
"content": [
11179
+
{
11180
+
"name": "",
11181
+
"type": {
11182
+
"name": "AttributeValueAssertion",
11183
+
"type": "defined"
11184
+
}
11185
+
}
11186
+
]
11187
+
},
11188
+
{
11189
+
"id": "extensibleMatch",
11190
+
"name": "[9]",
11191
+
"type": "tag",
11192
+
"class": "CONTEXT",
11193
+
"explicit": false,
11194
+
"content": [
11195
+
{
11196
+
"name": "",
11197
+
"type": {
11198
+
"name": "MatchingRuleAssertion",
11199
+
"type": "defined"
11200
+
}
11201
+
}
11202
+
]
11203
+
}
11204
+
]
11205
+
}
11206
+
},
11207
+
"SubstringFilter": {
11208
+
"name": "SubstringFilter",
11209
+
"type": {
11210
+
"name": "SEQUENCE",
11211
+
"type": "builtin",
11212
+
"content": [
11213
+
{
11214
+
"id": "type",
11215
+
"name": "AttributeDescription",
11216
+
"type": "defined"
11217
+
},
11218
+
{
11219
+
"id": "substrings",
11220
+
"name": "SEQUENCE",
11221
+
"type": "builtin",
11222
+
"typeOf": 1,
11223
+
"size": [
11224
+
1,
11225
+
"MAX"
11226
+
],
11227
+
"content": [
11228
+
{
11229
+
"name": "CHOICE",
11230
+
"type": "builtin",
11231
+
"content": [
11232
+
{
11233
+
"id": "initial",
11234
+
"name": "[0]",
11235
+
"type": "tag",
11236
+
"class": "CONTEXT",
11237
+
"explicit": false,
11238
+
"content": [
11239
+
{
11240
+
"name": "",
11241
+
"type": {
11242
+
"name": "AssertionValue",
11243
+
"type": "defined"
11244
+
}
11245
+
}
11246
+
]
11247
+
},
11248
+
{
11249
+
"id": "any",
11250
+
"name": "[1]",
11251
+
"type": "tag",
11252
+
"class": "CONTEXT",
11253
+
"explicit": false,
11254
+
"content": [
11255
+
{
11256
+
"name": "",
11257
+
"type": {
11258
+
"name": "AssertionValue",
11259
+
"type": "defined"
11260
+
}
11261
+
}
11262
+
]
11263
+
},
11264
+
{
11265
+
"id": "final",
11266
+
"name": "[2]",
11267
+
"type": "tag",
11268
+
"class": "CONTEXT",
11269
+
"explicit": false,
11270
+
"content": [
11271
+
{
11272
+
"name": "",
11273
+
"type": {
11274
+
"name": "AssertionValue",
11275
+
"type": "defined"
11276
+
}
11277
+
}
11278
+
]
11279
+
}
11280
+
]
11281
+
}
11282
+
]
11283
+
}
11284
+
]
11285
+
}
11286
+
},
11287
+
"MatchingRuleAssertion": {
11288
+
"name": "MatchingRuleAssertion",
11289
+
"type": {
11290
+
"name": "SEQUENCE",
11291
+
"type": "builtin",
11292
+
"content": [
11293
+
{
11294
+
"id": "matchingRule",
11295
+
"name": "[1]",
11296
+
"type": "tag",
11297
+
"class": "CONTEXT",
11298
+
"explicit": false,
11299
+
"content": [
11300
+
{
11301
+
"name": "",
11302
+
"type": {
11303
+
"name": "MatchingRuleId",
11304
+
"type": "defined"
11305
+
}
11306
+
}
11307
+
],
11308
+
"optional": true
11309
+
},
11310
+
{
11311
+
"id": "type",
11312
+
"name": "[2]",
11313
+
"type": "tag",
11314
+
"class": "CONTEXT",
11315
+
"explicit": false,
11316
+
"content": [
11317
+
{
11318
+
"name": "",
11319
+
"type": {
11320
+
"name": "AttributeDescription",
11321
+
"type": "defined"
11322
+
}
11323
+
}
11324
+
],
11325
+
"optional": true
11326
+
},
11327
+
{
11328
+
"id": "matchValue",
11329
+
"name": "[3]",
11330
+
"type": "tag",
11331
+
"class": "CONTEXT",
11332
+
"explicit": false,
11333
+
"content": [
11334
+
{
11335
+
"name": "",
11336
+
"type": {
11337
+
"name": "AssertionValue",
11338
+
"type": "defined"
11339
+
}
11340
+
}
11341
+
]
11342
+
},
11343
+
{
11344
+
"id": "dnAttributes",
11345
+
"name": "[4]",
11346
+
"type": "tag",
11347
+
"class": "CONTEXT",
11348
+
"explicit": false,
11349
+
"content": [
11350
+
{
11351
+
"name": "",
11352
+
"type": {
11353
+
"name": "BOOLEAN",
11354
+
"type": "builtin"
11355
+
}
11356
+
}
11357
+
],
11358
+
"default": false
11359
+
}
11360
+
]
11361
+
}
11362
+
},
11363
+
"SearchResultEntry": {
11364
+
"name": "SearchResultEntry",
11365
+
"type": {
11366
+
"name": "Application 4",
11367
+
"type": "tag",
11368
+
"class": "APPLICATION",
11369
+
"explicit": false,
11370
+
"content": [
11371
+
{
11372
+
"name": "",
11373
+
"type": {
11374
+
"name": "SEQUENCE",
11375
+
"type": "builtin",
11376
+
"content": [
11377
+
{
11378
+
"id": "objectName",
11379
+
"name": "LDAPDN",
11380
+
"type": "defined"
11381
+
},
11382
+
{
11383
+
"id": "attributes",
11384
+
"name": "PartialAttributeList",
11385
+
"type": "defined"
11386
+
}
11387
+
]
11388
+
}
11389
+
}
11390
+
]
11391
+
}
11392
+
},
11393
+
"PartialAttributeList": {
11394
+
"name": "PartialAttributeList",
11395
+
"type": {
11396
+
"name": "SEQUENCE",
11397
+
"type": "builtin",
11398
+
"typeOf": 1,
11399
+
"content": [
11400
+
{
11401
+
"name": "PartialAttribute",
11402
+
"type": "defined"
11403
+
}
11404
+
]
11405
+
}
11406
+
},
11407
+
"SearchResultReference": {
11408
+
"name": "SearchResultReference",
11409
+
"type": {
11410
+
"name": "Application 19",
11411
+
"type": "tag",
11412
+
"class": "APPLICATION",
11413
+
"explicit": false,
11414
+
"content": [
11415
+
{
11416
+
"name": "",
11417
+
"type": {
11418
+
"name": "SEQUENCE",
11419
+
"type": "builtin",
11420
+
"typeOf": 1,
11421
+
"size": [
11422
+
1,
11423
+
"MAX"
11424
+
],
11425
+
"content": [
11426
+
{
11427
+
"name": "URI",
11428
+
"type": "defined"
11429
+
}
11430
+
]
11431
+
}
11432
+
}
11433
+
]
11434
+
}
11435
+
},
11436
+
"SearchResultDone": {
11437
+
"name": "SearchResultDone",
11438
+
"type": {
11439
+
"name": "Application 5",
11440
+
"type": "tag",
11441
+
"class": "APPLICATION",
11442
+
"explicit": false,
11443
+
"content": [
11444
+
{
11445
+
"name": "",
11446
+
"type": {
11447
+
"name": "LDAPResult",
11448
+
"type": "defined"
11449
+
}
11450
+
}
11451
+
]
11452
+
}
11453
+
},
11454
+
"ModifyRequest": {
11455
+
"name": "ModifyRequest",
11456
+
"type": {
11457
+
"name": "Application 6",
11458
+
"type": "tag",
11459
+
"class": "APPLICATION",
11460
+
"explicit": false,
11461
+
"content": [
11462
+
{
11463
+
"name": "",
11464
+
"type": {
11465
+
"name": "SEQUENCE",
11466
+
"type": "builtin",
11467
+
"content": [
11468
+
{
11469
+
"id": "object",
11470
+
"name": "LDAPDN",
11471
+
"type": "defined"
11472
+
},
11473
+
{
11474
+
"id": "changes",
11475
+
"name": "SEQUENCE",
11476
+
"type": "builtin",
11477
+
"typeOf": 1,
11478
+
"content": [
11479
+
{
11480
+
"name": "SEQUENCE",
11481
+
"type": "builtin",
11482
+
"content": [
11483
+
{
11484
+
"id": "operation",
11485
+
"name": "ENUMERATED",
11486
+
"type": "builtin",
11487
+
"content": {
11488
+
"add": 0,
11489
+
"delete": 1,
11490
+
"replace": 2
11491
+
}
11492
+
},
11493
+
{
11494
+
"id": "modification",
11495
+
"name": "PartialAttribute",
11496
+
"type": "defined"
11497
+
}
11498
+
]
11499
+
}
11500
+
]
11501
+
}
11502
+
]
11503
+
}
11504
+
}
11505
+
]
11506
+
}
11507
+
},
11508
+
"ModifyResponse": {
11509
+
"name": "ModifyResponse",
11510
+
"type": {
11511
+
"name": "Application 7",
11512
+
"type": "tag",
11513
+
"class": "APPLICATION",
11514
+
"explicit": false,
11515
+
"content": [
11516
+
{
11517
+
"name": "",
11518
+
"type": {
11519
+
"name": "LDAPResult",
11520
+
"type": "defined"
11521
+
}
11522
+
}
11523
+
]
11524
+
}
11525
+
},
11526
+
"AddRequest": {
11527
+
"name": "AddRequest",
11528
+
"type": {
11529
+
"name": "Application 8",
11530
+
"type": "tag",
11531
+
"class": "APPLICATION",
11532
+
"explicit": false,
11533
+
"content": [
11534
+
{
11535
+
"name": "",
11536
+
"type": {
11537
+
"name": "SEQUENCE",
11538
+
"type": "builtin",
11539
+
"content": [
11540
+
{
11541
+
"id": "entry",
11542
+
"name": "LDAPDN",
11543
+
"type": "defined"
11544
+
},
11545
+
{
11546
+
"id": "attributes",
11547
+
"name": "AttributeList",
11548
+
"type": "defined"
11549
+
}
11550
+
]
11551
+
}
11552
+
}
11553
+
]
11554
+
}
11555
+
},
11556
+
"AttributeList": {
11557
+
"name": "AttributeList",
11558
+
"type": {
11559
+
"name": "SEQUENCE",
11560
+
"type": "builtin",
11561
+
"typeOf": 1,
11562
+
"content": [
11563
+
{
11564
+
"name": "Attribute",
11565
+
"type": "defined"
11566
+
}
11567
+
]
11568
+
}
11569
+
},
11570
+
"AddResponse": {
11571
+
"name": "AddResponse",
11572
+
"type": {
11573
+
"name": "Application 9",
11574
+
"type": "tag",
11575
+
"class": "APPLICATION",
11576
+
"explicit": false,
11577
+
"content": [
11578
+
{
11579
+
"name": "",
11580
+
"type": {
11581
+
"name": "LDAPResult",
11582
+
"type": "defined"
11583
+
}
11584
+
}
11585
+
]
11586
+
}
11587
+
},
11588
+
"DelRequest": {
11589
+
"name": "DelRequest",
11590
+
"type": {
11591
+
"name": "Application 10",
11592
+
"type": "tag",
11593
+
"class": "APPLICATION",
11594
+
"explicit": false,
11595
+
"content": [
11596
+
{
11597
+
"name": "",
11598
+
"type": {
11599
+
"name": "LDAPDN",
11600
+
"type": "defined"
11601
+
}
11602
+
}
11603
+
]
11604
+
}
11605
+
},
11606
+
"DelResponse": {
11607
+
"name": "DelResponse",
11608
+
"type": {
11609
+
"name": "Application 11",
11610
+
"type": "tag",
11611
+
"class": "APPLICATION",
11612
+
"explicit": false,
11613
+
"content": [
11614
+
{
11615
+
"name": "",
11616
+
"type": {
11617
+
"name": "LDAPResult",
11618
+
"type": "defined"
11619
+
}
11620
+
}
11621
+
]
11622
+
}
11623
+
},
11624
+
"ModifyDNRequest": {
11625
+
"name": "ModifyDNRequest",
11626
+
"type": {
11627
+
"name": "Application 12",
11628
+
"type": "tag",
11629
+
"class": "APPLICATION",
11630
+
"explicit": false,
11631
+
"content": [
11632
+
{
11633
+
"name": "",
11634
+
"type": {
11635
+
"name": "SEQUENCE",
11636
+
"type": "builtin",
11637
+
"content": [
11638
+
{
11639
+
"id": "entry",
11640
+
"name": "LDAPDN",
11641
+
"type": "defined"
11642
+
},
11643
+
{
11644
+
"id": "newrdn",
11645
+
"name": "RelativeLDAPDN",
11646
+
"type": "defined"
11647
+
},
11648
+
{
11649
+
"id": "deleteoldrdn",
11650
+
"name": "BOOLEAN",
11651
+
"type": "builtin"
11652
+
},
11653
+
{
11654
+
"id": "newSuperior",
11655
+
"name": "[0]",
11656
+
"type": "tag",
11657
+
"class": "CONTEXT",
11658
+
"explicit": false,
11659
+
"content": [
11660
+
{
11661
+
"name": "",
11662
+
"type": {
11663
+
"name": "LDAPDN",
11664
+
"type": "defined"
11665
+
}
11666
+
}
11667
+
],
11668
+
"optional": true
11669
+
}
11670
+
]
11671
+
}
11672
+
}
11673
+
]
11674
+
}
11675
+
},
11676
+
"ModifyDNResponse": {
11677
+
"name": "ModifyDNResponse",
11678
+
"type": {
11679
+
"name": "Application 13",
11680
+
"type": "tag",
11681
+
"class": "APPLICATION",
11682
+
"explicit": false,
11683
+
"content": [
11684
+
{
11685
+
"name": "",
11686
+
"type": {
11687
+
"name": "LDAPResult",
11688
+
"type": "defined"
11689
+
}
11690
+
}
11691
+
]
11692
+
}
11693
+
},
11694
+
"CompareRequest": {
11695
+
"name": "CompareRequest",
11696
+
"type": {
11697
+
"name": "Application 14",
11698
+
"type": "tag",
11699
+
"class": "APPLICATION",
11700
+
"explicit": false,
11701
+
"content": [
11702
+
{
11703
+
"name": "",
11704
+
"type": {
11705
+
"name": "SEQUENCE",
11706
+
"type": "builtin",
11707
+
"content": [
11708
+
{
11709
+
"id": "entry",
11710
+
"name": "LDAPDN",
11711
+
"type": "defined"
11712
+
},
11713
+
{
11714
+
"id": "ava",
11715
+
"name": "AttributeValueAssertion",
11716
+
"type": "defined"
11717
+
}
11718
+
]
11719
+
}
11720
+
}
11721
+
]
11722
+
}
11723
+
},
11724
+
"CompareResponse": {
11725
+
"name": "CompareResponse",
11726
+
"type": {
11727
+
"name": "Application 15",
11728
+
"type": "tag",
11729
+
"class": "APPLICATION",
11730
+
"explicit": false,
11731
+
"content": [
11732
+
{
11733
+
"name": "",
11734
+
"type": {
11735
+
"name": "LDAPResult",
11736
+
"type": "defined"
11737
+
}
11738
+
}
11739
+
]
11740
+
}
11741
+
},
11742
+
"AbandonRequest": {
11743
+
"name": "AbandonRequest",
11744
+
"type": {
11745
+
"name": "Application 16",
11746
+
"type": "tag",
11747
+
"class": "APPLICATION",
11748
+
"explicit": false,
11749
+
"content": [
11750
+
{
11751
+
"name": "",
11752
+
"type": {
11753
+
"name": "MessageID",
11754
+
"type": "defined"
11755
+
}
11756
+
}
11757
+
]
11758
+
}
11759
+
},
11760
+
"ExtendedRequest": {
11761
+
"name": "ExtendedRequest",
11762
+
"type": {
11763
+
"name": "Application 23",
11764
+
"type": "tag",
11765
+
"class": "APPLICATION",
11766
+
"explicit": false,
11767
+
"content": [
11768
+
{
11769
+
"name": "",
11770
+
"type": {
11771
+
"name": "SEQUENCE",
11772
+
"type": "builtin",
11773
+
"content": [
11774
+
{
11775
+
"id": "requestName",
11776
+
"name": "[0]",
11777
+
"type": "tag",
11778
+
"class": "CONTEXT",
11779
+
"explicit": false,
11780
+
"content": [
11781
+
{
11782
+
"name": "",
11783
+
"type": {
11784
+
"name": "LDAPOID",
11785
+
"type": "defined"
11786
+
}
11787
+
}
11788
+
]
11789
+
},
11790
+
{
11791
+
"id": "requestValue",
11792
+
"name": "[1]",
11793
+
"type": "tag",
11794
+
"class": "CONTEXT",
11795
+
"explicit": false,
11796
+
"content": [
11797
+
{
11798
+
"name": "",
11799
+
"type": {
11800
+
"name": "OCTET STRING",
11801
+
"type": "builtin"
11802
+
}
11803
+
}
11804
+
],
11805
+
"optional": true
11806
+
}
11807
+
]
11808
+
}
11809
+
}
11810
+
]
11811
+
}
11812
+
},
11813
+
"ExtendedResponse": {
11814
+
"name": "ExtendedResponse",
11815
+
"type": {
11816
+
"name": "ANY",
11817
+
"type": "builtin"
11818
+
}
11819
+
},
11820
+
"IntermediateResponse": {
11821
+
"name": "IntermediateResponse",
11822
+
"type": {
11823
+
"name": "Application 25",
11824
+
"type": "tag",
11825
+
"class": "APPLICATION",
11826
+
"explicit": false,
11827
+
"content": [
11828
+
{
11829
+
"name": "",
11830
+
"type": {
11831
+
"name": "SEQUENCE",
11832
+
"type": "builtin",
11833
+
"content": [
11834
+
{
11835
+
"id": "responseName",
11836
+
"name": "[0]",
11837
+
"type": "tag",
11838
+
"class": "CONTEXT",
11839
+
"explicit": false,
11840
+
"content": [
11841
+
{
11842
+
"name": "",
11843
+
"type": {
11844
+
"name": "LDAPOID",
11845
+
"type": "defined"
11846
+
}
11847
+
}
11848
+
],
11849
+
"optional": true
11850
+
},
11851
+
{
11852
+
"id": "responseValue",
11853
+
"name": "[1]",
11854
+
"type": "tag",
11855
+
"class": "CONTEXT",
11856
+
"explicit": false,
11857
+
"content": [
11858
+
{
11859
+
"name": "",
11860
+
"type": {
11861
+
"name": "OCTET STRING",
11862
+
"type": "builtin"
11863
+
}
11864
+
}
11865
+
],
11866
+
"optional": true
11867
+
}
11868
+
]
11869
+
}
11870
+
}
11871
+
]
11872
+
}
11873
+
}
11874
+
}
11875
+
}
11876
+
}
11877
+
;
+234
-38
test.js
+234
-38
test.js
···
1
1
#!/usr/bin/env node
2
-
'use strict';
3
2
4
-
var Hex = require('./hex.js'),
5
-
ASN1 = require('./asn1.js'),
6
-
tests;
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 { createPatch } from 'diff';
7
9
8
-
tests = [
9
-
// http://luca.ntop.org/Teaching/Appunti/asn1.html
10
-
['03 04 06 6e 5d c0', '(18 bit)\n011011100101110111', 'DER encoding'],
11
-
['03 04 06 6e 5d e0', '(18 bit)\n011011100101110111', 'padded with "100000"'],
12
-
['03 81 04 06 6e 5d c0', '(18 bit)\n011011100101110111', 'long form of length octets'],
13
-
['23 09 03 03 00 6e 5d 03 02 06 c0', '(18 bit)\n011011100101110111', 'constructed encoding: "0110111001011101" + "11"'],
10
+
const all = (process.argv[2] == 'all');
11
+
12
+
/** @type {Array<Tests>} */
13
+
const tests = [];
14
+
15
+
const stats = {
16
+
run: 0,
17
+
error: 0,
18
+
};
19
+
20
+
function diff(str1, str2) {
21
+
let s = createPatch('test', str1, str2, null, null, { context: 2 });
22
+
s = s.slice(s.indexOf('@@'), -1);
23
+
s = s.replace(/^@@.*/mg, '\x1B[34m$&\x1B[39m');
24
+
s = s.replace(/^-.*/mg, '\x1B[31m$&\x1B[39m');
25
+
s = s.replace(/^\+.*/mg, '\x1B[32m$&\x1B[39m');
26
+
return s;
27
+
}
28
+
29
+
/**
30
+
* A class for managing and executing tests.
31
+
*/
32
+
class Tests {
33
+
/**
34
+
* The title of the test suite.
35
+
* @type {string}
36
+
*/
37
+
title;
38
+
39
+
/**
40
+
* An array to store test data.
41
+
* @type {Array<unknown>}
42
+
*/
43
+
data;
44
+
45
+
/**
46
+
* Checks a row of test data.
47
+
* @param {Function} t - How to test a row of data.
48
+
*/
49
+
checkRow;
50
+
51
+
/**
52
+
* Constructs a new Tests instance.
53
+
* @param {string} title - The title of the test suite.
54
+
* @param {Function} checkRow - A function to check each row of data.
55
+
* @param {Array<unknown>} data - The test data to be processed.
56
+
*/
57
+
constructor(title, checkRow, data) {
58
+
this.title = title;
59
+
this.checkRow = checkRow;
60
+
this.data = data;
61
+
}
62
+
63
+
/**
64
+
* Executes the tests and checks their results for all rows.
65
+
*/
66
+
checkAll() {
67
+
if (all) console.log('\x1B[1m\x1B[34m' + this.title + '\x1B[39m\x1B[22m');
68
+
for (const t of this.data)
69
+
this.checkRow(t);
70
+
}
71
+
72
+
/**
73
+
* Prints the result of a test, indicating if it passed or failed.
74
+
* @param {unknown} result The actual result of the test.
75
+
* @param {unknown} expected The expected result of the test.
76
+
* @param {string} comment A comment describing the test.
77
+
*/
78
+
checkResult(result, expected, comment) {
79
+
++stats.run;
80
+
if ((typeof expected != 'string' && !result) || result == expected) {
81
+
if (all) console.log('\x1B[1m\x1B[32mOK \x1B[39m\x1B[22m ' + comment);
82
+
} else {
83
+
++stats.error;
84
+
console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment);
85
+
if (!result) result = '(empty)';
86
+
if (typeof expected != 'string') {
87
+
console.log(' ' + result);
88
+
} else if (result.length > 100) {
89
+
console.log(' \x1B[1m\x1B[34mDIF\x1B[39m\x1B[22m ' + diff(result, expected.toString()).replace(/\n/g, '\n '));
90
+
} else {
91
+
console.log(' \x1B[1m\x1B[34mEXP\x1B[39m\x1B[22m ' + expected.toString().replace(/\n/g, '\n '));
92
+
console.log(' \x1B[1m\x1B[33mGOT\x1B[39m\x1B[22m ' + result.replace(/\n/g, '\n '));
93
+
}
94
+
}
95
+
}
96
+
}
97
+
98
+
tests.push(new Tests('ASN.1', function (t) {
99
+
const input = t[0],
100
+
expected = t[1],
101
+
comment = t[2];
102
+
let result;
103
+
try {
104
+
let node = ASN1.decode(Hex.decode(input));
105
+
if (typeof expected == 'function')
106
+
result = expected(node);
107
+
else
108
+
result = node.content();
109
+
//TODO: check structure, not only first level content
110
+
} catch (e) {
111
+
result = 'Exception:\n' + e;
112
+
}
113
+
if (expected instanceof RegExp)
114
+
result = expected.test(result) ? null : 'does not match';
115
+
this.checkResult(result, expected, comment);
116
+
}, [
117
+
// RSA Laboratories technical notes from https://luca.ntop.org/Teaching/Appunti/asn1.html
118
+
['0304066E5DC0', '(18 bit)\n011011100101110111', 'ntop, bit string: DER encoding'],
119
+
['0304066E5DE0', '(18 bit)\n011011100101110111', 'ntop, bit string: padded with "100000"'],
120
+
['038104066E5DC0', '(18 bit)\n011011100101110111', 'ntop, bit string: long form of length octets'],
121
+
['23090303006E5D030206C0', '(18 bit)\n011011100101110111', 'ntop, bit string (constructed encoding): "0110111001011101" + "11"'],
122
+
['160D7465737431407273612E636F6D', 'test1@rsa.com', 'ntop, ia5string: DER encoding'],
123
+
['16810D7465737431407273612E636F6D', 'test1@rsa.com', 'ntop, ia5string: long form of length octets'],
124
+
['36131605746573743116014016077273612E636F6D', 'test1@rsa.com', 'ntop, ia5string: constructed encoding: "test1" + "@" + "rsa.com"'],
125
+
['020100', '0', 'ntop, integer: 0'],
126
+
['02017F', '127', 'ntop, integer: 127'],
127
+
['02020080', '128', 'ntop, integer: 128'],
128
+
['02020100', '256', 'ntop, integer: 256'],
129
+
['020180', '-128', 'ntop, integer: -128'],
130
+
['0202FF7F', '-129', 'ntop, integer: -129'],
131
+
['0500', null, 'ntop, null: DER'],
132
+
['058100', null, 'ntop, null: long form of length octets'],
133
+
['06062A864886F70D', '1.2.840.113549', 'ntop, object identifier'],
134
+
['04080123456789ABCDEF', '(8 byte)\n0123456789ABCDEF', 'ntop, octet string: DER encoding'],
135
+
['0481080123456789ABCDEF', '(8 byte)\n0123456789ABCDEF', 'ntop, octet string: long form of length octets'],
136
+
['240C040401234567040489ABCDEF', '(8 byte)\n0123456789ABCDEF', 'ntop, octet string (constructed encoding): 01โฆ67 + 89โฆef'],
137
+
['130B5465737420557365722031', 'Test User 1', 'ntop, printable string: DER encoding'],
138
+
['13810B5465737420557365722031', 'Test User 1', 'ntop, printable string: long form of length octets'],
139
+
['330F130554657374201306557365722031', 'Test User 1', 'ntop, printable string: constructed encoding: "Test " + "User 1"'],
140
+
['140F636CC26573207075626C6971756573', 'clรฉs publiques', 'ntop, t61string: DER encoding'],
141
+
['14810F636CC26573207075626C6971756573', 'clรฉs publiques', 'ntop, t61string: long form of length octets'],
142
+
['34151405636CC2657314012014097075626C6971756573', 'clรฉs publiques', 'ntop, t61string: constructed encoding: "clรฉs" + " " + "publiques"'],
143
+
['170D3931303530363233343534305A', '1991-05-06 23:45:40 UTC', 'ntop, utc time: UTC'],
144
+
['17113931303530363136343534302D30373030', '1991-05-06 16:45:40 UTC-07:00', 'ntop, utc time: PDT'],
145
+
// inspired by http://luca.ntop.org/Teaching/Appunti/asn1.html
146
+
['0304086E5DC0', 'Exception:\nError: Invalid BitString with unusedBits=8', 'bit string: invalid unusedBits'],
14
147
// http://msdn.microsoft.com/en-us/library/windows/desktop/aa379076(v=vs.85).aspx
15
148
['30820319308202820201003023310F300D0603550403130654657374434E3110300E060355040A1307546573744F726730819F300D06092A864886F70D010101050003818D00308189028181008FE2412A08E851A88CB3E853E7D54950B3278A2BCBEAB54273EA0257CC6533EE882061A11756C12418E3A808D3BED931F3370B94B8CC43080B7024F79CB18D5DD66D82D0540984F89F970175059C89D4D5C91EC913D72A6B309119D6D442E0C49D7C9271E1B22F5C8DEEF0F1171ED25F315BB19CBC2055BF3A37424575DC90650203010001A08201B4301A060A2B0601040182370D0203310C160A362E302E353336312E323042060A2B0601040182370D0201313430321E260043006500720074006900660069006300610074006500540065006D0070006C0061007400651E080055007300650072305706092B0601040182371514314A30480201090C237669636833642E6A646F6D6373632E6E74746573742E6D6963726F736F66742E636F6D0C154A444F4D4353435C61646D696E6973747261746F720C07636572747265713074060A2B0601040182370D0202316630640201011E5C004D006900630072006F0073006F0066007400200045006E00680061006E006300650064002000430072007900700074006F0067007200610070006800690063002000500072006F00760069006400650072002000760031002E003003010030818206092A864886F70D01090E31753073301706092B0601040182371402040A1E08005500730065007230290603551D2504223020060A2B0601040182370A030406082B0601050507030406082B06010505070302300E0603551D0F0101FF0404030205A0301D0603551D0E041604143C0F73DAF8EF41D83AEABE922A5D2C966A7B9454300D06092A864886F70D01010505000381810047EB995ADF9E700DFBA73132C15F5C24C2E0BFC624AF15660EB86A2EAB2BC4971FE3CBDC63A525ECC7B428616636A1311BBFDDD0FCBF1794901DE55EC7115EC9559FEBA33E14C799A6CBBAA1460F39D444C4C84B760E205D6DA9349ED4D58742EB2426511490B40F065E5288327A9520A0FDF7E57D60DD72689BF57B058F6D1E',
16
149
'(3 elem)', 'PKCS#10 request'],
17
150
// Int10
18
-
['060C69C7C79AB78084C289F9870D', '2.25.84478768945400492475277', 'Big OID arc'],
19
-
['06146982968D8D889BCCA8C7B3BDD4C080AAAED78A1B', '2.25.184830721219540099336690027854602552603', 'Bigger OID arc'],
20
-
['060488378952', '2.999.1234', 'OID arc > 2.47'],
21
-
['060A81FFFFFFFFFFFFFFFF7F', '2.18446744073709551535', 'OID root 64 bit - 1'],
22
-
['060A82808080808080808000', '2.18446744073709551536', 'OID root 64 bit'],
23
-
['060A82808080808080808001', '2.18446744073709551537', 'OID root 64 bit + 1'],
24
-
['0620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F', '2.26959946667150639794667015087019630673637144422540572481103610249135', 'OID derLen20c'],
25
-
['0621818080808080808080808080808080808080808080808080808080808080808000', '2.26959946667150639794667015087019630673637144422540572481103610249136', 'OID derLen21c'],
26
-
['060782A384F3CAC00A', '2.9999999999930', 'OID with Int10 corner case (1)'],
27
-
['060881E3AFEAA69A800A', '2.999999999999930', 'OID with Int10 corner case (2)'],
28
-
['06092A864886F70D010105', '1.2.840.113549.1.1.5\nsha1WithRSAEncryption\nPKCS #1', 'known OID from Peter Gutmann list'],
29
151
['02102FA176B36EE9F049F444B40099661945', '(126 bit)\n63312083136615639753586560173617846597', 'Big integer (126 bit)'],
30
152
['028181008953097086EE6147C5F4D5FFAF1B498A3D11EC5518E964DC52126B2614F743883F64CA51377ABB530DFD20464A48BD67CD27E7B29AEC685C5D10825E605C056E4AB8EEA460FA27E55AA62C498B02D7247A249838A12ECDF37C6011CF4F0EDEA9CEE687C1CB4A51C6AE62B2EFDB000723A01C99D6C23F834880BA8B42D5414E6F',
31
153
'(1024 bit)\n96432446964907009840023644401994013457468837455140331578268642517697945390319089463541388080569398374873228752921897678940332050406994011437231634303608704223145390228074087922901239478374991949372306413157758278029522534299413919735715864599284769202556071242381348472464716517735026291259010477833523908207',
···
42
164
['0203800001', '-8388607', 'Negative 8388607'],
43
165
['02020000', '0', 'Zero (2)'],
44
166
['0204FFFFFFFF', '-1', 'Negative 1 (4)'],
45
-
['06092A864886F70D010105', '1.2.840.113549.1.1.5\nsha1WithRSAEncryption\nPKCS #1', 'OID decoding']
46
-
];
167
+
// OID
168
+
['060C69C7C79AB78084C289F9870D', '2.25.84478768945400492475277', 'Big OID arc'],
169
+
['06146982968D8D889BCCA8C7B3BDD4C080AAAED78A1B', '2.25.184830721219540099336690027854602552603', 'Bigger OID arc'],
170
+
['060488378952', '2.999.1234', 'OID arc > 2.47'],
171
+
['060782A384F3CAC00A', '2.9999999999930', 'OID with Int10 corner case (1)'],
172
+
['060881E3AFEAA69A800A', '2.999999999999930', 'OID with Int10 corner case (2)'],
173
+
['06092A864886F70D010105', '1.2.840.113549.1.1.5\nsha1WithRSAEncryption\nPKCS #1', 'known OID from Peter Gutmann list'],
174
+
// OID corner case from https://misc.daniel-marschall.de/asn.1/oid-sizecheck/oid_size_test.txt
175
+
['060A81FFFFFFFFFFFFFFFF7F', '2.18446744073709551535', 'OID root 64 bit - 1'],
176
+
['060A82808080808080808000', '2.18446744073709551536', 'OID root 64 bit'],
177
+
['060A82808080808080808001', '2.18446744073709551537', 'OID root 64 bit + 1'],
178
+
['0620FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F', '2.26959946667150639794667015087019630673637144422540572481103610249135', 'OID derLen20c'],
179
+
['0621818080808080808080808080808080808080808080808080808080808080808000', '2.26959946667150639794667015087019630673637144422540572481103610249136', 'OID derLen21c'],
180
+
// relative OID
181
+
['0D0A0102030405060708090A','1.2.3.4.5.6.7.8.9.10', 'Relative OID from GitHub PR 56'],
182
+
['0D04C27B0302','8571.3.2', 'Relative OID from ISO/IEC 8825-1:2002 8.20.5'],
183
+
// UTF-8
184
+
['0C0E4C61706FE280997320F09F9A972E', 'Lapoโs ๐.', 'UTF-8 4-byte sequence'],
185
+
// T-REC-X.690-202102
186
+
['0307040A3B5F291CD0', '(44 bit)\n00001010001110110101111100101001000111001101', 'Example 8.6.4.2: bit string (primitive encoding)'],
187
+
['23800303000A3B0305045F291CD00000', '(44 bit)\n00001010001110110101111100101001000111001101', 'Example 8.6.4.2: bit string (constructed encoding)'],
188
+
['0603883703', '2.999.3', 'Example 8.19.5: object identifier'],
189
+
// X.690 section 8.2.1 โThe contents octets shall consist of a single octet.โ
190
+
['010100', 'false', 'Boolean with correct length (false)'],
191
+
['010101', 'true', 'Boolean with correct length (true)'],
192
+
['0100', 'invalid length 0', 'Boolean with zero length'],
193
+
['01020000', 'invalid length 2', 'Boolean with excessive length'],
194
+
// X.690 section 8.3.1 โThe contents octets shall consist of one or more octets.โ
195
+
['020100', '0', 'Integer with correct length'],
196
+
['0200', 'invalid length 0', 'Integer with zero length'],
197
+
// X.690 section 8.19.4 kinda imples that the minimum number of components is 2
198
+
['0600', 'invalid length 0', 'Object identifier with zero length'],
199
+
['060100', '0.0', 'Object identifier with minimal (?) length'],
200
+
// avoid past bugs
201
+
['23800303000A3B230A0302005F030404291CD00000', '(44 bit)\n00001010001110110101111100101001000111001101', 'Bit string (recursive constructed)'],
202
+
['0348003045022100DE601E573DAFB59BC551D58E3E7B9EDA0612DD0112805A2217B734759B884417022067C3FDE60780D41C1D7A3B90291F3D39C4DC2F206DCCBA2F982C06B67C09B232', '(568 bit)\n0011000001000101000000100010000100000000110111100110000000011110010101110011110110101111101101011001101111000101010100011101010110001110001111100111101110011110110110100000011000010010110111010000000100010010100000000101101000100010000101111011011100110100011101011001101110001000010001000001011100000010001000000110011111000011111111011110011000000111100000001101010000011100000111010111101000111011100100000010100100011111001111010011100111000100110111000010111100100000011011011100110010111010001011111001100000101100000001101011011001111100000010011011001000110010', 'not constructed, but contains structures'],
203
+
['040731323334353637', '(7 byte)\n1234567', 'Octet string with ASCII content'],
204
+
['0407312E3233E282AC', '(7 byte)\n1.23โฌ', 'Octet string with UTF-8 content'],
205
+
['0420041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C', '(32 byte)\n041EE4E3B7ED350CC24D034E436D9A1CB15BB1E328D37062FB82E84618AB0A3C', 'Do not mix encapsulated and structured octet strings'], // GitHub issue #47
206
+
['181531393835313130363231303632372E332D31323334', '1985-11-06 21:06:27.3 UTC-12:34', 'UTC offsets with minutes'], // GitHub issue #54
207
+
['181331393835313130363231303632372E332B3134', '1985-11-06 21:06:27.3 UTC+14:00', 'UTC offset +13 and +14'], // GitHub issue #54
208
+
['032100171E83C1B251803F86DD01E9CFA886BE89A7316D8372649AC2231EC669F81A84', n => { if (n.sub != null) return 'Should not decode content: ' + n.sub[0].content(); }, 'Key that resembles an UTCTime'], // GitHub issue #79
209
+
['171E83C1B251803F86DD01E9CFA886BE89A7316D8372649AC2231EC669F81A84', /^Exception:\nError: Unrecognized time: /, 'Invalid UTCTime'], // GitHub issue #79
210
+
]));
47
211
48
-
tests.forEach(function (t) {
49
-
var input = t[0],
50
-
expected = t[1],
51
-
comment = t[2],
52
-
result = null;
53
-
try {
54
-
result = ASN1.decode(Hex.decode(input)).content();
55
-
//TODO: check structure, not only first level content
56
-
} catch (e) {
57
-
result = 'Exception:\n' + e;
212
+
tests.push(new Tests('Dump of examples', function () {
213
+
const examples = fs.readdirSync('examples/').filter(f => f.endsWith('.dump'));
214
+
for (const example of examples) {
215
+
const filename = example.slice(0, -5); // Remove '.dump' suffix
216
+
const expected = fs.readFileSync('examples/' + example, 'utf8');
217
+
let data = fs.readFileSync('examples/' + filename);
218
+
data = Base64.unarmor(data);
219
+
let node = ASN1.decode(data);
220
+
const types = Defs.commonTypes
221
+
.map(type => {
222
+
const stats = Defs.match(node, type);
223
+
return { type, match: stats.recognized / stats.total };
224
+
})
225
+
.sort((a, b) => b.match - a.match);
226
+
Defs.match(node, types[0].type);
227
+
let result = node.toPrettyString();
228
+
this.checkResult(result, expected, 'Dump of examples/' + filename);
58
229
}
59
-
if (result == expected)
60
-
console.log('\x1B[1m\x1B[32mOK \x1B[39m\x1B[22m ' + comment);
61
-
else
62
-
console.log('\x1B[1m\x1B[31mERR\x1B[39m\x1B[22m ' + comment + '\n' + result);
63
-
});
230
+
}, [
231
+
[0],
232
+
]));
233
+
234
+
tests.push(new Tests('Base64', function (t) {
235
+
let bin = Base64.decode(t);
236
+
let url = new Stream(bin, 0).b64Dump(0, bin.length);
237
+
// check base64url encoding
238
+
this.checkResult(url, t.replace(/\n/g, '').replace(/=*$/g, ''), 'Base64url: ' + bin.length + ' bytes');
239
+
// check conversion from base64url to base64
240
+
let pretty = Base64.pretty(url);
241
+
this.checkResult(pretty, t, 'Base64pretty: ' + bin.length + ' bytes');
242
+
let std = new Stream(bin, 0).b64Dump(0, bin.length, 'std');
243
+
// check direct base64 encoding
244
+
this.checkResult(std, t.replace(/\n/g, ''), 'Base64: ' + bin.length + ' bytes');
245
+
}, [
246
+
'AA==',
247
+
'ABA=',
248
+
'ABCD',
249
+
'ABCDEA==',
250
+
'ABCDEFE=',
251
+
'ABCDEFGH',
252
+
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQR\nSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456w==',
253
+
]));
254
+
255
+
for (const t of tests)
256
+
t.checkAll();
257
+
258
+
console.log(stats.run + ' tested, ' + stats.error + ' errors.');
259
+
process.exit(stats.error ? 1 : 0);
+32
testDefs.js
+32
testDefs.js
···
1
+
#!/usr/bin/env node
2
+
3
+
import { promises as fs } from 'node:fs';
4
+
import { ASN1 } from './asn1.js';
5
+
import { Base64 } from './base64.js';
6
+
import { Defs } from './defs.js';
7
+
8
+
const tot = [];
9
+
for await (const file of await fs.opendir('examples')) {
10
+
let content = await fs.readFile('examples/' + file.name);
11
+
try {
12
+
try { // try PEM first
13
+
content = Base64.unarmor(content);
14
+
} catch (ignore) { // try DER/BER then
15
+
}
16
+
let result = ASN1.decode(content);
17
+
content = null;
18
+
const types = Defs.commonTypes
19
+
.map(type => {
20
+
const stats = Defs.match(result, type);
21
+
return { type, match: stats.recognized / stats.total };
22
+
})
23
+
.sort((a, b) => b.match - a.match);
24
+
tot.push([ types[0].match, file.name, types[0].type.description ]);
25
+
} catch (e) {
26
+
tot.push([ 0, file.name, e.message ]);
27
+
}
28
+
}
29
+
for (const f of tot)
30
+
console.log(f[0].toFixed(3) + '\t' + f[1] + '\t' + f[2]);
31
+
const avg = tot.map(f => f[0]).reduce((sum, val) => sum + val) / tot.length;
32
+
console.log('\x1B[1m\x1B[32m' + (avg * 100).toFixed(3) + '\x1B[39m\x1B[22m%\tAVERAGE');
+37
theme.js
+37
theme.js
···
1
+
// set dark theme depending on OS settings
2
+
function setTheme(theme) {
3
+
if (theme == 'os') {
4
+
let prefersDarkScheme = window.matchMedia('(prefers-color-scheme: dark)');
5
+
if (prefersDarkScheme.matches) {
6
+
theme = 'dark';
7
+
} else {
8
+
theme = 'light';
9
+
}
10
+
}
11
+
document.documentElement.style['color-scheme'] = theme;
12
+
document.querySelector('html').setAttribute('data-theme', theme);
13
+
// set the theme-color for iOS devices
14
+
let bgColor = getComputedStyle(document.documentElement).getPropertyValue('--main-bg-color');
15
+
let metaThemeColor = document.querySelector('meta[name=theme-color]');
16
+
metaThemeColor.setAttribute('content', bgColor);
17
+
}
18
+
// activate selected theme
19
+
let theme = 'os';
20
+
const localStorageTheme = localStorage.getItem('theme');
21
+
if (localStorageTheme) {
22
+
theme = localStorageTheme;
23
+
}
24
+
setTheme(theme);
25
+
// add handler to theme selection element
26
+
const selectTheme = document.getElementById('theme-select');
27
+
if (selectTheme) {
28
+
selectTheme.addEventListener ('change', function () {
29
+
localStorage.setItem('theme', selectTheme.value);
30
+
setTheme(selectTheme.value);
31
+
});
32
+
if (theme == 'light') {
33
+
selectTheme.selectedIndex = 2;
34
+
} else if (theme == 'dark') {
35
+
selectTheme.selectedIndex = 1;
36
+
}
37
+
}
+1
tree-icon-dark.svg
+1
tree-icon-dark.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="14"><circle cx="6.903" cy="7.102" r="5.165" style="fill:#000;fill-opacity:1;stroke:#555;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><circle cx="21.133" cy="7.029" r="5.165" style="fill:#000;fill-opacity:1;stroke:#555;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><path d="M17.908 7.071h6.783" style="opacity:1;fill:none;fill-opacity:1;stroke:#555;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><g style="fill:none;fill-opacity:1;stroke:#555;stroke-width:.518375;stroke-dasharray:none;stroke-opacity:1"><path d="M5.231 9.992h9.466" style="opacity:.992268;fill:none;fill-opacity:1;stroke:#555;stroke-width:1.44663;stroke-dasharray:none;stroke-opacity:1" transform="translate(-.289 -.083)scale(.71667)"/><path d="M10.006 5.242v9.465" style="opacity:1;fill:none;fill-opacity:1;stroke:#555;stroke-width:1.44663;stroke-dasharray:none;stroke-opacity:1" transform="translate(-.289 -.083)scale(.71667)"/></g></svg>
+1
tree-icon-light.svg
+1
tree-icon-light.svg
···
1
+
<svg xmlns="http://www.w3.org/2000/svg" width="28" height="14"><circle cx="6.936" cy="7.247" r="5.165" style="fill:silver;fill-opacity:1;stroke:#999;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><circle cx="21.166" cy="7.174" r="5.165" style="fill:silver;fill-opacity:1;stroke:#999;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><path d="M17.94 7.216h6.784" style="fill:none;fill-opacity:1;stroke:#999;stroke-width:1.03676;stroke-dasharray:none;stroke-opacity:1"/><g style="fill:none;fill-opacity:1;stroke:#999;stroke-width:.518375;stroke-dasharray:none;stroke-opacity:1"><path d="M5.231 9.992h9.466" style="opacity:.992268;fill:none;fill-opacity:1;stroke:#999;stroke-width:1.44663;stroke-dasharray:none;stroke-opacity:1" transform="translate(-.256 .062)scale(.71667)"/><path d="M10.006 5.242v9.465" style="opacity:1;fill:none;fill-opacity:1;stroke:#999;stroke-width:1.44663;stroke-dasharray:none;stroke-opacity:1" transform="translate(-.256 .062)scale(.71667)"/></g></svg>
-52
update.sh
-52
update.sh
···
1
-
#/bin/sh
2
-
URL='https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.cfg'
3
-
if [ -x /usr/bin/fetch ]; then
4
-
/usr/bin/fetch -m --no-verify-peer $URL
5
-
elif [ -x /usr/bin/wget ]; then
6
-
/usr/bin/wget -N --no-check-certificate $URL
7
-
elif [ ! -r dumpasn1.cfg ]; then
8
-
echo Please download $URL in this directory.
9
-
exit 1
10
-
fi
11
-
cat dumpasn1.cfg | \
12
-
tr -d '\r' | \
13
-
awk -v url="$URL" '
14
-
function clean() {
15
-
oid = "";
16
-
comment = "";
17
-
description = "";
18
-
warning = "";
19
-
}
20
-
BEGIN {
21
-
FS = "= *";
22
-
apos = sprintf("%c", 39);
23
-
clean();
24
-
print "// Converted from: " url;
25
-
print "// which is made by Peter Gutmann and whose license states:";
26
-
print "// You can use this code in whatever way you want,";
27
-
print "// as long as you don" apos "t try to claim you wrote it.";
28
-
print "var oids = {";
29
-
}
30
-
/^OID/ { oid = $2; }
31
-
/^Comment/ { comment = $2; }
32
-
/^Description/ { description = $2; }
33
-
/^Warning/ { warning = ", \"w\": true"; }
34
-
/^$/ {
35
-
if (length(oid) > 0) {
36
-
gsub(" ", ".", oid);
37
-
gsub("\"", "\\\"", description);
38
-
gsub("\"", "\\\"", comment);
39
-
if (++seen[oid] > 1)
40
-
print "Duplicate OID in line " NR ": " oid > "/dev/stderr";
41
-
else
42
-
printf "\"%s\": { \"d\": \"%s\", \"c\": \"%s\"%s },\n", oid, description, comment, warning;
43
-
clean();
44
-
}
45
-
}
46
-
END {
47
-
print "\"END\": \"\""
48
-
print "};"
49
-
print "if (typeof module !== " apos "undefined" apos ") { module.exports = oids; }"
50
-
}
51
-
' >oids.js
52
-
echo Conversion completed.
+49
updateOID.sh
+49
updateOID.sh
···
1
+
#/bin/sh
2
+
URL='https://www.cs.auckland.ac.nz/~pgut001/dumpasn1.cfg'
3
+
if [ -x /usr/bin/fetch ]; then
4
+
/usr/bin/fetch -m --no-verify-peer $URL
5
+
elif [ -x /usr/bin/wget ]; then
6
+
/usr/bin/wget -N --no-check-certificate $URL
7
+
elif [ ! -r dumpasn1.cfg ]; then
8
+
echo Please download $URL in this directory.
9
+
exit 1
10
+
fi
11
+
cat dumpasn1.cfg | \
12
+
tr -d '\r' | \
13
+
awk -v apos="'" -v q='"' -v url="$URL" '
14
+
function clean() {
15
+
oid = "";
16
+
comment = "";
17
+
description = "";
18
+
warning = "";
19
+
}
20
+
BEGIN {
21
+
FS = "= *";
22
+
clean();
23
+
print "// Converted from: " url;
24
+
print "// which is made by Peter Gutmann and whose license states:";
25
+
print "// You can use this code in whatever way you want,";
26
+
print "// as long as you don" apos "t try to claim you wrote it.";
27
+
print "export const oids = {";
28
+
}
29
+
/^OID/ { oid = $2; }
30
+
/^Comment/ { comment = $2; }
31
+
/^Description/ { description = $2; }
32
+
/^Warning/ { warning = ", \"w\": true"; }
33
+
/^$/ {
34
+
if (length(oid) > 0) {
35
+
gsub(" ", ".", oid);
36
+
gsub("\"", "\\\"", description);
37
+
gsub("\"", "\\\"", comment);
38
+
if (++seen[oid] > 1)
39
+
print "Duplicate OID in line " NR ": " oid > "/dev/stderr";
40
+
else
41
+
printf "\"%s\": { \"d\": \"%s\", \"c\": \"%s\"%s },\n", oid, description, comment, warning;
42
+
clean();
43
+
}
44
+
}
45
+
END {
46
+
print "};"
47
+
}
48
+
' >oids.js
49
+
echo Conversion completed.
+32
updateRFC.sh
+32
updateRFC.sh
···
1
+
#/bin/sh
2
+
RFCs="5280 5208 3369 3161 2986 4211 4210 8017 4511"
3
+
downloadRFC() {
4
+
URL="https://www.ietf.org/rfc/rfc$1.txt"
5
+
if [ -x /usr/bin/fetch ]; then
6
+
/usr/bin/fetch -m --no-verify-peer $URL
7
+
elif [ -x /usr/bin/wget ]; then
8
+
/usr/bin/wget -N --no-check-certificate $URL
9
+
elif [ ! -r dumpasn1.cfg ]; then
10
+
echo Please download $URL in this directory.
11
+
exit 1
12
+
fi
13
+
}
14
+
echo '{}' > rfcdef.json # start from scratch
15
+
mkdir -p rfc
16
+
cd rfc
17
+
for n in $RFCs; do
18
+
downloadRFC $n
19
+
../parseRFC.js rfc$n.txt ../rfcdef.json
20
+
done
21
+
cd ..
22
+
{
23
+
echo "// content parsed from ASN.1 definitions as found in the following RFCs: $RFCs"
24
+
echo "// Copyright (C) The IETF Trust (2008)"
25
+
echo "// as far as I can tell this file is allowed under the following clause:"
26
+
echo "// It is acceptable under the current IETF rules (RFC 5378) to modify extracted code if necessary."
27
+
echo "// https://trustee.ietf.org/about/faq/#reproducing-rfcs"
28
+
echo -n "export const rfcdef = "
29
+
cat rfcdef.json
30
+
echo ";"
31
+
} > rfcdef.js
32
+
echo Conversion completed.
+43
vite.config.js
+43
vite.config.js
···
1
+
import fs from 'node:fs';
2
+
import { defineConfig } from 'vite';
3
+
import { viteSingleFile } from 'vite-plugin-singlefile';
4
+
import pluginDom from 'vite-plugin-dom';
5
+
import { DomUtils } from 'htmlparser2';
6
+
7
+
const removeNodes = [ 'rowExamples' ];
8
+
9
+
const preventSVGEmit = () => {
10
+
return {
11
+
generateBundle(opts, bundle) {
12
+
for (const key in bundle)
13
+
if (key.endsWith('.svg'))
14
+
delete bundle[key];
15
+
},
16
+
};
17
+
};
18
+
19
+
function massageSVG(str) {
20
+
return str.replace(/["<>#]/g, (c) => {
21
+
return '%' + c.charCodeAt(0).toString(16).toUpperCase().padStart(2, '0');
22
+
});
23
+
}
24
+
25
+
export default defineConfig({
26
+
plugins: [
27
+
preventSVGEmit(),
28
+
pluginDom({
29
+
applyOnMode: true, // all modes
30
+
handler: node => {
31
+
if (removeNodes.includes(node.attribs.id))
32
+
DomUtils.removeElement(node);
33
+
else if (node.name == 'link' && node.attribs.rel == 'icon')
34
+
node.attribs.href = 'data:image/svg+xml,' + massageSVG(fs.readFileSync('favicon.svg', 'ascii').replace(/^([^<]+|<[^s]|<s[^v]|<sv[^g])+/, '').trim());
35
+
},
36
+
}),
37
+
viteSingleFile(),
38
+
],
39
+
build: {
40
+
minify: false,
41
+
cssMinify: false,
42
+
},
43
+
});