typepki-strconv 0.6.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/import/conv.d.mts +24 -2
- package/dist/import/conv.d.mts.map +1 -1
- package/dist/import/index.d.mts +2 -2
- package/dist/import/index.d.mts.map +1 -1
- package/dist/import/index.mjs +4 -4
- package/dist/require/index.cjs +4 -4
- package/package.json +2 -2
- package/src/conv.mts +48 -2
- package/src/conv.test.mts +8 -1
- package/src/conv_uricmp.test.mts +6 -1
- package/src/conv_zulu.mts +34 -0
- package/src/conv_zulu.test.mts +15 -0
- package/src/hexutil.mts +1 -1
- package/src/index.mts +13 -2
- package/src/hexutil.test.mts~ +0 -1
package/dist/import/conv.d.mts
CHANGED
|
@@ -156,6 +156,7 @@ export interface Dictionary<Type> {
|
|
|
156
156
|
* @param namearray array of name string
|
|
157
157
|
* @param namedb associative array of name and value
|
|
158
158
|
* @return binary string (ex. "110001")
|
|
159
|
+
* @see {@link binstrtonamearray}
|
|
159
160
|
*
|
|
160
161
|
* @description
|
|
161
162
|
* This function converts from an array of names to
|
|
@@ -165,11 +166,32 @@ export interface Dictionary<Type> {
|
|
|
165
166
|
* This function may be useful to implement ASN.1 BitString such as KeyUsage.
|
|
166
167
|
*
|
|
167
168
|
* @example
|
|
168
|
-
*
|
|
169
|
+
* const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
169
170
|
* namearraytobinstr(['a', 'c', 'd'], db) -> '1000000011'
|
|
170
171
|
* namearraytobinstr(['c', 'b'], db) -> '000100001'
|
|
171
172
|
*/
|
|
172
|
-
export declare function namearraytobinstr(namearray: Array<string>, namedb:
|
|
173
|
+
export declare function namearraytobinstr(namearray: Array<string>, namedb: Record<string, number>): string;
|
|
174
|
+
/**
|
|
175
|
+
* convert bit string to array of names to
|
|
176
|
+
* @param binstr - binary string (ex. "1001")
|
|
177
|
+
* @param namedb associative array of name and index
|
|
178
|
+
* @return array of names
|
|
179
|
+
* @see {@link namearraytobinstr}
|
|
180
|
+
*
|
|
181
|
+
* @description
|
|
182
|
+
* This function converts from binary string to
|
|
183
|
+
* an array of names defined in namedb.
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
187
|
+
* binstrtonamearray('1000000011', db) -> ['a', 'c', 'd']
|
|
188
|
+
* binstrtonamearray(''000100001', db) -> ['b', 'c']
|
|
189
|
+
*
|
|
190
|
+
* const db2: Record<string, number> = { "apple": 0, "orange": 1, "grape": 2, "mango", 3 };
|
|
191
|
+
* binstrtonamearray('0101', db2) -> ['orange', 'mango']
|
|
192
|
+
* binstrtonamearray('101', db2) -> ['apple', 'grape']
|
|
193
|
+
*/
|
|
194
|
+
export declare function binstrtonamearray(binstr: string, namedb: Record<string, number>): string[];
|
|
173
195
|
/**
|
|
174
196
|
* get value of array by key name list<br/>
|
|
175
197
|
* @param valIn - array of associative array
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conv.d.mts","sourceRoot":"","sources":["../../src/conv.mts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3C;AAGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAGD;;;;;;;GAOG;AAKH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,MAAO,MAAM,KAAG,MAAM,GAAG,IAQnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWpD;AAOD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,MAAO,MAAM,OAAO,MAAM,eAAe,MAAM,KAAG,MAIpE,CAAC;AAGF;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,IAAI;IAC9B;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"conv.d.mts","sourceRoot":"","sources":["../../src/conv.mts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE5C;AAGD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE7C;AAGD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAM3C;AAGD;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3C;AAGD;;;;;;;GAOG;AAKH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM7C;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO7C;AAGD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,MAAO,MAAM,KAAG,MAAM,GAAG,IAQnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBvD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AAQH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWpD;AAOD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,MAAM,MAAO,MAAM,OAAO,MAAM,eAAe,MAAM,KAAG,MAIpE,CAAC;AAGF;;;;GAIG;AACH,MAAM,WAAW,UAAU,CAAC,IAAI;IAC9B;;OAEG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAID;;;;;;;;;;;;;;;;;;GAkBG;AAQH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,EACxB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAYR;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,EAAE,CAgBV;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,GAAG,CAejE"}
|
package/dist/import/index.d.mts
CHANGED
|
@@ -4,8 +4,8 @@ import { isBase64, isBase64URL, ishex } from "./checker.mts";
|
|
|
4
4
|
export { isBase64, isBase64URL, ishex };
|
|
5
5
|
import { BAtohex, BAtos, hextoBA, stoBA, stohex } from "./conv_ba.mts";
|
|
6
6
|
export { stohex, BAtohex, hextoBA, stoBA, BAtos };
|
|
7
|
-
import { Dictionary, aryval, b64tob64u, b64tohex, b64toutf8, b64utob64, b64utohex, b64utoutf8, binstrtobitstr, bitstrtobinstr, hextob64, hextob64u, hextorstr, hextoutf8, inttobitstr, namearraytobinstr, rstrtob64, rstrtohex, strpad, utf8tob64, utf8tob64u, utf8tohex } from "./conv.mts";
|
|
8
|
-
export { b64tohex, hextob64, b64toutf8, utf8tob64, b64utoutf8, utf8tob64u, hextoutf8, utf8tohex, b64utohex, hextob64u, b64tob64u, b64utob64, hextorstr, rstrtohex, binstrtobitstr, bitstrtobinstr, inttobitstr, strpad, namearraytobinstr, aryval, rstrtob64, };
|
|
7
|
+
import { Dictionary, aryval, b64tob64u, b64tohex, b64toutf8, b64utob64, b64utohex, b64utoutf8, binstrtobitstr, binstrtonamearray, bitstrtobinstr, hextob64, hextob64u, hextorstr, hextoutf8, inttobitstr, namearraytobinstr, rstrtob64, rstrtohex, strpad, utf8tob64, utf8tob64u, utf8tohex } from "./conv.mts";
|
|
8
|
+
export { b64tohex, hextob64, b64toutf8, utf8tob64, b64utoutf8, utf8tob64u, hextoutf8, utf8tohex, b64utohex, hextob64u, b64tob64u, b64utob64, hextorstr, rstrtohex, binstrtobitstr, binstrtonamearray, bitstrtobinstr, inttobitstr, strpad, namearraytobinstr, aryval, rstrtob64, };
|
|
9
9
|
export type { Dictionary };
|
|
10
10
|
import { iso88591hextoutf8, utf8toiso88591hex } from "./conv_iso88591.mts";
|
|
11
11
|
export { iso88591hextoutf8, utf8toiso88591hex };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,EAAE,MAA+D,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAElD,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,cAAc,EACd,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,SAAS,GACV,CAAC;AACF,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAEhD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAE9C,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAE3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.mts","sourceRoot":"","sources":["../../src/index.mts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,EAAE,MAA+D,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAExC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAElD,OAAO,EACL,UAAU,EACV,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,UAAU,EACV,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,SAAS,EACT,SAAS,EACT,SAAS,EACT,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,SAAS,EACT,MAAM,EACN,SAAS,EACT,UAAU,EACV,SAAS,EACV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,MAAM,EACN,iBAAiB,EACjB,MAAM,EACN,SAAS,GACV,CAAC;AACF,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;AAEhD,OAAO,EACL,UAAU,EACV,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,QAAQ,EACT,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;AAEtE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,CAAC;AAE9C,OAAO,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,UAAU,EACV,SAAS,EACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;AAEhF,OAAO,EACL,qBAAqB,EACrB,WAAW,EACX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,WAAW,EAAE,CAAC;AAE3D,OAAO,EACL,OAAO,EACP,SAAS,EACT,SAAS,EACT,WAAW,EACX,OAAO,EACP,SAAS,EACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC;AAE1E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,CAAC;AAEzB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
package/dist/import/index.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
function m(r){return
|
|
2
|
-
`){return`-----BEGIN ${t}-----${e}${y(x(r),64)}${e}-----END ${t}-----${e}`}function
|
|
3
|
-
`){return`-----BEGIN ${t}-----${e}${y(r,64,e)}${e}-----END ${t}-----${e}`}function
|
|
4
|
-
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}function
|
|
1
|
+
function m(r){return C(U(r))}function C(r){let t="";for(let e=0;e<r.length;e++){let n=r[e].toString(16);n.length===1&&(n=`0${n}`),t=t+n}return t}function M(r){let t=[];for(let e=0;e<r.length;e+=2)t.push(parseInt(r.slice(e,e+2),16));return t}function U(r){let t=new Array;for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}function k(r){let t="";for(let e=0;e<r.length;e++)t=t+String.fromCharCode(r[e]);return t}function N(r){return r.replace(/%/g,"")}function b(r){return r.replace(/(..)/g,"%$1")}function F(r){let t=encodeURIComponent(r),e="";for(let n=0;n<t.length;n++)t[n]==="%"?(e=e+t.substr(n,3),n=n+2):e=`${e}%${m(t[n])}`;return e}function a(r){return Buffer.from(r,"base64").toString("hex")}function x(r){return Buffer.from(r,"hex").toString("base64")}function c(r){try{return decodeURIComponent(b(r))}catch{throw new Error("malformed hexadecimal UTF-8 string")}}function $(r){return Buffer.from(r,"utf8").toString("hex")}function Z(r){return Buffer.from(r,"base64").toString("utf8")}function L(r){return Buffer.from(r,"utf8").toString("base64")}function O(r){return Buffer.from(p(r),"base64").toString("utf8")}function V(r){return d(Buffer.from(r,"utf8").toString("base64"))}function G(r){return a(p(r))}function _(r){return d(x(r))}function P(r){let t="";for(let e=0;e<r.length;e+=2){let n=parseInt(r.substr(e,2),16);t+=String.fromCharCode(n)}return t}function K(r){let t="";for(let e=0;e<r.length;e++)t+=`0${r.charCodeAt(e).toString(16)}`.slice(-2);return t}function Y(r){return Buffer.from(r).toString("base64")}function d(r){let t=r;return t=t.replace(/\=/g,""),t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t}function p(r){let t=r;return t.length%4===2?t=`${t}==`:t.length%4===3&&(t=`${t}=`),t=t.replace(/-/g,"+"),t=t.replace(/_/g,"/"),t}var q=r=>{if(r.match(/^[01]+$/)==null)return null;try{let t=parseInt(r,2);return E(t)}catch{return null}};function J(r){if(typeof r!="string"||r.length%2!==0||!r.match(/^[0-9a-f]+$/))return null;try{let t=parseInt(r.substr(0,2),16);if(t<0||7<t)return null;let e=r.substr(2),n="";for(let i=0;i<e.length;i+=2){let o=e.substr(i,2),s=parseInt(o,16).toString(2);s=`0000000${s}`.slice(-8),n+=s}return n.substr(0,n.length-t)}catch{return null}}function E(r){if(typeof r!="number"||r<0)return null;let t=Number(r).toString(2),e=8-t.length%8;e===8&&(e=0),t=t+T("",e,"0");let n=parseInt(t,2).toString(16);return n.length%2===1&&(n=`0${n}`),`0${e}`+n}var T=(r,t,e)=>{let n=e===void 0?"0":e;return r.length>=t?r:new Array(t-r.length+1).join(n)+r};function Q(r,t){let e=0;for(let o=0;o<r.length;o++)e|=1<<t[r[o]];let n=e.toString(2),i="";for(let o=n.length-1;o>=0;o--)i+=n[o];return i}function W(r,t){let n=Object.keys(t).map(s=>t[s]),i={};Object.keys(t).map(s=>{i[t[s]]=s});let o=[];return r.split("").map((s,f)=>{s=="1"&&o.push(i[f.toString()])}),o}function X(r,t,e){let n=r,i=t.split(".");for(let o=0;o<i.length&&n;o++){let s=i[o];if(typeof n=="object"&&"length"in n&&s.match(/^[0-9]+$/))n=n[parseInt(s)];else if(typeof n=="object"&&s in n)n=n[s];else return e}return n||n===!1?n:e}function H(r){return!(r.length%2===1||r.match(/^[0-9a-f]+$/)==null)}function v(r){let t=r.replace(/\s+/g,"");return!!(t.match(/^[0-9A-Za-z+\/]+={0,3}$/)&&t.length%4===0)}function tt(r){if(r.match(/[+/=]/))return!1;let t=p(r);return v(t)}function rt(r){return c(nt(r))}function et(r){return ot($(r))}function nt(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++){let i=parseInt(t[n],16);161<=i&&i<=191?(e.push("c2"),e.push(t[n])):192<=i&&i<=255?(e.push("c3"),e.push((i-64).toString(16))):e.push(t[n])}return e.join("")}function ot(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++)if(t[n]==="c2")n++,e.push(t[n]);else if(t[n]==="c3"){n++;let i=parseInt(t[n],16)+64;e.push(i.toString(16))}else e.push(t[n]);return e.join("")}function it(r,t,e=`\r
|
|
2
|
+
`){return`-----BEGIN ${t}-----${e}${y(x(r),64)}${e}-----END ${t}-----${e}`}function st(r,t){return a(D(r,t))}function D(r,t){let e=r;if(e.indexOf("-----BEGIN ")===-1)throw new Error("can't find PEM header");return t!==void 0?(e=e.replace(new RegExp(`^[^-]*-----BEGIN ${t}-----`),""),e=e.replace(new RegExp(`-----END ${t}-----[^-]*$`),"")):(e=e.replace(/^[^-]*-----BEGIN [^-]+-----/,""),e=e.replace(/-----END [^-]+-----[^-]*$/,"")),e.replace(/\s+/g,"")}function ut(r,t,e=`\r
|
|
3
|
+
`){return`-----BEGIN ${t}-----${e}${y(r,64,e)}${e}-----END ${t}-----${e}`}function lt(r){let t=r.replace(/[^0-9A-Za-z\/+=]*/g,"");return a(t)}function y(r,t,e=`\r
|
|
4
|
+
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}function ft(r){if(r.length%2!==0)throw"input is not even length";if(r.match(/^[0-9A-Fa-f]+$/)==null)throw"input is not hexadecimal";let t=new ArrayBuffer(r.length/2),e=new DataView(t);for(let n=0;n<r.length/2;n++)e.setUint8(n,parseInt(r.substr(n*2,2),16));return t}function ct(r){let t="",e=new DataView(r);for(let n=0;n<r.byteLength;n++)t+=`00${e.getUint8(n).toString(16)}`.slice(-2);return t}function w(r){let t=r,e,n,i,o,s,f,u,g,h;t=R(t);let l=t.match(/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(|\.\d+)Z$/);if(l)return e=parseInt(l[1]),n=parseInt(l[2])-1,i=parseInt(l[3]),o=parseInt(l[4]),s=parseInt(l[5]),f=parseInt(l[6]),u=0,g=l[7],g!==""&&(h=`${g.substr(1)}00`.substr(0,3),u=parseInt(h)),Date.UTC(e,n,i,o,s,f,u);throw new Error(`unsupported zulu format: ${t}`)}function gt(r){let t=new Date(r),e=`0000${t.getUTCFullYear()}`.slice(-4),n=`00${t.getUTCMonth()+1}`.slice(-2),i=`00${t.getUTCDate()}`.slice(-2),o=`00${t.getUTCHours()}`.slice(-2),s=`00${t.getUTCMinutes()}`.slice(-2),f=`00${t.getUTCSeconds()}`.slice(-2),u=`000${t.getUTCMilliseconds()}`.slice(-3);return u=u.replace(/0+$/,""),u=u!==""?`.${u}`:u,`${e+n+i+o+s+f+u}Z`}function at(r){return Math.round(w(r)/1e3)}function pt(r){return new Date(w(r))}function ht(r,t=!1,e=!1){let n,i=r.getUTCFullYear();if(t){if(i<1950||2049<i)throw new Error(`not proper year for UTCTime: ${i}`);n=`${i}`.slice(-2)}else n=`000${i}`.slice(-4);if(n+=`0${r.getUTCMonth()+1}`.slice(-2),n+=`0${r.getUTCDate()}`.slice(-2),n+=`0${r.getUTCHours()}`.slice(-2),n+=`0${r.getUTCMinutes()}`.slice(-2),n+=`0${r.getUTCSeconds()}`.slice(-2),e){let o=r.getUTCMilliseconds();if(o!==0){let s=`00${o}`.slice(-3);s=s.replace(/0+$/g,""),n+=`.${s}`}}return n+="Z",n}function R(r){return r.match(/^[0-9]{12}Z$/)||r.match(/^[0-9]{12}[.][0-9]*Z$/)?r.match(/^[0-4]/)?`20${r}`:`19${r}`:r}function I(r){let t=r,e="malformed IPv6 address";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;t=t.toLowerCase();let n=t.split(":").length-1;if(n<2)throw e;let i=":".repeat(7-n+2);t=t.replace("::",i);let o=t.split(":");if(o.length!==8)throw e;for(let s=0;s<8;s++)o[s]=`0000${o[s]}`.slice(-4);return o.join("")}function A(r){let t=r;if(!t.match(/^[0-9A-Fa-f]{32}$/))throw new Error(`malformed IPv6 address: ${t}`);t=t.toLowerCase();let e=t.match(/.{1,4}/g)||[];e=e.map(o=>o.replace(/^0+/,"")),e=e.map(o=>o===""?"0":o),t=`:${e.join(":")}:`;let n=t.match(/:(0:){2,}/g);if(n==null)return t.slice(1,-1);let i=n.sort().slice(-1)[0];return t=t.replace(i.substr(0,i.length-1),":"),t.substr(0,2)!=="::"&&(t=t.substr(1)),t.substr(-2,2)!=="::"&&(t=t.substr(0,t.length-1)),t}function j(r){let t=new Error("malformed hex value");if(!r.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(r.length===8){let e;try{return e=`${parseInt(r.substr(0,2),16)}.${parseInt(r.substr(2,2),16)}.${parseInt(r.substr(4,2),16)}.${parseInt(r.substr(6,2),16)}`,e}catch{throw t}}else if(r.length===16)try{return`${j(r.substr(0,8))}/${B(r.substr(8))}`}catch{throw t}else{if(r.length===32)return A(r);if(r.length===64)try{return`${A(r.substr(0,32))}/${B(r.substr(32))}`}catch{throw t}else return r}}function z(r){let t=r,e=new Error("malformed IP address");if(t=t.toLowerCase(),!t.match(/^[0-9a-f.:/]+$/))throw e;if(t.match(/^[0-9.]+$/)){let n=t.split(".");if(n.length!==4)throw e;let i="";try{for(let o=0;o<4;o++){let s=parseInt(n[o]);i+=`0${s.toString(16)}`.slice(-2)}return i}catch{throw e}}else if(t.match(/^[0-9.]+\/[0-9]+$/)){let n=t.split("/");return z(n[0])+S(parseInt(n[1]),32)}else{if(t.match(/^[0-9a-f:]+$/)&&t.indexOf(":")!==-1)return I(t);if(t.match(/^[0-9a-f:]+\/[0-9]+$/)&&t.indexOf(":")!==-1){let n=t.split("/");return I(n[0])+S(parseInt(n[1]),128)}else throw e}}function B(r){let t=new Error("malformed mask"),e;try{e=parseInt(r,16).toString(2)}catch{throw t}if(!e.match(/^1*0*$/))throw t;return e.replace(/0+$/,"").length}function S(r,t){if(t===32&&r===0)return"00000000";if(t===128&&r===0)return"00000000000000000000000000000000";let e=Array(r+1).join("1")+Array(t-r+1).join("0");return parseInt(e,2).toString(16)}function xt(r){function t(i){let o=parseInt(i.substr(0,2),16),s=parseInt(i.substr(2),16);if(o===0&&s<128)return String.fromCharCode(s);if(o<8){let h=192|(o&7)<<3|(s&192)>>6,l=128|s&63;return c(h.toString(16)+l.toString(16))}let f=224|(o&240)>>4,u=128|(o&15)<<2|(s&192)>>6,g=128|s&63;return c(f.toString(16)+u.toString(16)+g.toString(16))}let e=r.match(/.{4}/g);return e==null?"":e.map(t).join("")}function mt(r){return r.length%2===1?`0${r}`:r}var zt="typepki-strconv 0.7.0 kjur.github.io/typepki-strconv";export{ct as ArrayBuffertohex,C as BAtohex,k as BAtos,zt as VERSION,X as aryval,lt as b64nltohex,d as b64tob64u,a as b64tohex,ut as b64topem,Z as b64toutf8,p as b64utob64,G as b64utohex,O as b64utoutf8,q as binstrtobitstr,W as binstrtonamearray,J as bitstrtobinstr,ht as datetozulu,F as encodeURIComponentAll,y as foldnl,mt as hexpad,ft as hextoArrayBuffer,M as hextoBA,x as hextob64,_ as hextob64u,j as hextoip,A as hextoipv6,it as hextopem,P as hextorstr,b as hextouricmp,c as hextoutf8,E as inttobitstr,S as ipnetmask,B as ipprefixlen,z as iptohex,I as ipv6tohex,v as isBase64,tt as isBase64URL,H as ishex,rt as iso88591hextoutf8,gt as msectozulu,Q as namearraytobinstr,D as pemtob64,st as pemtohex,Y as rstrtob64,K as rstrtohex,U as stoBA,m as stohex,T as strpad,R as timetogen,xt as ucs2hextoutf8,N as uricmptohex,L as utf8tob64,V as utf8tob64u,$ as utf8tohex,et as utf8toiso88591hex,pt as zulutodate,w as zulutomsec,at as zulutosec};
|
package/dist/require/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var E=Object.defineProperty;var
|
|
2
|
-
`){return`-----BEGIN ${t}-----${e}${I(m(r),64)}${e}-----END ${t}-----${e}`}function
|
|
3
|
-
`){return`-----BEGIN ${t}-----${e}${I(r,64,e)}${e}-----END ${t}-----${e}`}function
|
|
4
|
-
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}var
|
|
1
|
+
"use strict";var E=Object.defineProperty;var vt=Object.getOwnPropertyDescriptor;var Dt=Object.getOwnPropertyNames;var Rt=Object.prototype.hasOwnProperty;var l=(r,t)=>()=>(r&&(t=r(r=0)),t);var jt=(r,t)=>{for(var e in t)E(r,e,{get:t[e],enumerable:!0})},zt=(r,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dt(t))!Rt.call(r,o)&&o!==e&&E(r,o,{get:()=>t[o],enumerable:!(n=vt(t,o))||n.enumerable});return r};var Mt=r=>zt(E({},"__esModule",{value:!0}),r);function $(r){return T(v(r))}function T(r){let t="";for(let e=0;e<r.length;e++){let n=r[e].toString(16);n.length===1&&(n=`0${n}`),t=t+n}return t}function L(r){let t=[];for(let e=0;e<r.length;e+=2)t.push(parseInt(r.slice(e,e+2),16));return t}function v(r){let t=new Array;for(let e=0;e<r.length;e++)t[e]=r.charCodeAt(e);return t}function O(r){let t="";for(let e=0;e<r.length;e++)t=t+String.fromCharCode(r[e]);return t}var D=l(()=>{"use strict"});function V(r){return r.replace(/%/g,"")}function d(r){return r.replace(/(..)/g,"%$1")}function G(r){let t=encodeURIComponent(r),e="";for(let n=0;n<t.length;n++)t[n]==="%"?(e=e+t.substr(n,3),n=n+2):e=`${e}%${$(t[n])}`;return e}var R=l(()=>{"use strict";D()});function a(r){return Buffer.from(r,"base64").toString("hex")}function m(r){return Buffer.from(r,"hex").toString("base64")}function g(r){try{return decodeURIComponent(d(r))}catch{throw new Error("malformed hexadecimal UTF-8 string")}}function y(r){return Buffer.from(r,"utf8").toString("hex")}function _(r){return Buffer.from(r,"base64").toString("utf8")}function P(r){return Buffer.from(r,"utf8").toString("base64")}function K(r){return Buffer.from(p(r),"base64").toString("utf8")}function Y(r){return w(Buffer.from(r,"utf8").toString("base64"))}function q(r){return a(p(r))}function J(r){return w(m(r))}function Q(r){let t="";for(let e=0;e<r.length;e+=2){let n=parseInt(r.substr(e,2),16);t+=String.fromCharCode(n)}return t}function W(r){let t="";for(let e=0;e<r.length;e++)t+=`0${r.charCodeAt(e).toString(16)}`.slice(-2);return t}function X(r){return Buffer.from(r).toString("base64")}function w(r){let t=r;return t=t.replace(/\=/g,""),t=t.replace(/\+/g,"-"),t=t.replace(/\//g,"_"),t}function p(r){let t=r;return t.length%4===2?t=`${t}==`:t.length%4===3&&(t=`${t}=`),t=t.replace(/-/g,"+"),t=t.replace(/_/g,"/"),t}function tt(r){if(typeof r!="string"||r.length%2!==0||!r.match(/^[0-9a-f]+$/))return null;try{let t=parseInt(r.substr(0,2),16);if(t<0||7<t)return null;let e=r.substr(2),n="";for(let o=0;o<e.length;o+=2){let i=e.substr(o,2),s=parseInt(i,16).toString(2);s=`0000000${s}`.slice(-8),n+=s}return n.substr(0,n.length-t)}catch{return null}}function j(r){if(typeof r!="number"||r<0)return null;let t=Number(r).toString(2),e=8-t.length%8;e===8&&(e=0),t=t+z("",e,"0");let n=parseInt(t,2).toString(16);return n.length%2===1&&(n=`0${n}`),`0${e}`+n}function rt(r,t){let e=0;for(let i=0;i<r.length;i++)e|=1<<t[r[i]];let n=e.toString(2),o="";for(let i=n.length-1;i>=0;i--)o+=n[i];return o}function et(r,t){let n=Object.keys(t).map(s=>t[s]),o={};Object.keys(t).map(s=>{o[t[s]]=s});let i=[];return r.split("").map((s,c)=>{s=="1"&&i.push(o[c.toString()])}),i}function nt(r,t,e){let n=r,o=t.split(".");for(let i=0;i<o.length&&n;i++){let s=o[i];if(typeof n=="object"&&"length"in n&&s.match(/^[0-9]+$/))n=n[parseInt(s)];else if(typeof n=="object"&&s in n)n=n[s];else return e}return n||n===!1?n:e}var H,z,h=l(()=>{"use strict";R();H=r=>{if(r.match(/^[01]+$/)==null)return null;try{let t=parseInt(r,2);return j(t)}catch{return null}};z=(r,t,e)=>{let n=e===void 0?"0":e;return r.length>=t?r:new Array(t-r.length+1).join(n)+r}});function ot(r){return!(r.length%2===1||r.match(/^[0-9a-f]+$/)==null)}function M(r){let t=r.replace(/\s+/g,"");return!!(t.match(/^[0-9A-Za-z+\/]+={0,3}$/)&&t.length%4===0)}function it(r){if(r.match(/[+/=]/))return!1;let t=p(r);return M(t)}var st=l(()=>{"use strict";h()});function ut(r){return g(kt(r))}function lt(r){return Nt(y(r))}function kt(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++){let o=parseInt(t[n],16);161<=o&&o<=191?(e.push("c2"),e.push(t[n])):192<=o&&o<=255?(e.push("c3"),e.push((o-64).toString(16))):e.push(t[n])}return e.join("")}function Nt(r){let t=r.match(/.{1,2}/g);if(t==null)return"";let e=[];for(let n=0;n<t.length;n++)if(t[n]==="c2")n++,e.push(t[n]);else if(t[n]==="c3"){n++;let o=parseInt(t[n],16)+64;e.push(o.toString(16))}else e.push(t[n]);return e.join("")}var ft=l(()=>{"use strict";h()});function ct(r,t,e=`\r
|
|
2
|
+
`){return`-----BEGIN ${t}-----${e}${I(m(r),64)}${e}-----END ${t}-----${e}`}function gt(r,t){return a(k(r,t))}function k(r,t){let e=r;if(e.indexOf("-----BEGIN ")===-1)throw new Error("can't find PEM header");return t!==void 0?(e=e.replace(new RegExp(`^[^-]*-----BEGIN ${t}-----`),""),e=e.replace(new RegExp(`-----END ${t}-----[^-]*$`),"")):(e=e.replace(/^[^-]*-----BEGIN [^-]+-----/,""),e=e.replace(/-----END [^-]+-----[^-]*$/,"")),e.replace(/\s+/g,"")}function at(r,t,e=`\r
|
|
3
|
+
`){return`-----BEGIN ${t}-----${e}${I(r,64,e)}${e}-----END ${t}-----${e}`}function pt(r){let t=r.replace(/[^0-9A-Za-z\/+=]*/g,"");return a(t)}function I(r,t,e=`\r
|
|
4
|
+
`){let n=r;return n=n.replace(new RegExp(`(.{${t}})`,"g"),`$1${e}`),n=n.replace(/\s+$/,""),n}var ht=l(()=>{"use strict";h()});function xt(r){if(r.length%2!==0)throw"input is not even length";if(r.match(/^[0-9A-Fa-f]+$/)==null)throw"input is not hexadecimal";let t=new ArrayBuffer(r.length/2),e=new DataView(t);for(let n=0;n<r.length/2;n++)e.setUint8(n,parseInt(r.substr(n*2,2),16));return t}function mt(r){let t="",e=new DataView(r);for(let n=0;n<r.byteLength;n++)t+=`00${e.getUint8(n).toString(16)}`.slice(-2);return t}var bt=l(()=>{"use strict"});function A(r){let t=r,e,n,o,i,s,c,u,x,b;t=N(t);let f=t.match(/^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(|\.\d+)Z$/);if(f)return e=parseInt(f[1]),n=parseInt(f[2])-1,o=parseInt(f[3]),i=parseInt(f[4]),s=parseInt(f[5]),c=parseInt(f[6]),u=0,x=f[7],x!==""&&(b=`${x.substr(1)}00`.substr(0,3),u=parseInt(b)),Date.UTC(e,n,o,i,s,c,u);throw new Error(`unsupported zulu format: ${t}`)}function $t(r){let t=new Date(r),e=`0000${t.getUTCFullYear()}`.slice(-4),n=`00${t.getUTCMonth()+1}`.slice(-2),o=`00${t.getUTCDate()}`.slice(-2),i=`00${t.getUTCHours()}`.slice(-2),s=`00${t.getUTCMinutes()}`.slice(-2),c=`00${t.getUTCSeconds()}`.slice(-2),u=`000${t.getUTCMilliseconds()}`.slice(-3);return u=u.replace(/0+$/,""),u=u!==""?`.${u}`:u,`${e+n+o+i+s+c+u}Z`}function dt(r){return Math.round(A(r)/1e3)}function yt(r){return new Date(A(r))}function wt(r,t=!1,e=!1){let n,o=r.getUTCFullYear();if(t){if(o<1950||2049<o)throw new Error(`not proper year for UTCTime: ${o}`);n=`${o}`.slice(-2)}else n=`000${o}`.slice(-4);if(n+=`0${r.getUTCMonth()+1}`.slice(-2),n+=`0${r.getUTCDate()}`.slice(-2),n+=`0${r.getUTCHours()}`.slice(-2),n+=`0${r.getUTCMinutes()}`.slice(-2),n+=`0${r.getUTCSeconds()}`.slice(-2),e){let i=r.getUTCMilliseconds();if(i!==0){let s=`00${i}`.slice(-3);s=s.replace(/0+$/g,""),n+=`.${s}`}}return n+="Z",n}function N(r){return r.match(/^[0-9]{12}Z$/)||r.match(/^[0-9]{12}[.][0-9]*Z$/)?r.match(/^[0-4]/)?`20${r}`:`19${r}`:r}var It=l(()=>{"use strict"});function B(r){let t=r,e="malformed IPv6 address";if(!t.match(/^[0-9A-Fa-f:]+$/))throw e;t=t.toLowerCase();let n=t.split(":").length-1;if(n<2)throw e;let o=":".repeat(7-n+2);t=t.replace("::",o);let i=t.split(":");if(i.length!==8)throw e;for(let s=0;s<8;s++)i[s]=`0000${i[s]}`.slice(-4);return i.join("")}function S(r){let t=r;if(!t.match(/^[0-9A-Fa-f]{32}$/))throw new Error(`malformed IPv6 address: ${t}`);t=t.toLowerCase();let e=t.match(/.{1,4}/g)||[];e=e.map(i=>i.replace(/^0+/,"")),e=e.map(i=>i===""?"0":i),t=`:${e.join(":")}:`;let n=t.match(/:(0:){2,}/g);if(n==null)return t.slice(1,-1);let o=n.sort().slice(-1)[0];return t=t.replace(o.substr(0,o.length-1),":"),t.substr(0,2)!=="::"&&(t=t.substr(1)),t.substr(-2,2)!=="::"&&(t=t.substr(0,t.length-1)),t}function F(r){let t=new Error("malformed hex value");if(!r.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw t;if(r.length===8){let e;try{return e=`${parseInt(r.substr(0,2),16)}.${parseInt(r.substr(2,2),16)}.${parseInt(r.substr(4,2),16)}.${parseInt(r.substr(6,2),16)}`,e}catch{throw t}}else if(r.length===16)try{return`${F(r.substr(0,8))}/${C(r.substr(8))}`}catch{throw t}else{if(r.length===32)return S(r);if(r.length===64)try{return`${S(r.substr(0,32))}/${C(r.substr(32))}`}catch{throw t}else return r}}function Z(r){let t=r,e=new Error("malformed IP address");if(t=t.toLowerCase(),!t.match(/^[0-9a-f.:/]+$/))throw e;if(t.match(/^[0-9.]+$/)){let n=t.split(".");if(n.length!==4)throw e;let o="";try{for(let i=0;i<4;i++){let s=parseInt(n[i]);o+=`0${s.toString(16)}`.slice(-2)}return o}catch{throw e}}else if(t.match(/^[0-9.]+\/[0-9]+$/)){let n=t.split("/");return Z(n[0])+U(parseInt(n[1]),32)}else{if(t.match(/^[0-9a-f:]+$/)&&t.indexOf(":")!==-1)return B(t);if(t.match(/^[0-9a-f:]+\/[0-9]+$/)&&t.indexOf(":")!==-1){let n=t.split("/");return B(n[0])+U(parseInt(n[1]),128)}else throw e}}function C(r){let t=new Error("malformed mask"),e;try{e=parseInt(r,16).toString(2)}catch{throw t}if(!e.match(/^1*0*$/))throw t;return e.replace(/0+$/,"").length}function U(r,t){if(t===32&&r===0)return"00000000";if(t===128&&r===0)return"00000000000000000000000000000000";let e=Array(r+1).join("1")+Array(t-r+1).join("0");return parseInt(e,2).toString(16)}var At=l(()=>{"use strict"});function Bt(r){function t(o){let i=parseInt(o.substr(0,2),16),s=parseInt(o.substr(2),16);if(i===0&&s<128)return String.fromCharCode(s);if(i<8){let b=192|(i&7)<<3|(s&192)>>6,f=128|s&63;return g(b.toString(16)+f.toString(16))}let c=224|(i&240)>>4,u=128|(i&15)<<2|(s&192)>>6,x=128|s&63;return g(c.toString(16)+u.toString(16)+x.toString(16))}let e=r.match(/.{4}/g);return e==null?"":e.map(t).join("")}var St=l(()=>{"use strict";h()});function Ct(r){return r.length%2===1?`0${r}`:r}var Ut=l(()=>{"use strict"});var Et={};jt(Et,{ArrayBuffertohex:()=>mt,BAtohex:()=>T,BAtos:()=>O,VERSION:()=>Ft,aryval:()=>nt,b64nltohex:()=>pt,b64tob64u:()=>w,b64tohex:()=>a,b64topem:()=>at,b64toutf8:()=>_,b64utob64:()=>p,b64utohex:()=>q,b64utoutf8:()=>K,binstrtobitstr:()=>H,binstrtonamearray:()=>et,bitstrtobinstr:()=>tt,datetozulu:()=>wt,encodeURIComponentAll:()=>G,foldnl:()=>I,hexpad:()=>Ct,hextoArrayBuffer:()=>xt,hextoBA:()=>L,hextob64:()=>m,hextob64u:()=>J,hextoip:()=>F,hextoipv6:()=>S,hextopem:()=>ct,hextorstr:()=>Q,hextouricmp:()=>d,hextoutf8:()=>g,inttobitstr:()=>j,ipnetmask:()=>U,ipprefixlen:()=>C,iptohex:()=>Z,ipv6tohex:()=>B,isBase64:()=>M,isBase64URL:()=>it,ishex:()=>ot,iso88591hextoutf8:()=>ut,msectozulu:()=>$t,namearraytobinstr:()=>rt,pemtob64:()=>k,pemtohex:()=>gt,rstrtob64:()=>X,rstrtohex:()=>W,stoBA:()=>v,stohex:()=>$,strpad:()=>z,timetogen:()=>N,ucs2hextoutf8:()=>Bt,uricmptohex:()=>V,utf8tob64:()=>P,utf8tob64u:()=>Y,utf8tohex:()=>y,utf8toiso88591hex:()=>lt,zulutodate:()=>yt,zulutomsec:()=>A,zulutosec:()=>dt});var Ft,Tt=l(()=>{"use strict";st();D();h();ft();ht();bt();It();R();At();St();Ut();Ft="typepki-strconv 0.7.0 kjur.github.io/typepki-strconv"});module.exports=(Tt(),Mt(Et));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "typepki-strconv",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"author": "Kenji Urushima <kenji.urushima@gmail.com>",
|
|
5
5
|
"description": "TypeScript string converters and utilities sub module for TypePKI library (alpha version)",
|
|
6
6
|
"homepage": "https://kjur.github.io/typepki-strconv",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"jest": "^29.7.0",
|
|
68
68
|
"run-z": "^2.0.0",
|
|
69
69
|
"typedoc": "^0.25.13",
|
|
70
|
-
"typepki-strconv": "^0.
|
|
70
|
+
"typepki-strconv": "^0.8.0",
|
|
71
71
|
"typescript": "^5.4.5"
|
|
72
72
|
}
|
|
73
73
|
}
|
package/src/conv.mts
CHANGED
|
@@ -293,11 +293,14 @@ export interface Dictionary<Type> {
|
|
|
293
293
|
[key: string]: Type;
|
|
294
294
|
}
|
|
295
295
|
|
|
296
|
+
// ==== namearray / binstr ================================
|
|
297
|
+
|
|
296
298
|
/**
|
|
297
299
|
* convert array of names to bit string
|
|
298
300
|
* @param namearray array of name string
|
|
299
301
|
* @param namedb associative array of name and value
|
|
300
302
|
* @return binary string (ex. "110001")
|
|
303
|
+
* @see {@link binstrtonamearray}
|
|
301
304
|
*
|
|
302
305
|
* @description
|
|
303
306
|
* This function converts from an array of names to
|
|
@@ -307,7 +310,7 @@ export interface Dictionary<Type> {
|
|
|
307
310
|
* This function may be useful to implement ASN.1 BitString such as KeyUsage.
|
|
308
311
|
*
|
|
309
312
|
* @example
|
|
310
|
-
*
|
|
313
|
+
* const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
311
314
|
* namearraytobinstr(['a', 'c', 'd'], db) -> '1000000011'
|
|
312
315
|
* namearraytobinstr(['c', 'b'], db) -> '000100001'
|
|
313
316
|
*/
|
|
@@ -320,7 +323,7 @@ export interface Dictionary<Type> {
|
|
|
320
323
|
*/
|
|
321
324
|
export function namearraytobinstr(
|
|
322
325
|
namearray: Array<string>,
|
|
323
|
-
namedb:
|
|
326
|
+
namedb: Record<string, number>,
|
|
324
327
|
): string {
|
|
325
328
|
let d = 0;
|
|
326
329
|
for (let i = 0; i < namearray.length; i++) {
|
|
@@ -335,6 +338,49 @@ export function namearraytobinstr(
|
|
|
335
338
|
return r;
|
|
336
339
|
}
|
|
337
340
|
|
|
341
|
+
/**
|
|
342
|
+
* convert bit string to array of names to
|
|
343
|
+
* @param binstr - binary string (ex. "1001")
|
|
344
|
+
* @param namedb associative array of name and index
|
|
345
|
+
* @return array of names
|
|
346
|
+
* @see {@link namearraytobinstr}
|
|
347
|
+
*
|
|
348
|
+
* @description
|
|
349
|
+
* This function converts from binary string to
|
|
350
|
+
* an array of names defined in namedb.
|
|
351
|
+
*
|
|
352
|
+
* @example
|
|
353
|
+
* const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
354
|
+
* binstrtonamearray('1000000011', db) -> ['a', 'c', 'd']
|
|
355
|
+
* binstrtonamearray(''000100001', db) -> ['b', 'c']
|
|
356
|
+
*
|
|
357
|
+
* const db2: Record<string, number> = { "apple": 0, "orange": 1, "grape": 2, "mango", 3 };
|
|
358
|
+
* binstrtonamearray('0101', db2) -> ['orange', 'mango']
|
|
359
|
+
* binstrtonamearray('101', db2) -> ['apple', 'grape']
|
|
360
|
+
*/
|
|
361
|
+
export function binstrtonamearray(
|
|
362
|
+
binstr: string,
|
|
363
|
+
namedb: Record<string, number>,
|
|
364
|
+
): string[] {
|
|
365
|
+
const aKey: string[] = Object.keys(namedb);
|
|
366
|
+
//console.log("aKey=", aKey);
|
|
367
|
+
const aVal = aKey.map((k) => namedb[k]);
|
|
368
|
+
//console.log("aVal=", aVal);
|
|
369
|
+
|
|
370
|
+
const namedbrev: Record<string, string> = {};
|
|
371
|
+
Object.keys(namedb).map((k) => {
|
|
372
|
+
namedbrev[namedb[k]] = k;
|
|
373
|
+
});
|
|
374
|
+
//console.log("namedbrev=", JSON.stringify(namedbrev, null, 2));
|
|
375
|
+
|
|
376
|
+
const aResult: string[] = [];
|
|
377
|
+
binstr.split("").map((k, idx) => {
|
|
378
|
+
if (k === "1") aResult.push(namedbrev[idx.toString()]);
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
return aResult;
|
|
382
|
+
}
|
|
383
|
+
|
|
338
384
|
/**
|
|
339
385
|
* get value of array by key name list<br/>
|
|
340
386
|
* @param valIn - array of associative array
|
package/src/conv.test.mts
CHANGED
|
@@ -9,6 +9,7 @@ import {
|
|
|
9
9
|
b64utob64,
|
|
10
10
|
b64utohex,
|
|
11
11
|
binstrtobitstr,
|
|
12
|
+
binstrtonamearray,
|
|
12
13
|
hextob64,
|
|
13
14
|
hextob64u,
|
|
14
15
|
hextorstr,
|
|
@@ -67,11 +68,17 @@ test("strpad", () => {
|
|
|
67
68
|
});
|
|
68
69
|
|
|
69
70
|
test("namearraytobinstr", () => {
|
|
70
|
-
const db:
|
|
71
|
+
const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
71
72
|
expect(namearraytobinstr(["a", "c", "d"], db)).toBe("1000000011");
|
|
72
73
|
expect(namearraytobinstr(["c", "b"], db)).toBe("000100001");
|
|
73
74
|
});
|
|
74
75
|
|
|
76
|
+
test("binstrtonamearray", () => {
|
|
77
|
+
const db: Record<string, number> = { a: 0, b: 3, c: 8, d: 9, e: 17, f: 19 };
|
|
78
|
+
expect(binstrtonamearray("100100001", db)).toEqual(["a", "b", "c"]);
|
|
79
|
+
expect(binstrtonamearray("00000000000000000001", db)).toEqual(["f"]);
|
|
80
|
+
});
|
|
81
|
+
|
|
75
82
|
test("aryval", () => {
|
|
76
83
|
const p = {
|
|
77
84
|
fruit: "apple",
|
package/src/conv_uricmp.test.mts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { describe, expect, test } from "bun:test";
|
|
2
2
|
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
encodeURIComponentAll,
|
|
5
|
+
hextouricmp,
|
|
6
|
+
hextoutf8,
|
|
7
|
+
uricmptohex,
|
|
8
|
+
} from "./index.mts";
|
|
4
9
|
|
|
5
10
|
test("uricmptohex", () => {
|
|
6
11
|
expect(uricmptohex("%67%68")).toBe("6768");
|
package/src/conv_zulu.mts
CHANGED
|
@@ -206,3 +206,37 @@ export function timetogen(s: string): string {
|
|
|
206
206
|
}
|
|
207
207
|
return s;
|
|
208
208
|
}
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* convert GeneralizedTime or UTCTime string to ISO8601 time string
|
|
212
|
+
* @param s - GeneralizedTime or UTCTime string (ex. 20170412235959Z)
|
|
213
|
+
* @return ISO8601 time string (ex. 2020-07-14T13:03:42Z)
|
|
214
|
+
* @since 0.8.0
|
|
215
|
+
*
|
|
216
|
+
* @example
|
|
217
|
+
* zulutoiso8601( "071231235959Z") -> "2007-12-31T23:59:59Z"
|
|
218
|
+
* zulutoiso8601( "971231235959Z") -> "1997-12-31T23:59:59Z"
|
|
219
|
+
* zulutoiso8601("20071231235959Z") -> "2007-12-31T23:59:59Z"
|
|
220
|
+
* zulutoiso8601( "0071231235959Z") -> raise error
|
|
221
|
+
* zulutoiso8601( "aaaaaaaaaa") -> raise error
|
|
222
|
+
*/
|
|
223
|
+
export function zulutoiso8601(s: string): string {
|
|
224
|
+
const m = s.match(/^(\d{2,4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})Z$/);
|
|
225
|
+
if (!m) {
|
|
226
|
+
throw new Error(
|
|
227
|
+
"Invalid format: expected YYYYMMDDHHmmssZ or YYYYMMDDHHmmssZ",
|
|
228
|
+
);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const [, y, mm, dd, hh, min, ss] = m;
|
|
232
|
+
let y2: string = y;
|
|
233
|
+
if (y2.length === 2) {
|
|
234
|
+
if (parseInt(y2.slice(0, 1)) < 5) {
|
|
235
|
+
y2 = `20${y2}`;
|
|
236
|
+
} else {
|
|
237
|
+
y2 = `19${y2}`;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
return `${y2}-${mm}-${dd}T${hh}:${min}:${ss}Z`;
|
|
242
|
+
}
|
package/src/conv_zulu.test.mts
CHANGED
|
@@ -4,6 +4,7 @@ import {
|
|
|
4
4
|
datetozulu,
|
|
5
5
|
msectozulu,
|
|
6
6
|
zulutodate,
|
|
7
|
+
zulutoiso8601,
|
|
7
8
|
zulutomsec,
|
|
8
9
|
zulutosec,
|
|
9
10
|
} from "./index.mts";
|
|
@@ -47,3 +48,17 @@ test("datetozulu", () => {
|
|
|
47
48
|
expect(datetozulu(d, true)).toBe("170520235959Z");
|
|
48
49
|
expect(datetozulu(d, false, true)).toBe("20170520235959.67Z");
|
|
49
50
|
});
|
|
51
|
+
|
|
52
|
+
test("zulutoiso8601", () => {
|
|
53
|
+
expect(zulutoiso8601("071231235959Z")).toBe("2007-12-31T23:59:59Z");
|
|
54
|
+
expect(zulutoiso8601("471231235959Z")).toBe("2047-12-31T23:59:59Z");
|
|
55
|
+
expect(zulutoiso8601("501231235959Z")).toBe("1950-12-31T23:59:59Z");
|
|
56
|
+
expect(zulutoiso8601("971231235959Z")).toBe("1997-12-31T23:59:59Z");
|
|
57
|
+
expect(zulutoiso8601("20071231235959Z")).toBe("2007-12-31T23:59:59Z");
|
|
58
|
+
expect(() => {
|
|
59
|
+
zulutoiso8601(" 0071231235959Z");
|
|
60
|
+
}).toThrow(/Invalid format/);
|
|
61
|
+
expect(() => {
|
|
62
|
+
zulutoiso8601("aaaaaaa");
|
|
63
|
+
}).toThrow(/Invalid format/);
|
|
64
|
+
});
|
package/src/hexutil.mts
CHANGED
package/src/index.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const VERSION: string = "typepki-strconv 0.
|
|
1
|
+
const VERSION: string = "typepki-strconv 0.8.0 kjur.github.io/typepki-strconv";
|
|
2
2
|
export { VERSION };
|
|
3
3
|
|
|
4
4
|
import { isBase64, isBase64URL, ishex } from "./checker.mts";
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
b64utohex,
|
|
18
18
|
b64utoutf8,
|
|
19
19
|
binstrtobitstr,
|
|
20
|
+
binstrtonamearray,
|
|
20
21
|
bitstrtobinstr,
|
|
21
22
|
hextob64,
|
|
22
23
|
hextob64u,
|
|
@@ -47,6 +48,7 @@ export {
|
|
|
47
48
|
hextorstr,
|
|
48
49
|
rstrtohex,
|
|
49
50
|
binstrtobitstr,
|
|
51
|
+
binstrtonamearray,
|
|
50
52
|
bitstrtobinstr,
|
|
51
53
|
inttobitstr,
|
|
52
54
|
strpad,
|
|
@@ -77,10 +79,19 @@ import {
|
|
|
77
79
|
msectozulu,
|
|
78
80
|
timetogen,
|
|
79
81
|
zulutodate,
|
|
82
|
+
zulutoiso8601,
|
|
80
83
|
zulutomsec,
|
|
81
84
|
zulutosec,
|
|
82
85
|
} from "./conv_zulu.mts";
|
|
83
|
-
export {
|
|
86
|
+
export {
|
|
87
|
+
zulutomsec,
|
|
88
|
+
msectozulu,
|
|
89
|
+
zulutosec,
|
|
90
|
+
zulutodate,
|
|
91
|
+
datetozulu,
|
|
92
|
+
timetogen,
|
|
93
|
+
zulutoiso8601,
|
|
94
|
+
};
|
|
84
95
|
|
|
85
96
|
import {
|
|
86
97
|
encodeURIComponentAll,
|
package/src/hexutil.test.mts~
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import { hexpad } from "./index.mts";
|