asn1-ts 9.0.3 → 11.0.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.
Files changed (115) hide show
  1. package/README.md +2 -0
  2. package/dist/classes/ABSTRACT-SYNTAX.d.mts +1 -1
  3. package/dist/classes/TYPE-IDENTIFIER.d.mts +1 -1
  4. package/dist/classes/index.d.mts +2 -2
  5. package/dist/codecs/ber/decoders/decodeBitString.d.mts +1 -1
  6. package/dist/codecs/ber/decoders/decodeBoolean.d.mts +1 -1
  7. package/dist/codecs/ber/decoders/decodeDuration.d.mts +1 -1
  8. package/dist/codecs/ber/decoders/decodeDuration.mjs +2 -2
  9. package/dist/codecs/ber/decoders/decodeGeneralizedTime.d.mts +1 -1
  10. package/dist/codecs/ber/decoders/decodeGeneralizedTime.mjs +10 -4
  11. package/dist/codecs/ber/decoders/decodeReal.d.mts +1 -1
  12. package/dist/codecs/ber/decoders/decodeSequence.d.mts +1 -1
  13. package/dist/codecs/ber/decoders/decodeUTCTime.d.mts +1 -1
  14. package/dist/codecs/ber/encoders/encodeGeneralString.d.mts +1 -1
  15. package/dist/codecs/ber/encoders/encodeGeneralString.mjs +0 -8
  16. package/dist/codecs/ber/encoders/encodeGraphicString.d.mts +1 -1
  17. package/dist/codecs/ber/encoders/encodeGraphicString.mjs +0 -8
  18. package/dist/codecs/ber/encoders/encodeNumericString.d.mts +1 -1
  19. package/dist/codecs/ber/encoders/encodeNumericString.mjs +0 -8
  20. package/dist/codecs/ber/encoders/encodeObjectDescriptor.d.mts +1 -1
  21. package/dist/codecs/ber/encoders/encodeObjectDescriptor.mjs +0 -8
  22. package/dist/codecs/ber/encoders/encodePrintableString.d.mts +1 -1
  23. package/dist/codecs/ber/encoders/encodePrintableString.mjs +0 -9
  24. package/dist/codecs/ber/encoders/encodeVisibleString.d.mts +1 -1
  25. package/dist/codecs/ber/encoders/encodeVisibleString.mjs +0 -8
  26. package/dist/codecs/ber.d.mts +1 -1
  27. package/dist/codecs/ber.mjs +2 -1
  28. package/dist/codecs/cer/decoders/decodeSequence.d.mts +1 -1
  29. package/dist/codecs/cer.d.mts +1 -1
  30. package/dist/codecs/cer.mjs +2 -1
  31. package/dist/codecs/coer/decoders/decodeBoolean.d.mts +1 -1
  32. package/dist/codecs/der/decoders/decodeBitString.d.mts +1 -1
  33. package/dist/codecs/der/decoders/decodeBoolean.d.mts +1 -1
  34. package/dist/codecs/der/decoders/decodeDuration.d.mts +1 -1
  35. package/dist/codecs/der/decoders/decodeDuration.mjs +2 -2
  36. package/dist/codecs/der/decoders/decodeGeneralizedTime.d.mts +1 -1
  37. package/dist/codecs/der/decoders/decodeReal.d.mts +1 -1
  38. package/dist/codecs/der/decoders/decodeSequence.d.mts +1 -1
  39. package/dist/codecs/der/decoders/decodeUTCTime.d.mts +1 -1
  40. package/dist/codecs/der.d.mts +1 -1
  41. package/dist/codecs/der.mjs +1 -0
  42. package/dist/codecs/x690/decoders/decodeDate.d.mts +1 -1
  43. package/dist/codecs/x690/decoders/decodeDateTime.d.mts +1 -1
  44. package/dist/codecs/x690/decoders/decodeEmbeddedPDV.d.mts +1 -1
  45. package/dist/codecs/x690/decoders/decodeExternal.d.mts +1 -1
  46. package/dist/codecs/x690/decoders/decodeExternal.mjs +1 -0
  47. package/dist/codecs/x690/decoders/decodeGeneralString.d.mts +1 -1
  48. package/dist/codecs/x690/decoders/decodeGraphicString.d.mts +1 -1
  49. package/dist/codecs/x690/decoders/decodeInteger.d.mts +1 -1
  50. package/dist/codecs/x690/decoders/decodeNumericString.d.mts +1 -1
  51. package/dist/codecs/x690/decoders/decodeOIDIRI.d.mts +1 -1
  52. package/dist/codecs/x690/decoders/decodeObjectDescriptor.d.mts +1 -1
  53. package/dist/codecs/x690/decoders/decodeObjectIdentifier.d.mts +1 -1
  54. package/dist/codecs/x690/decoders/decodeObjectIdentifier.mjs +1 -43
  55. package/dist/codecs/x690/decoders/decodePrintableString.d.mts +1 -1
  56. package/dist/codecs/x690/decoders/decodeRelativeOIDIRI.d.mts +1 -1
  57. package/dist/codecs/x690/decoders/decodeRelativeObjectIdentifier.d.mts +1 -1
  58. package/dist/codecs/x690/decoders/decodeTime.d.mts +1 -1
  59. package/dist/codecs/x690/decoders/decodeTimeOfDay.d.mts +1 -1
  60. package/dist/codecs/x690/decoders/decodeVisibleString.d.mts +1 -1
  61. package/dist/codecs/x690/encoders/encodeBitString.d.mts +1 -1
  62. package/dist/codecs/x690/encoders/encodeBoolean.d.mts +1 -1
  63. package/dist/codecs/x690/encoders/encodeCharacterString.mjs +1 -0
  64. package/dist/codecs/x690/encoders/encodeDate.d.mts +1 -1
  65. package/dist/codecs/x690/encoders/encodeDateTime.d.mts +1 -1
  66. package/dist/codecs/x690/encoders/encodeDuration.d.mts +1 -1
  67. package/dist/codecs/x690/encoders/encodeEmbeddedPDV.d.mts +1 -1
  68. package/dist/codecs/x690/encoders/encodeExternal.d.mts +1 -1
  69. package/dist/codecs/x690/encoders/encodeGeneralizedTime.d.mts +1 -1
  70. package/dist/codecs/x690/encoders/encodeInteger.d.mts +1 -1
  71. package/dist/codecs/x690/encoders/encodeOIDIRI.d.mts +1 -1
  72. package/dist/codecs/x690/encoders/encodeObjectIdentifier.d.mts +1 -1
  73. package/dist/codecs/x690/encoders/encodeObjectIdentifier.mjs +1 -26
  74. package/dist/codecs/x690/encoders/encodeReal.d.mts +1 -1
  75. package/dist/codecs/x690/encoders/encodeRelativeOIDIRI.d.mts +1 -1
  76. package/dist/codecs/x690/encoders/encodeRelativeObjectIdentifier.d.mts +1 -1
  77. package/dist/codecs/x690/encoders/encodeSequence.d.mts +1 -1
  78. package/dist/codecs/x690/encoders/encodeSequence.mjs +1 -0
  79. package/dist/codecs/x690/encoders/encodeTime.d.mts +1 -1
  80. package/dist/codecs/x690/encoders/encodeTimeOfDay.d.mts +1 -1
  81. package/dist/codecs/x690/encoders/encodeUTCTime.d.mts +1 -1
  82. package/dist/functional.d.mts +40 -42
  83. package/dist/functional.mjs +159 -136
  84. package/dist/index.d.mts +0 -2
  85. package/dist/index.mjs +0 -1
  86. package/dist/interfaces/index.d.mts +12 -12
  87. package/dist/types/External.d.mts +1 -1
  88. package/dist/types/ObjectIdentifier.d.mts +4 -4
  89. package/dist/types/ObjectIdentifier.mjs +67 -36
  90. package/dist/types/TypeIdentifier.mjs +1 -0
  91. package/dist/types/time/DATE-ENCODING.d.mts +1 -1
  92. package/dist/types/time/DURATION-EQUIVALENT.d.mts +1 -1
  93. package/dist/types/time/DURATION-INTERVAL-ENCODING.d.mts +1 -1
  94. package/dist/types/time/HOURS-DIFF-ENCODING.d.mts +1 -1
  95. package/dist/types/time/HOURS-ENCODING.d.mts +1 -1
  96. package/dist/types/time/HOURS-MINUTES-DIFF-ENCODING.d.mts +1 -1
  97. package/dist/types/time/HOURS-MINUTES-ENCODING.d.mts +1 -1
  98. package/dist/types/time/TIME-OF-DAY-DIFF-ENCODING.d.mts +1 -1
  99. package/dist/types/time/TIME-OF-DAY-ENCODING.d.mts +1 -1
  100. package/dist/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.d.mts +1 -1
  101. package/dist/types/time/TIME-OF-DAY-FRACTION-ENCODING.d.mts +1 -1
  102. package/dist/types/time/YEAR-ENCODING.d.mts +1 -1
  103. package/dist/types/time/YEAR-MONTH-ENCODING.d.mts +1 -1
  104. package/dist/utils/isInCanonicalOrder.mjs +1 -1
  105. package/dist/utils/packBits.d.mts +1 -1
  106. package/dist/utils/unpackBits.d.mts +1 -1
  107. package/dist/validators/datetimeComponentValidator.d.mts +1 -1
  108. package/dist/validators/isObjectDescriptorCharacter.d.mts +3 -1
  109. package/dist/validators/isObjectDescriptorCharacter.mjs +2 -3
  110. package/dist/validators/isVisibleCharacter.d.mts +3 -1
  111. package/dist/validators/isVisibleCharacter.mjs +2 -3
  112. package/dist/values.d.mts +1 -0
  113. package/dist/values.mjs +2 -1
  114. package/dist/x690.mjs +0 -3
  115. package/package.json +1 -1
@@ -1,4 +1,4 @@
1
- import { ASN1Element, BERElement, CERElement, DERElement, ASN1TagClass, ASN1Construction, ASN1UniversalType, ASN1ConstructionError, } from "./index.mjs";
1
+ import { ASN1Element, BERElement, CERElement, DERElement, ASN1TagClass, ASN1Construction, ASN1UniversalType, ASN1ConstructionError, CharacterString, } from "./index.mjs";
2
2
  export function hasTag(tagClass, tagNumber) {
3
3
  return function (index, elements) {
4
4
  const el = elements[index];
@@ -124,6 +124,9 @@ export const _encodeBitString = (value, elGetter) => {
124
124
  el.tagNumber = ASN1UniversalType.bitString;
125
125
  return el;
126
126
  };
127
+ export const _decodeBitString = (el) => {
128
+ return el.bitString;
129
+ };
127
130
  export const _encodeBoolean = (value, elGetter) => {
128
131
  const el = elGetter(value, elGetter);
129
132
  el.boolean = value;
@@ -131,6 +134,9 @@ export const _encodeBoolean = (value, elGetter) => {
131
134
  el.tagNumber = ASN1UniversalType.boolean;
132
135
  return el;
133
136
  };
137
+ export const _decodeBoolean = (el) => {
138
+ return el.boolean;
139
+ };
134
140
  export const _encodeUnrestrictedCharacterString = (value, elGetter) => {
135
141
  const el = elGetter(value, elGetter);
136
142
  el.characterString = value;
@@ -138,6 +144,9 @@ export const _encodeUnrestrictedCharacterString = (value, elGetter) => {
138
144
  el.tagNumber = ASN1UniversalType.characterString;
139
145
  return el;
140
146
  };
147
+ export const _decodeUnrestrictedCharacterString = (el) => {
148
+ return el.characterString;
149
+ };
141
150
  export const _encodeDate = (value, elGetter) => {
142
151
  const el = elGetter(value, elGetter);
143
152
  el.date = value;
@@ -145,6 +154,9 @@ export const _encodeDate = (value, elGetter) => {
145
154
  el.tagNumber = ASN1UniversalType.date;
146
155
  return el;
147
156
  };
157
+ export const _decodeDate = (el) => {
158
+ return el.date;
159
+ };
148
160
  export const _encodeDateTime = (value, elGetter) => {
149
161
  const el = elGetter(value, elGetter);
150
162
  el.dateTime = value;
@@ -152,6 +164,9 @@ export const _encodeDateTime = (value, elGetter) => {
152
164
  el.tagNumber = ASN1UniversalType.dateTime;
153
165
  return el;
154
166
  };
167
+ export const _decodeDateTime = (el) => {
168
+ return el.dateTime;
169
+ };
155
170
  export const _encodeDuration = (value, elGetter) => {
156
171
  const el = elGetter(value, elGetter);
157
172
  el.duration = value;
@@ -159,6 +174,9 @@ export const _encodeDuration = (value, elGetter) => {
159
174
  el.tagNumber = ASN1UniversalType.duration;
160
175
  return el;
161
176
  };
177
+ export const _decodeDuration = (el) => {
178
+ return el.duration;
179
+ };
162
180
  export const _encodeEmbeddedPDV = (value, elGetter) => {
163
181
  const el = elGetter(value, elGetter);
164
182
  el.embeddedPDV = value;
@@ -166,6 +184,9 @@ export const _encodeEmbeddedPDV = (value, elGetter) => {
166
184
  el.tagNumber = ASN1UniversalType.embeddedPDV;
167
185
  return el;
168
186
  };
187
+ export const _decodeEmbeddedPDV = (el) => {
188
+ return el.embeddedPDV;
189
+ };
169
190
  export const _encodeEnumerated = (value, elGetter) => {
170
191
  const el = elGetter(value, elGetter);
171
192
  el.enumerated = value;
@@ -173,6 +194,9 @@ export const _encodeEnumerated = (value, elGetter) => {
173
194
  el.tagNumber = ASN1UniversalType.enumerated;
174
195
  return el;
175
196
  };
197
+ export const _decodeEnumerated = (el) => {
198
+ return el.enumerated;
199
+ };
176
200
  export const _encodeExternal = (value, elGetter) => {
177
201
  const el = elGetter(value, elGetter);
178
202
  el.external = value;
@@ -180,6 +204,9 @@ export const _encodeExternal = (value, elGetter) => {
180
204
  el.tagNumber = ASN1UniversalType.external;
181
205
  return el;
182
206
  };
207
+ export const _decodeExternal = (el) => {
208
+ return el.external;
209
+ };
183
210
  export const _encodeInstanceOf = (value, elGetter) => {
184
211
  const el = elGetter(value, elGetter);
185
212
  el.external = value;
@@ -187,6 +214,9 @@ export const _encodeInstanceOf = (value, elGetter) => {
187
214
  el.tagNumber = ASN1UniversalType.external;
188
215
  return el;
189
216
  };
217
+ export const _decodeInstanceOf = (el) => {
218
+ return el.external;
219
+ };
190
220
  export const _encodeInteger = (value, elGetter) => {
191
221
  const el = elGetter(value, elGetter);
192
222
  el.integer = value;
@@ -194,6 +224,9 @@ export const _encodeInteger = (value, elGetter) => {
194
224
  el.tagNumber = ASN1UniversalType.integer;
195
225
  return el;
196
226
  };
227
+ export const _decodeInteger = (el) => {
228
+ return el.integer;
229
+ };
197
230
  export const _encodeIRI = (value, elGetter) => {
198
231
  const el = elGetter(value, elGetter);
199
232
  el.oidIRI = value;
@@ -201,6 +234,9 @@ export const _encodeIRI = (value, elGetter) => {
201
234
  el.tagNumber = ASN1UniversalType.oidIRI;
202
235
  return el;
203
236
  };
237
+ export const _decodeIRI = (el) => {
238
+ return el.oidIRI;
239
+ };
204
240
  export const _encodeNull = (value, elGetter) => {
205
241
  const el = elGetter(value, elGetter);
206
242
  el.value = new Uint8Array(0);
@@ -208,6 +244,9 @@ export const _encodeNull = (value, elGetter) => {
208
244
  el.tagNumber = ASN1UniversalType.nill;
209
245
  return el;
210
246
  };
247
+ export const _decodeNull = () => {
248
+ return null;
249
+ };
211
250
  export const _encodeObjectIdentifier = (value, elGetter) => {
212
251
  const el = elGetter(value, elGetter);
213
252
  el.objectIdentifier = value;
@@ -215,6 +254,9 @@ export const _encodeObjectIdentifier = (value, elGetter) => {
215
254
  el.tagNumber = ASN1UniversalType.objectIdentifier;
216
255
  return el;
217
256
  };
257
+ export const _decodeObjectIdentifier = (el) => {
258
+ return el.objectIdentifier;
259
+ };
218
260
  export const _encodeOctetString = (value, elGetter) => {
219
261
  const el = elGetter(value, elGetter);
220
262
  el.octetString = value;
@@ -222,6 +264,9 @@ export const _encodeOctetString = (value, elGetter) => {
222
264
  el.tagNumber = ASN1UniversalType.octetString;
223
265
  return el;
224
266
  };
267
+ export const _decodeOctetString = (el) => {
268
+ return el.octetString;
269
+ };
225
270
  export const _encodeReal = (value, elGetter) => {
226
271
  const el = elGetter(value, elGetter);
227
272
  el.real = value;
@@ -229,6 +274,9 @@ export const _encodeReal = (value, elGetter) => {
229
274
  el.tagNumber = ASN1UniversalType.realNumber;
230
275
  return el;
231
276
  };
277
+ export const _decodeReal = (el) => {
278
+ return el.real;
279
+ };
232
280
  export const _encodeRelativeIRI = (value, elGetter) => {
233
281
  const el = elGetter(value, elGetter);
234
282
  el.relativeOIDIRI = value;
@@ -236,6 +284,9 @@ export const _encodeRelativeIRI = (value, elGetter) => {
236
284
  el.tagNumber = ASN1UniversalType.roidIRI;
237
285
  return el;
238
286
  };
287
+ export const _decodeRelativeIRI = (el) => {
288
+ return el.relativeOIDIRI;
289
+ };
239
290
  export const _encodeRelativeOID = (value, elGetter) => {
240
291
  const el = elGetter(value, elGetter);
241
292
  el.relativeObjectIdentifier = value;
@@ -243,6 +294,9 @@ export const _encodeRelativeOID = (value, elGetter) => {
243
294
  el.tagNumber = ASN1UniversalType.relativeOID;
244
295
  return el;
245
296
  };
297
+ export const _decodeRelativeOID = (el) => {
298
+ return el.relativeObjectIdentifier;
299
+ };
246
300
  export const _encodeSequence = (value, elGetter) => {
247
301
  const el = elGetter(value, elGetter);
248
302
  el.sequence = value;
@@ -250,6 +304,9 @@ export const _encodeSequence = (value, elGetter) => {
250
304
  el.tagNumber = ASN1UniversalType.sequence;
251
305
  return el;
252
306
  };
307
+ export const _decodeSequence = (el) => {
308
+ return el.sequence;
309
+ };
253
310
  export const _encodeSet = (value, elGetter) => {
254
311
  const el = elGetter(value, elGetter);
255
312
  el.set = value;
@@ -257,6 +314,9 @@ export const _encodeSet = (value, elGetter) => {
257
314
  el.tagNumber = ASN1UniversalType.set;
258
315
  return el;
259
316
  };
317
+ export const _decodeSet = (el) => {
318
+ return el.set;
319
+ };
260
320
  export const _encodeTime = (value, elGetter) => {
261
321
  const el = elGetter(value, elGetter);
262
322
  el.time = value;
@@ -264,6 +324,9 @@ export const _encodeTime = (value, elGetter) => {
264
324
  el.tagNumber = ASN1UniversalType.time;
265
325
  return el;
266
326
  };
327
+ export const _decodeTime = (el) => {
328
+ return el.time;
329
+ };
267
330
  export const _encodeTimeOfDay = (value, elGetter) => {
268
331
  const el = elGetter(value, elGetter);
269
332
  el.timeOfDay = value;
@@ -271,6 +334,9 @@ export const _encodeTimeOfDay = (value, elGetter) => {
271
334
  el.tagNumber = ASN1UniversalType.timeOfDay;
272
335
  return el;
273
336
  };
337
+ export const _decodeTimeOfDay = (el) => {
338
+ return el.timeOfDay;
339
+ };
274
340
  export const _encodeBMPString = (value, elGetter) => {
275
341
  const el = elGetter(value, elGetter);
276
342
  el.bmpString = value;
@@ -278,6 +344,9 @@ export const _encodeBMPString = (value, elGetter) => {
278
344
  el.tagNumber = ASN1UniversalType.bmpString;
279
345
  return el;
280
346
  };
347
+ export const _decodeBMPString = (el) => {
348
+ return el.bmpString;
349
+ };
281
350
  export const _encodeGeneralString = (value, elGetter) => {
282
351
  const el = elGetter(value, elGetter);
283
352
  el.generalString = value;
@@ -285,6 +354,9 @@ export const _encodeGeneralString = (value, elGetter) => {
285
354
  el.tagNumber = ASN1UniversalType.generalString;
286
355
  return el;
287
356
  };
357
+ export const _decodeGeneralString = (el) => {
358
+ return el.generalString;
359
+ };
288
360
  export const _encodeGraphicString = (value, elGetter) => {
289
361
  const el = elGetter(value, elGetter);
290
362
  el.graphicString = value;
@@ -292,6 +364,9 @@ export const _encodeGraphicString = (value, elGetter) => {
292
364
  el.tagNumber = ASN1UniversalType.graphicString;
293
365
  return el;
294
366
  };
367
+ export const _decodeGraphicString = (el) => {
368
+ return el.graphicString;
369
+ };
295
370
  export const _encodeIA5String = (value, elGetter) => {
296
371
  const el = elGetter(value, elGetter);
297
372
  el.ia5String = value;
@@ -299,6 +374,9 @@ export const _encodeIA5String = (value, elGetter) => {
299
374
  el.tagNumber = ASN1UniversalType.ia5String;
300
375
  return el;
301
376
  };
377
+ export const _decodeIA5String = (el) => {
378
+ return el.ia5String;
379
+ };
302
380
  export const _encodeISO646String = (value, elGetter) => {
303
381
  const el = elGetter(value, elGetter);
304
382
  el.ia5String = value;
@@ -306,6 +384,9 @@ export const _encodeISO646String = (value, elGetter) => {
306
384
  el.tagNumber = ASN1UniversalType.ia5String;
307
385
  return el;
308
386
  };
387
+ export const _decodeISO646String = (el) => {
388
+ return el.ia5String;
389
+ };
309
390
  export const _encodeNumericString = (value, elGetter) => {
310
391
  const el = elGetter(value, elGetter);
311
392
  el.numericString = value;
@@ -313,6 +394,9 @@ export const _encodeNumericString = (value, elGetter) => {
313
394
  el.tagNumber = ASN1UniversalType.numericString;
314
395
  return el;
315
396
  };
397
+ export const _decodeNumericString = (el) => {
398
+ return el.numericString;
399
+ };
316
400
  export const _encodePrintableString = (value, elGetter) => {
317
401
  const el = elGetter(value, elGetter);
318
402
  el.printableString = value;
@@ -320,6 +404,9 @@ export const _encodePrintableString = (value, elGetter) => {
320
404
  el.tagNumber = ASN1UniversalType.printableString;
321
405
  return el;
322
406
  };
407
+ export const _decodePrintableString = (el) => {
408
+ return el.printableString;
409
+ };
323
410
  export const _encodeTeletexString = (value, elGetter) => {
324
411
  const el = elGetter(value, elGetter);
325
412
  el.teletexString = value;
@@ -327,6 +414,9 @@ export const _encodeTeletexString = (value, elGetter) => {
327
414
  el.tagNumber = ASN1UniversalType.teletexString;
328
415
  return el;
329
416
  };
417
+ export const _decodeTeletexString = (el) => {
418
+ return el.teletexString;
419
+ };
330
420
  export const _encodeT61String = (value, elGetter) => {
331
421
  const el = elGetter(value, elGetter);
332
422
  el.teletexString = value;
@@ -334,6 +424,9 @@ export const _encodeT61String = (value, elGetter) => {
334
424
  el.tagNumber = ASN1UniversalType.teletexString;
335
425
  return el;
336
426
  };
427
+ export const _decodeT61String = (el) => {
428
+ return el.teletexString;
429
+ };
337
430
  export const _encodeUniversalString = (value, elGetter) => {
338
431
  const el = elGetter(value, elGetter);
339
432
  el.universalString = value;
@@ -341,6 +434,9 @@ export const _encodeUniversalString = (value, elGetter) => {
341
434
  el.tagNumber = ASN1UniversalType.universalString;
342
435
  return el;
343
436
  };
437
+ export const _decodeUniversalString = (el) => {
438
+ return el.universalString;
439
+ };
344
440
  export const _encodeUTF8String = (value, elGetter) => {
345
441
  const el = elGetter(value, elGetter);
346
442
  el.utf8String = value;
@@ -348,6 +444,9 @@ export const _encodeUTF8String = (value, elGetter) => {
348
444
  el.tagNumber = ASN1UniversalType.utf8String;
349
445
  return el;
350
446
  };
447
+ export const _decodeUTF8String = (el) => {
448
+ return el.utf8String;
449
+ };
351
450
  export const _encodeVideotexString = (value, elGetter) => {
352
451
  const el = elGetter(value, elGetter);
353
452
  el.videotexString = value;
@@ -355,6 +454,9 @@ export const _encodeVideotexString = (value, elGetter) => {
355
454
  el.tagNumber = ASN1UniversalType.videotexString;
356
455
  return el;
357
456
  };
457
+ export const _decodeVideotexString = (el) => {
458
+ return el.videotexString;
459
+ };
358
460
  export const _encodeVisibleString = (value, elGetter) => {
359
461
  const el = elGetter(value, elGetter);
360
462
  el.visibleString = value;
@@ -362,6 +464,9 @@ export const _encodeVisibleString = (value, elGetter) => {
362
464
  el.tagNumber = ASN1UniversalType.visibleString;
363
465
  return el;
364
466
  };
467
+ export const _decodeVisibleString = (el) => {
468
+ return el.visibleString;
469
+ };
365
470
  export const _encodeGeneralizedTime = (value, elGetter) => {
366
471
  const el = elGetter(value, elGetter);
367
472
  el.generalizedTime = value;
@@ -369,6 +474,9 @@ export const _encodeGeneralizedTime = (value, elGetter) => {
369
474
  el.tagNumber = ASN1UniversalType.generalizedTime;
370
475
  return el;
371
476
  };
477
+ export const _decodeGeneralizedTime = (el) => {
478
+ return el.generalizedTime;
479
+ };
372
480
  export const _encodeUTCTime = (value, elGetter) => {
373
481
  const el = elGetter(value, elGetter);
374
482
  el.utcTime = value;
@@ -376,6 +484,9 @@ export const _encodeUTCTime = (value, elGetter) => {
376
484
  el.tagNumber = ASN1UniversalType.utcTime;
377
485
  return el;
378
486
  };
487
+ export const _decodeUTCTime = (el) => {
488
+ return el.utcTime;
489
+ };
379
490
  export const _encodeObjectDescriptor = (value, elGetter) => {
380
491
  const el = elGetter(value, elGetter);
381
492
  el.objectDescriptor = value;
@@ -383,123 +494,12 @@ export const _encodeObjectDescriptor = (value, elGetter) => {
383
494
  el.tagNumber = ASN1UniversalType.objectDescriptor;
384
495
  return el;
385
496
  };
386
- export const _encodeAny = (value) => {
387
- return value;
388
- };
389
- export const _decodeBitString = (el) => {
390
- return el.bitString;
391
- };
392
- export const _decodeBoolean = (el) => {
393
- return el.boolean;
394
- };
395
- export const _decodeUnrestrictedCharacterString = (el) => {
396
- return el.characterString;
397
- };
398
- export const _decodeDate = (el) => {
399
- return el.date;
400
- };
401
- export const _decodeDateTime = (el) => {
402
- return el.dateTime;
403
- };
404
- export const _decodeDuration = (el) => {
405
- return el.duration;
406
- };
407
- export const _decodeEmbeddedPDV = (el) => {
408
- return el.embeddedPDV;
409
- };
410
- export const _decodeEnumerated = (el) => {
411
- return el.enumerated;
412
- };
413
- export const _decodeExternal = (el) => {
414
- return el.external;
415
- };
416
- export const _decodeInstanceOf = (el) => {
417
- return el.external;
418
- };
419
- export const _decodeInteger = (el) => {
420
- return el.integer;
421
- };
422
- export const _decodeIRI = (el) => {
423
- return el.oidIRI;
424
- };
425
- export const _decodeNull = () => {
426
- return null;
427
- };
428
- export const _decodeObjectIdentifier = (el) => {
429
- return el.objectIdentifier;
430
- };
431
- export const _decodeOctetString = (el) => {
432
- return el.octetString;
433
- };
434
- export const _decodeReal = (el) => {
435
- return el.real;
436
- };
437
- export const _decodeRelativeIRI = (el) => {
438
- return el.relativeOIDIRI;
439
- };
440
- export const _decodeRelativeOID = (el) => {
441
- return el.relativeObjectIdentifier;
442
- };
443
- export const _decodeSequence = (el) => {
444
- return el.sequence;
445
- };
446
- export const _decodeSet = (el) => {
447
- return el.set;
448
- };
449
- export const _decodeTime = (el) => {
450
- return el.time;
451
- };
452
- export const _decodeTimeOfDay = (el) => {
453
- return el.timeOfDay;
454
- };
455
- export const _decodeBMPString = (el) => {
456
- return el.bmpString;
457
- };
458
- export const _decodeGeneralString = (el) => {
459
- return el.generalString;
460
- };
461
- export const _decodeGraphicString = (el) => {
462
- return el.graphicString;
463
- };
464
- export const _decodeIA5String = (el) => {
465
- return el.ia5String;
466
- };
467
- export const _decodeISO646String = (el) => {
468
- return el.ia5String;
469
- };
470
- export const _decodeNumericString = (el) => {
471
- return el.numericString;
472
- };
473
- export const _decodePrintableString = (el) => {
474
- return el.printableString;
475
- };
476
- export const _decodeTeletexString = (el) => {
477
- return el.teletexString;
478
- };
479
- export const _decodeT61String = (el) => {
480
- return el.teletexString;
481
- };
482
- export const _decodeUniversalString = (el) => {
483
- return el.universalString;
484
- };
485
- export const _decodeUTF8String = (el) => {
486
- return el.utf8String;
487
- };
488
- export const _decodeVideotexString = (el) => {
489
- return el.videotexString;
490
- };
491
- export const _decodeVisibleString = (el) => {
492
- return el.visibleString;
493
- };
494
- export const _decodeGeneralizedTime = (el) => {
495
- return el.generalizedTime;
496
- };
497
- export const _decodeUTCTime = (el) => {
498
- return el.utcTime;
499
- };
500
497
  export const _decodeObjectDescriptor = (el) => {
501
498
  return el.objectDescriptor;
502
499
  };
500
+ export const _encodeAny = (value) => {
501
+ return value;
502
+ };
503
503
  export const _decodeAny = (el) => {
504
504
  return el;
505
505
  };
@@ -564,7 +564,7 @@ export function _parse_set(set, decodingCallbacks, rootComponentTypeList1, exten
564
564
  const missingRequiredComponents = rootComponents
565
565
  .filter((c) => (!c.optional && !encounteredComponents.has(c.name)))
566
566
  .map((c) => c.name);
567
- Array.from(encounteredExtensionGroups).forEach((exg) => {
567
+ for (const exg of encounteredExtensionGroups.values()) {
568
568
  for (const c of extensionAdditionsList) {
569
569
  if (!((c.groupIndex === exg)
570
570
  && !c.optional
@@ -573,12 +573,12 @@ export function _parse_set(set, decodingCallbacks, rootComponentTypeList1, exten
573
573
  }
574
574
  missingRequiredComponents.push(c.name);
575
575
  }
576
- });
576
+ }
577
577
  if (missingRequiredComponents.length > 0) {
578
578
  throw new Error(`SET '${set.name}' missing these required components: ${missingRequiredComponents.join(", ")}.`);
579
579
  }
580
580
  }
581
- export function _parse_component_type_list(componentTypeList, decodingCallbacks, elements, isExtensionAdditionsList) {
581
+ function _parse_component_type_list(componentTypeList, decodingCallbacks, elements, isExtensionAdditionsList) {
582
582
  let e = 0;
583
583
  let s = 0;
584
584
  let currentGroup = undefined;
@@ -629,7 +629,7 @@ export function _get_possible_initial_components(componentTypeList) {
629
629
  }
630
630
  return componentTypeList.slice(0, i);
631
631
  }
632
- export function _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
632
+ function _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
633
633
  const elements = seq.sequence;
634
634
  const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
635
635
  const possibleInitialRCTL2Components = _get_possible_initial_components(rootComponentTypeList2);
@@ -647,22 +647,22 @@ export function _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootC
647
647
  const startOfRCTL2 = (startOfExtensions + numberOfExtensionElements);
648
648
  const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions, startOfRCTL2), true);
649
649
  const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
650
- elements
651
- .slice(endOfRecognizedExtensions, startOfRCTL2)
652
- .forEach((x) => unrecognizedExtensionHandler(x));
650
+ for (let i = endOfRecognizedExtensions; i < startOfRCTL2; i++) {
651
+ unrecognizedExtensionHandler(elements[i]);
652
+ }
653
653
  const numberOfRCTL2ElementsRead = _parse_component_type_list(rootComponentTypeList2, decodingCallbacks, elements.slice(startOfRCTL2), false);
654
654
  if (startOfRCTL2 + numberOfRCTL2ElementsRead !== elements.length) {
655
655
  throw new Error(`SEQUENCE '${seq.name}' had excess elements at the end.`);
656
656
  }
657
657
  }
658
- export function _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler = () => { }) {
658
+ function _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler = () => { }) {
659
659
  const elements = seq.sequence;
660
660
  const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
661
661
  const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions), true);
662
662
  const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
663
- elements
664
- .slice(endOfRecognizedExtensions)
665
- .forEach((x) => unrecognizedExtensionHandler(x));
663
+ for (let i = endOfRecognizedExtensions; i < elements.length; i++) {
664
+ unrecognizedExtensionHandler(elements[i]);
665
+ }
666
666
  }
667
667
  export function _parse_sequence(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
668
668
  if (rootComponentTypeList2.length > 0) {
@@ -689,12 +689,14 @@ export function _encode_choice(choices, elGetter) {
689
689
  };
690
690
  }
691
691
  export function _decode_inextensible_choice(choices) {
692
+ const choiceMap = new Map(Object.entries(choices));
692
693
  return function (el) {
693
- const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
694
+ const result = choiceMap.get(`${tagClassName(el.tagClass)} ${el.tagNumber}`);
694
695
  if (!result) {
695
- if (choices["*"]) {
696
+ const star = choiceMap.get("*");
697
+ if (star) {
696
698
  const ret = {};
697
- ret[choices["*"][0]] = choices["*"][1](el);
699
+ ret[star[0]] = star[1](el);
698
700
  return ret;
699
701
  }
700
702
  else {
@@ -708,8 +710,9 @@ export function _decode_inextensible_choice(choices) {
708
710
  };
709
711
  }
710
712
  export function _decode_extensible_choice(choices) {
713
+ const choiceMap = new Map(Object.entries(choices));
711
714
  return function (el) {
712
- const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
715
+ const result = choiceMap.get(`${tagClassName(el.tagClass)} ${el.tagNumber}`);
713
716
  if (!result) {
714
717
  return el;
715
718
  }
@@ -720,30 +723,50 @@ export function _decode_extensible_choice(choices) {
720
723
  };
721
724
  }
722
725
  export function _decodeSequenceOf(decoderGetter) {
726
+ const decoder = decoderGetter();
723
727
  return function (el) {
724
- return el.sequence.map(decoderGetter());
728
+ const seq = el.sequence;
729
+ const result = new Array(seq.length);
730
+ for (let i = 0; i < seq.length; i++) {
731
+ result[i] = decoder(seq[i]);
732
+ }
733
+ return result;
725
734
  };
726
735
  }
727
736
  export function _encodeSequenceOf(encoderGetter, outerElGetter) {
737
+ const encoder = encoderGetter();
728
738
  return function (value) {
729
739
  const el = outerElGetter(value, outerElGetter);
730
- const encoder = encoderGetter();
731
- el.sequence = value.map((v) => encoder(v, outerElGetter));
740
+ const seq = new Array(value.length);
741
+ for (let i = 0; i < value.length; i++) {
742
+ seq[i] = encoder(value[i], outerElGetter);
743
+ }
744
+ el.sequence = seq;
732
745
  el.tagClass = ASN1TagClass.universal;
733
746
  el.tagNumber = ASN1UniversalType.sequence;
734
747
  return el;
735
748
  };
736
749
  }
737
750
  export function _decodeSetOf(decoderGetter) {
751
+ const decoder = decoderGetter();
738
752
  return function (el) {
739
- return el.setOf.map(decoderGetter());
753
+ const setOf = el.setOf;
754
+ const result = new Array(setOf.length);
755
+ for (let i = 0; i < setOf.length; i++) {
756
+ result[i] = decoder(setOf[i]);
757
+ }
758
+ return result;
740
759
  };
741
760
  }
742
761
  export function _encodeSetOf(encoderGetter, outerElGetter) {
762
+ const encoder = encoderGetter();
743
763
  return function (value) {
744
764
  const el = outerElGetter(value, outerElGetter);
745
- const encoder = encoderGetter();
746
- el.setOf = value.map((v) => encoder(v, outerElGetter));
765
+ const seq = new Array(value.length);
766
+ for (let i = 0; i < value.length; i++) {
767
+ seq[i] = encoder(value[i], outerElGetter);
768
+ }
769
+ el.setOf = seq;
747
770
  el.tagClass = ASN1TagClass.universal;
748
771
  el.tagNumber = ASN1UniversalType.set;
749
772
  return el;
package/dist/index.d.mts CHANGED
@@ -4,13 +4,11 @@ export { default as CERElement } from "./codecs/cer.mjs";
4
4
  export { default as DERElement } from "./codecs/der.mjs";
5
5
  export { default as sortCanonically } from "./utils/sortCanonically.mjs";
6
6
  export { default as compareSetOfElementsCanonically } from "./utils/compareSetOfElementsCanonically.mjs";
7
- export { default as ConstructedElementSpecification } from "./ConstructedElementSpecification.mjs";
8
7
  export * from "./classes/index.mjs";
9
8
  export * from "./errors.mjs";
10
9
  export * from "./interfaces/index.mjs";
11
10
  export * from "./macros.mjs";
12
11
  export * from "./types/index.mjs";
13
- export { default as validateConstruction } from "./validators/validateConstruction.mjs";
14
12
  export * from "./validators/index.mjs";
15
13
  export * from "./values.mjs";
16
14
  export * from "./utils/index.mjs";
package/dist/index.mjs CHANGED
@@ -9,7 +9,6 @@ export * from "./errors.mjs";
9
9
  export * from "./interfaces/index.mjs";
10
10
  export * from "./macros.mjs";
11
11
  export * from "./types/index.mjs";
12
- export { default as validateConstruction } from "./validators/validateConstruction.mjs";
13
12
  export * from "./validators/index.mjs";
14
13
  export * from "./values.mjs";
15
14
  export * from "./utils/index.mjs";
@@ -1,12 +1,12 @@
1
- export { default as Byteable } from "./Byteable.mjs";
2
- export { default as CharacterValidationFunction } from "./CharacterValidationFunction.mjs";
3
- export { default as Debyteable } from "./Debyteable.mjs";
4
- export { default as Deelementable } from "./Deelementable.mjs";
5
- export { default as Destringable } from "./Destringable.mjs";
6
- export { default as Elementable } from "./Elementable.mjs";
7
- export { default as Enbyteable } from "./Enbyteable.mjs";
8
- export { default as Enelementable } from "./Enelementable.mjs";
9
- export { default as Enstringable } from "./Enstringable.mjs";
10
- export { default as Identified } from "./Identified.mjs";
11
- export { default as Named } from "./Named.mjs";
12
- export { default as Stringable } from "./Stringable.mjs";
1
+ export type { default as Byteable } from "./Byteable.mjs";
2
+ export type { default as CharacterValidationFunction } from "./CharacterValidationFunction.mjs";
3
+ export type { default as Debyteable } from "./Debyteable.mjs";
4
+ export type { default as Deelementable } from "./Deelementable.mjs";
5
+ export type { default as Destringable } from "./Destringable.mjs";
6
+ export type { default as Elementable } from "./Elementable.mjs";
7
+ export type { default as Enbyteable } from "./Enbyteable.mjs";
8
+ export type { default as Enelementable } from "./Enelementable.mjs";
9
+ export type { default as Enstringable } from "./Enstringable.mjs";
10
+ export type { default as Identified } from "./Identified.mjs";
11
+ export type { default as Named } from "./Named.mjs";
12
+ export type { default as Stringable } from "./Stringable.mjs";
@@ -1,4 +1,4 @@
1
- import { BIT_STRING, INTEGER, OBJECT_IDENTIFIER, OCTET_STRING, ObjectDescriptor } from "../macros.mjs";
1
+ import type { BIT_STRING, INTEGER, OBJECT_IDENTIFIER, OCTET_STRING, ObjectDescriptor } from "../macros.mjs";
2
2
  import type ASN1Element from "../asn1.mjs";
3
3
  export default class External {
4
4
  readonly directReference: OBJECT_IDENTIFIER | undefined;