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