asn1-ts 8.0.5 → 9.0.1
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} +7 -7
- package/dist/{node/asn1.js → asn1.mjs} +91 -132
- 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} +142 -180
- 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} +146 -184
- 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} +138 -176
- 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/{node/codecs/x690/encoders/encodeObjectIdentifier.d.ts → codecs/x690/encoders/encodeObjectIdentifier.d.mts} +1 -1
- package/dist/{node/codecs/x690/encoders/encodeObjectIdentifier.js → codecs/x690/encoders/encodeObjectIdentifier.mjs} +3 -6
- 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} +3 -6
- 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.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} +1 -1
- package/dist/{node/utils/bigint.js → utils/bigint.mjs} +21 -25
- 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/utils/convertBytesToText.mjs +14 -0
- 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/utils/sortCanonically.mjs +11 -0
- 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 -52
- 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/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 -7
- 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/convertBytesToText.js +0 -17
- package/dist/node/utils/convertTextToBytes.js +0 -14
- package/dist/node/utils/decodeIEEE754DoublePrecisionFloat.js +0 -6
- package/dist/node/utils/decodeIEEE754SinglePrecisionFloat.js +0 -6
- package/dist/node/utils/decodeSignedBigEndianInteger.js +0 -49
- package/dist/node/utils/decodeUnsignedBigEndianInteger.js +0 -49
- 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 -59
- 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/sortCanonically.js +0 -14
- 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/types/ObjectIdentifier.d.ts → types/ObjectIdentifier.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
|
@@ -1,89 +1,54 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
const decodeBoolean_1 = __importDefault(require("./ber/decoders/decodeBoolean"));
|
|
48
|
-
const encodeBitString_1 = __importDefault(require("./x690/encoders/encodeBitString"));
|
|
49
|
-
const decodeBitString_1 = __importDefault(require("./ber/decoders/decodeBitString"));
|
|
50
|
-
const encodeReal_1 = __importDefault(require("./x690/encoders/encodeReal"));
|
|
51
|
-
const decodeReal_1 = __importDefault(require("./ber/decoders/decodeReal"));
|
|
52
|
-
const encodeSequence_1 = __importDefault(require("./x690/encoders/encodeSequence"));
|
|
53
|
-
const decodeSequence_1 = __importDefault(require("./ber/decoders/decodeSequence"));
|
|
54
|
-
const encodeUTCTime_1 = __importDefault(require("./x690/encoders/encodeUTCTime"));
|
|
55
|
-
const decodeUTCTime_1 = __importDefault(require("./ber/decoders/decodeUTCTime"));
|
|
56
|
-
const encodeGeneralizedTime_1 = __importDefault(require("./x690/encoders/encodeGeneralizedTime"));
|
|
57
|
-
const decodeGeneralizedTime_1 = __importDefault(require("./ber/decoders/decodeGeneralizedTime"));
|
|
58
|
-
const encodeExternal_1 = __importDefault(require("../codecs/x690/encoders/encodeExternal"));
|
|
59
|
-
const encodeEmbeddedPDV_1 = __importDefault(require("../codecs/x690/encoders/encodeEmbeddedPDV"));
|
|
60
|
-
const encodeCharacterString_1 = __importDefault(require("../codecs/x690/encoders/encodeCharacterString"));
|
|
61
|
-
const decodeExternal_1 = __importDefault(require("../codecs/x690/decoders/decodeExternal"));
|
|
62
|
-
const decodeEmbeddedPDV_1 = __importDefault(require("../codecs/x690/decoders/decodeEmbeddedPDV"));
|
|
63
|
-
const decodeCharacterString_1 = __importDefault(require("../codecs/x690/decoders/decodeCharacterString"));
|
|
64
|
-
const encodeGraphicString_1 = __importDefault(require("../codecs/ber/encoders/encodeGraphicString"));
|
|
65
|
-
const encodeNumericString_1 = __importDefault(require("../codecs/ber/encoders/encodeNumericString"));
|
|
66
|
-
const encodeObjectDescriptor_1 = __importDefault(require("../codecs/ber/encoders/encodeObjectDescriptor"));
|
|
67
|
-
const encodePrintableString_1 = __importDefault(require("../codecs/ber/encoders/encodePrintableString"));
|
|
68
|
-
const encodeVisibleString_1 = __importDefault(require("../codecs/ber/encoders/encodeVisibleString"));
|
|
69
|
-
const encodeGeneralString_1 = __importDefault(require("../codecs/ber/encoders/encodeGeneralString"));
|
|
70
|
-
const decodeGraphicString_1 = __importDefault(require("../codecs/x690/decoders/decodeGraphicString"));
|
|
71
|
-
const decodeNumericString_1 = __importDefault(require("../codecs/x690/decoders/decodeNumericString"));
|
|
72
|
-
const decodeObjectDescriptor_1 = __importDefault(require("../codecs/x690/decoders/decodeObjectDescriptor"));
|
|
73
|
-
const decodePrintableString_1 = __importDefault(require("../codecs/x690/decoders/decodePrintableString"));
|
|
74
|
-
const decodeVisibleString_1 = __importDefault(require("../codecs/x690/decoders/decodeVisibleString"));
|
|
75
|
-
const decodeGeneralString_1 = __importDefault(require("../codecs/x690/decoders/decodeGeneralString"));
|
|
76
|
-
const encodeDuration_1 = __importDefault(require("../codecs/x690/encoders/encodeDuration"));
|
|
77
|
-
const decodeDuration_1 = __importDefault(require("../codecs/ber/decoders/decodeDuration"));
|
|
78
|
-
const macros_1 = require("../macros");
|
|
79
|
-
const utils_1 = require("../utils");
|
|
80
|
-
const node_buffer_1 = require("node:buffer");
|
|
81
|
-
class BERElement extends x690_1.default {
|
|
1
|
+
import ASN1Element from "../asn1.mjs";
|
|
2
|
+
import * as errors from "../errors.mjs";
|
|
3
|
+
import { ASN1Construction, ASN1TagClass, ASN1UniversalType, LengthEncodingPreference, } from "../values.mjs";
|
|
4
|
+
import X690Element from "../x690.mjs";
|
|
5
|
+
import convertBytesToText from "../utils/convertBytesToText.mjs";
|
|
6
|
+
import convertTextToBytes from "../utils/convertTextToBytes.mjs";
|
|
7
|
+
import ObjectIdentifier from "../types/ObjectIdentifier.mjs";
|
|
8
|
+
import encodeBoolean from "./x690/encoders/encodeBoolean.mjs";
|
|
9
|
+
import decodeBoolean from "./ber/decoders/decodeBoolean.mjs";
|
|
10
|
+
import encodeBitString from "./x690/encoders/encodeBitString.mjs";
|
|
11
|
+
import decodeBitString from "./ber/decoders/decodeBitString.mjs";
|
|
12
|
+
import encodeReal from "./x690/encoders/encodeReal.mjs";
|
|
13
|
+
import decodeReal from "./ber/decoders/decodeReal.mjs";
|
|
14
|
+
import encodeSequence from "./x690/encoders/encodeSequence.mjs";
|
|
15
|
+
import decodeSequence from "./ber/decoders/decodeSequence.mjs";
|
|
16
|
+
import encodeUTCTime from "./x690/encoders/encodeUTCTime.mjs";
|
|
17
|
+
import decodeUTCTime from "./ber/decoders/decodeUTCTime.mjs";
|
|
18
|
+
import encodeGeneralizedTime from "./x690/encoders/encodeGeneralizedTime.mjs";
|
|
19
|
+
import decodeGeneralizedTime from "./ber/decoders/decodeGeneralizedTime.mjs";
|
|
20
|
+
import encodeExternal from "../codecs/x690/encoders/encodeExternal.mjs";
|
|
21
|
+
import encodeEmbeddedPDV from "../codecs/x690/encoders/encodeEmbeddedPDV.mjs";
|
|
22
|
+
import encodeCharacterString from "../codecs/x690/encoders/encodeCharacterString.mjs";
|
|
23
|
+
import decodeExternal from "../codecs/x690/decoders/decodeExternal.mjs";
|
|
24
|
+
import decodeEmbeddedPDV from "../codecs/x690/decoders/decodeEmbeddedPDV.mjs";
|
|
25
|
+
import decodeCharacterString from "../codecs/x690/decoders/decodeCharacterString.mjs";
|
|
26
|
+
import encodeGraphicString from "../codecs/ber/encoders/encodeGraphicString.mjs";
|
|
27
|
+
import encodeNumericString from "../codecs/ber/encoders/encodeNumericString.mjs";
|
|
28
|
+
import encodeObjectDescriptor from "../codecs/ber/encoders/encodeObjectDescriptor.mjs";
|
|
29
|
+
import encodePrintableString from "../codecs/ber/encoders/encodePrintableString.mjs";
|
|
30
|
+
import encodeVisibleString from "../codecs/ber/encoders/encodeVisibleString.mjs";
|
|
31
|
+
import encodeGeneralString from "../codecs/ber/encoders/encodeGeneralString.mjs";
|
|
32
|
+
import decodeGraphicString from "../codecs/x690/decoders/decodeGraphicString.mjs";
|
|
33
|
+
import decodeNumericString from "../codecs/x690/decoders/decodeNumericString.mjs";
|
|
34
|
+
import decodeObjectDescriptor from "../codecs/x690/decoders/decodeObjectDescriptor.mjs";
|
|
35
|
+
import decodePrintableString from "../codecs/x690/decoders/decodePrintableString.mjs";
|
|
36
|
+
import decodeVisibleString from "../codecs/x690/decoders/decodeVisibleString.mjs";
|
|
37
|
+
import decodeGeneralString from "../codecs/x690/decoders/decodeGeneralString.mjs";
|
|
38
|
+
import encodeDuration from "../codecs/x690/encoders/encodeDuration.mjs";
|
|
39
|
+
import decodeDuration from "../codecs/ber/decoders/decodeDuration.mjs";
|
|
40
|
+
import { FALSE_BIT, } from "../macros.mjs";
|
|
41
|
+
import { isUniquelyTagged } from "../utils/index.mjs";
|
|
42
|
+
import { Buffer } from "node:buffer";
|
|
43
|
+
export default class BERElement extends X690Element {
|
|
44
|
+
static lengthEncodingPreference = LengthEncodingPreference.definite;
|
|
45
|
+
_value = new Uint8Array(0);
|
|
46
|
+
_currentValueLength;
|
|
82
47
|
get value() {
|
|
83
48
|
if (this._value instanceof Uint8Array) {
|
|
84
49
|
return this._value;
|
|
85
50
|
}
|
|
86
|
-
const bytes = (
|
|
51
|
+
const bytes = encodeSequence(this._value);
|
|
87
52
|
this._value = bytes;
|
|
88
53
|
return bytes;
|
|
89
54
|
}
|
|
@@ -96,20 +61,20 @@ class BERElement extends x690_1.default {
|
|
|
96
61
|
this._value = els;
|
|
97
62
|
}
|
|
98
63
|
set boolean(value) {
|
|
99
|
-
this.value = (
|
|
64
|
+
this.value = encodeBoolean(value);
|
|
100
65
|
}
|
|
101
66
|
get boolean() {
|
|
102
|
-
if (this.construction !==
|
|
67
|
+
if (this.construction !== ASN1Construction.primitive) {
|
|
103
68
|
throw new errors.ASN1ConstructionError("BOOLEAN cannot be constructed.", this);
|
|
104
69
|
}
|
|
105
|
-
return (
|
|
70
|
+
return decodeBoolean(this.value);
|
|
106
71
|
}
|
|
107
72
|
set bitString(value) {
|
|
108
|
-
this.value = (
|
|
73
|
+
this.value = encodeBitString(value);
|
|
109
74
|
}
|
|
110
75
|
get bitString() {
|
|
111
|
-
if (this.construction ===
|
|
112
|
-
return (
|
|
76
|
+
if (this.construction === ASN1Construction.primitive) {
|
|
77
|
+
return decodeBitString(this.value);
|
|
113
78
|
}
|
|
114
79
|
if ((this.recursionCount + 1) > BERElement.nestingRecursionLimit) {
|
|
115
80
|
throw new errors.ASN1RecursionError();
|
|
@@ -117,7 +82,7 @@ class BERElement extends x690_1.default {
|
|
|
117
82
|
const appendy = [];
|
|
118
83
|
const substrings = this.sequence;
|
|
119
84
|
for (const substring of substrings.slice(0, (substrings.length - 1))) {
|
|
120
|
-
if (substring.construction ===
|
|
85
|
+
if (substring.construction === ASN1Construction.primitive
|
|
121
86
|
&& substring.value.length > 0
|
|
122
87
|
&& substring.value[0] !== 0x00) {
|
|
123
88
|
throw new errors.ASN1Error("Only the last subelement of a constructed BIT STRING may have a non-zero first value byte.", this);
|
|
@@ -131,7 +96,7 @@ class BERElement extends x690_1.default {
|
|
|
131
96
|
throw new errors.ASN1ConstructionError("Invalid tag class in recursively-encoded BIT STRING.", this);
|
|
132
97
|
}
|
|
133
98
|
substring.recursionCount = (this.recursionCount + 1);
|
|
134
|
-
appendy.push(...Array.from(substring.bitString).map((b) => b !==
|
|
99
|
+
appendy.push(...Array.from(substring.bitString).map((b) => b !== FALSE_BIT));
|
|
135
100
|
}
|
|
136
101
|
return new Uint8ClampedArray(appendy.map((b) => (b ? 1 : 0)));
|
|
137
102
|
}
|
|
@@ -142,76 +107,76 @@ class BERElement extends x690_1.default {
|
|
|
142
107
|
return this.deconstruct("OCTET STRING");
|
|
143
108
|
}
|
|
144
109
|
set objectDescriptor(value) {
|
|
145
|
-
this.value = (
|
|
110
|
+
this.value = encodeObjectDescriptor(value);
|
|
146
111
|
}
|
|
147
112
|
get objectDescriptor() {
|
|
148
113
|
const bytes = this.deconstruct("ObjectDescriptor");
|
|
149
|
-
return (
|
|
114
|
+
return decodeObjectDescriptor(bytes);
|
|
150
115
|
}
|
|
151
116
|
set external(value) {
|
|
152
|
-
this.value = (
|
|
153
|
-
this.construction =
|
|
117
|
+
this.value = encodeExternal(value);
|
|
118
|
+
this.construction = ASN1Construction.constructed;
|
|
154
119
|
}
|
|
155
120
|
get external() {
|
|
156
|
-
return (
|
|
121
|
+
return decodeExternal(this.value);
|
|
157
122
|
}
|
|
158
123
|
set real(value) {
|
|
159
|
-
this.value = (
|
|
124
|
+
this.value = encodeReal(value);
|
|
160
125
|
}
|
|
161
126
|
get real() {
|
|
162
|
-
if (this.construction !==
|
|
127
|
+
if (this.construction !== ASN1Construction.primitive) {
|
|
163
128
|
throw new errors.ASN1ConstructionError("REAL cannot be constructed.");
|
|
164
129
|
}
|
|
165
|
-
return (
|
|
130
|
+
return decodeReal(this.value);
|
|
166
131
|
}
|
|
167
132
|
set embeddedPDV(value) {
|
|
168
|
-
this.value = (
|
|
169
|
-
this.construction =
|
|
133
|
+
this.value = encodeEmbeddedPDV(value);
|
|
134
|
+
this.construction = ASN1Construction.constructed;
|
|
170
135
|
}
|
|
171
136
|
get embeddedPDV() {
|
|
172
|
-
return (
|
|
137
|
+
return decodeEmbeddedPDV(this.value);
|
|
173
138
|
}
|
|
174
139
|
set utf8String(value) {
|
|
175
|
-
this.value = (
|
|
140
|
+
this.value = convertTextToBytes(value);
|
|
176
141
|
}
|
|
177
142
|
get utf8String() {
|
|
178
|
-
return (
|
|
143
|
+
return convertBytesToText(this.deconstruct("UTF8String"));
|
|
179
144
|
}
|
|
180
145
|
set sequence(value) {
|
|
181
146
|
this.construct(value);
|
|
182
|
-
this.construction =
|
|
147
|
+
this.construction = ASN1Construction.constructed;
|
|
183
148
|
}
|
|
184
149
|
get sequence() {
|
|
185
|
-
if (this.construction !==
|
|
150
|
+
if (this.construction !== ASN1Construction.constructed) {
|
|
186
151
|
throw new errors.ASN1ConstructionError("SET or SEQUENCE cannot be primitively constructed.", this);
|
|
187
152
|
}
|
|
188
153
|
if (Array.isArray(this._value)) {
|
|
189
154
|
return this._value;
|
|
190
155
|
}
|
|
191
|
-
return (
|
|
156
|
+
return decodeSequence(this.value);
|
|
192
157
|
}
|
|
193
158
|
set set(value) {
|
|
194
159
|
this.sequence = value;
|
|
195
160
|
}
|
|
196
161
|
get set() {
|
|
197
162
|
const ret = this.sequence;
|
|
198
|
-
if (!
|
|
163
|
+
if (!isUniquelyTagged(ret)) {
|
|
199
164
|
throw new errors.ASN1ConstructionError("Duplicate tag in SET.", this);
|
|
200
165
|
}
|
|
201
166
|
return ret;
|
|
202
167
|
}
|
|
203
168
|
set sequenceOf(value) {
|
|
204
169
|
this.construct(value);
|
|
205
|
-
this.construction =
|
|
170
|
+
this.construction = ASN1Construction.constructed;
|
|
206
171
|
}
|
|
207
172
|
get sequenceOf() {
|
|
208
|
-
if (this.construction !==
|
|
173
|
+
if (this.construction !== ASN1Construction.constructed) {
|
|
209
174
|
throw new errors.ASN1ConstructionError("SET or SEQUENCE cannot be primitively constructed.", this);
|
|
210
175
|
}
|
|
211
176
|
if (Array.isArray(this._value)) {
|
|
212
177
|
return this._value;
|
|
213
178
|
}
|
|
214
|
-
return (
|
|
179
|
+
return decodeSequence(this.value);
|
|
215
180
|
}
|
|
216
181
|
set setOf(value) {
|
|
217
182
|
this.sequence = value;
|
|
@@ -220,18 +185,18 @@ class BERElement extends x690_1.default {
|
|
|
220
185
|
return this.sequence;
|
|
221
186
|
}
|
|
222
187
|
set numericString(value) {
|
|
223
|
-
this.value = (
|
|
188
|
+
this.value = encodeNumericString(value);
|
|
224
189
|
}
|
|
225
190
|
get numericString() {
|
|
226
191
|
const bytes = this.deconstruct("NumericString");
|
|
227
|
-
return (
|
|
192
|
+
return decodeNumericString(bytes);
|
|
228
193
|
}
|
|
229
194
|
set printableString(value) {
|
|
230
|
-
this.value = (
|
|
195
|
+
this.value = encodePrintableString(value);
|
|
231
196
|
}
|
|
232
197
|
get printableString() {
|
|
233
198
|
const bytes = this.deconstruct("PrintableString");
|
|
234
|
-
return (
|
|
199
|
+
return decodePrintableString(bytes);
|
|
235
200
|
}
|
|
236
201
|
set teletexString(value) {
|
|
237
202
|
this.value = new Uint8Array(value);
|
|
@@ -246,49 +211,49 @@ class BERElement extends x690_1.default {
|
|
|
246
211
|
return this.deconstruct("VideotexString");
|
|
247
212
|
}
|
|
248
213
|
set ia5String(value) {
|
|
249
|
-
this.value = (
|
|
214
|
+
this.value = convertTextToBytes(value);
|
|
250
215
|
}
|
|
251
216
|
get ia5String() {
|
|
252
|
-
return (
|
|
217
|
+
return convertBytesToText(this.deconstruct("IA5String"));
|
|
253
218
|
}
|
|
254
219
|
set utcTime(value) {
|
|
255
|
-
this.value = (
|
|
220
|
+
this.value = encodeUTCTime(value);
|
|
256
221
|
}
|
|
257
222
|
get utcTime() {
|
|
258
|
-
return (
|
|
223
|
+
return decodeUTCTime(this.deconstruct("UTCTime"));
|
|
259
224
|
}
|
|
260
225
|
set generalizedTime(value) {
|
|
261
|
-
this.value = (
|
|
226
|
+
this.value = encodeGeneralizedTime(value);
|
|
262
227
|
}
|
|
263
228
|
get generalizedTime() {
|
|
264
|
-
return (
|
|
229
|
+
return decodeGeneralizedTime(this.deconstruct("GeneralizedTime"));
|
|
265
230
|
}
|
|
266
231
|
set graphicString(value) {
|
|
267
|
-
this.value = (
|
|
232
|
+
this.value = encodeGraphicString(value);
|
|
268
233
|
}
|
|
269
234
|
get graphicString() {
|
|
270
235
|
const bytes = this.deconstruct("GraphicString");
|
|
271
|
-
return (
|
|
236
|
+
return decodeGraphicString(bytes);
|
|
272
237
|
}
|
|
273
238
|
set visibleString(value) {
|
|
274
|
-
this.value = (
|
|
239
|
+
this.value = encodeVisibleString(value);
|
|
275
240
|
}
|
|
276
241
|
get visibleString() {
|
|
277
|
-
return (
|
|
242
|
+
return decodeVisibleString(this.value);
|
|
278
243
|
}
|
|
279
244
|
set generalString(value) {
|
|
280
|
-
this.value = (
|
|
245
|
+
this.value = encodeGeneralString(value);
|
|
281
246
|
}
|
|
282
247
|
get generalString() {
|
|
283
248
|
const bytes = this.deconstruct("GeneralString");
|
|
284
|
-
return (
|
|
249
|
+
return decodeGeneralString(bytes);
|
|
285
250
|
}
|
|
286
251
|
set characterString(value) {
|
|
287
|
-
this.value = (
|
|
288
|
-
this.construction =
|
|
252
|
+
this.value = encodeCharacterString(value);
|
|
253
|
+
this.construction = ASN1Construction.constructed;
|
|
289
254
|
}
|
|
290
255
|
get characterString() {
|
|
291
|
-
return (
|
|
256
|
+
return decodeCharacterString(this.value);
|
|
292
257
|
}
|
|
293
258
|
set universalString(value) {
|
|
294
259
|
const buf = new Uint8Array(value.length << 2);
|
|
@@ -326,8 +291,8 @@ class BERElement extends x690_1.default {
|
|
|
326
291
|
const valueBytes = this.deconstruct("BMPString");
|
|
327
292
|
if (valueBytes.length % 2)
|
|
328
293
|
throw new errors.ASN1Error("BMPString encoded on non-mulitple of two bytes.", this);
|
|
329
|
-
if (typeof
|
|
330
|
-
const swappedEndianness =
|
|
294
|
+
if (typeof Buffer !== "undefined") {
|
|
295
|
+
const swappedEndianness = Buffer.allocUnsafe(valueBytes.length);
|
|
331
296
|
for (let i = 0; i < valueBytes.length; i += 2) {
|
|
332
297
|
swappedEndianness[i] = valueBytes[i + 1];
|
|
333
298
|
swappedEndianness[i + 1] = valueBytes[i];
|
|
@@ -335,17 +300,17 @@ class BERElement extends x690_1.default {
|
|
|
335
300
|
return swappedEndianness.toString("utf16le");
|
|
336
301
|
}
|
|
337
302
|
else if (typeof TextEncoder !== "undefined") {
|
|
338
|
-
return (new TextDecoder("utf-16be")).decode(valueBytes
|
|
303
|
+
return (new TextDecoder("utf-16be")).decode(valueBytes);
|
|
339
304
|
}
|
|
340
305
|
else {
|
|
341
306
|
throw new errors.ASN1Error("Neither TextDecoder nor Buffer are defined to decode bytes into text.", this);
|
|
342
307
|
}
|
|
343
308
|
}
|
|
344
309
|
set duration(value) {
|
|
345
|
-
this.value = (
|
|
310
|
+
this.value = encodeDuration(value);
|
|
346
311
|
}
|
|
347
312
|
get duration() {
|
|
348
|
-
return (
|
|
313
|
+
return decodeDuration(this.value);
|
|
349
314
|
}
|
|
350
315
|
encode(value) {
|
|
351
316
|
switch (typeof value) {
|
|
@@ -354,52 +319,52 @@ class BERElement extends x690_1.default {
|
|
|
354
319
|
break;
|
|
355
320
|
}
|
|
356
321
|
case ("boolean"): {
|
|
357
|
-
this.tagNumber =
|
|
322
|
+
this.tagNumber = ASN1UniversalType.boolean;
|
|
358
323
|
this.boolean = value;
|
|
359
324
|
break;
|
|
360
325
|
}
|
|
361
326
|
case ("number"): {
|
|
362
327
|
if (Number.isInteger(value)) {
|
|
363
|
-
this.tagNumber =
|
|
328
|
+
this.tagNumber = ASN1UniversalType.integer;
|
|
364
329
|
this.integer = value;
|
|
365
330
|
}
|
|
366
331
|
else {
|
|
367
|
-
this.tagNumber =
|
|
332
|
+
this.tagNumber = ASN1UniversalType.realNumber;
|
|
368
333
|
this.real = value;
|
|
369
334
|
}
|
|
370
335
|
break;
|
|
371
336
|
}
|
|
372
337
|
case ("bigint"): {
|
|
373
|
-
this.tagNumber =
|
|
338
|
+
this.tagNumber = ASN1UniversalType.integer;
|
|
374
339
|
this.integer = value;
|
|
375
340
|
break;
|
|
376
341
|
}
|
|
377
342
|
case ("string"): {
|
|
378
|
-
this.tagNumber =
|
|
343
|
+
this.tagNumber = ASN1UniversalType.utf8String;
|
|
379
344
|
this.utf8String = value;
|
|
380
345
|
break;
|
|
381
346
|
}
|
|
382
347
|
case ("object"): {
|
|
383
348
|
if (!value) {
|
|
384
|
-
this.tagNumber =
|
|
349
|
+
this.tagNumber = ASN1UniversalType.nill;
|
|
385
350
|
this.value = new Uint8Array(0);
|
|
386
351
|
}
|
|
387
352
|
else if (value instanceof Uint8Array) {
|
|
388
|
-
this.tagNumber =
|
|
353
|
+
this.tagNumber = ASN1UniversalType.octetString;
|
|
389
354
|
this.octetString = value;
|
|
390
355
|
}
|
|
391
356
|
else if (value instanceof Uint8ClampedArray) {
|
|
392
|
-
this.tagNumber =
|
|
357
|
+
this.tagNumber = ASN1UniversalType.bitString;
|
|
393
358
|
this.bitString = value;
|
|
394
359
|
}
|
|
395
|
-
else if (value instanceof
|
|
396
|
-
this.construction =
|
|
360
|
+
else if (value instanceof ASN1Element) {
|
|
361
|
+
this.construction = ASN1Construction.constructed;
|
|
397
362
|
this.sequence = [value];
|
|
398
363
|
}
|
|
399
364
|
else if (value instanceof Set) {
|
|
400
|
-
this.construction =
|
|
365
|
+
this.construction = ASN1Construction.constructed;
|
|
401
366
|
this.set = Array.from(value).map((v) => {
|
|
402
|
-
if (typeof v === "object" && v instanceof
|
|
367
|
+
if (typeof v === "object" && v instanceof ASN1Element) {
|
|
403
368
|
return v;
|
|
404
369
|
}
|
|
405
370
|
else {
|
|
@@ -409,13 +374,13 @@ class BERElement extends x690_1.default {
|
|
|
409
374
|
}
|
|
410
375
|
});
|
|
411
376
|
}
|
|
412
|
-
else if ((value instanceof
|
|
413
|
-
this.tagNumber =
|
|
377
|
+
else if ((value instanceof ObjectIdentifier) || (value.constructor?.name === "ObjectIdentifier")) {
|
|
378
|
+
this.tagNumber = ASN1UniversalType.objectIdentifier;
|
|
414
379
|
this.objectIdentifier = value;
|
|
415
380
|
}
|
|
416
381
|
else if (Array.isArray(value)) {
|
|
417
|
-
this.construction =
|
|
418
|
-
this.tagNumber =
|
|
382
|
+
this.construction = ASN1Construction.constructed;
|
|
383
|
+
this.tagNumber = ASN1UniversalType.sequence;
|
|
419
384
|
this.sequence = value.map((sub) => {
|
|
420
385
|
const ret = new BERElement();
|
|
421
386
|
ret.encode(sub);
|
|
@@ -436,22 +401,22 @@ class BERElement extends x690_1.default {
|
|
|
436
401
|
}
|
|
437
402
|
}
|
|
438
403
|
static fromSequence(sequence) {
|
|
439
|
-
const ret = new BERElement(
|
|
404
|
+
const ret = new BERElement(ASN1TagClass.universal, ASN1Construction.constructed, ASN1UniversalType.sequence);
|
|
440
405
|
ret.sequence = sequence.filter((element) => Boolean(element));
|
|
441
406
|
return ret;
|
|
442
407
|
}
|
|
443
408
|
static fromSet(set) {
|
|
444
|
-
const ret = new BERElement(
|
|
409
|
+
const ret = new BERElement(ASN1TagClass.universal, ASN1Construction.constructed, ASN1UniversalType.set);
|
|
445
410
|
ret.set = set.filter((element) => Boolean(element));
|
|
446
411
|
return ret;
|
|
447
412
|
}
|
|
448
413
|
static fromSetOf(set) {
|
|
449
|
-
const ret = new BERElement(
|
|
414
|
+
const ret = new BERElement(ASN1TagClass.universal, ASN1Construction.constructed, ASN1UniversalType.set);
|
|
450
415
|
ret.setOf = set.filter((element) => Boolean(element));
|
|
451
416
|
return ret;
|
|
452
417
|
}
|
|
453
418
|
get inner() {
|
|
454
|
-
if (this.construction !==
|
|
419
|
+
if (this.construction !== ASN1Construction.constructed) {
|
|
455
420
|
throw new errors.ASN1ConstructionError("An explicitly-encoded element cannot be encoded using "
|
|
456
421
|
+ "primitive construction.", this);
|
|
457
422
|
}
|
|
@@ -472,12 +437,11 @@ class BERElement extends x690_1.default {
|
|
|
472
437
|
return ret;
|
|
473
438
|
}
|
|
474
439
|
set inner(value) {
|
|
475
|
-
this.construction =
|
|
440
|
+
this.construction = ASN1Construction.constructed;
|
|
476
441
|
this._value = [value];
|
|
477
442
|
}
|
|
478
|
-
constructor(tagClass =
|
|
443
|
+
constructor(tagClass = ASN1TagClass.universal, construction = ASN1Construction.primitive, tagNumber = ASN1UniversalType.endOfContent, value = undefined) {
|
|
479
444
|
super();
|
|
480
|
-
this._value = new Uint8Array(0);
|
|
481
445
|
this.encode(value);
|
|
482
446
|
this.tagClass = tagClass;
|
|
483
447
|
this.construction = construction;
|
|
@@ -493,21 +457,21 @@ class BERElement extends x690_1.default {
|
|
|
493
457
|
let cursor = 0;
|
|
494
458
|
switch (bytes[cursor] & 0b11000000) {
|
|
495
459
|
case (0b00000000):
|
|
496
|
-
this.tagClass =
|
|
460
|
+
this.tagClass = ASN1TagClass.universal;
|
|
497
461
|
break;
|
|
498
462
|
case (0b01000000):
|
|
499
|
-
this.tagClass =
|
|
463
|
+
this.tagClass = ASN1TagClass.application;
|
|
500
464
|
break;
|
|
501
465
|
case (0b10000000):
|
|
502
|
-
this.tagClass =
|
|
466
|
+
this.tagClass = ASN1TagClass.context;
|
|
503
467
|
break;
|
|
504
468
|
case (0b11000000):
|
|
505
|
-
this.tagClass =
|
|
469
|
+
this.tagClass = ASN1TagClass.private;
|
|
506
470
|
break;
|
|
507
|
-
default: this.tagClass =
|
|
471
|
+
default: this.tagClass = ASN1TagClass.universal;
|
|
508
472
|
}
|
|
509
473
|
this.construction = ((bytes[cursor] & 0b00100000)
|
|
510
|
-
?
|
|
474
|
+
? ASN1Construction.constructed : ASN1Construction.primitive);
|
|
511
475
|
this.tagNumber = (bytes[cursor] & 0b00011111);
|
|
512
476
|
cursor++;
|
|
513
477
|
if (this.tagNumber >= 31) {
|
|
@@ -566,7 +530,7 @@ class BERElement extends x690_1.default {
|
|
|
566
530
|
return (cursor + length);
|
|
567
531
|
}
|
|
568
532
|
else {
|
|
569
|
-
if (this.construction !==
|
|
533
|
+
if (this.construction !== ASN1Construction.constructed) {
|
|
570
534
|
throw new errors.ASN1ConstructionError("Indefinite length ASN.1 element was not of constructed construction.", this);
|
|
571
535
|
}
|
|
572
536
|
const startOfValue = ++cursor;
|
|
@@ -574,9 +538,9 @@ class BERElement extends x690_1.default {
|
|
|
574
538
|
while (sentinel < bytes.length) {
|
|
575
539
|
const child = new BERElement();
|
|
576
540
|
sentinel += child.fromBytes(bytes.subarray(sentinel));
|
|
577
|
-
if (child.tagClass ===
|
|
578
|
-
&& child.construction ===
|
|
579
|
-
&& child.tagNumber ===
|
|
541
|
+
if (child.tagClass === ASN1TagClass.universal
|
|
542
|
+
&& child.construction === ASN1Construction.primitive
|
|
543
|
+
&& child.tagNumber === ASN1UniversalType.endOfContent
|
|
580
544
|
&& child.value.length === 0)
|
|
581
545
|
break;
|
|
582
546
|
}
|
|
@@ -597,7 +561,7 @@ class BERElement extends x690_1.default {
|
|
|
597
561
|
}
|
|
598
562
|
}
|
|
599
563
|
lengthLength(valueLength) {
|
|
600
|
-
if (BERElement.lengthEncodingPreference ===
|
|
564
|
+
if (BERElement.lengthEncodingPreference === LengthEncodingPreference.indefinite) {
|
|
601
565
|
return 1;
|
|
602
566
|
}
|
|
603
567
|
const len = valueLength ?? this.valueLength();
|
|
@@ -630,7 +594,7 @@ class BERElement extends x690_1.default {
|
|
|
630
594
|
return len;
|
|
631
595
|
}
|
|
632
596
|
tlvLength() {
|
|
633
|
-
const eoc_bytes = (BERElement.lengthEncodingPreference ===
|
|
597
|
+
const eoc_bytes = (BERElement.lengthEncodingPreference === LengthEncodingPreference.indefinite)
|
|
634
598
|
? 2
|
|
635
599
|
: 0;
|
|
636
600
|
const value_len = this.valueLength();
|
|
@@ -642,8 +606,8 @@ class BERElement extends x690_1.default {
|
|
|
642
606
|
tagAndLengthBytes() {
|
|
643
607
|
const tagBytes = [0x00];
|
|
644
608
|
tagBytes[0] |= (this.tagClass << 6);
|
|
645
|
-
tagBytes[0] |= ((BERElement.lengthEncodingPreference ===
|
|
646
|
-
|| this.construction ===
|
|
609
|
+
tagBytes[0] |= ((BERElement.lengthEncodingPreference === LengthEncodingPreference.indefinite)
|
|
610
|
+
|| this.construction === ASN1Construction.constructed)
|
|
647
611
|
? (1 << 5)
|
|
648
612
|
: 0;
|
|
649
613
|
if (this.tagNumber < 31) {
|
|
@@ -664,7 +628,7 @@ class BERElement extends x690_1.default {
|
|
|
664
628
|
let lengthOctets = [0x00];
|
|
665
629
|
const value_len = this.valueLength();
|
|
666
630
|
switch (BERElement.lengthEncodingPreference) {
|
|
667
|
-
case (
|
|
631
|
+
case (LengthEncodingPreference.definite): {
|
|
668
632
|
if (value_len < 127) {
|
|
669
633
|
lengthOctets[0] = value_len;
|
|
670
634
|
}
|
|
@@ -683,7 +647,7 @@ class BERElement extends x690_1.default {
|
|
|
683
647
|
}
|
|
684
648
|
break;
|
|
685
649
|
}
|
|
686
|
-
case (
|
|
650
|
+
case (LengthEncodingPreference.indefinite): {
|
|
687
651
|
lengthOctets = [0b10000000];
|
|
688
652
|
break;
|
|
689
653
|
}
|
|
@@ -701,13 +665,13 @@ class BERElement extends x690_1.default {
|
|
|
701
665
|
...(Array.isArray(this._value)
|
|
702
666
|
? this._value.flatMap((el) => el.toBuffers())
|
|
703
667
|
: [this._value]),
|
|
704
|
-
...(BERElement.lengthEncodingPreference ===
|
|
668
|
+
...(BERElement.lengthEncodingPreference === LengthEncodingPreference.indefinite
|
|
705
669
|
? [new Uint8Array(2)]
|
|
706
670
|
: []),
|
|
707
671
|
];
|
|
708
672
|
}
|
|
709
673
|
deconstruct(dataType) {
|
|
710
|
-
if (this.construction ===
|
|
674
|
+
if (this.construction === ASN1Construction.primitive) {
|
|
711
675
|
return this.value;
|
|
712
676
|
}
|
|
713
677
|
else {
|
|
@@ -716,17 +680,17 @@ class BERElement extends x690_1.default {
|
|
|
716
680
|
const appendy = [];
|
|
717
681
|
const substrings = this.sequence;
|
|
718
682
|
for (const substring of substrings) {
|
|
719
|
-
if (substring.tagClass !==
|
|
683
|
+
if (substring.tagClass !== ASN1TagClass.universal) {
|
|
720
684
|
throw new errors.ASN1ConstructionError(`Invalid tag class in constructed ${dataType}. Must be UNIVERSAL`, this);
|
|
721
685
|
}
|
|
722
|
-
if (substring.tagNumber !==
|
|
686
|
+
if (substring.tagNumber !== ASN1UniversalType.octetString) {
|
|
723
687
|
throw new errors.ASN1ConstructionError(`Invalid tag number in constructed ${dataType}. Must be 4 (OCTET STRING).`, this);
|
|
724
688
|
}
|
|
725
689
|
substring.recursionCount = (this.recursionCount + 1);
|
|
726
690
|
const deconstructed = substring.deconstruct(dataType);
|
|
727
691
|
appendy.push(deconstructed);
|
|
728
692
|
}
|
|
729
|
-
return
|
|
693
|
+
return Buffer.concat(appendy);
|
|
730
694
|
}
|
|
731
695
|
}
|
|
732
696
|
get components() {
|
|
@@ -743,5 +707,3 @@ class BERElement extends x690_1.default {
|
|
|
743
707
|
return encodedElements;
|
|
744
708
|
}
|
|
745
709
|
}
|
|
746
|
-
BERElement.lengthEncodingPreference = values_1.LengthEncodingPreference.definite;
|
|
747
|
-
exports.default = BERElement;
|