asn1-ts 8.0.4 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/README.md +2 -1
  2. package/dist/{node/ConstructedElementSpecification.d.ts → ConstructedElementSpecification.d.mts} +2 -2
  3. package/dist/ConstructedElementSpecification.mjs +1 -0
  4. package/dist/{node/asn1.d.ts → asn1.d.mts} +8 -7
  5. package/dist/{node/asn1.js → asn1.mjs} +90 -130
  6. package/dist/{node/classes/ABSTRACT-SYNTAX.d.ts → classes/ABSTRACT-SYNTAX.d.mts} +2 -2
  7. package/dist/classes/ABSTRACT-SYNTAX.mjs +1 -0
  8. package/dist/{node/classes/TYPE-IDENTIFIER.d.ts → classes/TYPE-IDENTIFIER.d.mts} +2 -2
  9. package/dist/classes/TYPE-IDENTIFIER.mjs +1 -0
  10. package/dist/classes/index.d.mts +2 -0
  11. package/dist/classes/index.mjs +1 -0
  12. package/dist/{node/codecs/ber/decoders/decodeBitString.d.ts → codecs/ber/decoders/decodeBitString.d.mts} +1 -1
  13. package/dist/codecs/ber/decoders/decodeBitString.mjs +19 -0
  14. package/dist/{node/codecs/ber/decoders/decodeBoolean.d.ts → codecs/ber/decoders/decodeBoolean.d.mts} +1 -1
  15. package/dist/codecs/ber/decoders/decodeBoolean.mjs +7 -0
  16. package/dist/{node/codecs/ber/decoders/decodeDuration.d.ts → codecs/ber/decoders/decodeDuration.d.mts} +1 -1
  17. package/dist/{node/codecs/ber/decoders/decodeDuration.js → codecs/ber/decoders/decodeDuration.mjs} +9 -48
  18. package/dist/{node/codecs/ber/decoders/decodeGeneralizedTime.d.ts → codecs/ber/decoders/decodeGeneralizedTime.d.mts} +1 -1
  19. package/dist/{node/codecs/ber/decoders/decodeGeneralizedTime.js → codecs/ber/decoders/decodeGeneralizedTime.mjs} +10 -49
  20. package/dist/{node/codecs/ber/decoders/decodeReal.d.ts → codecs/ber/decoders/decodeReal.d.mts} +1 -1
  21. package/dist/codecs/ber/decoders/decodeReal.mjs +108 -0
  22. package/dist/codecs/ber/decoders/decodeSequence.d.mts +3 -0
  23. package/dist/codecs/ber/decoders/decodeSequence.mjs +11 -0
  24. package/dist/{node/codecs/ber/decoders/decodeUTCTime.d.ts → codecs/ber/decoders/decodeUTCTime.d.mts} +1 -1
  25. package/dist/codecs/ber/decoders/decodeUTCTime.mjs +45 -0
  26. package/dist/{node/codecs/ber/encoders/encodeGeneralString.d.ts → codecs/ber/encoders/encodeGeneralString.d.mts} +1 -1
  27. package/dist/codecs/ber/encoders/encodeGeneralString.mjs +13 -0
  28. package/dist/{node/codecs/ber/encoders/encodeGraphicString.d.ts → codecs/ber/encoders/encodeGraphicString.d.mts} +1 -1
  29. package/dist/codecs/ber/encoders/encodeGraphicString.mjs +13 -0
  30. package/dist/{node/codecs/ber/encoders/encodeNumericString.d.ts → codecs/ber/encoders/encodeNumericString.d.mts} +1 -1
  31. package/dist/codecs/ber/encoders/encodeNumericString.mjs +13 -0
  32. package/dist/{node/codecs/ber/encoders/encodeObjectDescriptor.d.ts → codecs/ber/encoders/encodeObjectDescriptor.d.mts} +1 -1
  33. package/dist/codecs/ber/encoders/encodeObjectDescriptor.mjs +13 -0
  34. package/dist/{node/codecs/ber/encoders/encodePrintableString.d.ts → codecs/ber/encoders/encodePrintableString.d.mts} +1 -1
  35. package/dist/codecs/ber/encoders/encodePrintableString.mjs +14 -0
  36. package/dist/{node/codecs/ber/encoders/encodeVisibleString.d.ts → codecs/ber/encoders/encodeVisibleString.d.mts} +1 -1
  37. package/dist/codecs/ber/encoders/encodeVisibleString.mjs +13 -0
  38. package/dist/{node/codecs/ber.d.ts → codecs/ber.d.mts} +5 -5
  39. package/dist/{node/codecs/ber.js → codecs/ber.mjs} +139 -176
  40. package/dist/codecs/cer/decoders/decodeSequence.d.mts +3 -0
  41. package/dist/codecs/cer/decoders/decodeSequence.mjs +14 -0
  42. package/dist/{node/codecs/cer.d.ts → codecs/cer.d.mts} +5 -5
  43. package/dist/{node/codecs/cer.js → codecs/cer.mjs} +143 -180
  44. package/dist/{node/codecs/coer/decoders/decodeBoolean.d.ts → codecs/coer/decoders/decodeBoolean.d.mts} +1 -1
  45. package/dist/codecs/coer/decoders/decodeBoolean.mjs +10 -0
  46. package/dist/{node/codecs/der/decoders/decodeBitString.d.ts → codecs/der/decoders/decodeBitString.d.mts} +1 -1
  47. package/dist/codecs/der/decoders/decodeBitString.mjs +23 -0
  48. package/dist/{node/codecs/der/decoders/decodeBoolean.d.ts → codecs/der/decoders/decodeBoolean.d.mts} +1 -1
  49. package/dist/codecs/der/decoders/decodeBoolean.mjs +10 -0
  50. package/dist/{node/codecs/der/decoders/decodeDuration.d.ts → codecs/der/decoders/decodeDuration.d.mts} +1 -1
  51. package/dist/{node/codecs/der/decoders/decodeDuration.js → codecs/der/decoders/decodeDuration.mjs} +9 -48
  52. package/dist/{node/codecs/der/decoders/decodeGeneralizedTime.d.ts → codecs/der/decoders/decodeGeneralizedTime.d.mts} +1 -1
  53. package/dist/codecs/der/decoders/decodeGeneralizedTime.mjs +42 -0
  54. package/dist/{node/codecs/der/decoders/decodeReal.d.ts → codecs/der/decoders/decodeReal.d.mts} +1 -1
  55. package/dist/codecs/der/decoders/decodeReal.mjs +95 -0
  56. package/dist/codecs/der/decoders/decodeSequence.d.mts +3 -0
  57. package/dist/codecs/der/decoders/decodeSequence.mjs +14 -0
  58. package/dist/{node/codecs/der/decoders/decodeUTCTime.d.ts → codecs/der/decoders/decodeUTCTime.d.mts} +1 -1
  59. package/dist/codecs/der/decoders/decodeUTCTime.mjs +24 -0
  60. package/dist/{node/codecs/der.d.ts → codecs/der.d.mts} +5 -5
  61. package/dist/{node/codecs/der.js → codecs/der.mjs} +136 -173
  62. package/dist/{node/codecs/x690/decoders/decodeCharacterString.d.ts → codecs/x690/decoders/decodeCharacterString.d.mts} +1 -1
  63. package/dist/codecs/x690/decoders/decodeCharacterString.mjs +12 -0
  64. package/dist/{node/codecs/x690/decoders/decodeDate.d.ts → codecs/x690/decoders/decodeDate.d.mts} +1 -1
  65. package/dist/codecs/x690/decoders/decodeDate.mjs +10 -0
  66. package/dist/{node/codecs/x690/decoders/decodeDateTime.d.ts → codecs/x690/decoders/decodeDateTime.d.mts} +1 -1
  67. package/dist/codecs/x690/decoders/decodeDateTime.mjs +13 -0
  68. package/dist/{node/codecs/x690/decoders/decodeEmbeddedPDV.d.ts → codecs/x690/decoders/decodeEmbeddedPDV.d.mts} +1 -1
  69. package/dist/codecs/x690/decoders/decodeEmbeddedPDV.mjs +8 -0
  70. package/dist/{node/codecs/x690/decoders/decodeExternal.d.ts → codecs/x690/decoders/decodeExternal.d.mts} +1 -1
  71. package/dist/codecs/x690/decoders/decodeExternal.mjs +39 -0
  72. package/dist/{node/codecs/x690/decoders/decodeGeneralString.d.ts → codecs/x690/decoders/decodeGeneralString.d.mts} +1 -1
  73. package/dist/codecs/x690/decoders/decodeGeneralString.mjs +12 -0
  74. package/dist/{node/codecs/x690/decoders/decodeGraphicString.d.ts → codecs/x690/decoders/decodeGraphicString.d.mts} +1 -1
  75. package/dist/codecs/x690/decoders/decodeGraphicString.mjs +12 -0
  76. package/dist/{node/codecs/x690/decoders/decodeInteger.d.ts → codecs/x690/decoders/decodeInteger.d.mts} +1 -1
  77. package/dist/codecs/x690/decoders/decodeInteger.mjs +16 -0
  78. package/dist/{node/codecs/x690/decoders/decodeNumericString.d.ts → codecs/x690/decoders/decodeNumericString.d.mts} +1 -1
  79. package/dist/codecs/x690/decoders/decodeNumericString.mjs +12 -0
  80. package/dist/{node/codecs/x690/decoders/decodeOIDIRI.d.ts → codecs/x690/decoders/decodeOIDIRI.d.mts} +1 -1
  81. package/dist/codecs/x690/decoders/decodeOIDIRI.mjs +4 -0
  82. package/dist/{node/codecs/x690/decoders/decodeObjectDescriptor.d.ts → codecs/x690/decoders/decodeObjectDescriptor.d.mts} +1 -1
  83. package/dist/codecs/x690/decoders/decodeObjectDescriptor.mjs +12 -0
  84. package/dist/{node/codecs/x690/decoders/decodeObjectIdentifier.d.ts → codecs/x690/decoders/decodeObjectIdentifier.d.mts} +1 -1
  85. package/dist/codecs/x690/decoders/decodeObjectIdentifier.mjs +46 -0
  86. package/dist/{node/codecs/x690/decoders/decodePrintableString.d.ts → codecs/x690/decoders/decodePrintableString.d.mts} +1 -1
  87. package/dist/codecs/x690/decoders/decodePrintableString.mjs +13 -0
  88. package/dist/{node/codecs/x690/decoders/decodeRelativeOIDIRI.d.ts → codecs/x690/decoders/decodeRelativeOIDIRI.d.mts} +1 -1
  89. package/dist/codecs/x690/decoders/decodeRelativeOIDIRI.mjs +4 -0
  90. package/dist/{node/codecs/x690/decoders/decodeRelativeObjectIdentifier.d.ts → codecs/x690/decoders/decodeRelativeObjectIdentifier.d.mts} +1 -1
  91. package/dist/codecs/x690/decoders/decodeRelativeObjectIdentifier.mjs +24 -0
  92. package/dist/{node/codecs/x690/decoders/decodeTime.d.ts → codecs/x690/decoders/decodeTime.d.mts} +1 -1
  93. package/dist/codecs/x690/decoders/decodeTime.mjs +4 -0
  94. package/dist/{node/codecs/x690/decoders/decodeTimeOfDay.d.ts → codecs/x690/decoders/decodeTimeOfDay.d.mts} +1 -1
  95. package/dist/codecs/x690/decoders/decodeTimeOfDay.mjs +14 -0
  96. package/dist/{node/codecs/x690/decoders/decodeVisibleString.d.ts → codecs/x690/decoders/decodeVisibleString.d.mts} +1 -1
  97. package/dist/codecs/x690/decoders/decodeVisibleString.mjs +12 -0
  98. package/dist/{node/codecs/x690/encoders/encodeBitString.d.ts → codecs/x690/encoders/encodeBitString.d.mts} +1 -1
  99. package/dist/codecs/x690/encoders/encodeBitString.mjs +13 -0
  100. package/dist/{node/codecs/x690/encoders/encodeBoolean.d.ts → codecs/x690/encoders/encodeBoolean.d.mts} +1 -1
  101. package/dist/codecs/x690/encoders/encodeBoolean.mjs +3 -0
  102. package/dist/{node/codecs/x690/encoders/encodeCharacterString.d.ts → codecs/x690/encoders/encodeCharacterString.d.mts} +1 -1
  103. package/dist/codecs/x690/encoders/encodeCharacterString.mjs +9 -0
  104. package/dist/{node/codecs/x690/encoders/encodeDate.d.ts → codecs/x690/encoders/encodeDate.d.mts} +1 -1
  105. package/dist/codecs/x690/encoders/encodeDate.mjs +11 -0
  106. package/dist/{node/codecs/x690/encoders/encodeDateTime.d.ts → codecs/x690/encoders/encodeDateTime.d.mts} +1 -1
  107. package/dist/codecs/x690/encoders/encodeDateTime.mjs +14 -0
  108. package/dist/{node/codecs/x690/encoders/encodeDuration.d.ts → codecs/x690/encoders/encodeDuration.d.mts} +1 -1
  109. package/dist/{node/codecs/x690/encoders/encodeDuration.js → codecs/x690/encoders/encodeDuration.mjs} +5 -11
  110. package/dist/{node/codecs/x690/encoders/encodeEmbeddedPDV.d.ts → codecs/x690/encoders/encodeEmbeddedPDV.d.mts} +1 -1
  111. package/dist/codecs/x690/encoders/encodeEmbeddedPDV.mjs +9 -0
  112. package/dist/{node/codecs/x690/encoders/encodeExternal.d.ts → codecs/x690/encoders/encodeExternal.d.mts} +1 -1
  113. package/dist/codecs/x690/encoders/encodeExternal.mjs +36 -0
  114. package/dist/{node/codecs/x690/encoders/encodeGeneralizedTime.d.ts → codecs/x690/encoders/encodeGeneralizedTime.d.mts} +1 -1
  115. package/dist/{node/codecs/x690/encoders/encodeGeneralizedTime.js → codecs/x690/encoders/encodeGeneralizedTime.mjs} +3 -9
  116. package/dist/{node/codecs/x690/encoders/encodeInteger.d.ts → codecs/x690/encoders/encodeInteger.d.mts} +1 -1
  117. package/dist/codecs/x690/encoders/encodeInteger.mjs +4 -0
  118. package/dist/{node/codecs/x690/encoders/encodeOIDIRI.d.ts → codecs/x690/encoders/encodeOIDIRI.d.mts} +1 -1
  119. package/dist/codecs/x690/encoders/encodeOIDIRI.mjs +4 -0
  120. package/dist/codecs/x690/encoders/encodeObjectIdentifier.d.mts +3 -0
  121. package/dist/{node/codecs/x690/encoders/encodeObjectIdentifier.js → codecs/x690/encoders/encodeObjectIdentifier.mjs} +2 -4
  122. package/dist/{node/codecs/x690/encoders/encodeReal.d.ts → codecs/x690/encoders/encodeReal.d.mts} +1 -1
  123. package/dist/codecs/x690/encoders/encodeReal.mjs +4 -0
  124. package/dist/{node/codecs/x690/encoders/encodeRelativeOIDIRI.d.ts → codecs/x690/encoders/encodeRelativeOIDIRI.d.mts} +1 -1
  125. package/dist/codecs/x690/encoders/encodeRelativeOIDIRI.mjs +4 -0
  126. package/dist/{node/codecs/x690/encoders/encodeRelativeObjectIdentifier.d.ts → codecs/x690/encoders/encodeRelativeObjectIdentifier.d.mts} +1 -1
  127. package/dist/{node/codecs/x690/encoders/encodeRelativeObjectIdentifier.js → codecs/x690/encoders/encodeRelativeObjectIdentifier.mjs} +2 -4
  128. package/dist/codecs/x690/encoders/encodeSequence.d.mts +3 -0
  129. package/dist/codecs/x690/encoders/encodeSequence.mjs +4 -0
  130. package/dist/{node/codecs/x690/encoders/encodeTime.d.ts → codecs/x690/encoders/encodeTime.d.mts} +1 -1
  131. package/dist/codecs/x690/encoders/encodeTime.mjs +4 -0
  132. package/dist/{node/codecs/x690/encoders/encodeTimeOfDay.d.ts → codecs/x690/encoders/encodeTimeOfDay.d.mts} +1 -1
  133. package/dist/codecs/x690/encoders/encodeTimeOfDay.mjs +4 -0
  134. package/dist/{node/codecs/x690/encoders/encodeUTCTime.d.ts → codecs/x690/encoders/encodeUTCTime.d.mts} +1 -1
  135. package/dist/{node/codecs/x690/encoders/encodeUTCTime.js → codecs/x690/encoders/encodeUTCTime.mjs} +3 -9
  136. package/dist/{node/errors.d.ts → errors.d.mts} +1 -1
  137. package/dist/{node/errors.js → errors.mjs} +26 -23
  138. package/dist/{node/functional.d.ts → functional.d.mts} +2 -2
  139. package/dist/functional.mjs +766 -0
  140. package/dist/index.d.mts +16 -0
  141. package/dist/index.mjs +15 -0
  142. package/dist/interfaces/Byteable.d.mts +4 -0
  143. package/dist/interfaces/Byteable.mjs +1 -0
  144. package/dist/interfaces/CharacterValidationFunction.mjs +1 -0
  145. package/dist/interfaces/Debyteable.mjs +1 -0
  146. package/dist/{node/interfaces/Deelementable.d.ts → interfaces/Deelementable.d.mts} +1 -1
  147. package/dist/interfaces/Deelementable.mjs +1 -0
  148. package/dist/interfaces/Destringable.mjs +1 -0
  149. package/dist/interfaces/Elementable.d.mts +4 -0
  150. package/dist/interfaces/Elementable.mjs +1 -0
  151. package/dist/interfaces/Enbyteable.mjs +1 -0
  152. package/dist/{node/interfaces/Enelementable.d.ts → interfaces/Enelementable.d.mts} +1 -1
  153. package/dist/interfaces/Enelementable.mjs +1 -0
  154. package/dist/interfaces/Enstringable.mjs +1 -0
  155. package/dist/{node/interfaces/Identified.d.ts → interfaces/Identified.d.mts} +1 -1
  156. package/dist/interfaces/Identified.mjs +1 -0
  157. package/dist/interfaces/Long.mjs +1 -0
  158. package/dist/interfaces/Named.mjs +1 -0
  159. package/dist/interfaces/Stringable.d.mts +4 -0
  160. package/dist/interfaces/Stringable.mjs +1 -0
  161. package/dist/interfaces/index.d.mts +12 -0
  162. package/dist/interfaces/index.mjs +1 -0
  163. package/dist/{node/macros.d.ts → macros.d.mts} +5 -5
  164. package/dist/macros.mjs +14 -0
  165. package/dist/{node/types/CharacterString.d.ts → types/CharacterString.d.mts} +1 -1
  166. package/dist/{node/types/CharacterString.js → types/CharacterString.mjs} +3 -4
  167. package/dist/{node/types/EmbeddedPDV.d.ts → types/EmbeddedPDV.d.mts} +1 -1
  168. package/dist/{node/types/EmbeddedPDV.js → types/EmbeddedPDV.mjs} +3 -4
  169. package/dist/{node/types/External.d.ts → types/External.d.mts} +2 -2
  170. package/dist/{node/types/External.js → types/External.mjs} +7 -9
  171. package/dist/{node/types/ObjectIdentifier.d.ts → types/ObjectIdentifier.d.mts} +1 -0
  172. package/dist/{node/types/ObjectIdentifier.js → types/ObjectIdentifier.mjs} +6 -11
  173. package/dist/{node/types/TypeIdentifier.d.ts → types/TypeIdentifier.d.mts} +2 -2
  174. package/dist/types/TypeIdentifier.mjs +8 -0
  175. package/dist/types/index.d.mts +18 -0
  176. package/dist/types/index.mjs +18 -0
  177. package/dist/{node/types/time/DATE-ENCODING.d.ts → types/time/DATE-ENCODING.d.mts} +1 -1
  178. package/dist/types/time/DATE-ENCODING.mjs +13 -0
  179. package/dist/{node/types/time/DURATION-EQUIVALENT.d.ts → types/time/DURATION-EQUIVALENT.d.mts} +1 -1
  180. package/dist/types/time/DURATION-EQUIVALENT.mjs +93 -0
  181. package/dist/{node/types/time/DURATION-INTERVAL-ENCODING.d.ts → types/time/DURATION-INTERVAL-ENCODING.d.mts} +1 -1
  182. package/dist/types/time/DURATION-INTERVAL-ENCODING.mjs +50 -0
  183. package/dist/{node/types/time/HOURS-DIFF-ENCODING.d.ts → types/time/HOURS-DIFF-ENCODING.d.mts} +1 -1
  184. package/dist/types/time/HOURS-DIFF-ENCODING.mjs +11 -0
  185. package/dist/{node/types/time/HOURS-ENCODING.d.ts → types/time/HOURS-ENCODING.d.mts} +1 -1
  186. package/dist/types/time/HOURS-ENCODING.mjs +8 -0
  187. package/dist/{node/types/time/HOURS-MINUTES-DIFF-ENCODING.d.ts → types/time/HOURS-MINUTES-DIFF-ENCODING.d.mts} +1 -1
  188. package/dist/types/time/HOURS-MINUTES-DIFF-ENCODING.mjs +14 -0
  189. package/dist/{node/types/time/HOURS-MINUTES-ENCODING.d.ts → types/time/HOURS-MINUTES-ENCODING.d.mts} +1 -1
  190. package/dist/types/time/HOURS-MINUTES-ENCODING.mjs +11 -0
  191. package/dist/{node/types/time/TIME-OF-DAY-DIFF-ENCODING.d.ts → types/time/TIME-OF-DAY-DIFF-ENCODING.d.mts} +1 -1
  192. package/dist/types/time/TIME-OF-DAY-DIFF-ENCODING.mjs +17 -0
  193. package/dist/{node/types/time/TIME-OF-DAY-ENCODING.d.ts → types/time/TIME-OF-DAY-ENCODING.d.mts} +1 -1
  194. package/dist/types/time/TIME-OF-DAY-ENCODING.mjs +14 -0
  195. package/dist/{node/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.d.ts → types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.d.mts} +1 -1
  196. package/dist/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.mjs +20 -0
  197. package/dist/{node/types/time/TIME-OF-DAY-FRACTION-ENCODING.d.ts → types/time/TIME-OF-DAY-FRACTION-ENCODING.d.mts} +1 -1
  198. package/dist/types/time/TIME-OF-DAY-FRACTION-ENCODING.mjs +17 -0
  199. package/dist/{node/types/time/YEAR-ENCODING.d.ts → types/time/YEAR-ENCODING.d.mts} +1 -1
  200. package/dist/types/time/YEAR-ENCODING.mjs +6 -0
  201. package/dist/{node/types/time/YEAR-MONTH-ENCODING.d.ts → types/time/YEAR-MONTH-ENCODING.d.mts} +1 -1
  202. package/dist/types/time/YEAR-MONTH-ENCODING.mjs +10 -0
  203. package/dist/utils/base128Length.mjs +3 -0
  204. package/dist/{node/utils/bigint.d.ts → utils/bigint.d.mts} +2 -1
  205. package/dist/{node/utils/bigint.js → utils/bigint.mjs} +7 -10
  206. package/dist/{node/utils/compareSetOfElementsCanonically.d.ts → utils/compareSetOfElementsCanonically.d.mts} +1 -1
  207. package/dist/{node/utils/compareSetOfElementsCanonically.js → utils/compareSetOfElementsCanonically.mjs} +1 -4
  208. package/dist/{node/utils/convertBytesToText.js → utils/convertBytesToText.mjs} +4 -6
  209. package/dist/utils/convertTextToBytes.mjs +11 -0
  210. package/dist/utils/decodeIEEE754DoublePrecisionFloat.mjs +3 -0
  211. package/dist/utils/decodeIEEE754SinglePrecisionFloat.mjs +3 -0
  212. package/dist/utils/decodeSignedBigEndianInteger.mjs +13 -0
  213. package/dist/utils/decodeUnsignedBigEndianInteger.mjs +13 -0
  214. package/dist/utils/decodeX690RealNumber.mjs +108 -0
  215. package/dist/utils/dissectFloat.mjs +13 -0
  216. package/dist/utils/encodeIEEE754DoublePrecisionFloat.mjs +3 -0
  217. package/dist/utils/encodeIEEE754SinglePrecisionFloat.mjs +3 -0
  218. package/dist/utils/encodeSignedBigEndianInteger.mjs +36 -0
  219. package/dist/utils/encodeUnsignedBigEndianInteger.mjs +23 -0
  220. package/dist/utils/encodeX690Base10RealNumber.mjs +21 -0
  221. package/dist/utils/encodeX690BinaryRealNumber.mjs +43 -0
  222. package/dist/utils/getBitFromBase128.mjs +4 -0
  223. package/dist/utils/getBitFromBase256.mjs +3 -0
  224. package/dist/{node/utils/index.d.ts → utils/index.d.mts} +22 -22
  225. package/dist/utils/index.mjs +22 -0
  226. package/dist/{node/utils/isInCanonicalOrder.d.ts → utils/isInCanonicalOrder.d.mts} +1 -1
  227. package/dist/{node/utils/isInCanonicalOrder.js → utils/isInCanonicalOrder.mjs} +4 -7
  228. package/dist/{node/utils/isUniquelyTagged.d.ts → utils/isUniquelyTagged.d.mts} +1 -1
  229. package/dist/{node/utils/isUniquelyTagged.js → utils/isUniquelyTagged.mjs} +1 -4
  230. package/dist/{node/utils/packBits.d.ts → utils/packBits.d.mts} +1 -1
  231. package/dist/{node/utils/packBits.js → utils/packBits.mjs} +3 -6
  232. package/dist/{node/utils/setBitInBase128.js → utils/setBitInBase128.mjs} +1 -4
  233. package/dist/{node/utils/setBitInBase256.js → utils/setBitInBase256.mjs} +1 -4
  234. package/dist/{node/utils/sortCanonically.d.ts → utils/sortCanonically.d.mts} +1 -1
  235. package/dist/{node/utils/sortCanonically.js → utils/sortCanonically.mjs} +2 -4
  236. package/dist/utils/splitOctetsCanonically.mjs +5 -0
  237. package/dist/{node/utils/trimLeadingPaddingBytes.js → utils/trimLeadingPaddingBytes.mjs} +1 -4
  238. package/dist/{node/utils/unpackBits.d.ts → utils/unpackBits.d.mts} +1 -1
  239. package/dist/{node/utils/unpackBits.js → utils/unpackBits.mjs} +3 -6
  240. package/dist/{node/validators/datetimeComponentValidator.d.ts → validators/datetimeComponentValidator.d.mts} +1 -1
  241. package/dist/validators/datetimeComponentValidator.mjs +14 -0
  242. package/dist/{node/validators/index.d.ts → validators/index.d.mts} +6 -6
  243. package/dist/validators/index.mjs +6 -0
  244. package/dist/validators/isGeneralCharacter.mjs +3 -0
  245. package/dist/validators/isGraphicCharacter.mjs +3 -0
  246. package/dist/validators/isNumericCharacter.mjs +3 -0
  247. package/dist/validators/isObjectDescriptorCharacter.mjs +4 -0
  248. package/dist/{node/validators/isPrintableCharacter.js → validators/isPrintableCharacter.mjs} +1 -4
  249. package/dist/validators/isVisibleCharacter.mjs +4 -0
  250. package/dist/{node/validators/validateConstruction.d.ts → validators/validateConstruction.d.mts} +2 -2
  251. package/dist/validators/validateConstruction.mjs +37 -0
  252. package/dist/validators/validateDate.mjs +49 -0
  253. package/dist/validators/validateDateTime.mjs +6 -0
  254. package/dist/validators/validateTime.mjs +21 -0
  255. package/dist/{node/values.js → values.mjs} +36 -39
  256. package/dist/{node/x690.d.ts → x690.d.mts} +2 -2
  257. package/dist/x690.mjs +95 -0
  258. package/package.json +8 -7
  259. package/dist/node/ConstructedElementSpecification.js +0 -2
  260. package/dist/node/classes/ABSTRACT-SYNTAX.js +0 -2
  261. package/dist/node/classes/TYPE-IDENTIFIER.js +0 -2
  262. package/dist/node/classes/index.d.ts +0 -2
  263. package/dist/node/classes/index.js +0 -2
  264. package/dist/node/codecs/ber/decoders/decodeBitString.js +0 -55
  265. package/dist/node/codecs/ber/decoders/decodeBoolean.js +0 -43
  266. package/dist/node/codecs/ber/decoders/decodeReal.js +0 -147
  267. package/dist/node/codecs/ber/decoders/decodeSequence.d.ts +0 -3
  268. package/dist/node/codecs/ber/decoders/decodeSequence.js +0 -17
  269. package/dist/node/codecs/ber/decoders/decodeUTCTime.js +0 -84
  270. package/dist/node/codecs/ber/encoders/encodeGeneralString.js +0 -19
  271. package/dist/node/codecs/ber/encoders/encodeGraphicString.js +0 -19
  272. package/dist/node/codecs/ber/encoders/encodeNumericString.js +0 -19
  273. package/dist/node/codecs/ber/encoders/encodeObjectDescriptor.js +0 -19
  274. package/dist/node/codecs/ber/encoders/encodePrintableString.js +0 -20
  275. package/dist/node/codecs/ber/encoders/encodeVisibleString.js +0 -19
  276. package/dist/node/codecs/cer/decoders/decodeSequence.d.ts +0 -3
  277. package/dist/node/codecs/cer/decoders/decodeSequence.js +0 -20
  278. package/dist/node/codecs/coer/decoders/decodeBoolean.js +0 -46
  279. package/dist/node/codecs/der/decoders/decodeBitString.js +0 -59
  280. package/dist/node/codecs/der/decoders/decodeBoolean.js +0 -46
  281. package/dist/node/codecs/der/decoders/decodeGeneralizedTime.js +0 -81
  282. package/dist/node/codecs/der/decoders/decodeReal.js +0 -134
  283. package/dist/node/codecs/der/decoders/decodeSequence.d.ts +0 -3
  284. package/dist/node/codecs/der/decoders/decodeSequence.js +0 -20
  285. package/dist/node/codecs/der/decoders/decodeUTCTime.js +0 -63
  286. package/dist/node/codecs/oer/decoders/decodeBoolean.d.ts +0 -2
  287. package/dist/node/codecs/oer/decoders/decodeBoolean.js +0 -43
  288. package/dist/node/codecs/x690/decoders/decodeCharacterString.js +0 -18
  289. package/dist/node/codecs/x690/decoders/decodeDate.js +0 -16
  290. package/dist/node/codecs/x690/decoders/decodeDateTime.js +0 -19
  291. package/dist/node/codecs/x690/decoders/decodeEmbeddedPDV.js +0 -14
  292. package/dist/node/codecs/x690/decoders/decodeExternal.js +0 -78
  293. package/dist/node/codecs/x690/decoders/decodeGeneralString.js +0 -18
  294. package/dist/node/codecs/x690/decoders/decodeGraphicString.js +0 -18
  295. package/dist/node/codecs/x690/decoders/decodeInteger.js +0 -51
  296. package/dist/node/codecs/x690/decoders/decodeNumericString.js +0 -18
  297. package/dist/node/codecs/x690/decoders/decodeOIDIRI.js +0 -10
  298. package/dist/node/codecs/x690/decoders/decodeObjectDescriptor.js +0 -18
  299. package/dist/node/codecs/x690/decoders/decodeObjectIdentifier.js +0 -85
  300. package/dist/node/codecs/x690/decoders/decodePrintableString.js +0 -19
  301. package/dist/node/codecs/x690/decoders/decodeRelativeOIDIRI.js +0 -10
  302. package/dist/node/codecs/x690/decoders/decodeRelativeObjectIdentifier.js +0 -60
  303. package/dist/node/codecs/x690/decoders/decodeTime.js +0 -10
  304. package/dist/node/codecs/x690/decoders/decodeTimeOfDay.js +0 -20
  305. package/dist/node/codecs/x690/decoders/decodeVisibleString.js +0 -18
  306. package/dist/node/codecs/x690/encoders/encodeBitString.js +0 -19
  307. package/dist/node/codecs/x690/encoders/encodeBoolean.js +0 -6
  308. package/dist/node/codecs/x690/encoders/encodeCharacterString.js +0 -15
  309. package/dist/node/codecs/x690/encoders/encodeDate.js +0 -50
  310. package/dist/node/codecs/x690/encoders/encodeDateTime.js +0 -53
  311. package/dist/node/codecs/x690/encoders/encodeEmbeddedPDV.js +0 -15
  312. package/dist/node/codecs/x690/encoders/encodeExternal.js +0 -42
  313. package/dist/node/codecs/x690/encoders/encodeInteger.js +0 -7
  314. package/dist/node/codecs/x690/encoders/encodeOIDIRI.js +0 -10
  315. package/dist/node/codecs/x690/encoders/encodeObjectIdentifier.d.ts +0 -2
  316. package/dist/node/codecs/x690/encoders/encodeReal.js +0 -10
  317. package/dist/node/codecs/x690/encoders/encodeRelativeOIDIRI.js +0 -10
  318. package/dist/node/codecs/x690/encoders/encodeSequence.d.ts +0 -3
  319. package/dist/node/codecs/x690/encoders/encodeSequence.js +0 -6
  320. package/dist/node/codecs/x690/encoders/encodeTime.js +0 -10
  321. package/dist/node/codecs/x690/encoders/encodeTimeOfDay.js +0 -10
  322. package/dist/node/codecs/x696/encoders/encodeBoolean.d.ts +0 -2
  323. package/dist/node/codecs/x696/encoders/encodeBoolean.js +0 -6
  324. package/dist/node/functional.js +0 -880
  325. package/dist/node/index.d.ts +0 -16
  326. package/dist/node/index.js +0 -42
  327. package/dist/node/interfaces/Byteable.d.ts +0 -4
  328. package/dist/node/interfaces/Byteable.js +0 -2
  329. package/dist/node/interfaces/CharacterValidationFunction.js +0 -2
  330. package/dist/node/interfaces/Debyteable.js +0 -2
  331. package/dist/node/interfaces/Deelementable.js +0 -2
  332. package/dist/node/interfaces/Destringable.js +0 -2
  333. package/dist/node/interfaces/Elementable.d.ts +0 -4
  334. package/dist/node/interfaces/Elementable.js +0 -2
  335. package/dist/node/interfaces/Enbyteable.js +0 -2
  336. package/dist/node/interfaces/Enelementable.js +0 -2
  337. package/dist/node/interfaces/Enstringable.js +0 -2
  338. package/dist/node/interfaces/Identified.js +0 -2
  339. package/dist/node/interfaces/Long.js +0 -2
  340. package/dist/node/interfaces/Named.js +0 -2
  341. package/dist/node/interfaces/Stringable.d.ts +0 -4
  342. package/dist/node/interfaces/Stringable.js +0 -2
  343. package/dist/node/interfaces/index.d.ts +0 -12
  344. package/dist/node/interfaces/index.js +0 -2
  345. package/dist/node/macros.js +0 -21
  346. package/dist/node/types/TypeIdentifier.js +0 -9
  347. package/dist/node/types/index.d.ts +0 -18
  348. package/dist/node/types/index.js +0 -42
  349. package/dist/node/types/time/DATE-ENCODING.js +0 -16
  350. package/dist/node/types/time/DURATION-EQUIVALENT.js +0 -124
  351. package/dist/node/types/time/DURATION-INTERVAL-ENCODING.js +0 -81
  352. package/dist/node/types/time/HOURS-DIFF-ENCODING.js +0 -15
  353. package/dist/node/types/time/HOURS-ENCODING.js +0 -13
  354. package/dist/node/types/time/HOURS-MINUTES-DIFF-ENCODING.js +0 -17
  355. package/dist/node/types/time/HOURS-MINUTES-ENCODING.js +0 -15
  356. package/dist/node/types/time/TIME-OF-DAY-DIFF-ENCODING.js +0 -19
  357. package/dist/node/types/time/TIME-OF-DAY-ENCODING.js +0 -17
  358. package/dist/node/types/time/TIME-OF-DAY-FRACTION-DIFF-ENCODING.js +0 -21
  359. package/dist/node/types/time/TIME-OF-DAY-FRACTION-ENCODING.js +0 -19
  360. package/dist/node/types/time/YEAR-ENCODING.js +0 -8
  361. package/dist/node/types/time/YEAR-MONTH-ENCODING.js +0 -14
  362. package/dist/node/utils/base128Length.js +0 -6
  363. package/dist/node/utils/convertTextToBytes.js +0 -13
  364. package/dist/node/utils/decodeIEEE754DoublePrecisionFloat.js +0 -6
  365. package/dist/node/utils/decodeIEEE754SinglePrecisionFloat.js +0 -6
  366. package/dist/node/utils/decodeSignedBigEndianInteger.js +0 -48
  367. package/dist/node/utils/decodeUnsignedBigEndianInteger.js +0 -48
  368. package/dist/node/utils/decodeX690RealNumber.js +0 -147
  369. package/dist/node/utils/dissectFloat.js +0 -16
  370. package/dist/node/utils/encodeIEEE754DoublePrecisionFloat.js +0 -6
  371. package/dist/node/utils/encodeIEEE754SinglePrecisionFloat.js +0 -6
  372. package/dist/node/utils/encodeSignedBigEndianInteger.js +0 -72
  373. package/dist/node/utils/encodeUnsignedBigEndianInteger.js +0 -58
  374. package/dist/node/utils/encodeX690Base10RealNumber.js +0 -27
  375. package/dist/node/utils/encodeX690BinaryRealNumber.js +0 -82
  376. package/dist/node/utils/getBitFromBase128.js +0 -7
  377. package/dist/node/utils/getBitFromBase256.js +0 -6
  378. package/dist/node/utils/index.js +0 -50
  379. package/dist/node/utils/splitOctetsCanonically.js +0 -8
  380. package/dist/node/validators/datetimeComponentValidator.js +0 -50
  381. package/dist/node/validators/index.js +0 -18
  382. package/dist/node/validators/isGeneralCharacter.js +0 -6
  383. package/dist/node/validators/isGraphicCharacter.js +0 -6
  384. package/dist/node/validators/isNumericCharacter.js +0 -6
  385. package/dist/node/validators/isObjectDescriptorCharacter.js +0 -10
  386. package/dist/node/validators/isVisibleCharacter.js +0 -10
  387. package/dist/node/validators/validateConstruction.js +0 -73
  388. package/dist/node/validators/validateDate.js +0 -85
  389. package/dist/node/validators/validateDateTime.js +0 -12
  390. package/dist/node/validators/validateTime.js +0 -57
  391. package/dist/node/x690.js +0 -134
  392. /package/dist/{node/interfaces/CharacterValidationFunction.d.ts → interfaces/CharacterValidationFunction.d.mts} +0 -0
  393. /package/dist/{node/interfaces/Debyteable.d.ts → interfaces/Debyteable.d.mts} +0 -0
  394. /package/dist/{node/interfaces/Destringable.d.ts → interfaces/Destringable.d.mts} +0 -0
  395. /package/dist/{node/interfaces/Enbyteable.d.ts → interfaces/Enbyteable.d.mts} +0 -0
  396. /package/dist/{node/interfaces/Enstringable.d.ts → interfaces/Enstringable.d.mts} +0 -0
  397. /package/dist/{node/interfaces/Long.d.ts → interfaces/Long.d.mts} +0 -0
  398. /package/dist/{node/interfaces/Named.d.ts → interfaces/Named.d.mts} +0 -0
  399. /package/dist/{node/utils/base128Length.d.ts → utils/base128Length.d.mts} +0 -0
  400. /package/dist/{node/utils/convertBytesToText.d.ts → utils/convertBytesToText.d.mts} +0 -0
  401. /package/dist/{node/utils/convertTextToBytes.d.ts → utils/convertTextToBytes.d.mts} +0 -0
  402. /package/dist/{node/utils/decodeIEEE754DoublePrecisionFloat.d.ts → utils/decodeIEEE754DoublePrecisionFloat.d.mts} +0 -0
  403. /package/dist/{node/utils/decodeIEEE754SinglePrecisionFloat.d.ts → utils/decodeIEEE754SinglePrecisionFloat.d.mts} +0 -0
  404. /package/dist/{node/utils/decodeSignedBigEndianInteger.d.ts → utils/decodeSignedBigEndianInteger.d.mts} +0 -0
  405. /package/dist/{node/utils/decodeUnsignedBigEndianInteger.d.ts → utils/decodeUnsignedBigEndianInteger.d.mts} +0 -0
  406. /package/dist/{node/utils/decodeX690RealNumber.d.ts → utils/decodeX690RealNumber.d.mts} +0 -0
  407. /package/dist/{node/utils/dissectFloat.d.ts → utils/dissectFloat.d.mts} +0 -0
  408. /package/dist/{node/utils/encodeIEEE754DoublePrecisionFloat.d.ts → utils/encodeIEEE754DoublePrecisionFloat.d.mts} +0 -0
  409. /package/dist/{node/utils/encodeIEEE754SinglePrecisionFloat.d.ts → utils/encodeIEEE754SinglePrecisionFloat.d.mts} +0 -0
  410. /package/dist/{node/utils/encodeSignedBigEndianInteger.d.ts → utils/encodeSignedBigEndianInteger.d.mts} +0 -0
  411. /package/dist/{node/utils/encodeUnsignedBigEndianInteger.d.ts → utils/encodeUnsignedBigEndianInteger.d.mts} +0 -0
  412. /package/dist/{node/utils/encodeX690Base10RealNumber.d.ts → utils/encodeX690Base10RealNumber.d.mts} +0 -0
  413. /package/dist/{node/utils/encodeX690BinaryRealNumber.d.ts → utils/encodeX690BinaryRealNumber.d.mts} +0 -0
  414. /package/dist/{node/utils/getBitFromBase128.d.ts → utils/getBitFromBase128.d.mts} +0 -0
  415. /package/dist/{node/utils/getBitFromBase256.d.ts → utils/getBitFromBase256.d.mts} +0 -0
  416. /package/dist/{node/utils/setBitInBase128.d.ts → utils/setBitInBase128.d.mts} +0 -0
  417. /package/dist/{node/utils/setBitInBase256.d.ts → utils/setBitInBase256.d.mts} +0 -0
  418. /package/dist/{node/utils/splitOctetsCanonically.d.ts → utils/splitOctetsCanonically.d.mts} +0 -0
  419. /package/dist/{node/utils/trimLeadingPaddingBytes.d.ts → utils/trimLeadingPaddingBytes.d.mts} +0 -0
  420. /package/dist/{node/validators/isGeneralCharacter.d.ts → validators/isGeneralCharacter.d.mts} +0 -0
  421. /package/dist/{node/validators/isGraphicCharacter.d.ts → validators/isGraphicCharacter.d.mts} +0 -0
  422. /package/dist/{node/validators/isNumericCharacter.d.ts → validators/isNumericCharacter.d.mts} +0 -0
  423. /package/dist/{node/validators/isObjectDescriptorCharacter.d.ts → validators/isObjectDescriptorCharacter.d.mts} +0 -0
  424. /package/dist/{node/validators/isPrintableCharacter.d.ts → validators/isPrintableCharacter.d.mts} +0 -0
  425. /package/dist/{node/validators/isVisibleCharacter.d.ts → validators/isVisibleCharacter.d.mts} +0 -0
  426. /package/dist/{node/validators/validateDate.d.ts → validators/validateDate.d.mts} +0 -0
  427. /package/dist/{node/validators/validateDateTime.d.ts → validators/validateDateTime.d.mts} +0 -0
  428. /package/dist/{node/validators/validateTime.d.ts → validators/validateTime.d.mts} +0 -0
  429. /package/dist/{node/values.d.ts → values.d.mts} +0 -0
@@ -0,0 +1,8 @@
1
+ import EmbeddedPDV from "../../../types/EmbeddedPDV.mjs";
2
+ import decodeSequence from "../../der/decoders/decodeSequence.mjs";
3
+ export default function decodeEmbeddedPDV(value) {
4
+ const components = decodeSequence(value);
5
+ const identification = components[0];
6
+ const dataValue = components[1].octetString;
7
+ return new EmbeddedPDV(identification, dataValue);
8
+ }
@@ -1,2 +1,2 @@
1
- import { EXTERNAL } from "../../../macros";
1
+ import { EXTERNAL } from "../../../macros.mjs";
2
2
  export default function decodeExternal(value: Uint8Array): EXTERNAL;
@@ -0,0 +1,39 @@
1
+ import External from "../../../types/External.mjs";
2
+ import { ASN1TagClass, ASN1UniversalType } from "../../../values.mjs";
3
+ import * as errors from "../../../errors.mjs";
4
+ import decodeSequence from "../../der/decoders/decodeSequence.mjs";
5
+ export default function decodeExternal(value) {
6
+ const components = decodeSequence(value);
7
+ let i = 0;
8
+ const directReference = ((components[i]?.tagNumber === ASN1UniversalType.objectIdentifier)
9
+ && (components[i].tagClass === ASN1TagClass.universal))
10
+ ? components[i++].objectIdentifier
11
+ : undefined;
12
+ const indirectReference = ((components[i]?.tagNumber === ASN1UniversalType.integer)
13
+ && (components[i].tagClass === ASN1TagClass.universal))
14
+ ? components[i++].integer
15
+ : undefined;
16
+ const dataValueDescriptor = ((components[i]?.tagNumber === ASN1UniversalType.objectDescriptor)
17
+ && (components[i].tagClass === ASN1TagClass.universal))
18
+ ? components[i++].objectDescriptor
19
+ : undefined;
20
+ if (!directReference && !indirectReference) {
21
+ throw new errors.ASN1ConstructionError("EXTERNAL must have direct or indirect reference.");
22
+ }
23
+ const encodingElement = components[i];
24
+ if (!encodingElement || encodingElement.tagClass !== ASN1TagClass.context) {
25
+ throw new errors.ASN1ConstructionError("EXTERNAL missing 'encoding' component.");
26
+ }
27
+ const encoding = (() => {
28
+ switch (encodingElement.tagNumber) {
29
+ case (0): return encodingElement.inner;
30
+ case (1): return encodingElement.octetString;
31
+ case (2): return encodingElement.bitString;
32
+ default: {
33
+ throw new errors.ASN1UndefinedError("EXTERNAL does not know of an encoding option "
34
+ + `having tag number ${encodingElement.tagNumber}.`);
35
+ }
36
+ }
37
+ })();
38
+ return new External(directReference, indirectReference, dataValueDescriptor, encoding);
39
+ }
@@ -1,2 +1,2 @@
1
- import { GeneralString } from "../../../macros";
1
+ import { GeneralString } from "../../../macros.mjs";
2
2
  export default function decodeGeneralString(value: Uint8Array): GeneralString;
@@ -0,0 +1,12 @@
1
+ import isGeneralCharacter from "../../../validators/isGeneralCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ export default function decodeGeneralString(value) {
5
+ for (const char of value) {
6
+ if (!isGeneralCharacter(char)) {
7
+ throw new ASN1CharactersError("GeneralString can only contain ASCII characters."
8
+ + `Encountered character code ${char}.`);
9
+ }
10
+ }
11
+ return convertBytesToText(value);
12
+ }
@@ -1,2 +1,2 @@
1
- import { GraphicString } from "../../../macros";
1
+ import { GraphicString } from "../../../macros.mjs";
2
2
  export default function decodeGraphicString(value: Uint8Array): GraphicString;
@@ -0,0 +1,12 @@
1
+ import isGraphicCharacter from "../../../validators/isGraphicCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ export default function decodeGraphicString(value) {
5
+ for (const char of value) {
6
+ if (!isGraphicCharacter(char)) {
7
+ throw new ASN1CharactersError("GraphicString can only contain characters between 0x20 and 0x7E. "
8
+ + `Encountered character code ${char}.`);
9
+ }
10
+ }
11
+ return convertBytesToText(value);
12
+ }
@@ -1,2 +1,2 @@
1
- import { INTEGER } from "../../../macros";
1
+ import { INTEGER } from "../../../macros.mjs";
2
2
  export default function decodeInteger(value: Uint8Array): INTEGER;
@@ -0,0 +1,16 @@
1
+ import * as errors from "../../../errors.mjs";
2
+ import { bufferToInteger } from "../../../utils/bigint.mjs";
3
+ import { Buffer } from "node:buffer";
4
+ export default function decodeInteger(value) {
5
+ if (value.length === 0) {
6
+ throw new errors.ASN1SizeError("INTEGER or ENUMERATED encoded on zero bytes");
7
+ }
8
+ if (value.length > 2
9
+ && ((value[0] === 0xFF && value[1] >= 0b10000000)
10
+ || (value[0] === 0x00 && value[1] < 0b10000000))) {
11
+ const buf = Buffer.from(value.slice(0, 16));
12
+ throw new errors.ASN1PaddingError("Unnecessary padding bytes on INTEGER or ENUMERATED. "
13
+ + `First 16 bytes of the offending value were: 0x${buf.toString("hex")}`);
14
+ }
15
+ return bufferToInteger(value);
16
+ }
@@ -1,2 +1,2 @@
1
- import { NumericString } from "../../../macros";
1
+ import { NumericString } from "../../../macros.mjs";
2
2
  export default function decodeNumericString(value: Uint8Array): NumericString;
@@ -0,0 +1,12 @@
1
+ import isNumericCharacter from "../../../validators/isNumericCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ export default function decodeNumericString(value) {
5
+ for (const char of value) {
6
+ if (!isNumericCharacter(char)) {
7
+ throw new ASN1CharactersError("NumericString can only contain characters 0 - 9 and space. "
8
+ + `Encountered character code ${char}.`);
9
+ }
10
+ }
11
+ return convertBytesToText(value);
12
+ }
@@ -1,2 +1,2 @@
1
- import { OID_IRI } from "../../../macros";
1
+ import { OID_IRI } from "../../../macros.mjs";
2
2
  export default function decodeOIDIRI(bytes: Uint8Array): OID_IRI;
@@ -0,0 +1,4 @@
1
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
2
+ export default function decodeOIDIRI(bytes) {
3
+ return convertBytesToText(bytes);
4
+ }
@@ -1,2 +1,2 @@
1
- import { ObjectDescriptor } from "../../../macros";
1
+ import { ObjectDescriptor } from "../../../macros.mjs";
2
2
  export default function decodeObjectDescriptor(value: Uint8Array): ObjectDescriptor;
@@ -0,0 +1,12 @@
1
+ import isObjectDescriptorCharacter from "../../../validators/isObjectDescriptorCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ export default function decodeObjectDescriptor(value) {
5
+ for (const char of value) {
6
+ if (!isObjectDescriptorCharacter(char)) {
7
+ throw new ASN1CharactersError("ObjectDescriptor can only contain characters between 0x20 and 0x7E. "
8
+ + `Encountered character code ${char}.`);
9
+ }
10
+ }
11
+ return convertBytesToText(value);
12
+ }
@@ -1,2 +1,2 @@
1
- import { OBJECT_IDENTIFIER } from "../../../macros";
1
+ import { OBJECT_IDENTIFIER } from "../../../macros.mjs";
2
2
  export default function decodeObjectIdentifier(value: Uint8Array): OBJECT_IDENTIFIER;
@@ -0,0 +1,46 @@
1
+ import ObjectIdentifier from "../../../types/ObjectIdentifier.mjs";
2
+ import * as errors from "../../../errors.mjs";
3
+ export default function decodeObjectIdentifier(value) {
4
+ if (value.length === 0) {
5
+ throw new errors.ASN1TruncationError("Encoded value was too short to be an OBJECT IDENTIFIER!");
6
+ }
7
+ const nodes = [0, 0];
8
+ if (value[0] >= 0x50) {
9
+ nodes[0] = 2;
10
+ nodes[1] = (value[0] - 0x50);
11
+ }
12
+ else if (value[0] >= 0x28) {
13
+ nodes[0] = 1;
14
+ nodes[1] = (value[0] - 0x28);
15
+ }
16
+ else {
17
+ nodes[0] = 0;
18
+ nodes[1] = value[0];
19
+ }
20
+ if (value.length === 1) {
21
+ return new ObjectIdentifier(nodes);
22
+ }
23
+ if (value[value.length - 1] & 0b10000000) {
24
+ throw new errors.ASN1TruncationError("OID was truncated.");
25
+ }
26
+ let current_node = 0;
27
+ for (let i = 1; i < value.length; i++) {
28
+ const byte = value[i];
29
+ if (current_node === 0) {
30
+ if (byte < 128) {
31
+ nodes.push(byte);
32
+ continue;
33
+ }
34
+ if (byte === 0x80) {
35
+ throw new errors.ASN1PaddingError("Prohibited padding on OBJECT IDENTIFIER node.");
36
+ }
37
+ }
38
+ current_node <<= 7;
39
+ current_node += (byte & 0b0111_1111);
40
+ if ((byte & 0b1000_0000) === 0) {
41
+ nodes.push(current_node);
42
+ current_node = 0;
43
+ }
44
+ }
45
+ return new ObjectIdentifier(nodes);
46
+ }
@@ -1,2 +1,2 @@
1
- import { PrintableString } from "../../../macros";
1
+ import { PrintableString } from "../../../macros.mjs";
2
2
  export default function decodePrintableString(value: Uint8Array): PrintableString;
@@ -0,0 +1,13 @@
1
+ import isPrintableCharacter from "../../../validators/isPrintableCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ import { printableStringCharacters } from "../../../values.mjs";
5
+ export default function decodePrintableString(value) {
6
+ for (const char of value) {
7
+ if (!isPrintableCharacter(char)) {
8
+ throw new ASN1CharactersError(`PrintableString can only contain these characters: ${printableStringCharacters}. `
9
+ + `Encountered character code ${char}.`);
10
+ }
11
+ }
12
+ return convertBytesToText(value);
13
+ }
@@ -1,2 +1,2 @@
1
- import { RELATIVE_OID_IRI } from "../../../macros";
1
+ import { RELATIVE_OID_IRI } from "../../../macros.mjs";
2
2
  export default function decodeRelativeOIDIRI(bytes: Uint8Array): RELATIVE_OID_IRI;
@@ -0,0 +1,4 @@
1
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
2
+ export default function decodeRelativeOIDIRI(bytes) {
3
+ return convertBytesToText(bytes);
4
+ }
@@ -1,2 +1,2 @@
1
- import { RELATIVE_OID } from "../../../macros";
1
+ import { RELATIVE_OID } from "../../../macros.mjs";
2
2
  export default function decodeRelativeObjectIdentifier(value: Uint8Array): RELATIVE_OID;
@@ -0,0 +1,24 @@
1
+ import * as errors from "../../../errors.mjs";
2
+ export default function decodeRelativeObjectIdentifier(value) {
3
+ if (value.length === 0) {
4
+ return [];
5
+ }
6
+ if (value.length > 1 && value[value.length - 1] & 0b10000000) {
7
+ throw new errors.ASN1TruncationError("Relative OID was truncated.");
8
+ }
9
+ const nodes = [];
10
+ let current_node = 0;
11
+ for (let i = 0; i < value.length; i++) {
12
+ const byte = value[i];
13
+ if ((byte === 0x80) && (current_node === 0)) {
14
+ throw new errors.ASN1PaddingError("Prohibited padding on RELATIVE-OID node.");
15
+ }
16
+ current_node <<= 7;
17
+ current_node += (byte & 0b0111_1111);
18
+ if ((byte & 0b1000_0000) === 0) {
19
+ nodes.push(current_node);
20
+ current_node = 0;
21
+ }
22
+ }
23
+ return nodes;
24
+ }
@@ -1,2 +1,2 @@
1
- import { TIME } from "../../../macros";
1
+ import { TIME } from "../../../macros.mjs";
2
2
  export default function decodeTime(bytes: Uint8Array): TIME;
@@ -0,0 +1,4 @@
1
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
2
+ export default function decodeTime(bytes) {
3
+ return convertBytesToText(bytes);
4
+ }
@@ -1,2 +1,2 @@
1
- import { TIME_OF_DAY } from "../../../macros";
1
+ import { TIME_OF_DAY } from "../../../macros.mjs";
2
2
  export default function decodeTimeOfDay(bytes: Uint8Array): TIME_OF_DAY;
@@ -0,0 +1,14 @@
1
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
2
+ import validateTime from "../../../validators/validateTime.mjs";
3
+ export default function decodeTimeOfDay(bytes) {
4
+ const str = convertBytesToText(bytes);
5
+ const hours = parseInt(str.slice(0, 2), 10);
6
+ const minutes = parseInt(str.slice(2, 4), 10);
7
+ const seconds = parseInt(str.slice(4, 6), 10);
8
+ validateTime("TIME-OF-DAY", hours, minutes, seconds);
9
+ const ret = new Date();
10
+ ret.setHours(hours);
11
+ ret.setMinutes(minutes);
12
+ ret.setSeconds(seconds);
13
+ return ret;
14
+ }
@@ -1,2 +1,2 @@
1
- import { PrintableString } from "../../../macros";
1
+ import { PrintableString } from "../../../macros.mjs";
2
2
  export default function decodePrintableString(value: Uint8Array): PrintableString;
@@ -0,0 +1,12 @@
1
+ import isVisibleCharacter from "../../../validators/isVisibleCharacter.mjs";
2
+ import convertBytesToText from "../../../utils/convertBytesToText.mjs";
3
+ import { ASN1CharactersError } from "../../../errors.mjs";
4
+ export default function decodePrintableString(value) {
5
+ for (const char of value) {
6
+ if (!isVisibleCharacter(char)) {
7
+ throw new ASN1CharactersError("VisibleString can only contain characters between 0x20 and 0x7E. "
8
+ + `Encountered character code ${char}.`);
9
+ }
10
+ }
11
+ return convertBytesToText(value);
12
+ }
@@ -1,2 +1,2 @@
1
- import { BIT_STRING } from "../../../macros";
1
+ import { BIT_STRING } from "../../../macros.mjs";
2
2
  export default function encodeBitString(value: BIT_STRING): Uint8Array;
@@ -0,0 +1,13 @@
1
+ import packBits from "../../../utils/packBits.mjs";
2
+ export default function encodeBitString(value) {
3
+ if (value.length === 0) {
4
+ return new Uint8Array([0]);
5
+ }
6
+ const ret = new Uint8Array(((value.length >>> 3) + ((value.length % 8) ? 1 : 0)) + 1);
7
+ ret[0] = (8 - (value.length % 8));
8
+ if (ret[0] === 8) {
9
+ ret[0] = 0;
10
+ }
11
+ ret.set(packBits(value), 1);
12
+ return ret;
13
+ }
@@ -1,2 +1,2 @@
1
- import { BOOLEAN } from "../../../macros";
1
+ import { BOOLEAN } from "../../../macros.mjs";
2
2
  export default function encodeBoolean(value: BOOLEAN): Uint8Array;
@@ -0,0 +1,3 @@
1
+ export default function encodeBoolean(value) {
2
+ return new Uint8Array([(value ? 0xFF : 0x00)]);
3
+ }
@@ -1,2 +1,2 @@
1
- import CharacterString from "../../../types/CharacterString";
1
+ import CharacterString from "../../../types/CharacterString.mjs";
2
2
  export default function encodeCharacterString(value: CharacterString): Uint8Array;
@@ -0,0 +1,9 @@
1
+ import DERElement from "../../../codecs/der.mjs";
2
+ import { ASN1TagClass, ASN1UniversalType, ASN1Construction } from "../../../values.mjs";
3
+ import encodeSequence from "./encodeSequence.mjs";
4
+ export default function encodeCharacterString(value) {
5
+ return encodeSequence([
6
+ value.identification,
7
+ new DERElement(ASN1TagClass.universal, ASN1Construction.primitive, ASN1UniversalType.octetString, value.stringValue),
8
+ ]);
9
+ }
@@ -1,2 +1,2 @@
1
- import { DATE } from "../../../macros";
1
+ import { DATE } from "../../../macros.mjs";
2
2
  export default function encodeDate(date: DATE): Uint8Array;
@@ -0,0 +1,11 @@
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ import * as errors from "../../../errors.mjs";
3
+ export default function encodeDate(date) {
4
+ if (date.getFullYear() < 1582 || date.getFullYear() > 9999) {
5
+ throw new errors.ASN1Error(`The DATE ${date.toISOString()} may not be encoded, because the `
6
+ + "year must be greater than 1581 and less than 10000.");
7
+ }
8
+ return convertTextToBytes(date.getFullYear().toString()
9
+ + (date.getMonth() + 1).toString().padStart(2, "0")
10
+ + date.getDate().toString().padStart(2, "0"));
11
+ }
@@ -1,2 +1,2 @@
1
- import { DATE_TIME } from "../../../macros";
1
+ import { DATE_TIME } from "../../../macros.mjs";
2
2
  export default function encodeDateTime(value: DATE_TIME): Uint8Array;
@@ -0,0 +1,14 @@
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ import * as errors from "../../../errors.mjs";
3
+ export default function encodeDateTime(value) {
4
+ if (value.getFullYear() < 1582 || value.getFullYear() > 9999) {
5
+ throw new errors.ASN1Error(`The DATE ${value.toISOString()} may not be encoded, because the `
6
+ + "year must be greater than 1581 and less than 10000.");
7
+ }
8
+ return convertTextToBytes(value.getFullYear().toString()
9
+ + (value.getMonth() + 1).toString().padStart(2, "0")
10
+ + value.getDate().toString().padStart(2, "0")
11
+ + value.getHours().toString().padStart(2, "0")
12
+ + value.getMinutes().toString().padStart(2, "0")
13
+ + value.getSeconds().toString().padStart(2, "0"));
14
+ }
@@ -1,2 +1,2 @@
1
- import { DURATION } from "../../../macros";
1
+ import { DURATION } from "../../../macros.mjs";
2
2
  export default function encodeDuration(value: DURATION): Uint8Array;
@@ -1,14 +1,8 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = encodeDuration;
7
- const convertTextToBytes_1 = __importDefault(require("../../../utils/convertTextToBytes"));
8
- function encodeDuration(value) {
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ export default function encodeDuration(value) {
9
3
  if (value.weeks) {
10
4
  if (!value.fractional_part) {
11
- return (0, convertTextToBytes_1.default)(`${value.weeks}W`);
5
+ return convertTextToBytes(`${value.weeks}W`);
12
6
  }
13
7
  else {
14
8
  const integralAmount = value.weeks;
@@ -19,7 +13,7 @@ function encodeDuration(value) {
19
13
  ? Number(value.fractional_part.number_of_digits)
20
14
  : value.fractional_part.number_of_digits;
21
15
  const fraction = (fractional_value / Math.pow(10, number_of_digits));
22
- return (0, convertTextToBytes_1.default)(integralAmount.toString()
16
+ return convertTextToBytes(integralAmount.toString()
23
17
  + fraction.toString().slice(1)
24
18
  + "W");
25
19
  }
@@ -69,7 +63,7 @@ function encodeDuration(value) {
69
63
  years += fraction;
70
64
  }
71
65
  }
72
- return (0, convertTextToBytes_1.default)((years ? `${years}Y` : "")
66
+ return convertTextToBytes((years ? `${years}Y` : "")
73
67
  + (months ? `${months}M` : "")
74
68
  + (days ? `${days}D` : "")
75
69
  + ((hours || minutes || seconds) ? "T" : "")
@@ -1,2 +1,2 @@
1
- import { EMBEDDED_PDV } from "../../../macros";
1
+ import { EMBEDDED_PDV } from "../../../macros.mjs";
2
2
  export default function encodeEmbeddedPDV(value: EMBEDDED_PDV): Uint8Array;
@@ -0,0 +1,9 @@
1
+ import DERElement from "../../../codecs/der.mjs";
2
+ import { ASN1TagClass, ASN1UniversalType, ASN1Construction } from "../../../values.mjs";
3
+ import encodeSequence from "./encodeSequence.mjs";
4
+ export default function encodeEmbeddedPDV(value) {
5
+ return encodeSequence([
6
+ value.identification,
7
+ new DERElement(ASN1TagClass.universal, ASN1Construction.primitive, ASN1UniversalType.octetString, value.dataValue),
8
+ ]);
9
+ }
@@ -1,2 +1,2 @@
1
- import { EXTERNAL } from "../../../macros";
1
+ import { EXTERNAL } from "../../../macros.mjs";
2
2
  export default function encodeExternal(value: EXTERNAL): Uint8Array;
@@ -0,0 +1,36 @@
1
+ import DERElement from "../../../codecs/der.mjs";
2
+ import { ASN1TagClass, ASN1UniversalType, ASN1Construction } from "../../../values.mjs";
3
+ import ASN1Element from "../../../asn1.mjs";
4
+ export default function encodeExternal(value) {
5
+ let directReferenceElement = undefined;
6
+ if (value.directReference) {
7
+ directReferenceElement = new DERElement(ASN1TagClass.universal, ASN1Construction.primitive, ASN1UniversalType.objectIdentifier, value.directReference);
8
+ }
9
+ let indirectReferenceElement = undefined;
10
+ if (value.indirectReference) {
11
+ indirectReferenceElement = new DERElement(ASN1TagClass.universal, ASN1Construction.primitive, ASN1UniversalType.integer, value.indirectReference);
12
+ }
13
+ let dataValueDescriptorElement = undefined;
14
+ if (value.dataValueDescriptor) {
15
+ dataValueDescriptorElement = new DERElement(ASN1TagClass.universal, ASN1Construction.primitive, ASN1UniversalType.objectDescriptor);
16
+ dataValueDescriptorElement.objectDescriptor = value.dataValueDescriptor;
17
+ }
18
+ let encodingElement = undefined;
19
+ if (value.encoding instanceof ASN1Element) {
20
+ encodingElement = new DERElement(ASN1TagClass.context, ASN1Construction.constructed, 0, value.encoding);
21
+ }
22
+ else if (value.encoding instanceof Uint8Array) {
23
+ encodingElement = new DERElement(ASN1TagClass.context, ASN1Construction.primitive, 1, value.encoding);
24
+ }
25
+ else {
26
+ encodingElement = new DERElement(ASN1TagClass.context, ASN1Construction.primitive, 2);
27
+ encodingElement.bitString = value.encoding;
28
+ }
29
+ const ret = DERElement.fromSequence([
30
+ directReferenceElement,
31
+ indirectReferenceElement,
32
+ dataValueDescriptorElement,
33
+ encodingElement,
34
+ ]);
35
+ return ret.value;
36
+ }
@@ -1,2 +1,2 @@
1
- import { GeneralizedTime } from "../../../macros";
1
+ import { GeneralizedTime } from "../../../macros.mjs";
2
2
  export default function encodeGeneralizedTime(value: GeneralizedTime): Uint8Array;
@@ -1,11 +1,5 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.default = encodeGeneralizedTime;
7
- const convertTextToBytes_1 = __importDefault(require("../../../utils/convertTextToBytes"));
8
- function encodeGeneralizedTime(value) {
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ export default function encodeGeneralizedTime(value) {
9
3
  const year = value.getUTCFullYear().toString();
10
4
  const month = (value.getUTCMonth() + 1).toString().padStart(2, "0");
11
5
  const day = value.getUTCDate().toString().padStart(2, "0");
@@ -13,5 +7,5 @@ function encodeGeneralizedTime(value) {
13
7
  const minute = value.getUTCMinutes().toString().padStart(2, "0");
14
8
  const second = value.getUTCSeconds().toString().padStart(2, "0");
15
9
  const timeString = `${year}${month}${day}${hour}${minute}${second}Z`;
16
- return (0, convertTextToBytes_1.default)(timeString);
10
+ return convertTextToBytes(timeString);
17
11
  }
@@ -1,2 +1,2 @@
1
- import { INTEGER } from "../../../macros";
1
+ import { INTEGER } from "../../../macros.mjs";
2
2
  export default function encodeInteger(value: INTEGER): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import { integerToBuffer } from "../../../utils/bigint.mjs";
2
+ export default function encodeInteger(value) {
3
+ return integerToBuffer(value);
4
+ }
@@ -1,2 +1,2 @@
1
- import { OID_IRI } from "../../../macros";
1
+ import { OID_IRI } from "../../../macros.mjs";
2
2
  export default function encodeOIDIRI(value: OID_IRI): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ export default function encodeOIDIRI(value) {
3
+ return convertTextToBytes(value);
4
+ }
@@ -0,0 +1,3 @@
1
+ import { OBJECT_IDENTIFIER } from "../../../macros.mjs";
2
+ import { Buffer } from "node:buffer";
3
+ export default function encodeObjectIdentifier(value: OBJECT_IDENTIFIER): Buffer;
@@ -1,7 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.default = encodeObjectIdentifier;
4
- function encodeObjectIdentifier(value) {
1
+ import { Buffer } from "node:buffer";
2
+ export default function encodeObjectIdentifier(value) {
5
3
  const arcs = value.uint32ArrayRef;
6
4
  const node0 = arcs[0];
7
5
  const node1 = arcs[1];
@@ -1,2 +1,2 @@
1
- import { REAL } from "../../../macros";
1
+ import { REAL } from "../../../macros.mjs";
2
2
  export default function encodeReal(value: REAL): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import encodeX690BinaryRealNumber from "../../../utils/encodeX690BinaryRealNumber.mjs";
2
+ export default function encodeReal(value) {
3
+ return encodeX690BinaryRealNumber(value);
4
+ }
@@ -1,2 +1,2 @@
1
- import { RELATIVE_OID_IRI } from "../../../macros";
1
+ import { RELATIVE_OID_IRI } from "../../../macros.mjs";
2
2
  export default function encodeRelativeOIDIRI(value: RELATIVE_OID_IRI): Uint8Array;
@@ -0,0 +1,4 @@
1
+ import convertTextToBytes from "../../../utils/convertTextToBytes.mjs";
2
+ export default function encodeRelativeOIDIRI(value) {
3
+ return convertTextToBytes(value);
4
+ }
@@ -1,2 +1,2 @@
1
- import { RELATIVE_OID } from "../../../macros";
1
+ import { RELATIVE_OID } from "../../../macros.mjs";
2
2
  export default function encodeRelativeObjectIdentifier(value: RELATIVE_OID): Uint8Array;