asn1-ts 6.0.0 → 7.0.3

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 (351) hide show
  1. package/README.md +242 -5
  2. package/dist/node/ConstructedElementSpecification.d.ts +11 -11
  3. package/dist/node/ConstructedElementSpecification.js +2 -2
  4. package/dist/node/asn1.d.ts +155 -155
  5. package/dist/node/asn1.js +438 -438
  6. package/dist/node/classes/ABSTRACT-SYNTAX.d.ts +14 -14
  7. package/dist/node/classes/ABSTRACT-SYNTAX.js +2 -2
  8. package/dist/node/classes/TYPE-IDENTIFIER.d.ts +13 -13
  9. package/dist/node/classes/TYPE-IDENTIFIER.js +2 -2
  10. package/dist/node/classes/index.d.ts +2 -2
  11. package/dist/node/classes/index.js +2 -2
  12. package/dist/node/codecs/ber/decoders/decodeBitString.d.ts +2 -2
  13. package/dist/node/codecs/ber/decoders/decodeBitString.js +32 -32
  14. package/dist/node/codecs/ber/decoders/decodeBoolean.d.ts +2 -2
  15. package/dist/node/codecs/ber/decoders/decodeBoolean.js +11 -11
  16. package/dist/node/codecs/ber/decoders/decodeDuration.d.ts +2 -2
  17. package/dist/node/codecs/ber/decoders/decodeDuration.js +68 -68
  18. package/dist/node/codecs/ber/decoders/decodeGeneralizedTime.d.ts +2 -2
  19. package/dist/node/codecs/ber/decoders/decodeGeneralizedTime.js +30 -30
  20. package/dist/node/codecs/ber/decoders/decodeReal.d.ts +2 -2
  21. package/dist/node/codecs/ber/decoders/decodeReal.js +112 -112
  22. package/dist/node/codecs/ber/decoders/decodeSequence.d.ts +3 -3
  23. package/dist/node/codecs/ber/decoders/decodeSequence.js +18 -18
  24. package/dist/node/codecs/ber/decoders/decodeUTCTime.d.ts +2 -2
  25. package/dist/node/codecs/ber/decoders/decodeUTCTime.js +31 -31
  26. package/dist/node/codecs/ber/encoders/encodeGeneralString.d.ts +2 -2
  27. package/dist/node/codecs/ber/encoders/encodeGeneralString.js +17 -17
  28. package/dist/node/codecs/ber/encoders/encodeGeneralString.js.map +1 -1
  29. package/dist/node/codecs/ber/encoders/encodeGraphicString.d.ts +2 -2
  30. package/dist/node/codecs/ber/encoders/encodeGraphicString.js +17 -17
  31. package/dist/node/codecs/ber/encoders/encodeGraphicString.js.map +1 -1
  32. package/dist/node/codecs/ber/encoders/encodeNumericString.d.ts +2 -2
  33. package/dist/node/codecs/ber/encoders/encodeNumericString.js +17 -17
  34. package/dist/node/codecs/ber/encoders/encodeNumericString.js.map +1 -1
  35. package/dist/node/codecs/ber/encoders/encodeObjectDescriptor.d.ts +2 -2
  36. package/dist/node/codecs/ber/encoders/encodeObjectDescriptor.js +17 -17
  37. package/dist/node/codecs/ber/encoders/encodeObjectDescriptor.js.map +1 -1
  38. package/dist/node/codecs/ber/encoders/encodePrintableString.d.ts +2 -2
  39. package/dist/node/codecs/ber/encoders/encodePrintableString.js +18 -18
  40. package/dist/node/codecs/ber/encoders/encodePrintableString.js.map +1 -1
  41. package/dist/node/codecs/ber/encoders/encodeVisibleString.d.ts +2 -2
  42. package/dist/node/codecs/ber/encoders/encodeVisibleString.js +17 -17
  43. package/dist/node/codecs/ber/encoders/encodeVisibleString.js.map +1 -1
  44. package/dist/node/codecs/ber.d.ts +66 -66
  45. package/dist/node/codecs/ber.d.ts.map +1 -1
  46. package/dist/node/codecs/ber.js +593 -602
  47. package/dist/node/codecs/ber.js.map +1 -1
  48. package/dist/node/codecs/cer/decoders/decodeSequence.d.ts +3 -3
  49. package/dist/node/codecs/cer/decoders/decodeSequence.js +18 -18
  50. package/dist/node/codecs/cer.d.ts +67 -67
  51. package/dist/node/codecs/cer.d.ts.map +1 -1
  52. package/dist/node/codecs/cer.js +608 -617
  53. package/dist/node/codecs/cer.js.map +1 -1
  54. package/dist/node/codecs/coer/decoders/decodeBoolean.d.ts +2 -2
  55. package/dist/node/codecs/coer/decoders/decodeBoolean.js +14 -14
  56. package/dist/node/codecs/der/decoders/decodeBitString.d.ts +2 -2
  57. package/dist/node/codecs/der/decoders/decodeBitString.js +36 -36
  58. package/dist/node/codecs/der/decoders/decodeBoolean.d.ts +2 -2
  59. package/dist/node/codecs/der/decoders/decodeBoolean.js +14 -14
  60. package/dist/node/codecs/der/decoders/decodeDuration.d.ts +2 -2
  61. package/dist/node/codecs/der/decoders/decodeDuration.js +71 -71
  62. package/dist/node/codecs/der/decoders/decodeGeneralizedTime.d.ts +2 -2
  63. package/dist/node/codecs/der/decoders/decodeGeneralizedTime.js +30 -30
  64. package/dist/node/codecs/der/decoders/decodeReal.d.ts +2 -2
  65. package/dist/node/codecs/der/decoders/decodeReal.js +99 -99
  66. package/dist/node/codecs/der/decoders/decodeSequence.d.ts +3 -3
  67. package/dist/node/codecs/der/decoders/decodeSequence.js +18 -18
  68. package/dist/node/codecs/der/decoders/decodeUTCTime.d.ts +2 -2
  69. package/dist/node/codecs/der/decoders/decodeUTCTime.js +31 -31
  70. package/dist/node/codecs/der.d.ts +65 -65
  71. package/dist/node/codecs/der.js +561 -561
  72. package/dist/node/codecs/der.js.map +1 -1
  73. package/dist/node/codecs/oer/decoders/decodeBoolean.d.ts +2 -2
  74. package/dist/node/codecs/oer/decoders/decodeBoolean.js +11 -11
  75. package/dist/node/codecs/x690/decoders/decodeCharacterString.d.ts +2 -2
  76. package/dist/node/codecs/x690/decoders/decodeCharacterString.js +33 -33
  77. package/dist/node/codecs/x690/decoders/decodeDate.d.ts +2 -2
  78. package/dist/node/codecs/x690/decoders/decodeDate.js +14 -14
  79. package/dist/node/codecs/x690/decoders/decodeDateTime.d.ts +2 -2
  80. package/dist/node/codecs/x690/decoders/decodeDateTime.js +17 -17
  81. package/dist/node/codecs/x690/decoders/decodeEmbeddedPDV.d.ts +2 -2
  82. package/dist/node/codecs/x690/decoders/decodeEmbeddedPDV.js +33 -33
  83. package/dist/node/codecs/x690/decoders/decodeExternal.d.ts +2 -2
  84. package/dist/node/codecs/x690/decoders/decodeExternal.js +71 -71
  85. package/dist/node/codecs/x690/decoders/decodeGeneralString.d.ts +2 -2
  86. package/dist/node/codecs/x690/decoders/decodeGeneralString.js +16 -16
  87. package/dist/node/codecs/x690/decoders/decodeGeneralString.js.map +1 -1
  88. package/dist/node/codecs/x690/decoders/decodeGraphicString.d.ts +2 -2
  89. package/dist/node/codecs/x690/decoders/decodeGraphicString.js +16 -16
  90. package/dist/node/codecs/x690/decoders/decodeGraphicString.js.map +1 -1
  91. package/dist/node/codecs/x690/decoders/decodeInteger.d.ts +2 -2
  92. package/dist/node/codecs/x690/decoders/decodeInteger.js +17 -17
  93. package/dist/node/codecs/x690/decoders/decodeNumericString.d.ts +2 -2
  94. package/dist/node/codecs/x690/decoders/decodeNumericString.js +16 -16
  95. package/dist/node/codecs/x690/decoders/decodeNumericString.js.map +1 -1
  96. package/dist/node/codecs/x690/decoders/decodeOIDIRI.d.ts +2 -2
  97. package/dist/node/codecs/x690/decoders/decodeOIDIRI.js +8 -8
  98. package/dist/node/codecs/x690/decoders/decodeObjectDescriptor.d.ts +2 -2
  99. package/dist/node/codecs/x690/decoders/decodeObjectDescriptor.js +16 -16
  100. package/dist/node/codecs/x690/decoders/decodeObjectDescriptor.js.map +1 -1
  101. package/dist/node/codecs/x690/decoders/decodeObjectIdentifier.d.ts +2 -2
  102. package/dist/node/codecs/x690/decoders/decodeObjectIdentifier.d.ts.map +1 -1
  103. package/dist/node/codecs/x690/decoders/decodeObjectIdentifier.js +43 -44
  104. package/dist/node/codecs/x690/decoders/decodeObjectIdentifier.js.map +1 -1
  105. package/dist/node/codecs/x690/decoders/decodePrintableString.d.ts +2 -2
  106. package/dist/node/codecs/x690/decoders/decodePrintableString.js +17 -17
  107. package/dist/node/codecs/x690/decoders/decodePrintableString.js.map +1 -1
  108. package/dist/node/codecs/x690/decoders/decodeRelativeOIDIRI.d.ts +2 -2
  109. package/dist/node/codecs/x690/decoders/decodeRelativeOIDIRI.js +8 -8
  110. package/dist/node/codecs/x690/decoders/decodeRelativeObjectIdentifier.d.ts +2 -2
  111. package/dist/node/codecs/x690/decoders/decodeRelativeObjectIdentifier.d.ts.map +1 -1
  112. package/dist/node/codecs/x690/decoders/decodeRelativeObjectIdentifier.js +25 -26
  113. package/dist/node/codecs/x690/decoders/decodeRelativeObjectIdentifier.js.map +1 -1
  114. package/dist/node/codecs/x690/decoders/decodeTime.d.ts +2 -2
  115. package/dist/node/codecs/x690/decoders/decodeTime.js +8 -8
  116. package/dist/node/codecs/x690/decoders/decodeTimeOfDay.d.ts +2 -2
  117. package/dist/node/codecs/x690/decoders/decodeTimeOfDay.js +18 -18
  118. package/dist/node/codecs/x690/decoders/decodeVisibleString.d.ts +2 -2
  119. package/dist/node/codecs/x690/decoders/decodeVisibleString.js +16 -16
  120. package/dist/node/codecs/x690/decoders/decodeVisibleString.js.map +1 -1
  121. package/dist/node/codecs/x690/encoders/encodeBitString.d.ts +2 -2
  122. package/dist/node/codecs/x690/encoders/encodeBitString.js +17 -17
  123. package/dist/node/codecs/x690/encoders/encodeBoolean.d.ts +2 -2
  124. package/dist/node/codecs/x690/encoders/encodeBoolean.js +6 -6
  125. package/dist/node/codecs/x690/encoders/encodeCharacterString.d.ts +2 -2
  126. package/dist/node/codecs/x690/encoders/encodeCharacterString.js +13 -13
  127. package/dist/node/codecs/x690/encoders/encodeDate.d.ts +2 -2
  128. package/dist/node/codecs/x690/encoders/encodeDate.js +15 -15
  129. package/dist/node/codecs/x690/encoders/encodeDateTime.d.ts +2 -2
  130. package/dist/node/codecs/x690/encoders/encodeDateTime.js +18 -18
  131. package/dist/node/codecs/x690/encoders/encodeDuration.d.ts +2 -2
  132. package/dist/node/codecs/x690/encoders/encodeDuration.js +77 -77
  133. package/dist/node/codecs/x690/encoders/encodeEmbeddedPDV.d.ts +2 -2
  134. package/dist/node/codecs/x690/encoders/encodeEmbeddedPDV.js +13 -13
  135. package/dist/node/codecs/x690/encoders/encodeExternal.d.ts +2 -2
  136. package/dist/node/codecs/x690/encoders/encodeExternal.js +40 -40
  137. package/dist/node/codecs/x690/encoders/encodeGeneralizedTime.d.ts +2 -2
  138. package/dist/node/codecs/x690/encoders/encodeGeneralizedTime.js +15 -15
  139. package/dist/node/codecs/x690/encoders/encodeGeneralizedTime.js.map +1 -1
  140. package/dist/node/codecs/x690/encoders/encodeInteger.d.ts +2 -2
  141. package/dist/node/codecs/x690/encoders/encodeInteger.js +7 -7
  142. package/dist/node/codecs/x690/encoders/encodeOIDIRI.d.ts +2 -2
  143. package/dist/node/codecs/x690/encoders/encodeOIDIRI.js +8 -8
  144. package/dist/node/codecs/x690/encoders/encodeObjectIdentifier.d.ts +2 -2
  145. package/dist/node/codecs/x690/encoders/encodeObjectIdentifier.d.ts.map +1 -1
  146. package/dist/node/codecs/x690/encoders/encodeObjectIdentifier.js +16 -17
  147. package/dist/node/codecs/x690/encoders/encodeObjectIdentifier.js.map +1 -1
  148. package/dist/node/codecs/x690/encoders/encodeReal.d.ts +2 -2
  149. package/dist/node/codecs/x690/encoders/encodeReal.js +8 -8
  150. package/dist/node/codecs/x690/encoders/encodeRelativeOIDIRI.d.ts +2 -2
  151. package/dist/node/codecs/x690/encoders/encodeRelativeOIDIRI.js +8 -8
  152. package/dist/node/codecs/x690/encoders/encodeRelativeObjectIdentifier.d.ts +2 -2
  153. package/dist/node/codecs/x690/encoders/encodeRelativeObjectIdentifier.d.ts.map +1 -1
  154. package/dist/node/codecs/x690/encoders/encodeRelativeObjectIdentifier.js +12 -13
  155. package/dist/node/codecs/x690/encoders/encodeRelativeObjectIdentifier.js.map +1 -1
  156. package/dist/node/codecs/x690/encoders/encodeSequence.d.ts +3 -3
  157. package/dist/node/codecs/x690/encoders/encodeSequence.d.ts.map +1 -1
  158. package/dist/node/codecs/x690/encoders/encodeSequence.js +6 -8
  159. package/dist/node/codecs/x690/encoders/encodeSequence.js.map +1 -1
  160. package/dist/node/codecs/x690/encoders/encodeTime.d.ts +2 -2
  161. package/dist/node/codecs/x690/encoders/encodeTime.js +8 -8
  162. package/dist/node/codecs/x690/encoders/encodeTimeOfDay.d.ts +2 -2
  163. package/dist/node/codecs/x690/encoders/encodeTimeOfDay.js +8 -8
  164. package/dist/node/codecs/x690/encoders/encodeUTCTime.d.ts +2 -2
  165. package/dist/node/codecs/x690/encoders/encodeUTCTime.js +16 -16
  166. package/dist/node/codecs/x690/encoders/encodeUTCTime.js.map +1 -1
  167. package/dist/node/codecs/x696/encoders/encodeBoolean.d.ts +2 -2
  168. package/dist/node/codecs/x696/encoders/encodeBoolean.js +6 -6
  169. package/dist/node/errors.d.ts +47 -47
  170. package/dist/node/errors.js +89 -89
  171. package/dist/node/errors.js.map +1 -1
  172. package/dist/node/functional.d.ts +148 -148
  173. package/dist/node/functional.d.ts.map +1 -1
  174. package/dist/node/functional.js +880 -877
  175. package/dist/node/functional.js.map +1 -1
  176. package/dist/node/index.d.ts +16 -17
  177. package/dist/node/index.d.ts.map +1 -1
  178. package/dist/node/index.js +26 -28
  179. package/dist/node/index.js.map +1 -1
  180. package/dist/node/interfaces/Byteable.d.ts +4 -4
  181. package/dist/node/interfaces/Byteable.js +2 -2
  182. package/dist/node/interfaces/CharacterValidationFunction.d.ts +3 -3
  183. package/dist/node/interfaces/CharacterValidationFunction.js +2 -2
  184. package/dist/node/interfaces/Debyteable.d.ts +3 -3
  185. package/dist/node/interfaces/Debyteable.js +2 -2
  186. package/dist/node/interfaces/Deelementable.d.ts +4 -4
  187. package/dist/node/interfaces/Deelementable.js +2 -2
  188. package/dist/node/interfaces/Destringable.d.ts +3 -3
  189. package/dist/node/interfaces/Destringable.js +2 -2
  190. package/dist/node/interfaces/Elementable.d.ts +4 -4
  191. package/dist/node/interfaces/Elementable.js +2 -2
  192. package/dist/node/interfaces/Enbyteable.d.ts +3 -3
  193. package/dist/node/interfaces/Enbyteable.js +2 -2
  194. package/dist/node/interfaces/Enelementable.d.ts +4 -4
  195. package/dist/node/interfaces/Enelementable.js +2 -2
  196. package/dist/node/interfaces/Enstringable.d.ts +3 -3
  197. package/dist/node/interfaces/Enstringable.js +2 -2
  198. package/dist/node/interfaces/Identified.d.ts +4 -4
  199. package/dist/node/interfaces/Identified.js +2 -2
  200. package/dist/node/interfaces/Long.d.ts +3 -3
  201. package/dist/node/interfaces/Long.js +2 -2
  202. package/dist/node/interfaces/Named.d.ts +3 -3
  203. package/dist/node/interfaces/Named.js +2 -2
  204. package/dist/node/interfaces/Stringable.d.ts +4 -4
  205. package/dist/node/interfaces/Stringable.js +2 -2
  206. package/dist/node/interfaces/index.d.ts +12 -12
  207. package/dist/node/interfaces/index.js +2 -2
  208. package/dist/node/macros.d.ts +59 -59
  209. package/dist/node/macros.d.ts.map +1 -1
  210. package/dist/node/macros.js +21 -21
  211. package/dist/node/types/CharacterString.d.ts +8 -8
  212. package/dist/node/types/CharacterString.js +21 -21
  213. package/dist/node/types/EmbeddedPDV.d.ts +8 -8
  214. package/dist/node/types/EmbeddedPDV.js +21 -21
  215. package/dist/node/types/External.d.ts +11 -11
  216. package/dist/node/types/External.js +58 -58
  217. package/dist/node/types/ObjectIdentifier.d.ts +12 -12
  218. package/dist/node/types/ObjectIdentifier.js +70 -70
  219. package/dist/node/types/ObjectIdentifier.js.map +1 -1
  220. package/dist/node/types/TypeIdentifier.d.ts +7 -7
  221. package/dist/node/types/TypeIdentifier.js +9 -9
  222. package/dist/node/types/index.d.ts +18 -18
  223. package/dist/node/types/index.js +42 -42
  224. package/dist/node/types/time/DATE-ENCODING.d.ts +7 -7
  225. package/dist/node/types/time/DATE-ENCODING.js +14 -14
  226. package/dist/node/types/time/DURATION-EQUIVALENT.d.ts +20 -20
  227. package/dist/node/types/time/DURATION-EQUIVALENT.js +89 -89
  228. package/dist/node/types/time/DURATION-INTERVAL-ENCODING.d.ts +18 -18
  229. package/dist/node/types/time/DURATION-INTERVAL-ENCODING.js +46 -46
  230. package/dist/node/types/time/HOURS-DIFF-ENCODING.d.ts +6 -6
  231. package/dist/node/types/time/HOURS-DIFF-ENCODING.js +13 -13
  232. package/dist/node/types/time/HOURS-ENCODING.d.ts +5 -5
  233. package/dist/node/types/time/HOURS-ENCODING.js +11 -11
  234. package/dist/node/types/time/HOURS-MINUTES-DIFF-ENCODING.d.ts +7 -7
  235. package/dist/node/types/time/HOURS-MINUTES-DIFF-ENCODING.js +15 -15
  236. package/dist/node/types/time/HOURS-MINUTES-ENCODING.d.ts +6 -6
  237. package/dist/node/types/time/HOURS-MINUTES-ENCODING.js +13 -13
  238. package/dist/node/types/time/TIME-OF-DAY-DIFF-ENCODING.d.ts +8 -8
  239. package/dist/node/types/time/TIME-OF-DAY-DIFF-ENCODING.js +17 -17
  240. package/dist/node/types/time/TIME-OF-DAY-ENCODING.d.ts +7 -7
  241. package/dist/node/types/time/TIME-OF-DAY-ENCODING.js +15 -15
  242. package/dist/node/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.d.ts +9 -9
  243. package/dist/node/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.js +19 -19
  244. package/dist/node/types/time/TIME-OF-DAY-FRACTION-ENCODING.d.ts +8 -8
  245. package/dist/node/types/time/TIME-OF-DAY-FRACTION-ENCODING.js +17 -17
  246. package/dist/node/types/time/YEAR-ENCODING.d.ts +5 -5
  247. package/dist/node/types/time/YEAR-ENCODING.js +8 -8
  248. package/dist/node/types/time/YEAR-MONTH-ENCODING.d.ts +6 -6
  249. package/dist/node/types/time/YEAR-MONTH-ENCODING.js +12 -12
  250. package/dist/node/utils/base128Length.d.ts +1 -1
  251. package/dist/node/utils/base128Length.js +6 -6
  252. package/dist/node/utils/base256Length.d.ts +1 -1
  253. package/dist/node/utils/base256Length.js +6 -6
  254. package/dist/node/utils/bigint.d.ts +4 -4
  255. package/dist/node/utils/bigint.js +125 -125
  256. package/dist/node/utils/compareSetOfElementsCanonically.d.ts +2 -2
  257. package/dist/node/utils/compareSetOfElementsCanonically.js +16 -16
  258. package/dist/node/utils/convertBytesToText.d.ts +1 -1
  259. package/dist/node/utils/convertBytesToText.js +13 -13
  260. package/dist/node/utils/convertTextToBytes.d.ts +1 -1
  261. package/dist/node/utils/convertTextToBytes.js +13 -13
  262. package/dist/node/utils/decodeBase128.d.ts +1 -1
  263. package/dist/node/utils/decodeBase128.js +23 -23
  264. package/dist/node/utils/decodeIEEE754DoublePrecisionFloat.d.ts +1 -1
  265. package/dist/node/utils/decodeIEEE754DoublePrecisionFloat.js +6 -6
  266. package/dist/node/utils/decodeIEEE754SinglePrecisionFloat.d.ts +1 -1
  267. package/dist/node/utils/decodeIEEE754SinglePrecisionFloat.js +6 -6
  268. package/dist/node/utils/decodeSignedBigEndianInteger.d.ts +1 -1
  269. package/dist/node/utils/decodeSignedBigEndianInteger.js +19 -19
  270. package/dist/node/utils/decodeSignedBigEndianInteger.js.map +1 -1
  271. package/dist/node/utils/decodeUnsignedBigEndianInteger.d.ts +1 -1
  272. package/dist/node/utils/decodeUnsignedBigEndianInteger.js +16 -16
  273. package/dist/node/utils/decodeUnsignedBigEndianInteger.js.map +1 -1
  274. package/dist/node/utils/decodeX690RealNumber.d.ts +1 -1
  275. package/dist/node/utils/decodeX690RealNumber.js +112 -112
  276. package/dist/node/utils/dissectFloat.d.ts +5 -5
  277. package/dist/node/utils/dissectFloat.js +16 -16
  278. package/dist/node/utils/encodeBase128.d.ts +1 -1
  279. package/dist/node/utils/encodeBase128.js +26 -26
  280. package/dist/node/utils/encodeIEEE754DoublePrecisionFloat.d.ts +1 -1
  281. package/dist/node/utils/encodeIEEE754DoublePrecisionFloat.js +6 -6
  282. package/dist/node/utils/encodeIEEE754SinglePrecisionFloat.d.ts +1 -1
  283. package/dist/node/utils/encodeIEEE754SinglePrecisionFloat.js +6 -6
  284. package/dist/node/utils/encodeSignedBigEndianInteger.d.ts +1 -1
  285. package/dist/node/utils/encodeSignedBigEndianInteger.js +40 -40
  286. package/dist/node/utils/encodeUnsignedBigEndianInteger.d.ts +1 -1
  287. package/dist/node/utils/encodeUnsignedBigEndianInteger.js +25 -25
  288. package/dist/node/utils/encodeX690Base10RealNumber.d.ts +1 -1
  289. package/dist/node/utils/encodeX690Base10RealNumber.js +25 -25
  290. package/dist/node/utils/encodeX690BinaryRealNumber.d.ts +1 -1
  291. package/dist/node/utils/encodeX690BinaryRealNumber.js +47 -47
  292. package/dist/node/utils/getBitFromBase128.d.ts +1 -1
  293. package/dist/node/utils/getBitFromBase128.js +7 -7
  294. package/dist/node/utils/getBitFromBase256.d.ts +1 -1
  295. package/dist/node/utils/getBitFromBase256.js +6 -6
  296. package/dist/node/utils/index.d.ts +25 -25
  297. package/dist/node/utils/index.js +56 -56
  298. package/dist/node/utils/isInCanonicalOrder.d.ts +2 -2
  299. package/dist/node/utils/isInCanonicalOrder.js +22 -22
  300. package/dist/node/utils/isUniquelyTagged.d.ts +2 -2
  301. package/dist/node/utils/isUniquelyTagged.js +14 -14
  302. package/dist/node/utils/packBits.d.ts +2 -2
  303. package/dist/node/utils/packBits.js +15 -15
  304. package/dist/node/utils/setBitInBase128.d.ts +1 -1
  305. package/dist/node/utils/setBitInBase128.js +12 -12
  306. package/dist/node/utils/setBitInBase256.d.ts +1 -1
  307. package/dist/node/utils/setBitInBase256.js +12 -12
  308. package/dist/node/utils/sortCanonically.d.ts +2 -2
  309. package/dist/node/utils/sortCanonically.js +18 -18
  310. package/dist/node/utils/splitBytesByContinuationBit.d.ts +1 -1
  311. package/dist/node/utils/splitBytesByContinuationBit.js +13 -13
  312. package/dist/node/utils/splitOctetsCanonically.d.ts +1 -1
  313. package/dist/node/utils/splitOctetsCanonically.js +8 -8
  314. package/dist/node/utils/trimLeadingPaddingBytes.d.ts +1 -1
  315. package/dist/node/utils/trimLeadingPaddingBytes.js +18 -18
  316. package/dist/node/utils/unpackBits.d.ts +2 -2
  317. package/dist/node/utils/unpackBits.js +15 -15
  318. package/dist/node/validators/datetimeComponentValidator.d.ts +2 -2
  319. package/dist/node/validators/datetimeComponentValidator.js +18 -18
  320. package/dist/node/validators/index.d.ts +6 -6
  321. package/dist/node/validators/index.js +18 -18
  322. package/dist/node/validators/isGeneralCharacter.d.ts +1 -1
  323. package/dist/node/validators/isGeneralCharacter.js +6 -6
  324. package/dist/node/validators/isGraphicCharacter.d.ts +1 -1
  325. package/dist/node/validators/isGraphicCharacter.js +6 -6
  326. package/dist/node/validators/isNumericCharacter.d.ts +1 -1
  327. package/dist/node/validators/isNumericCharacter.js +6 -6
  328. package/dist/node/validators/isObjectDescriptorCharacter.d.ts +1 -1
  329. package/dist/node/validators/isObjectDescriptorCharacter.js +8 -8
  330. package/dist/node/validators/isPrintableCharacter.d.ts +1 -1
  331. package/dist/node/validators/isPrintableCharacter.js +12 -12
  332. package/dist/node/validators/isVisibleCharacter.d.ts +1 -1
  333. package/dist/node/validators/isVisibleCharacter.js +8 -8
  334. package/dist/node/validators/validateConstruction.d.ts +3 -3
  335. package/dist/node/validators/validateConstruction.js +41 -41
  336. package/dist/node/validators/validateDate.d.ts +1 -1
  337. package/dist/node/validators/validateDate.js +44 -44
  338. package/dist/node/validators/validateDateTime.d.ts +1 -1
  339. package/dist/node/validators/validateDateTime.js +10 -10
  340. package/dist/node/validators/validateTime.d.ts +1 -1
  341. package/dist/node/validators/validateTime.js +16 -16
  342. package/dist/node/values.d.ts +88 -88
  343. package/dist/node/values.js +110 -110
  344. package/dist/node/x690.d.ts +24 -24
  345. package/dist/node/x690.js +99 -99
  346. package/dist/node/x690.js.map +1 -1
  347. package/package.json +1 -1
  348. package/dist/node/utils/concatenateBytes.d.ts +0 -2
  349. package/dist/node/utils/concatenateBytes.d.ts.map +0 -1
  350. package/dist/node/utils/concatenateBytes.js +0 -19
  351. package/dist/node/utils/concatenateBytes.js.map +0 -1
@@ -1,878 +1,881 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports._encodePrintableString = exports._encodeNumericString = exports._encodeISO646String = exports._encodeIA5String = exports._encodeGraphicString = exports._encodeGeneralString = exports._encodeBMPString = exports._encodeTimeOfDay = exports._encodeTime = exports._encodeSet = exports._encodeSequence = exports._encodeRelativeOID = exports._encodeRelativeIRI = exports._encodeReal = exports._encodeOctetString = exports._encodeObjectIdentifier = exports._encodeNull = exports._encodeIRI = exports._encodeInteger = exports._encodeInstanceOf = exports._encodeExternal = exports._encodeEnumerated = exports._encodeEmbeddedPDV = exports._encodeDuration = exports._encodeDateTime = exports._encodeDate = exports._encodeUnrestrictedCharacterString = exports._encodeBoolean = exports._encodeBitString = exports.DER = exports.CER = exports.BER = exports._tagNumber = exports._construction = exports._tagClass = exports._decode_implicit = exports._encode_implicit = exports._decode_explicit = exports._encode_explicit = exports.present = exports.isDefault = exports.deepEq = exports.tagClassName = exports.not = exports.or = exports.and = exports.hasTagNumberIn = exports.hasTagClass = exports.hasAnyTag = exports.hasTag = void 0;
4
- exports.ComponentSpec = exports._decodeAny = exports._decodeObjectDescriptor = exports._decodeUTCTime = exports._decodeGeneralizedTime = exports._decodeVisibleString = exports._decodeVideotexString = exports._decodeUTF8String = exports._decodeUniversalString = exports._decodeT61String = exports._decodeTeletexString = exports._decodePrintableString = exports._decodeNumericString = exports._decodeISO646String = exports._decodeIA5String = exports._decodeGraphicString = exports._decodeGeneralString = exports._decodeBMPString = exports._decodeTimeOfDay = exports._decodeTime = exports._decodeSet = exports._decodeSequence = exports._decodeRelativeOID = exports._decodeRelativeIRI = exports._decodeReal = exports._decodeOctetString = exports._decodeObjectIdentifier = exports._decodeNull = exports._decodeIRI = exports._decodeInteger = exports._decodeInstanceOf = exports._decodeExternal = exports._decodeEnumerated = exports._decodeEmbeddedPDV = exports._decodeDuration = exports._decodeDateTime = exports._decodeDate = exports._decodeUnrestrictedCharacterString = exports._decodeBoolean = exports._decodeBitString = exports._encodeAny = exports._encodeObjectDescriptor = exports._encodeUTCTime = exports._encodeGeneralizedTime = exports._encodeVisibleString = exports._encodeVideotexString = exports._encodeUTF8String = exports._encodeUniversalString = exports._encodeT61String = exports._encodeTeletexString = void 0;
5
- exports._decodeBigInt = exports._encodeBigInt = exports._encodeSetOf = exports._decodeSetOf = exports._encodeSequenceOf = exports._decodeSequenceOf = exports._decode_extensible_choice = exports._decode_inextensible_choice = exports._encode_choice = exports._parse_sequence = exports._parse_sequence_without_trailing_rctl = exports._parse_sequence_with_trailing_rctl = exports._get_possible_initial_components = exports._parse_component_type_list = exports._parse_set = void 0;
6
- const index_1 = require("./index");
7
- function hasTag(tagClass, tagNumber) {
8
- return function (index, elements) {
9
- const el = elements[index];
10
- return ((el.tagClass === tagClass) && (el.tagNumber === tagNumber));
11
- };
12
- }
13
- exports.hasTag = hasTag;
14
- function hasAnyTag() {
15
- return true;
16
- }
17
- exports.hasAnyTag = hasAnyTag;
18
- function hasTagClass(tagClass) {
19
- return function (index, elements) {
20
- return (elements[index].tagClass === tagClass);
21
- };
22
- }
23
- exports.hasTagClass = hasTagClass;
24
- function hasTagNumberIn(tagNumbers) {
25
- return function (index, elements) {
26
- return tagNumbers.some((tn) => tn === elements[index].tagNumber);
27
- };
28
- }
29
- exports.hasTagNumberIn = hasTagNumberIn;
30
- function and(...fns) {
31
- return function (index, elements) {
32
- return fns.every((fn) => fn(index, elements));
33
- };
34
- }
35
- exports.and = and;
36
- function or(...fns) {
37
- return function (index, elements) {
38
- return fns.some((fn) => fn(index, elements));
39
- };
40
- }
41
- exports.or = or;
42
- function not(fn) {
43
- return function (index, elements) {
44
- return !fn(index, elements);
45
- };
46
- }
47
- exports.not = not;
48
- function tagClassName(tagClass) {
49
- switch (tagClass) {
50
- case (index_1.ASN1TagClass.universal): return "UNIVERSAL";
51
- case (index_1.ASN1TagClass.context): return "CONTEXT";
52
- case (index_1.ASN1TagClass.application): return "APPLICATION";
53
- case (index_1.ASN1TagClass.private): return "PRIVATE";
54
- default: {
55
- throw new Error(`Unrecognized ASN.1 Tag Class ${tagClass}.`);
56
- }
57
- }
58
- }
59
- exports.tagClassName = tagClassName;
60
- function deepEq(value1, value2) {
61
- if (value1 === value2) {
62
- return true;
63
- }
64
- return (JSON.stringify(value1) === JSON.stringify(value2));
65
- }
66
- exports.deepEq = deepEq;
67
- function isDefault(defaultValue) {
68
- return function (actualValue) {
69
- return deepEq(defaultValue, actualValue);
70
- };
71
- }
72
- exports.isDefault = isDefault;
73
- function present(value) {
74
- return (value !== undefined);
75
- }
76
- exports.present = present;
77
- function _encode_explicit(class_, tag, encoderGetter, outer) {
78
- return function (value, elGetter) {
79
- const ret = outer(value, outer);
80
- ret.sequence = [encoderGetter()(value, elGetter)];
81
- ret.construction = index_1.ASN1Construction.constructed;
82
- if (class_) {
83
- ret.tagClass = class_;
84
- }
85
- if (typeof tag !== "undefined") {
86
- ret.tagNumber = tag;
87
- }
88
- return ret;
89
- };
90
- }
91
- exports._encode_explicit = _encode_explicit;
92
- function _decode_explicit(decoderGetter) {
93
- return (el) => decoderGetter()(el.inner);
94
- }
95
- exports._decode_explicit = _decode_explicit;
96
- function _encode_implicit(class_, tag, encoderGetter, outer) {
97
- return function (value, elGetter) {
98
- const ret = encoderGetter()(value, elGetter);
99
- if (class_) {
100
- ret.tagClass = class_;
101
- }
102
- if (typeof tag !== "undefined") {
103
- ret.tagNumber = tag;
104
- }
105
- return ret;
106
- };
107
- }
108
- exports._encode_implicit = _encode_implicit;
109
- function _decode_implicit(decoderGetter) {
110
- return (el) => decoderGetter()(el);
111
- }
112
- exports._decode_implicit = _decode_implicit;
113
- function _tagClass(class_, encoderGetter) {
114
- const el = encoderGetter()();
115
- el.tagClass = class_;
116
- return el;
117
- }
118
- exports._tagClass = _tagClass;
119
- function _construction(con, encoderGetter) {
120
- const el = encoderGetter()();
121
- el.construction = con;
122
- return el;
123
- }
124
- exports._construction = _construction;
125
- function _tagNumber(tag, encoderGetter) {
126
- const el = encoderGetter()();
127
- el.tagNumber = tag;
128
- return el;
129
- }
130
- exports._tagNumber = _tagNumber;
131
- const BER = () => new index_1.BERElement();
132
- exports.BER = BER;
133
- const CER = () => new index_1.CERElement();
134
- exports.CER = CER;
135
- const DER = () => new index_1.DERElement();
136
- exports.DER = DER;
137
- const _encodeBitString = (value, elGetter) => {
138
- const el = elGetter(value, elGetter);
139
- el.bitString = value;
140
- el.tagClass = index_1.ASN1TagClass.universal;
141
- el.tagNumber = index_1.ASN1UniversalType.bitString;
142
- return el;
143
- };
144
- exports._encodeBitString = _encodeBitString;
145
- const _encodeBoolean = (value, elGetter) => {
146
- const el = elGetter(value, elGetter);
147
- el.boolean = value;
148
- el.tagClass = index_1.ASN1TagClass.universal;
149
- el.tagNumber = index_1.ASN1UniversalType.boolean;
150
- return el;
151
- };
152
- exports._encodeBoolean = _encodeBoolean;
153
- const _encodeUnrestrictedCharacterString = (value, elGetter) => {
154
- const el = elGetter(value, elGetter);
155
- el.characterString = value;
156
- el.tagClass = index_1.ASN1TagClass.universal;
157
- el.tagNumber = index_1.ASN1UniversalType.characterString;
158
- return el;
159
- };
160
- exports._encodeUnrestrictedCharacterString = _encodeUnrestrictedCharacterString;
161
- const _encodeDate = (value, elGetter) => {
162
- const el = elGetter(value, elGetter);
163
- el.date = value;
164
- el.tagClass = index_1.ASN1TagClass.universal;
165
- el.tagNumber = index_1.ASN1UniversalType.date;
166
- return el;
167
- };
168
- exports._encodeDate = _encodeDate;
169
- const _encodeDateTime = (value, elGetter) => {
170
- const el = elGetter(value, elGetter);
171
- el.dateTime = value;
172
- el.tagClass = index_1.ASN1TagClass.universal;
173
- el.tagNumber = index_1.ASN1UniversalType.dateTime;
174
- return el;
175
- };
176
- exports._encodeDateTime = _encodeDateTime;
177
- const _encodeDuration = (value, elGetter) => {
178
- const el = elGetter(value, elGetter);
179
- el.duration = value;
180
- el.tagClass = index_1.ASN1TagClass.universal;
181
- el.tagNumber = index_1.ASN1UniversalType.duration;
182
- return el;
183
- };
184
- exports._encodeDuration = _encodeDuration;
185
- const _encodeEmbeddedPDV = (value, elGetter) => {
186
- const el = elGetter(value, elGetter);
187
- el.embeddedPDV = value;
188
- el.tagClass = index_1.ASN1TagClass.universal;
189
- el.tagNumber = index_1.ASN1UniversalType.embeddedPDV;
190
- return el;
191
- };
192
- exports._encodeEmbeddedPDV = _encodeEmbeddedPDV;
193
- const _encodeEnumerated = (value, elGetter) => {
194
- const el = elGetter(value, elGetter);
195
- el.enumerated = value;
196
- el.tagClass = index_1.ASN1TagClass.universal;
197
- el.tagNumber = index_1.ASN1UniversalType.enumerated;
198
- return el;
199
- };
200
- exports._encodeEnumerated = _encodeEnumerated;
201
- const _encodeExternal = (value, elGetter) => {
202
- const el = elGetter(value, elGetter);
203
- el.external = value;
204
- el.tagClass = index_1.ASN1TagClass.universal;
205
- el.tagNumber = index_1.ASN1UniversalType.external;
206
- return el;
207
- };
208
- exports._encodeExternal = _encodeExternal;
209
- const _encodeInstanceOf = (value, elGetter) => {
210
- const el = elGetter(value, elGetter);
211
- el.external = value;
212
- el.tagClass = index_1.ASN1TagClass.universal;
213
- el.tagNumber = index_1.ASN1UniversalType.external;
214
- return el;
215
- };
216
- exports._encodeInstanceOf = _encodeInstanceOf;
217
- const _encodeInteger = (value, elGetter) => {
218
- const el = elGetter(value, elGetter);
219
- el.integer = value;
220
- el.tagClass = index_1.ASN1TagClass.universal;
221
- el.tagNumber = index_1.ASN1UniversalType.integer;
222
- return el;
223
- };
224
- exports._encodeInteger = _encodeInteger;
225
- const _encodeIRI = (value, elGetter) => {
226
- const el = elGetter(value, elGetter);
227
- el.oidIRI = value;
228
- el.tagClass = index_1.ASN1TagClass.universal;
229
- el.tagNumber = index_1.ASN1UniversalType.oidIRI;
230
- return el;
231
- };
232
- exports._encodeIRI = _encodeIRI;
233
- const _encodeNull = (value, elGetter) => {
234
- const el = elGetter(value, elGetter);
235
- el.value = new Uint8Array(0);
236
- el.tagClass = index_1.ASN1TagClass.universal;
237
- el.tagNumber = index_1.ASN1UniversalType.nill;
238
- return el;
239
- };
240
- exports._encodeNull = _encodeNull;
241
- const _encodeObjectIdentifier = (value, elGetter) => {
242
- const el = elGetter(value, elGetter);
243
- el.objectIdentifier = value;
244
- el.tagClass = index_1.ASN1TagClass.universal;
245
- el.tagNumber = index_1.ASN1UniversalType.objectIdentifier;
246
- return el;
247
- };
248
- exports._encodeObjectIdentifier = _encodeObjectIdentifier;
249
- const _encodeOctetString = (value, elGetter) => {
250
- const el = elGetter(value, elGetter);
251
- el.octetString = value;
252
- el.tagClass = index_1.ASN1TagClass.universal;
253
- el.tagNumber = index_1.ASN1UniversalType.octetString;
254
- return el;
255
- };
256
- exports._encodeOctetString = _encodeOctetString;
257
- const _encodeReal = (value, elGetter) => {
258
- const el = elGetter(value, elGetter);
259
- el.real = value;
260
- el.tagClass = index_1.ASN1TagClass.universal;
261
- el.tagNumber = index_1.ASN1UniversalType.realNumber;
262
- return el;
263
- };
264
- exports._encodeReal = _encodeReal;
265
- const _encodeRelativeIRI = (value, elGetter) => {
266
- const el = elGetter(value, elGetter);
267
- el.relativeOIDIRI = value;
268
- el.tagClass = index_1.ASN1TagClass.universal;
269
- el.tagNumber = index_1.ASN1UniversalType.roidIRI;
270
- return el;
271
- };
272
- exports._encodeRelativeIRI = _encodeRelativeIRI;
273
- const _encodeRelativeOID = (value, elGetter) => {
274
- const el = elGetter(value, elGetter);
275
- el.relativeObjectIdentifier = value;
276
- el.tagClass = index_1.ASN1TagClass.universal;
277
- el.tagNumber = index_1.ASN1UniversalType.relativeOID;
278
- return el;
279
- };
280
- exports._encodeRelativeOID = _encodeRelativeOID;
281
- const _encodeSequence = (value, elGetter) => {
282
- const el = elGetter(value, elGetter);
283
- el.sequence = value;
284
- el.tagClass = index_1.ASN1TagClass.universal;
285
- el.tagNumber = index_1.ASN1UniversalType.sequence;
286
- return el;
287
- };
288
- exports._encodeSequence = _encodeSequence;
289
- const _encodeSet = (value, elGetter) => {
290
- const el = elGetter(value, elGetter);
291
- el.set = value;
292
- el.tagClass = index_1.ASN1TagClass.universal;
293
- el.tagNumber = index_1.ASN1UniversalType.set;
294
- return el;
295
- };
296
- exports._encodeSet = _encodeSet;
297
- const _encodeTime = (value, elGetter) => {
298
- const el = elGetter(value, elGetter);
299
- el.time = value;
300
- el.tagClass = index_1.ASN1TagClass.universal;
301
- el.tagNumber = index_1.ASN1UniversalType.time;
302
- return el;
303
- };
304
- exports._encodeTime = _encodeTime;
305
- const _encodeTimeOfDay = (value, elGetter) => {
306
- const el = elGetter(value, elGetter);
307
- el.timeOfDay = value;
308
- el.tagClass = index_1.ASN1TagClass.universal;
309
- el.tagNumber = index_1.ASN1UniversalType.timeOfDay;
310
- return el;
311
- };
312
- exports._encodeTimeOfDay = _encodeTimeOfDay;
313
- const _encodeBMPString = (value, elGetter) => {
314
- const el = elGetter(value, elGetter);
315
- el.bmpString = value;
316
- el.tagClass = index_1.ASN1TagClass.universal;
317
- el.tagNumber = index_1.ASN1UniversalType.bmpString;
318
- return el;
319
- };
320
- exports._encodeBMPString = _encodeBMPString;
321
- const _encodeGeneralString = (value, elGetter) => {
322
- const el = elGetter(value, elGetter);
323
- el.generalString = value;
324
- el.tagClass = index_1.ASN1TagClass.universal;
325
- el.tagNumber = index_1.ASN1UniversalType.generalString;
326
- return el;
327
- };
328
- exports._encodeGeneralString = _encodeGeneralString;
329
- const _encodeGraphicString = (value, elGetter) => {
330
- const el = elGetter(value, elGetter);
331
- el.graphicString = value;
332
- el.tagClass = index_1.ASN1TagClass.universal;
333
- el.tagNumber = index_1.ASN1UniversalType.graphicString;
334
- return el;
335
- };
336
- exports._encodeGraphicString = _encodeGraphicString;
337
- const _encodeIA5String = (value, elGetter) => {
338
- const el = elGetter(value, elGetter);
339
- el.ia5String = value;
340
- el.tagClass = index_1.ASN1TagClass.universal;
341
- el.tagNumber = index_1.ASN1UniversalType.ia5String;
342
- return el;
343
- };
344
- exports._encodeIA5String = _encodeIA5String;
345
- const _encodeISO646String = (value, elGetter) => {
346
- const el = elGetter(value, elGetter);
347
- el.ia5String = value;
348
- el.tagClass = index_1.ASN1TagClass.universal;
349
- el.tagNumber = index_1.ASN1UniversalType.ia5String;
350
- return el;
351
- };
352
- exports._encodeISO646String = _encodeISO646String;
353
- const _encodeNumericString = (value, elGetter) => {
354
- const el = elGetter(value, elGetter);
355
- el.numericString = value;
356
- el.tagClass = index_1.ASN1TagClass.universal;
357
- el.tagNumber = index_1.ASN1UniversalType.numericString;
358
- return el;
359
- };
360
- exports._encodeNumericString = _encodeNumericString;
361
- const _encodePrintableString = (value, elGetter) => {
362
- const el = elGetter(value, elGetter);
363
- el.printableString = value;
364
- el.tagClass = index_1.ASN1TagClass.universal;
365
- el.tagNumber = index_1.ASN1UniversalType.printableString;
366
- return el;
367
- };
368
- exports._encodePrintableString = _encodePrintableString;
369
- const _encodeTeletexString = (value, elGetter) => {
370
- const el = elGetter(value, elGetter);
371
- el.teletexString = value;
372
- el.tagClass = index_1.ASN1TagClass.universal;
373
- el.tagNumber = index_1.ASN1UniversalType.teletexString;
374
- return el;
375
- };
376
- exports._encodeTeletexString = _encodeTeletexString;
377
- const _encodeT61String = (value, elGetter) => {
378
- const el = elGetter(value, elGetter);
379
- el.teletexString = value;
380
- el.tagClass = index_1.ASN1TagClass.universal;
381
- el.tagNumber = index_1.ASN1UniversalType.teletexString;
382
- return el;
383
- };
384
- exports._encodeT61String = _encodeT61String;
385
- const _encodeUniversalString = (value, elGetter) => {
386
- const el = elGetter(value, elGetter);
387
- el.universalString = value;
388
- el.tagClass = index_1.ASN1TagClass.universal;
389
- el.tagNumber = index_1.ASN1UniversalType.universalString;
390
- return el;
391
- };
392
- exports._encodeUniversalString = _encodeUniversalString;
393
- const _encodeUTF8String = (value, elGetter) => {
394
- const el = elGetter(value, elGetter);
395
- el.utf8String = value;
396
- el.tagClass = index_1.ASN1TagClass.universal;
397
- el.tagNumber = index_1.ASN1UniversalType.utf8String;
398
- return el;
399
- };
400
- exports._encodeUTF8String = _encodeUTF8String;
401
- const _encodeVideotexString = (value, elGetter) => {
402
- const el = elGetter(value, elGetter);
403
- el.videotexString = value;
404
- el.tagClass = index_1.ASN1TagClass.universal;
405
- el.tagNumber = index_1.ASN1UniversalType.videotexString;
406
- return el;
407
- };
408
- exports._encodeVideotexString = _encodeVideotexString;
409
- const _encodeVisibleString = (value, elGetter) => {
410
- const el = elGetter(value, elGetter);
411
- el.visibleString = value;
412
- el.tagClass = index_1.ASN1TagClass.universal;
413
- el.tagNumber = index_1.ASN1UniversalType.visibleString;
414
- return el;
415
- };
416
- exports._encodeVisibleString = _encodeVisibleString;
417
- const _encodeGeneralizedTime = (value, elGetter) => {
418
- const el = elGetter(value, elGetter);
419
- el.generalizedTime = value;
420
- el.tagClass = index_1.ASN1TagClass.universal;
421
- el.tagNumber = index_1.ASN1UniversalType.generalizedTime;
422
- return el;
423
- };
424
- exports._encodeGeneralizedTime = _encodeGeneralizedTime;
425
- const _encodeUTCTime = (value, elGetter) => {
426
- const el = elGetter(value, elGetter);
427
- el.utcTime = value;
428
- el.tagClass = index_1.ASN1TagClass.universal;
429
- el.tagNumber = index_1.ASN1UniversalType.utcTime;
430
- return el;
431
- };
432
- exports._encodeUTCTime = _encodeUTCTime;
433
- const _encodeObjectDescriptor = (value, elGetter) => {
434
- const el = elGetter(value, elGetter);
435
- el.objectDescriptor = value;
436
- el.tagClass = index_1.ASN1TagClass.universal;
437
- el.tagNumber = index_1.ASN1UniversalType.objectDescriptor;
438
- return el;
439
- };
440
- exports._encodeObjectDescriptor = _encodeObjectDescriptor;
441
- const _encodeAny = (value) => {
442
- return value;
443
- };
444
- exports._encodeAny = _encodeAny;
445
- const _decodeBitString = (el) => {
446
- return el.bitString;
447
- };
448
- exports._decodeBitString = _decodeBitString;
449
- const _decodeBoolean = (el) => {
450
- return el.boolean;
451
- };
452
- exports._decodeBoolean = _decodeBoolean;
453
- const _decodeUnrestrictedCharacterString = (el) => {
454
- return el.characterString;
455
- };
456
- exports._decodeUnrestrictedCharacterString = _decodeUnrestrictedCharacterString;
457
- const _decodeDate = (el) => {
458
- return el.date;
459
- };
460
- exports._decodeDate = _decodeDate;
461
- const _decodeDateTime = (el) => {
462
- return el.dateTime;
463
- };
464
- exports._decodeDateTime = _decodeDateTime;
465
- const _decodeDuration = (el) => {
466
- return el.duration;
467
- };
468
- exports._decodeDuration = _decodeDuration;
469
- const _decodeEmbeddedPDV = (el) => {
470
- return el.embeddedPDV;
471
- };
472
- exports._decodeEmbeddedPDV = _decodeEmbeddedPDV;
473
- const _decodeEnumerated = (el) => {
474
- return el.enumerated;
475
- };
476
- exports._decodeEnumerated = _decodeEnumerated;
477
- const _decodeExternal = (el) => {
478
- return el.external;
479
- };
480
- exports._decodeExternal = _decodeExternal;
481
- const _decodeInstanceOf = (el) => {
482
- return el.external;
483
- };
484
- exports._decodeInstanceOf = _decodeInstanceOf;
485
- const _decodeInteger = (el) => {
486
- return el.integer;
487
- };
488
- exports._decodeInteger = _decodeInteger;
489
- const _decodeIRI = (el) => {
490
- return el.oidIRI;
491
- };
492
- exports._decodeIRI = _decodeIRI;
493
- const _decodeNull = () => {
494
- return null;
495
- };
496
- exports._decodeNull = _decodeNull;
497
- const _decodeObjectIdentifier = (el) => {
498
- return el.objectIdentifier;
499
- };
500
- exports._decodeObjectIdentifier = _decodeObjectIdentifier;
501
- const _decodeOctetString = (el) => {
502
- return el.octetString;
503
- };
504
- exports._decodeOctetString = _decodeOctetString;
505
- const _decodeReal = (el) => {
506
- return el.real;
507
- };
508
- exports._decodeReal = _decodeReal;
509
- const _decodeRelativeIRI = (el) => {
510
- return el.relativeOIDIRI;
511
- };
512
- exports._decodeRelativeIRI = _decodeRelativeIRI;
513
- const _decodeRelativeOID = (el) => {
514
- return el.relativeObjectIdentifier;
515
- };
516
- exports._decodeRelativeOID = _decodeRelativeOID;
517
- const _decodeSequence = (el) => {
518
- return el.sequence;
519
- };
520
- exports._decodeSequence = _decodeSequence;
521
- const _decodeSet = (el) => {
522
- return el.set;
523
- };
524
- exports._decodeSet = _decodeSet;
525
- const _decodeTime = (el) => {
526
- return el.time;
527
- };
528
- exports._decodeTime = _decodeTime;
529
- const _decodeTimeOfDay = (el) => {
530
- return el.timeOfDay;
531
- };
532
- exports._decodeTimeOfDay = _decodeTimeOfDay;
533
- const _decodeBMPString = (el) => {
534
- return el.bmpString;
535
- };
536
- exports._decodeBMPString = _decodeBMPString;
537
- const _decodeGeneralString = (el) => {
538
- return el.generalString;
539
- };
540
- exports._decodeGeneralString = _decodeGeneralString;
541
- const _decodeGraphicString = (el) => {
542
- return el.graphicString;
543
- };
544
- exports._decodeGraphicString = _decodeGraphicString;
545
- const _decodeIA5String = (el) => {
546
- return el.ia5String;
547
- };
548
- exports._decodeIA5String = _decodeIA5String;
549
- const _decodeISO646String = (el) => {
550
- return el.ia5String;
551
- };
552
- exports._decodeISO646String = _decodeISO646String;
553
- const _decodeNumericString = (el) => {
554
- return el.numericString;
555
- };
556
- exports._decodeNumericString = _decodeNumericString;
557
- const _decodePrintableString = (el) => {
558
- return el.printableString;
559
- };
560
- exports._decodePrintableString = _decodePrintableString;
561
- const _decodeTeletexString = (el) => {
562
- return el.teletexString;
563
- };
564
- exports._decodeTeletexString = _decodeTeletexString;
565
- const _decodeT61String = (el) => {
566
- return el.teletexString;
567
- };
568
- exports._decodeT61String = _decodeT61String;
569
- const _decodeUniversalString = (el) => {
570
- return el.universalString;
571
- };
572
- exports._decodeUniversalString = _decodeUniversalString;
573
- const _decodeUTF8String = (el) => {
574
- return el.utf8String;
575
- };
576
- exports._decodeUTF8String = _decodeUTF8String;
577
- const _decodeVideotexString = (el) => {
578
- return el.videotexString;
579
- };
580
- exports._decodeVideotexString = _decodeVideotexString;
581
- const _decodeVisibleString = (el) => {
582
- return el.visibleString;
583
- };
584
- exports._decodeVisibleString = _decodeVisibleString;
585
- const _decodeGeneralizedTime = (el) => {
586
- return el.generalizedTime;
587
- };
588
- exports._decodeGeneralizedTime = _decodeGeneralizedTime;
589
- const _decodeUTCTime = (el) => {
590
- return el.utcTime;
591
- };
592
- exports._decodeUTCTime = _decodeUTCTime;
593
- const _decodeObjectDescriptor = (el) => {
594
- return el.objectDescriptor;
595
- };
596
- exports._decodeObjectDescriptor = _decodeObjectDescriptor;
597
- const _decodeAny = (el) => {
598
- return el;
599
- };
600
- exports._decodeAny = _decodeAny;
601
- class ComponentSpec {
602
- constructor(name, optional, selector, groupIndex, versionNumber) {
603
- this.name = name;
604
- this.optional = optional;
605
- this.selector = selector;
606
- this.groupIndex = groupIndex;
607
- this.versionNumber = versionNumber;
608
- }
609
- }
610
- exports.ComponentSpec = ComponentSpec;
611
- function _parse_set(set, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }, maximumElements) {
612
- const rootComponents = rootComponentTypeList1.concat(rootComponentTypeList2);
613
- const components = rootComponents.concat(rootComponentTypeList2);
614
- const elements = set.set;
615
- {
616
- const calculatedMaximumElements = (maximumElements === undefined)
617
- ? (components.length + 100)
618
- : maximumElements;
619
- if (elements.length > calculatedMaximumElements) {
620
- throw new Error(`SET '${set.name}' contained ${elements.length} elements, which exceeds the `
621
- + `limit of ${calculatedMaximumElements} permitted elements. This may be a result `
622
- + "of a Denial-of-Service (DoS) attack.");
623
- }
624
- }
625
- {
626
- const encounteredTags = new Set([]);
627
- elements.forEach((e) => {
628
- const tag = `${e.tagClass} ${e.tagNumber}`;
629
- if (encounteredTags.has(tag)) {
630
- throw new Error(`Duplicate tag '${tagClassName(e.tagClass)} ${e.tagNumber}' in SET '${set.name}'.`);
631
- }
632
- encounteredTags.add(tag);
633
- });
634
- }
635
- const encounteredComponents = new Set([]);
636
- const encounteredExtensionGroups = new Set([]);
637
- elements.forEach((e, i) => {
638
- const spec = components
639
- .find((cs) => cs.selector(i, elements));
640
- if (!spec) {
641
- unrecognizedExtensionHandler(e);
642
- return;
643
- }
644
- if (encounteredComponents.has(spec.name)) {
645
- throw new Error(`SET '${set.name}' contained more than one '${spec.name}' component.`);
646
- }
647
- encounteredComponents.add(spec.name);
648
- if (spec.groupIndex !== undefined) {
649
- encounteredExtensionGroups.add(spec.groupIndex);
650
- }
651
- e.name = spec.name;
652
- if (spec.name in decodingCallbacks) {
653
- decodingCallbacks[spec.name](e, spec.name);
654
- }
655
- else {
656
- unrecognizedExtensionHandler(e);
657
- }
658
- });
659
- const missingRequiredComponents = [];
660
- rootComponents
661
- .filter((c) => (!(c.optional)))
662
- .forEach((c) => {
663
- if (!(encounteredComponents.has(c.name))) {
664
- missingRequiredComponents.push(c.name);
665
- }
666
- });
667
- Array.from(encounteredExtensionGroups).forEach((exg) => {
668
- extensionAdditionsList
669
- .filter((c) => ((c.groupIndex === exg) && !(c.optional)))
670
- .forEach((c) => {
671
- if (!(encounteredComponents.has(c.name))) {
672
- missingRequiredComponents.push(c.name);
673
- }
674
- });
675
- });
676
- if (missingRequiredComponents.length > 0) {
677
- throw new Error(`SET '${set.name}' missing these required components: ${missingRequiredComponents.join(", ")}.`);
678
- }
679
- }
680
- exports._parse_set = _parse_set;
681
- function _parse_component_type_list(componentTypeList, decodingCallbacks, elements, isExtensionAdditionsList) {
682
- let e = 0;
683
- let s = 0;
684
- let currentGroup = undefined;
685
- while (s < componentTypeList.length) {
686
- const element = elements[e];
687
- const spec = componentTypeList[s];
688
- if (!element) {
689
- if (spec.optional) {
690
- s++;
691
- continue;
692
- }
693
- else if (isExtensionAdditionsList) {
694
- if ((spec.groupIndex !== undefined) && (spec.groupIndex <= (currentGroup || Infinity))) {
695
- throw new index_1.ASN1ConstructionError(`Missing required extension '${spec.name}' in SEQUENCE.`);
696
- }
697
- else {
698
- s++;
699
- continue;
700
- }
701
- }
702
- else {
703
- throw new index_1.ASN1ConstructionError(`Missing required component '${spec.name}' in SEQUENCE.`);
704
- }
705
- }
706
- if (spec.selector(e, elements)) {
707
- element.name = spec.name;
708
- if (spec.name in decodingCallbacks) {
709
- decodingCallbacks[spec.name](element, spec.name);
710
- }
711
- if (spec.groupIndex !== undefined) {
712
- currentGroup = spec.groupIndex;
713
- }
714
- e++;
715
- }
716
- else if (!spec.optional) {
717
- throw new Error(`Component '${spec.name}' missing from SEQUENCE.`);
718
- }
719
- s++;
720
- }
721
- return e;
722
- }
723
- exports._parse_component_type_list = _parse_component_type_list;
724
- function _get_possible_initial_components(componentTypeList) {
725
- let i = 0;
726
- while (i < componentTypeList.length) {
727
- if (!(componentTypeList[i++].optional)) {
728
- break;
729
- }
730
- }
731
- return componentTypeList.slice(0, i);
732
- }
733
- exports._get_possible_initial_components = _get_possible_initial_components;
734
- function _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
735
- const elements = seq.sequence;
736
- const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
737
- const possibleInitialRCTL2Components = _get_possible_initial_components(rootComponentTypeList2);
738
- const rctl2EntirelyOptional = rootComponentTypeList2.every((ct) => ct.optional);
739
- const extensionsOnwards = elements.slice(startOfExtensions);
740
- let numberOfExtensionElements = extensionsOnwards
741
- .findIndex((e, i) => possibleInitialRCTL2Components
742
- .some((pirctl2c) => pirctl2c.selector(i, extensionsOnwards)));
743
- if (startOfExtensions === -1) {
744
- if (rctl2EntirelyOptional) {
745
- numberOfExtensionElements = (elements.length - startOfExtensions);
746
- }
747
- else {
748
- throw new Error(`Trailing root component type list for SEQUENCE '${seq.name}' not found.`);
749
- }
750
- }
751
- const startOfRCTL2 = (startOfExtensions + numberOfExtensionElements);
752
- const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions, startOfRCTL2), true);
753
- const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
754
- elements
755
- .slice(endOfRecognizedExtensions, startOfRCTL2)
756
- .forEach((x) => unrecognizedExtensionHandler(x));
757
- const numberOfRCTL2ElementsRead = _parse_component_type_list(rootComponentTypeList2, decodingCallbacks, elements.slice(startOfRCTL2), false);
758
- if ((startOfRCTL2 + numberOfRCTL2ElementsRead) !== elements.length) {
759
- throw new Error(`SEQUENCE '${seq.name}' had excess elements at the end.`);
760
- }
761
- }
762
- exports._parse_sequence_with_trailing_rctl = _parse_sequence_with_trailing_rctl;
763
- function _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler = () => { }) {
764
- const elements = seq.sequence;
765
- const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
766
- const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions), true);
767
- const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
768
- elements
769
- .slice(endOfRecognizedExtensions)
770
- .forEach((x) => unrecognizedExtensionHandler(x));
771
- }
772
- exports._parse_sequence_without_trailing_rctl = _parse_sequence_without_trailing_rctl;
773
- function _parse_sequence(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
774
- if (rootComponentTypeList2.length > 0) {
775
- _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler);
776
- }
777
- else {
778
- _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler);
779
- }
780
- }
781
- exports._parse_sequence = _parse_sequence;
782
- function _encode_choice(choices, elGetter) {
783
- return function (value) {
784
- if (value instanceof index_1.ASN1Element) {
785
- return value;
786
- }
787
- const key = Object.keys(value)[0];
788
- if (!key) {
789
- throw new Error("Empty choice value object.");
790
- }
791
- const encoder = choices[key];
792
- if (!encoder) {
793
- throw new Error(`Unrecognized alternative '${key}'.`);
794
- }
795
- return encoder(value[key], elGetter);
796
- };
797
- }
798
- exports._encode_choice = _encode_choice;
799
- function _decode_inextensible_choice(choices) {
800
- return function (el) {
801
- const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
802
- if (!result) {
803
- if (choices["*"]) {
804
- const ret = {};
805
- ret[choices["*"][0]] = choices["*"][1](el);
806
- return ret;
807
- }
808
- else {
809
- throw new Error(`Unrecognized CHOICE tag '${tagClassName(el.tagClass)} ${el.tagNumber}'.`);
810
- }
811
- }
812
- const [name, decoder] = result;
813
- const ret = {};
814
- ret[name] = decoder(el);
815
- return ret;
816
- };
817
- }
818
- exports._decode_inextensible_choice = _decode_inextensible_choice;
819
- function _decode_extensible_choice(choices) {
820
- return function (el) {
821
- const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
822
- if (!result) {
823
- return el;
824
- }
825
- const [name, decoder] = result;
826
- const ret = {};
827
- ret[name] = decoder(el);
828
- return ret;
829
- };
830
- }
831
- exports._decode_extensible_choice = _decode_extensible_choice;
832
- function _decodeSequenceOf(decoderGetter) {
833
- return function (el) {
834
- return el.sequence.map(decoderGetter());
835
- };
836
- }
837
- exports._decodeSequenceOf = _decodeSequenceOf;
838
- function _encodeSequenceOf(encoderGetter, outerElGetter) {
839
- return function (value) {
840
- const el = outerElGetter(value, outerElGetter);
841
- const encoder = encoderGetter();
842
- el.sequence = value.map((v) => encoder(v, outerElGetter));
843
- el.tagClass = index_1.ASN1TagClass.universal;
844
- el.tagNumber = index_1.ASN1UniversalType.sequence;
845
- return el;
846
- };
847
- }
848
- exports._encodeSequenceOf = _encodeSequenceOf;
849
- function _decodeSetOf(decoderGetter) {
850
- return function (el) {
851
- return el.set.map(decoderGetter());
852
- };
853
- }
854
- exports._decodeSetOf = _decodeSetOf;
855
- function _encodeSetOf(encoderGetter, outerElGetter) {
856
- return function (value) {
857
- const el = outerElGetter(value, outerElGetter);
858
- const encoder = encoderGetter();
859
- el.set = value.map((v) => encoder(v, outerElGetter));
860
- el.tagClass = index_1.ASN1TagClass.universal;
861
- el.tagNumber = index_1.ASN1UniversalType.set;
862
- return el;
863
- };
864
- }
865
- exports._encodeSetOf = _encodeSetOf;
866
- const _encodeBigInt = (value, elGetter) => {
867
- const el = elGetter(value, elGetter);
868
- el.octetString = value;
869
- el.tagClass = index_1.ASN1TagClass.universal;
870
- el.tagNumber = index_1.ASN1UniversalType.integer;
871
- return el;
872
- };
873
- exports._encodeBigInt = _encodeBigInt;
874
- const _decodeBigInt = (el) => {
875
- return el.octetString;
876
- };
877
- exports._decodeBigInt = _decodeBigInt;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports._encodePrintableString = exports._encodeNumericString = exports._encodeISO646String = exports._encodeIA5String = exports._encodeGraphicString = exports._encodeGeneralString = exports._encodeBMPString = exports._encodeTimeOfDay = exports._encodeTime = exports._encodeSet = exports._encodeSequence = exports._encodeRelativeOID = exports._encodeRelativeIRI = exports._encodeReal = exports._encodeOctetString = exports._encodeObjectIdentifier = exports._encodeNull = exports._encodeIRI = exports._encodeInteger = exports._encodeInstanceOf = exports._encodeExternal = exports._encodeEnumerated = exports._encodeEmbeddedPDV = exports._encodeDuration = exports._encodeDateTime = exports._encodeDate = exports._encodeUnrestrictedCharacterString = exports._encodeBoolean = exports._encodeBitString = exports.DER = exports.CER = exports.BER = exports._tagNumber = exports._construction = exports._tagClass = exports._decode_implicit = exports._encode_implicit = exports._decode_explicit = exports._encode_explicit = exports.present = exports.isDefault = exports.deepEq = exports.tagClassName = exports.not = exports.or = exports.and = exports.hasTagNumberIn = exports.hasTagClass = exports.hasAnyTag = exports.hasTag = void 0;
4
+ exports.ComponentSpec = exports._decodeAny = exports._decodeObjectDescriptor = exports._decodeUTCTime = exports._decodeGeneralizedTime = exports._decodeVisibleString = exports._decodeVideotexString = exports._decodeUTF8String = exports._decodeUniversalString = exports._decodeT61String = exports._decodeTeletexString = exports._decodePrintableString = exports._decodeNumericString = exports._decodeISO646String = exports._decodeIA5String = exports._decodeGraphicString = exports._decodeGeneralString = exports._decodeBMPString = exports._decodeTimeOfDay = exports._decodeTime = exports._decodeSet = exports._decodeSequence = exports._decodeRelativeOID = exports._decodeRelativeIRI = exports._decodeReal = exports._decodeOctetString = exports._decodeObjectIdentifier = exports._decodeNull = exports._decodeIRI = exports._decodeInteger = exports._decodeInstanceOf = exports._decodeExternal = exports._decodeEnumerated = exports._decodeEmbeddedPDV = exports._decodeDuration = exports._decodeDateTime = exports._decodeDate = exports._decodeUnrestrictedCharacterString = exports._decodeBoolean = exports._decodeBitString = exports._encodeAny = exports._encodeObjectDescriptor = exports._encodeUTCTime = exports._encodeGeneralizedTime = exports._encodeVisibleString = exports._encodeVideotexString = exports._encodeUTF8String = exports._encodeUniversalString = exports._encodeT61String = exports._encodeTeletexString = void 0;
5
+ exports._decodeBigInt = exports._encodeBigInt = exports._encodeSetOf = exports._decodeSetOf = exports._encodeSequenceOf = exports._decodeSequenceOf = exports._decode_extensible_choice = exports._decode_inextensible_choice = exports._encode_choice = exports._parse_sequence = exports._parse_sequence_without_trailing_rctl = exports._parse_sequence_with_trailing_rctl = exports._get_possible_initial_components = exports._parse_component_type_list = exports._parse_set = void 0;
6
+ const index_1 = require("./index");
7
+ function hasTag(tagClass, tagNumber) {
8
+ return function (index, elements) {
9
+ const el = elements[index];
10
+ return ((el.tagClass === tagClass) && (el.tagNumber === tagNumber));
11
+ };
12
+ }
13
+ exports.hasTag = hasTag;
14
+ function hasAnyTag() {
15
+ return true;
16
+ }
17
+ exports.hasAnyTag = hasAnyTag;
18
+ function hasTagClass(tagClass) {
19
+ return function (index, elements) {
20
+ return (elements[index].tagClass === tagClass);
21
+ };
22
+ }
23
+ exports.hasTagClass = hasTagClass;
24
+ function hasTagNumberIn(tagNumbers) {
25
+ return function (index, elements) {
26
+ return tagNumbers.some((tn) => tn === elements[index].tagNumber);
27
+ };
28
+ }
29
+ exports.hasTagNumberIn = hasTagNumberIn;
30
+ function and(...fns) {
31
+ return function (index, elements) {
32
+ return fns.every((fn) => fn(index, elements));
33
+ };
34
+ }
35
+ exports.and = and;
36
+ function or(...fns) {
37
+ return function (index, elements) {
38
+ return fns.some((fn) => fn(index, elements));
39
+ };
40
+ }
41
+ exports.or = or;
42
+ function not(fn) {
43
+ return function (index, elements) {
44
+ return !fn(index, elements);
45
+ };
46
+ }
47
+ exports.not = not;
48
+ function tagClassName(tagClass) {
49
+ switch (tagClass) {
50
+ case (index_1.ASN1TagClass.universal): return "UNIVERSAL";
51
+ case (index_1.ASN1TagClass.context): return "CONTEXT";
52
+ case (index_1.ASN1TagClass.application): return "APPLICATION";
53
+ case (index_1.ASN1TagClass.private): return "PRIVATE";
54
+ default: {
55
+ throw new Error(`Unrecognized ASN.1 Tag Class ${tagClass}.`);
56
+ }
57
+ }
58
+ }
59
+ exports.tagClassName = tagClassName;
60
+ function deepEq(value1, value2) {
61
+ try {
62
+ if (value1 === value2) {
63
+ return true;
64
+ }
65
+ if (((typeof value1 === "bigint") || (typeof value1 === "number"))
66
+ && ((typeof value2 === "bigint") || (typeof value2 === "number"))) {
67
+ return (BigInt(value1) === BigInt(value2));
68
+ }
69
+ return (JSON.stringify(value1) === JSON.stringify(value2));
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ exports.deepEq = deepEq;
76
+ function isDefault(defaultValue) {
77
+ return function (actualValue) {
78
+ return deepEq(defaultValue, actualValue);
79
+ };
80
+ }
81
+ exports.isDefault = isDefault;
82
+ function present(value) {
83
+ return (value !== undefined);
84
+ }
85
+ exports.present = present;
86
+ function _encode_explicit(class_, tag, encoderGetter, outer) {
87
+ return function (value, elGetter) {
88
+ const ret = outer(value, outer);
89
+ ret.sequence = [encoderGetter()(value, elGetter)];
90
+ ret.construction = index_1.ASN1Construction.constructed;
91
+ if (class_) {
92
+ ret.tagClass = class_;
93
+ }
94
+ if (typeof tag !== "undefined") {
95
+ ret.tagNumber = tag;
96
+ }
97
+ return ret;
98
+ };
99
+ }
100
+ exports._encode_explicit = _encode_explicit;
101
+ function _decode_explicit(decoderGetter) {
102
+ return (el) => decoderGetter()(el.inner);
103
+ }
104
+ exports._decode_explicit = _decode_explicit;
105
+ function _encode_implicit(class_, tag, encoderGetter, outer) {
106
+ return function (value, elGetter) {
107
+ const ret = encoderGetter()(value, elGetter);
108
+ if (class_) {
109
+ ret.tagClass = class_;
110
+ }
111
+ if (typeof tag !== "undefined") {
112
+ ret.tagNumber = tag;
113
+ }
114
+ return ret;
115
+ };
116
+ }
117
+ exports._encode_implicit = _encode_implicit;
118
+ function _decode_implicit(decoderGetter) {
119
+ return (el) => decoderGetter()(el);
120
+ }
121
+ exports._decode_implicit = _decode_implicit;
122
+ function _tagClass(class_, encoderGetter) {
123
+ const el = encoderGetter()();
124
+ el.tagClass = class_;
125
+ return el;
126
+ }
127
+ exports._tagClass = _tagClass;
128
+ function _construction(con, encoderGetter) {
129
+ const el = encoderGetter()();
130
+ el.construction = con;
131
+ return el;
132
+ }
133
+ exports._construction = _construction;
134
+ function _tagNumber(tag, encoderGetter) {
135
+ const el = encoderGetter()();
136
+ el.tagNumber = tag;
137
+ return el;
138
+ }
139
+ exports._tagNumber = _tagNumber;
140
+ const BER = () => new index_1.BERElement();
141
+ exports.BER = BER;
142
+ const CER = () => new index_1.CERElement();
143
+ exports.CER = CER;
144
+ const DER = () => new index_1.DERElement();
145
+ exports.DER = DER;
146
+ const _encodeBitString = (value, elGetter) => {
147
+ const el = elGetter(value, elGetter);
148
+ el.bitString = value;
149
+ el.tagClass = index_1.ASN1TagClass.universal;
150
+ el.tagNumber = index_1.ASN1UniversalType.bitString;
151
+ return el;
152
+ };
153
+ exports._encodeBitString = _encodeBitString;
154
+ const _encodeBoolean = (value, elGetter) => {
155
+ const el = elGetter(value, elGetter);
156
+ el.boolean = value;
157
+ el.tagClass = index_1.ASN1TagClass.universal;
158
+ el.tagNumber = index_1.ASN1UniversalType.boolean;
159
+ return el;
160
+ };
161
+ exports._encodeBoolean = _encodeBoolean;
162
+ const _encodeUnrestrictedCharacterString = (value, elGetter) => {
163
+ const el = elGetter(value, elGetter);
164
+ el.characterString = value;
165
+ el.tagClass = index_1.ASN1TagClass.universal;
166
+ el.tagNumber = index_1.ASN1UniversalType.characterString;
167
+ return el;
168
+ };
169
+ exports._encodeUnrestrictedCharacterString = _encodeUnrestrictedCharacterString;
170
+ const _encodeDate = (value, elGetter) => {
171
+ const el = elGetter(value, elGetter);
172
+ el.date = value;
173
+ el.tagClass = index_1.ASN1TagClass.universal;
174
+ el.tagNumber = index_1.ASN1UniversalType.date;
175
+ return el;
176
+ };
177
+ exports._encodeDate = _encodeDate;
178
+ const _encodeDateTime = (value, elGetter) => {
179
+ const el = elGetter(value, elGetter);
180
+ el.dateTime = value;
181
+ el.tagClass = index_1.ASN1TagClass.universal;
182
+ el.tagNumber = index_1.ASN1UniversalType.dateTime;
183
+ return el;
184
+ };
185
+ exports._encodeDateTime = _encodeDateTime;
186
+ const _encodeDuration = (value, elGetter) => {
187
+ const el = elGetter(value, elGetter);
188
+ el.duration = value;
189
+ el.tagClass = index_1.ASN1TagClass.universal;
190
+ el.tagNumber = index_1.ASN1UniversalType.duration;
191
+ return el;
192
+ };
193
+ exports._encodeDuration = _encodeDuration;
194
+ const _encodeEmbeddedPDV = (value, elGetter) => {
195
+ const el = elGetter(value, elGetter);
196
+ el.embeddedPDV = value;
197
+ el.tagClass = index_1.ASN1TagClass.universal;
198
+ el.tagNumber = index_1.ASN1UniversalType.embeddedPDV;
199
+ return el;
200
+ };
201
+ exports._encodeEmbeddedPDV = _encodeEmbeddedPDV;
202
+ const _encodeEnumerated = (value, elGetter) => {
203
+ const el = elGetter(value, elGetter);
204
+ el.enumerated = value;
205
+ el.tagClass = index_1.ASN1TagClass.universal;
206
+ el.tagNumber = index_1.ASN1UniversalType.enumerated;
207
+ return el;
208
+ };
209
+ exports._encodeEnumerated = _encodeEnumerated;
210
+ const _encodeExternal = (value, elGetter) => {
211
+ const el = elGetter(value, elGetter);
212
+ el.external = value;
213
+ el.tagClass = index_1.ASN1TagClass.universal;
214
+ el.tagNumber = index_1.ASN1UniversalType.external;
215
+ return el;
216
+ };
217
+ exports._encodeExternal = _encodeExternal;
218
+ const _encodeInstanceOf = (value, elGetter) => {
219
+ const el = elGetter(value, elGetter);
220
+ el.external = value;
221
+ el.tagClass = index_1.ASN1TagClass.universal;
222
+ el.tagNumber = index_1.ASN1UniversalType.external;
223
+ return el;
224
+ };
225
+ exports._encodeInstanceOf = _encodeInstanceOf;
226
+ const _encodeInteger = (value, elGetter) => {
227
+ const el = elGetter(value, elGetter);
228
+ el.integer = value;
229
+ el.tagClass = index_1.ASN1TagClass.universal;
230
+ el.tagNumber = index_1.ASN1UniversalType.integer;
231
+ return el;
232
+ };
233
+ exports._encodeInteger = _encodeInteger;
234
+ const _encodeIRI = (value, elGetter) => {
235
+ const el = elGetter(value, elGetter);
236
+ el.oidIRI = value;
237
+ el.tagClass = index_1.ASN1TagClass.universal;
238
+ el.tagNumber = index_1.ASN1UniversalType.oidIRI;
239
+ return el;
240
+ };
241
+ exports._encodeIRI = _encodeIRI;
242
+ const _encodeNull = (value, elGetter) => {
243
+ const el = elGetter(value, elGetter);
244
+ el.value = new Uint8Array(0);
245
+ el.tagClass = index_1.ASN1TagClass.universal;
246
+ el.tagNumber = index_1.ASN1UniversalType.nill;
247
+ return el;
248
+ };
249
+ exports._encodeNull = _encodeNull;
250
+ const _encodeObjectIdentifier = (value, elGetter) => {
251
+ const el = elGetter(value, elGetter);
252
+ el.objectIdentifier = value;
253
+ el.tagClass = index_1.ASN1TagClass.universal;
254
+ el.tagNumber = index_1.ASN1UniversalType.objectIdentifier;
255
+ return el;
256
+ };
257
+ exports._encodeObjectIdentifier = _encodeObjectIdentifier;
258
+ const _encodeOctetString = (value, elGetter) => {
259
+ const el = elGetter(value, elGetter);
260
+ el.octetString = value;
261
+ el.tagClass = index_1.ASN1TagClass.universal;
262
+ el.tagNumber = index_1.ASN1UniversalType.octetString;
263
+ return el;
264
+ };
265
+ exports._encodeOctetString = _encodeOctetString;
266
+ const _encodeReal = (value, elGetter) => {
267
+ const el = elGetter(value, elGetter);
268
+ el.real = value;
269
+ el.tagClass = index_1.ASN1TagClass.universal;
270
+ el.tagNumber = index_1.ASN1UniversalType.realNumber;
271
+ return el;
272
+ };
273
+ exports._encodeReal = _encodeReal;
274
+ const _encodeRelativeIRI = (value, elGetter) => {
275
+ const el = elGetter(value, elGetter);
276
+ el.relativeOIDIRI = value;
277
+ el.tagClass = index_1.ASN1TagClass.universal;
278
+ el.tagNumber = index_1.ASN1UniversalType.roidIRI;
279
+ return el;
280
+ };
281
+ exports._encodeRelativeIRI = _encodeRelativeIRI;
282
+ const _encodeRelativeOID = (value, elGetter) => {
283
+ const el = elGetter(value, elGetter);
284
+ el.relativeObjectIdentifier = value;
285
+ el.tagClass = index_1.ASN1TagClass.universal;
286
+ el.tagNumber = index_1.ASN1UniversalType.relativeOID;
287
+ return el;
288
+ };
289
+ exports._encodeRelativeOID = _encodeRelativeOID;
290
+ const _encodeSequence = (value, elGetter) => {
291
+ const el = elGetter(value, elGetter);
292
+ el.sequence = value;
293
+ el.tagClass = index_1.ASN1TagClass.universal;
294
+ el.tagNumber = index_1.ASN1UniversalType.sequence;
295
+ return el;
296
+ };
297
+ exports._encodeSequence = _encodeSequence;
298
+ const _encodeSet = (value, elGetter) => {
299
+ const el = elGetter(value, elGetter);
300
+ el.set = value;
301
+ el.tagClass = index_1.ASN1TagClass.universal;
302
+ el.tagNumber = index_1.ASN1UniversalType.set;
303
+ return el;
304
+ };
305
+ exports._encodeSet = _encodeSet;
306
+ const _encodeTime = (value, elGetter) => {
307
+ const el = elGetter(value, elGetter);
308
+ el.time = value;
309
+ el.tagClass = index_1.ASN1TagClass.universal;
310
+ el.tagNumber = index_1.ASN1UniversalType.time;
311
+ return el;
312
+ };
313
+ exports._encodeTime = _encodeTime;
314
+ const _encodeTimeOfDay = (value, elGetter) => {
315
+ const el = elGetter(value, elGetter);
316
+ el.timeOfDay = value;
317
+ el.tagClass = index_1.ASN1TagClass.universal;
318
+ el.tagNumber = index_1.ASN1UniversalType.timeOfDay;
319
+ return el;
320
+ };
321
+ exports._encodeTimeOfDay = _encodeTimeOfDay;
322
+ const _encodeBMPString = (value, elGetter) => {
323
+ const el = elGetter(value, elGetter);
324
+ el.bmpString = value;
325
+ el.tagClass = index_1.ASN1TagClass.universal;
326
+ el.tagNumber = index_1.ASN1UniversalType.bmpString;
327
+ return el;
328
+ };
329
+ exports._encodeBMPString = _encodeBMPString;
330
+ const _encodeGeneralString = (value, elGetter) => {
331
+ const el = elGetter(value, elGetter);
332
+ el.generalString = value;
333
+ el.tagClass = index_1.ASN1TagClass.universal;
334
+ el.tagNumber = index_1.ASN1UniversalType.generalString;
335
+ return el;
336
+ };
337
+ exports._encodeGeneralString = _encodeGeneralString;
338
+ const _encodeGraphicString = (value, elGetter) => {
339
+ const el = elGetter(value, elGetter);
340
+ el.graphicString = value;
341
+ el.tagClass = index_1.ASN1TagClass.universal;
342
+ el.tagNumber = index_1.ASN1UniversalType.graphicString;
343
+ return el;
344
+ };
345
+ exports._encodeGraphicString = _encodeGraphicString;
346
+ const _encodeIA5String = (value, elGetter) => {
347
+ const el = elGetter(value, elGetter);
348
+ el.ia5String = value;
349
+ el.tagClass = index_1.ASN1TagClass.universal;
350
+ el.tagNumber = index_1.ASN1UniversalType.ia5String;
351
+ return el;
352
+ };
353
+ exports._encodeIA5String = _encodeIA5String;
354
+ const _encodeISO646String = (value, elGetter) => {
355
+ const el = elGetter(value, elGetter);
356
+ el.ia5String = value;
357
+ el.tagClass = index_1.ASN1TagClass.universal;
358
+ el.tagNumber = index_1.ASN1UniversalType.ia5String;
359
+ return el;
360
+ };
361
+ exports._encodeISO646String = _encodeISO646String;
362
+ const _encodeNumericString = (value, elGetter) => {
363
+ const el = elGetter(value, elGetter);
364
+ el.numericString = value;
365
+ el.tagClass = index_1.ASN1TagClass.universal;
366
+ el.tagNumber = index_1.ASN1UniversalType.numericString;
367
+ return el;
368
+ };
369
+ exports._encodeNumericString = _encodeNumericString;
370
+ const _encodePrintableString = (value, elGetter) => {
371
+ const el = elGetter(value, elGetter);
372
+ el.printableString = value;
373
+ el.tagClass = index_1.ASN1TagClass.universal;
374
+ el.tagNumber = index_1.ASN1UniversalType.printableString;
375
+ return el;
376
+ };
377
+ exports._encodePrintableString = _encodePrintableString;
378
+ const _encodeTeletexString = (value, elGetter) => {
379
+ const el = elGetter(value, elGetter);
380
+ el.teletexString = value;
381
+ el.tagClass = index_1.ASN1TagClass.universal;
382
+ el.tagNumber = index_1.ASN1UniversalType.teletexString;
383
+ return el;
384
+ };
385
+ exports._encodeTeletexString = _encodeTeletexString;
386
+ const _encodeT61String = (value, elGetter) => {
387
+ const el = elGetter(value, elGetter);
388
+ el.teletexString = value;
389
+ el.tagClass = index_1.ASN1TagClass.universal;
390
+ el.tagNumber = index_1.ASN1UniversalType.teletexString;
391
+ return el;
392
+ };
393
+ exports._encodeT61String = _encodeT61String;
394
+ const _encodeUniversalString = (value, elGetter) => {
395
+ const el = elGetter(value, elGetter);
396
+ el.universalString = value;
397
+ el.tagClass = index_1.ASN1TagClass.universal;
398
+ el.tagNumber = index_1.ASN1UniversalType.universalString;
399
+ return el;
400
+ };
401
+ exports._encodeUniversalString = _encodeUniversalString;
402
+ const _encodeUTF8String = (value, elGetter) => {
403
+ const el = elGetter(value, elGetter);
404
+ el.utf8String = value;
405
+ el.tagClass = index_1.ASN1TagClass.universal;
406
+ el.tagNumber = index_1.ASN1UniversalType.utf8String;
407
+ return el;
408
+ };
409
+ exports._encodeUTF8String = _encodeUTF8String;
410
+ const _encodeVideotexString = (value, elGetter) => {
411
+ const el = elGetter(value, elGetter);
412
+ el.videotexString = value;
413
+ el.tagClass = index_1.ASN1TagClass.universal;
414
+ el.tagNumber = index_1.ASN1UniversalType.videotexString;
415
+ return el;
416
+ };
417
+ exports._encodeVideotexString = _encodeVideotexString;
418
+ const _encodeVisibleString = (value, elGetter) => {
419
+ const el = elGetter(value, elGetter);
420
+ el.visibleString = value;
421
+ el.tagClass = index_1.ASN1TagClass.universal;
422
+ el.tagNumber = index_1.ASN1UniversalType.visibleString;
423
+ return el;
424
+ };
425
+ exports._encodeVisibleString = _encodeVisibleString;
426
+ const _encodeGeneralizedTime = (value, elGetter) => {
427
+ const el = elGetter(value, elGetter);
428
+ el.generalizedTime = value;
429
+ el.tagClass = index_1.ASN1TagClass.universal;
430
+ el.tagNumber = index_1.ASN1UniversalType.generalizedTime;
431
+ return el;
432
+ };
433
+ exports._encodeGeneralizedTime = _encodeGeneralizedTime;
434
+ const _encodeUTCTime = (value, elGetter) => {
435
+ const el = elGetter(value, elGetter);
436
+ el.utcTime = value;
437
+ el.tagClass = index_1.ASN1TagClass.universal;
438
+ el.tagNumber = index_1.ASN1UniversalType.utcTime;
439
+ return el;
440
+ };
441
+ exports._encodeUTCTime = _encodeUTCTime;
442
+ const _encodeObjectDescriptor = (value, elGetter) => {
443
+ const el = elGetter(value, elGetter);
444
+ el.objectDescriptor = value;
445
+ el.tagClass = index_1.ASN1TagClass.universal;
446
+ el.tagNumber = index_1.ASN1UniversalType.objectDescriptor;
447
+ return el;
448
+ };
449
+ exports._encodeObjectDescriptor = _encodeObjectDescriptor;
450
+ const _encodeAny = (value) => {
451
+ return value;
452
+ };
453
+ exports._encodeAny = _encodeAny;
454
+ const _decodeBitString = (el) => {
455
+ return el.bitString;
456
+ };
457
+ exports._decodeBitString = _decodeBitString;
458
+ const _decodeBoolean = (el) => {
459
+ return el.boolean;
460
+ };
461
+ exports._decodeBoolean = _decodeBoolean;
462
+ const _decodeUnrestrictedCharacterString = (el) => {
463
+ return el.characterString;
464
+ };
465
+ exports._decodeUnrestrictedCharacterString = _decodeUnrestrictedCharacterString;
466
+ const _decodeDate = (el) => {
467
+ return el.date;
468
+ };
469
+ exports._decodeDate = _decodeDate;
470
+ const _decodeDateTime = (el) => {
471
+ return el.dateTime;
472
+ };
473
+ exports._decodeDateTime = _decodeDateTime;
474
+ const _decodeDuration = (el) => {
475
+ return el.duration;
476
+ };
477
+ exports._decodeDuration = _decodeDuration;
478
+ const _decodeEmbeddedPDV = (el) => {
479
+ return el.embeddedPDV;
480
+ };
481
+ exports._decodeEmbeddedPDV = _decodeEmbeddedPDV;
482
+ const _decodeEnumerated = (el) => {
483
+ return el.enumerated;
484
+ };
485
+ exports._decodeEnumerated = _decodeEnumerated;
486
+ const _decodeExternal = (el) => {
487
+ return el.external;
488
+ };
489
+ exports._decodeExternal = _decodeExternal;
490
+ const _decodeInstanceOf = (el) => {
491
+ return el.external;
492
+ };
493
+ exports._decodeInstanceOf = _decodeInstanceOf;
494
+ const _decodeInteger = (el) => {
495
+ return el.integer;
496
+ };
497
+ exports._decodeInteger = _decodeInteger;
498
+ const _decodeIRI = (el) => {
499
+ return el.oidIRI;
500
+ };
501
+ exports._decodeIRI = _decodeIRI;
502
+ const _decodeNull = () => {
503
+ return null;
504
+ };
505
+ exports._decodeNull = _decodeNull;
506
+ const _decodeObjectIdentifier = (el) => {
507
+ return el.objectIdentifier;
508
+ };
509
+ exports._decodeObjectIdentifier = _decodeObjectIdentifier;
510
+ const _decodeOctetString = (el) => {
511
+ return el.octetString;
512
+ };
513
+ exports._decodeOctetString = _decodeOctetString;
514
+ const _decodeReal = (el) => {
515
+ return el.real;
516
+ };
517
+ exports._decodeReal = _decodeReal;
518
+ const _decodeRelativeIRI = (el) => {
519
+ return el.relativeOIDIRI;
520
+ };
521
+ exports._decodeRelativeIRI = _decodeRelativeIRI;
522
+ const _decodeRelativeOID = (el) => {
523
+ return el.relativeObjectIdentifier;
524
+ };
525
+ exports._decodeRelativeOID = _decodeRelativeOID;
526
+ const _decodeSequence = (el) => {
527
+ return el.sequence;
528
+ };
529
+ exports._decodeSequence = _decodeSequence;
530
+ const _decodeSet = (el) => {
531
+ return el.set;
532
+ };
533
+ exports._decodeSet = _decodeSet;
534
+ const _decodeTime = (el) => {
535
+ return el.time;
536
+ };
537
+ exports._decodeTime = _decodeTime;
538
+ const _decodeTimeOfDay = (el) => {
539
+ return el.timeOfDay;
540
+ };
541
+ exports._decodeTimeOfDay = _decodeTimeOfDay;
542
+ const _decodeBMPString = (el) => {
543
+ return el.bmpString;
544
+ };
545
+ exports._decodeBMPString = _decodeBMPString;
546
+ const _decodeGeneralString = (el) => {
547
+ return el.generalString;
548
+ };
549
+ exports._decodeGeneralString = _decodeGeneralString;
550
+ const _decodeGraphicString = (el) => {
551
+ return el.graphicString;
552
+ };
553
+ exports._decodeGraphicString = _decodeGraphicString;
554
+ const _decodeIA5String = (el) => {
555
+ return el.ia5String;
556
+ };
557
+ exports._decodeIA5String = _decodeIA5String;
558
+ const _decodeISO646String = (el) => {
559
+ return el.ia5String;
560
+ };
561
+ exports._decodeISO646String = _decodeISO646String;
562
+ const _decodeNumericString = (el) => {
563
+ return el.numericString;
564
+ };
565
+ exports._decodeNumericString = _decodeNumericString;
566
+ const _decodePrintableString = (el) => {
567
+ return el.printableString;
568
+ };
569
+ exports._decodePrintableString = _decodePrintableString;
570
+ const _decodeTeletexString = (el) => {
571
+ return el.teletexString;
572
+ };
573
+ exports._decodeTeletexString = _decodeTeletexString;
574
+ const _decodeT61String = (el) => {
575
+ return el.teletexString;
576
+ };
577
+ exports._decodeT61String = _decodeT61String;
578
+ const _decodeUniversalString = (el) => {
579
+ return el.universalString;
580
+ };
581
+ exports._decodeUniversalString = _decodeUniversalString;
582
+ const _decodeUTF8String = (el) => {
583
+ return el.utf8String;
584
+ };
585
+ exports._decodeUTF8String = _decodeUTF8String;
586
+ const _decodeVideotexString = (el) => {
587
+ return el.videotexString;
588
+ };
589
+ exports._decodeVideotexString = _decodeVideotexString;
590
+ const _decodeVisibleString = (el) => {
591
+ return el.visibleString;
592
+ };
593
+ exports._decodeVisibleString = _decodeVisibleString;
594
+ const _decodeGeneralizedTime = (el) => {
595
+ return el.generalizedTime;
596
+ };
597
+ exports._decodeGeneralizedTime = _decodeGeneralizedTime;
598
+ const _decodeUTCTime = (el) => {
599
+ return el.utcTime;
600
+ };
601
+ exports._decodeUTCTime = _decodeUTCTime;
602
+ const _decodeObjectDescriptor = (el) => {
603
+ return el.objectDescriptor;
604
+ };
605
+ exports._decodeObjectDescriptor = _decodeObjectDescriptor;
606
+ const _decodeAny = (el) => {
607
+ return el;
608
+ };
609
+ exports._decodeAny = _decodeAny;
610
+ class ComponentSpec {
611
+ constructor(name, optional, selector, groupIndex, versionNumber) {
612
+ this.name = name;
613
+ this.optional = optional;
614
+ this.selector = selector;
615
+ this.groupIndex = groupIndex;
616
+ this.versionNumber = versionNumber;
617
+ }
618
+ }
619
+ exports.ComponentSpec = ComponentSpec;
620
+ function _parse_set(set, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }, maximumElements) {
621
+ const rootComponents = rootComponentTypeList1.concat(rootComponentTypeList2);
622
+ const components = rootComponents.concat(rootComponentTypeList2);
623
+ const elements = set.set;
624
+ {
625
+ const calculatedMaximumElements = (maximumElements === undefined)
626
+ ? (components.length + 100)
627
+ : maximumElements;
628
+ if (elements.length > calculatedMaximumElements) {
629
+ throw new Error(`SET '${set.name}' contained ${elements.length} elements, which exceeds the `
630
+ + `limit of ${calculatedMaximumElements} permitted elements. This may be a result `
631
+ + "of a Denial-of-Service (DoS) attack.");
632
+ }
633
+ }
634
+ {
635
+ const encounteredTags = new Set([]);
636
+ for (const e of elements) {
637
+ const tag = `${e.tagClass} ${e.tagNumber}`;
638
+ if (encounteredTags.has(tag)) {
639
+ throw new Error(`Duplicate tag '${tagClassName(e.tagClass)} ${e.tagNumber}' in SET '${set.name}'.`);
640
+ }
641
+ encounteredTags.add(tag);
642
+ }
643
+ }
644
+ const encounteredComponents = new Set([]);
645
+ const encounteredExtensionGroups = new Set([]);
646
+ for (let i = 0; i < elements.length; i++) {
647
+ const e = elements[i];
648
+ const spec = components
649
+ .find((cs) => cs.selector(i, elements));
650
+ if (!spec) {
651
+ unrecognizedExtensionHandler(e);
652
+ continue;
653
+ }
654
+ if (encounteredComponents.has(spec.name)) {
655
+ throw new Error(`SET '${set.name}' contained more than one '${spec.name}' component.`);
656
+ }
657
+ encounteredComponents.add(spec.name);
658
+ if (spec.groupIndex !== undefined) {
659
+ encounteredExtensionGroups.add(spec.groupIndex);
660
+ }
661
+ e.name = spec.name;
662
+ if (spec.name in decodingCallbacks) {
663
+ decodingCallbacks[spec.name](e, spec.name);
664
+ }
665
+ else {
666
+ unrecognizedExtensionHandler(e);
667
+ }
668
+ }
669
+ const missingRequiredComponents = rootComponents
670
+ .filter((c) => (!c.optional && !encounteredComponents.has(c.name)))
671
+ .map((c) => c.name);
672
+ Array.from(encounteredExtensionGroups).forEach((exg) => {
673
+ extensionAdditionsList
674
+ .filter((c) => ((c.groupIndex === exg)
675
+ && !c.optional)
676
+ && !encounteredComponents.has(c.name))
677
+ .forEach((c) => missingRequiredComponents.push(c.name));
678
+ });
679
+ if (missingRequiredComponents.length > 0) {
680
+ throw new Error(`SET '${set.name}' missing these required components: ${missingRequiredComponents.join(", ")}.`);
681
+ }
682
+ }
683
+ exports._parse_set = _parse_set;
684
+ function _parse_component_type_list(componentTypeList, decodingCallbacks, elements, isExtensionAdditionsList) {
685
+ let e = 0;
686
+ let s = 0;
687
+ let currentGroup = undefined;
688
+ while (s < componentTypeList.length) {
689
+ const element = elements[e];
690
+ const spec = componentTypeList[s];
691
+ if (!element) {
692
+ if (spec.optional) {
693
+ s++;
694
+ continue;
695
+ }
696
+ else if (isExtensionAdditionsList) {
697
+ if ((spec.groupIndex !== undefined) && (spec.groupIndex <= (currentGroup || Infinity))) {
698
+ throw new index_1.ASN1ConstructionError(`Missing required extension '${spec.name}' in SEQUENCE.`);
699
+ }
700
+ else {
701
+ s++;
702
+ continue;
703
+ }
704
+ }
705
+ else {
706
+ throw new index_1.ASN1ConstructionError(`Missing required component '${spec.name}' in SEQUENCE.`);
707
+ }
708
+ }
709
+ if (spec.selector(e, elements)) {
710
+ element.name = spec.name;
711
+ if (spec.name in decodingCallbacks) {
712
+ decodingCallbacks[spec.name](element, spec.name);
713
+ }
714
+ if (spec.groupIndex !== undefined) {
715
+ currentGroup = spec.groupIndex;
716
+ }
717
+ e++;
718
+ }
719
+ else if (!spec.optional) {
720
+ throw new Error(`Component '${spec.name}' missing from SEQUENCE.`);
721
+ }
722
+ s++;
723
+ }
724
+ return e;
725
+ }
726
+ exports._parse_component_type_list = _parse_component_type_list;
727
+ function _get_possible_initial_components(componentTypeList) {
728
+ let i = 0;
729
+ while (i < componentTypeList.length) {
730
+ if (!(componentTypeList[i++].optional)) {
731
+ break;
732
+ }
733
+ }
734
+ return componentTypeList.slice(0, i);
735
+ }
736
+ exports._get_possible_initial_components = _get_possible_initial_components;
737
+ function _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
738
+ const elements = seq.sequence;
739
+ const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
740
+ const possibleInitialRCTL2Components = _get_possible_initial_components(rootComponentTypeList2);
741
+ const rctl2EntirelyOptional = rootComponentTypeList2.every((ct) => ct.optional);
742
+ const extensionsOnwards = elements.slice(startOfExtensions);
743
+ let numberOfExtensionElements = extensionsOnwards
744
+ .findIndex((e, i) => possibleInitialRCTL2Components
745
+ .some((pirctl2c) => pirctl2c.selector(i, extensionsOnwards)));
746
+ if (startOfExtensions === -1) {
747
+ if (rctl2EntirelyOptional) {
748
+ numberOfExtensionElements = (elements.length - startOfExtensions);
749
+ }
750
+ else {
751
+ throw new Error(`Trailing root component type list for SEQUENCE '${seq.name}' not found.`);
752
+ }
753
+ }
754
+ const startOfRCTL2 = (startOfExtensions + numberOfExtensionElements);
755
+ const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions, startOfRCTL2), true);
756
+ const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
757
+ elements
758
+ .slice(endOfRecognizedExtensions, startOfRCTL2)
759
+ .forEach((x) => unrecognizedExtensionHandler(x));
760
+ const numberOfRCTL2ElementsRead = _parse_component_type_list(rootComponentTypeList2, decodingCallbacks, elements.slice(startOfRCTL2), false);
761
+ if ((startOfRCTL2 + numberOfRCTL2ElementsRead) !== elements.length) {
762
+ throw new Error(`SEQUENCE '${seq.name}' had excess elements at the end.`);
763
+ }
764
+ }
765
+ exports._parse_sequence_with_trailing_rctl = _parse_sequence_with_trailing_rctl;
766
+ function _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler = () => { }) {
767
+ const elements = seq.sequence;
768
+ const startOfExtensions = _parse_component_type_list(rootComponentTypeList1, decodingCallbacks, elements, false);
769
+ const numberOfExtensionsRead = _parse_component_type_list(extensionAdditionsList, decodingCallbacks, elements.slice(startOfExtensions), true);
770
+ const endOfRecognizedExtensions = (startOfExtensions + numberOfExtensionsRead);
771
+ elements
772
+ .slice(endOfRecognizedExtensions)
773
+ .forEach((x) => unrecognizedExtensionHandler(x));
774
+ }
775
+ exports._parse_sequence_without_trailing_rctl = _parse_sequence_without_trailing_rctl;
776
+ function _parse_sequence(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler = () => { }) {
777
+ if (rootComponentTypeList2.length > 0) {
778
+ _parse_sequence_with_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, rootComponentTypeList2, unrecognizedExtensionHandler);
779
+ }
780
+ else {
781
+ _parse_sequence_without_trailing_rctl(seq, decodingCallbacks, rootComponentTypeList1, extensionAdditionsList, unrecognizedExtensionHandler);
782
+ }
783
+ }
784
+ exports._parse_sequence = _parse_sequence;
785
+ function _encode_choice(choices, elGetter) {
786
+ return function (value) {
787
+ if (value instanceof index_1.ASN1Element) {
788
+ return value;
789
+ }
790
+ const key = Object.keys(value)[0];
791
+ if (!key) {
792
+ throw new Error("Empty choice value object.");
793
+ }
794
+ const encoder = choices[key];
795
+ if (!encoder) {
796
+ throw new Error(`Unrecognized alternative '${key}'.`);
797
+ }
798
+ return encoder(value[key], elGetter);
799
+ };
800
+ }
801
+ exports._encode_choice = _encode_choice;
802
+ function _decode_inextensible_choice(choices) {
803
+ return function (el) {
804
+ const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
805
+ if (!result) {
806
+ if (choices["*"]) {
807
+ const ret = {};
808
+ ret[choices["*"][0]] = choices["*"][1](el);
809
+ return ret;
810
+ }
811
+ else {
812
+ throw new Error(`Unrecognized CHOICE tag '${tagClassName(el.tagClass)} ${el.tagNumber}'.`);
813
+ }
814
+ }
815
+ const [name, decoder] = result;
816
+ const ret = {};
817
+ ret[name] = decoder(el);
818
+ return ret;
819
+ };
820
+ }
821
+ exports._decode_inextensible_choice = _decode_inextensible_choice;
822
+ function _decode_extensible_choice(choices) {
823
+ return function (el) {
824
+ const result = choices[`${tagClassName(el.tagClass)} ${el.tagNumber}`];
825
+ if (!result) {
826
+ return el;
827
+ }
828
+ const [name, decoder] = result;
829
+ const ret = {};
830
+ ret[name] = decoder(el);
831
+ return ret;
832
+ };
833
+ }
834
+ exports._decode_extensible_choice = _decode_extensible_choice;
835
+ function _decodeSequenceOf(decoderGetter) {
836
+ return function (el) {
837
+ return el.sequence.map(decoderGetter());
838
+ };
839
+ }
840
+ exports._decodeSequenceOf = _decodeSequenceOf;
841
+ function _encodeSequenceOf(encoderGetter, outerElGetter) {
842
+ return function (value) {
843
+ const el = outerElGetter(value, outerElGetter);
844
+ const encoder = encoderGetter();
845
+ el.sequence = value.map((v) => encoder(v, outerElGetter));
846
+ el.tagClass = index_1.ASN1TagClass.universal;
847
+ el.tagNumber = index_1.ASN1UniversalType.sequence;
848
+ return el;
849
+ };
850
+ }
851
+ exports._encodeSequenceOf = _encodeSequenceOf;
852
+ function _decodeSetOf(decoderGetter) {
853
+ return function (el) {
854
+ return el.set.map(decoderGetter());
855
+ };
856
+ }
857
+ exports._decodeSetOf = _decodeSetOf;
858
+ function _encodeSetOf(encoderGetter, outerElGetter) {
859
+ return function (value) {
860
+ const el = outerElGetter(value, outerElGetter);
861
+ const encoder = encoderGetter();
862
+ el.set = value.map((v) => encoder(v, outerElGetter));
863
+ el.tagClass = index_1.ASN1TagClass.universal;
864
+ el.tagNumber = index_1.ASN1UniversalType.set;
865
+ return el;
866
+ };
867
+ }
868
+ exports._encodeSetOf = _encodeSetOf;
869
+ const _encodeBigInt = (value, elGetter) => {
870
+ const el = elGetter(value, elGetter);
871
+ el.octetString = value;
872
+ el.tagClass = index_1.ASN1TagClass.universal;
873
+ el.tagNumber = index_1.ASN1UniversalType.integer;
874
+ return el;
875
+ };
876
+ exports._encodeBigInt = _encodeBigInt;
877
+ const _decodeBigInt = (el) => {
878
+ return el.octetString;
879
+ };
880
+ exports._decodeBigInt = _decodeBigInt;
878
881
  //# sourceMappingURL=functional.js.map