@wildboar/pkcs
Version:
Public Key Cryptography Standard PDUs in TypeScript
77 lines (76 loc) • 4.66 kB
JavaScript
/* eslint-disable */
import { ASN1TagClass as _TagClass } from "@wildboar/asn1";
import * as $ from "@wildboar/asn1/functional";
import { _get_decoder_for_CertificateObject, _get_encoder_for_CertificateObject, } from "../PKCS-15/CertificateObject.ta.mjs";
import { _decode_CVCertificateAttributes, _encode_CVCertificateAttributes, } from "../PKCS-15/CVCertificateAttributes.ta.mjs";
import { _decode_PGPCertificateAttributes, _encode_PGPCertificateAttributes, } from "../PKCS-15/PGPCertificateAttributes.ta.mjs";
import { _decode_SPKICertificateAttributes, _encode_SPKICertificateAttributes, } from "../PKCS-15/SPKICertificateAttributes.ta.mjs";
import { _decode_WTLSCertificateAttributes, _encode_WTLSCertificateAttributes, } from "../PKCS-15/WTLSCertificateAttributes.ta.mjs";
import { _decode_X509AttributeCertificateAttributes, _encode_X509AttributeCertificateAttributes, } from "../PKCS-15/X509AttributeCertificateAttributes.ta.mjs";
import { _decode_X509CertificateAttributes, _encode_X509CertificateAttributes, } from "../PKCS-15/X509CertificateAttributes.ta.mjs";
import { _decode_X9_68CertificateAttributes, _encode_X9_68CertificateAttributes, } from "../PKCS-15/X9-68CertificateAttributes.ta.mjs";
let _cached_decoder_for_CertificateType = null;
/**
* @summary Decodes an ASN.1 element into a(n) CertificateType
* @function
* @param {_Element} el The element being decoded.
* @returns {CertificateType} The decoded data structure.
*/
export function _decode_CertificateType(el) {
if (!_cached_decoder_for_CertificateType) {
_cached_decoder_for_CertificateType = $._decode_extensible_choice({
"UNIVERSAL 16": [
"x509Certificate",
_get_decoder_for_CertificateObject(_decode_X509CertificateAttributes),
],
"CONTEXT 0": [
"x509AttributeCertificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_X509AttributeCertificateAttributes)),
],
"CONTEXT 1": [
"spkiCertificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_SPKICertificateAttributes)),
],
"CONTEXT 2": [
"pgpCertificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_PGPCertificateAttributes)),
],
"CONTEXT 3": [
"wtlsCertificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_WTLSCertificateAttributes)),
],
"CONTEXT 4": [
"x9_68Certificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_X9_68CertificateAttributes)),
],
"CONTEXT 5": [
"cvCertificate",
$._decode_implicit(() => _get_decoder_for_CertificateObject(_decode_CVCertificateAttributes)),
],
});
}
return _cached_decoder_for_CertificateType(el);
}
let _cached_encoder_for_CertificateType = null;
/**
* @summary Encodes a(n) CertificateType into an ASN.1 Element.
* @function
* @param value The element being encoded.
* @param elGetter A function that can be used to get new ASN.1 elements.
* @returns {_Element} The CertificateType, encoded as an ASN.1 Element.
*/
export function _encode_CertificateType(value, elGetter) {
if (!_cached_encoder_for_CertificateType) {
_cached_encoder_for_CertificateType = $._encode_choice({
x509Certificate: _get_encoder_for_CertificateObject(_encode_X509CertificateAttributes),
x509AttributeCertificate: $._encode_implicit(_TagClass.context, 0, () => _get_encoder_for_CertificateObject(_encode_X509AttributeCertificateAttributes), $.BER),
spkiCertificate: $._encode_implicit(_TagClass.context, 1, () => _get_encoder_for_CertificateObject(_encode_SPKICertificateAttributes), $.BER),
pgpCertificate: $._encode_implicit(_TagClass.context, 2, () => _get_encoder_for_CertificateObject(_encode_PGPCertificateAttributes), $.BER),
wtlsCertificate: $._encode_implicit(_TagClass.context, 3, () => _get_encoder_for_CertificateObject(_encode_WTLSCertificateAttributes), $.BER),
x9_68Certificate: $._encode_implicit(_TagClass.context, 4, () => _get_encoder_for_CertificateObject(_encode_X9_68CertificateAttributes), $.BER),
cvCertificate: $._encode_implicit(_TagClass.context, 5, () => _get_encoder_for_CertificateObject(_encode_CVCertificateAttributes), $.BER),
}, $.BER);
}
return _cached_encoder_for_CertificateType(value, elGetter);
}
/* eslint-enable */