UNPKG

@wildboar/pkcs

Version:
44 lines (43 loc) 2.22 kB
/* eslint-disable */ import { ASN1TagClass as _TagClass } from "@wildboar/asn1"; import * as $ from "@wildboar/asn1/functional"; import { _get_decoder_for_EnvelopedData, _get_encoder_for_EnvelopedData, } from "../PKCS-15/EnvelopedData.ta.mjs"; import { _decode_Path, _encode_Path } from "../PKCS-15/Path.ta.mjs"; import { _get_decoder_for_ReferencedValue, _get_encoder_for_ReferencedValue, } from "../PKCS-15/ReferencedValue.ta.mjs"; /** * @summary Returns a function that will decode an ASN.1 element into a(n) PathOrObjects * @function * @param {_Element} el The element being decoded. * @returns A function that will decode an ASN.1 element. */ export function _get_decoder_for_PathOrObjects(_decode_ObjectType) { return $._decode_extensible_choice({ "UNIVERSAL 16": ["path", _decode_Path], "CONTEXT 0": [ "objects", $._decode_implicit(() => $._decodeSequenceOf(() => _decode_ObjectType)), ], "CONTEXT 1": [ "indirect_protected", $._decode_explicit(() => _get_decoder_for_ReferencedValue(_get_decoder_for_EnvelopedData($._decodeSequenceOf(() => _decode_ObjectType)))), ], "CONTEXT 2": [ "direct_protected", $._decode_implicit(() => _get_decoder_for_EnvelopedData($._decodeSequenceOf(() => _decode_ObjectType))), ], }); } /** * @summary Returns a function that will encode a(n) PathOrObjects into an ASN.1 Element. * @function * @returns A function that will encode a(n) PathOrObjects as an ASN.1 element. */ export function _get_encoder_for_PathOrObjects(_encode_ObjectType) { return $._encode_choice({ path: _encode_Path, objects: $._encode_implicit(_TagClass.context, 0, () => $._encodeSequenceOf(() => _encode_ObjectType, $.BER), $.BER), indirect_protected: $._encode_explicit(_TagClass.context, 1, () => _get_encoder_for_ReferencedValue(_get_encoder_for_EnvelopedData($._encodeSequenceOf(() => _encode_ObjectType, $.BER))), $.BER), direct_protected: $._encode_implicit(_TagClass.context, 2, () => _get_encoder_for_EnvelopedData($._encodeSequenceOf(() => _encode_ObjectType, $.BER)), $.BER), }, $.BER); } /* eslint-enable */