UNPKG

scvp-ts

Version:

Server-side Certificate Validation Protocol (SCVP) in TypeScript

781 lines (780 loc) 129 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.id_kp_scvpClient = exports.id_kp_scvpServer = exports.id_kp = exports.id_nvae_mixed_names = exports.id_nvae_bad_name_type = exports.id_nvae_bad_name = exports.id_nvae_unknown_alg = exports.id_nvae_no_name = exports.id_nvae_name_mismatch = exports.id_nvae = exports.id_svp_nameValAlg = exports.id_nva_dnCompAlg = exports.id_bvae_invalidCertPolicy = exports.id_bvae_invalidKeyUsage = exports.id_bvae_invalidKeyPurpose = exports.id_bvae_revoked = exports.id_bvae_noValidCertPath = exports.id_bvae_wrongTrustAnchor = exports.id_bvae_not_yet_valid = exports.id_bvae_expired = exports.id_bvae = exports.id_svp_basicValAlg = exports.id_svp_defaultValPolicy = exports.id_svp = exports.id_swb_ac_cert = exports.id_swb_pkc_cert = exports.id_swb_pkc_CAs_revocation_info = exports.id_swb_pkc_ee_revocation_info = exports.id_swb_pkc_all_cert_paths = exports.id_swb_relayed_responses = exports.id_swb_ac_revocation_info = exports.id_swb_aa_revocation_info = exports.id_swb_aa_cert_path = exports.id_swb_pkc_public_key_info = exports.id_swb_pkc_revocation_info = exports.id_swb_pkc_best_cert_path = exports.id_swb = exports.id_stc_status_check_ac_and_build_status_checked_aa_path = exports.id_stc_build_status_checked_aa_path = exports.id_stc_build_valid_aa_path = exports.id_stc_build_aa_path = exports.id_stc_build_status_checked_pkc_path = exports.id_stc_build_valid_pkc_path = exports.id_stc_build_pkc_path = exports.id_stc = exports._encode_ValPolResponse = exports._decode_ValPolResponse = exports._extension_additions_list_spec_for_ValPolResponse = exports._root_component_type_list_2_spec_for_ValPolResponse = exports._root_component_type_list_1_spec_for_ValPolResponse = exports.ValPolResponse = exports._encode_KeyAgreePublicKey = exports._decode_KeyAgreePublicKey = exports._extension_additions_list_spec_for_KeyAgreePublicKey = exports._root_component_type_list_2_spec_for_KeyAgreePublicKey = exports._root_component_type_list_1_spec_for_KeyAgreePublicKey = exports.KeyAgreePublicKey = exports._encode_RevocationInfoTypes = exports._decode_RevocationInfoTypes = exports.RevocationInfoTypes_oCSPResponses = exports.RevocationInfoTypes_indirectCRLs = exports.RevocationInfoTypes_deltaCRLs = exports.RevocationInfoTypes_fullCRLs = exports._encode_ResponseTypes = exports._decode_ResponseTypes = exports.ResponseTypes_cached_and_non_cached = exports.ResponseTypes_non_cached_only = exports.ResponseTypes_cached_only = exports.ResponseTypes = exports._encode_AuthPolicy = exports._decode_AuthPolicy = exports.id_ct_scvp_valPolResponse = exports._encode_ValPolRequest = exports._decode_ValPolRequest = exports._extension_additions_list_spec_for_ValPolRequest = exports._root_component_type_list_2_spec_for_ValPolRequest = exports._root_component_type_list_1_spec_for_ValPolRequest = exports.ValPolRequest = exports.id_ct_scvp_valPolRequest = exports._encode_SCVPResponses = exports._decode_SCVPResponses = exports._encode_RevInfoWantBack = exports._decode_RevInfoWantBack = exports._extension_additions_list_spec_for_RevInfoWantBack = exports._root_component_type_list_2_spec_for_RevInfoWantBack = exports._root_component_type_list_1_spec_for_RevInfoWantBack = exports.RevInfoWantBack = exports._encode_CertBundles = exports._decode_CertBundles = exports._encode_CVResponse = exports._decode_CVResponse = exports._extension_additions_list_spec_for_CVResponse = exports._root_component_type_list_2_spec_for_CVResponse = exports._root_component_type_list_1_spec_for_CVResponse = exports.CVResponse = exports._encode_ReplyObjects = exports._decode_ReplyObjects = exports._encode_CertReply = exports._decode_CertReply = exports._extension_additions_list_spec_for_CertReply = exports._root_component_type_list_2_spec_for_CertReply = exports._root_component_type_list_1_spec_for_CertReply = exports.CertReply = exports._encode_ReplyWantBacks = exports._decode_ReplyWantBacks = exports._encode_ReplyWantBack = exports._decode_ReplyWantBack = exports._extension_additions_list_spec_for_ReplyWantBack = exports._root_component_type_list_2_spec_for_ReplyWantBack = exports._root_component_type_list_1_spec_for_ReplyWantBack = exports.ReplyWantBack = exports._encode_ReplyChecks = exports._decode_ReplyChecks = exports._encode_ReplyCheck = exports._decode_ReplyCheck = exports._extension_additions_list_spec_for_ReplyCheck = exports._root_component_type_list_2_spec_for_ReplyCheck = exports._root_component_type_list_1_spec_for_ReplyCheck = exports.ReplyCheck = exports._encode_ReplyStatus = exports._decode_ReplyStatus = exports.ReplyStatus_wantBackUnsatisfied = exports.ReplyStatus_certPathNotValidNow = exports.ReplyStatus_certPathNotValid = exports.ReplyStatus_certPathConstructFail = exports.ReplyStatus_referenceCertHashFail = exports.ReplyStatus_unavailableValidationTime = exports.ReplyStatus_malformedAC = exports.ReplyStatus_malformedPKC = exports.ReplyStatus_success = exports.ReplyStatus = exports._encode_CertReference = exports._decode_CertReference = exports._encode_RequestReference = exports._decode_RequestReference = exports._encode_CVRequest = exports._decode_CVRequest = exports._extension_additions_list_spec_for_CVRequest = exports._root_component_type_list_2_spec_for_CVRequest = exports._root_component_type_list_1_spec_for_CVRequest = exports.CVRequest = exports._encode_Query = exports._decode_Query = exports._extension_additions_list_spec_for_Query = exports._root_component_type_list_2_spec_for_Query = exports._root_component_type_list_1_spec_for_Query = exports.Query = exports._encode_RevocationInfos = exports._decode_RevocationInfos = exports._encode_RevocationInfo = exports._decode_RevocationInfo = exports._encode_OtherRevInfo = exports._decode_OtherRevInfo = exports._extension_additions_list_spec_for_OtherRevInfo = exports._root_component_type_list_2_spec_for_OtherRevInfo = exports._root_component_type_list_1_spec_for_OtherRevInfo = exports.OtherRevInfo = exports._encode_CertBundle = exports._decode_CertBundle = exports._encode_ResponseFlags = exports._decode_ResponseFlags = exports._extension_additions_list_spec_for_ResponseFlags = exports._root_component_type_list_2_spec_for_ResponseFlags = exports._root_component_type_list_1_spec_for_ResponseFlags = exports.ResponseFlags = exports._encode_WantBack = exports._decode_WantBack = exports._encode_CertChecks = exports._decode_CertChecks = exports._encode_CertReferences = exports._decode_CertReferences = exports._encode_ACReference = exports._decode_ACReference = exports._encode_HashValue = exports._decode_HashValue = exports._extension_additions_list_spec_for_HashValue = exports._root_component_type_list_2_spec_for_HashValue = exports._root_component_type_list_1_spec_for_HashValue = exports.HashValue = exports._encode_RespValidationPolicy = exports._decode_RespValidationPolicy = exports._encode_ValidationPolicy = exports._decode_ValidationPolicy = exports._extension_additions_list_spec_for_ValidationPolicy = exports._root_component_type_list_2_spec_for_ValidationPolicy = exports._root_component_type_list_1_spec_for_ValidationPolicy = exports.ValidationPolicy = exports._encode_TrustAnchors = exports._decode_TrustAnchors = exports._encode_PKCReference = exports._decode_PKCReference = exports._encode_SCVPCertID = exports._decode_SCVPCertID = exports._extension_additions_list_spec_for_SCVPCertID = exports._root_component_type_list_2_spec_for_SCVPCertID = exports._root_component_type_list_1_spec_for_SCVPCertID = exports.SCVPCertID = exports._encode_HashAlgorithm = exports._decode_HashAlgorithm = exports._encode_SCVPIssuerSerial = exports._decode_SCVPIssuerSerial = exports._extension_additions_list_spec_for_SCVPIssuerSerial = exports._root_component_type_list_2_spec_for_SCVPIssuerSerial = exports._root_component_type_list_1_spec_for_SCVPIssuerSerial = exports.SCVPIssuerSerial = exports._encode_ValidationAlg = exports._decode_ValidationAlg = exports._extension_additions_list_spec_for_ValidationAlg = exports._root_component_type_list_2_spec_for_ValidationAlg = exports._root_component_type_list_1_spec_for_ValidationAlg = exports.ValidationAlg = exports._encode_ValidationPolRef = exports._decode_ValidationPolRef = exports._extension_additions_list_spec_for_ValidationPolRef = exports._root_component_type_list_2_spec_for_ValidationPolRef = exports._root_component_type_list_1_spec_for_ValidationPolRef = exports.ValidationPolRef = exports._encode_ResponseStatus = exports._decode_ResponseStatus = exports._extension_additions_list_spec_for_ResponseStatus = exports._root_component_type_list_2_spec_for_ResponseStatus = exports._root_component_type_list_1_spec_for_ResponseStatus = exports.ResponseStatus = exports._encode_CVStatusCode = exports._decode_CVStatusCode = exports.CVStatusCode_unrecognizedCritRequestExt = exports.CVStatusCode_unrecognizedCritQueryExt = exports.CVStatusCode_validationTimeUnsupported = exports.CVStatusCode_inhibitAnyPolicyUnsupported = exports.CVStatusCode_requireExplicitPolicyUnsupported = exports.CVStatusCode_inhibitPolicyMappingUnsupported = exports.CVStatusCode_fullPolResponseUnsupported = exports.CVStatusCode_fullRequestInResponseUnsupported = exports.CVStatusCode_unrecognizedValAlg = exports.CVStatusCode_unrecognizedValPol = exports.CVStatusCode_relayingLoop = exports.CVStatusCode_unrecognizedResponderName = exports.CVStatusCode_protectedResponseUnsupported = exports.CVStatusCode_invalidSignatureOrMAC = exports.CVStatusCode_unsupportedSignatureOrMAC = exports.CVStatusCode_unsupportedWantBacks = exports.CVStatusCode_unsupportedChecks = exports.CVStatusCode_notAuthorized = exports.CVStatusCode_unableToDecode = exports.CVStatusCode_badSignatureOrMAC = exports.CVStatusCode_unrecognizedSigKey = exports.CVStatusCode_abortUnrecognizedItems = exports.CVStatusCode_unsupportedVersion = exports.CVStatusCode_badStructure = exports.CVStatusCode_internalError = exports.CVStatusCode_invalidRequest = exports.CVStatusCode_tooBusy = exports.CVStatusCode_skipUnrecognizedItems = exports.CVStatusCode_okay = exports.id_ct_scvp_certValResponse = exports._encode_NameValidationAlgParams = exports._decode_NameValidationAlgParams = exports._extension_additions_list_spec_for_NameValidationAlgParams = exports._root_component_type_list_2_spec_for_NameValidationAlgParams = exports._root_component_type_list_1_spec_for_NameValidationAlgParams = exports.NameValidationAlgParams = exports.id_ct_scvp_certValRequest = exports.id_ct = void 0; const tslib_1 = require("tslib"); const asn1 = tslib_1.__importStar(require("asn1-ts")); const CryptographicMessageSyntax_2010_1 = require("cms-ts/dist/node/CryptographicMessageSyntax-2010"); const OCSP_2013_08_1 = require("ocsp-ts/dist/node/OCSP-2013-08"); const AlgorithmObjectIdentifiers_1 = require("x500-ts/dist/node/AlgorithmObjectIdentifiers"); const AttributeCertificateDefinitions_1 = require("x500-ts/dist/node/AttributeCertificateDefinitions"); const AuthenticationFramework_1 = require("x500-ts/dist/node/AuthenticationFramework"); const CertificateExtensions_1 = require("x500-ts/dist/node/CertificateExtensions"); const __utils = tslib_1.__importStar(require("./__utils")); exports.id_ct = new asn1.ObjectIdentifier([ 1, 2, 840, 113549, 1, 9, 16, 1, ]); exports.id_ct_scvp_certValRequest = new asn1.ObjectIdentifier([10], exports.id_ct); class NameValidationAlgParams { constructor(nameCompAlgId, validationNames) { this.nameCompAlgId = nameCompAlgId; this.validationNames = validationNames; } } exports.NameValidationAlgParams = NameValidationAlgParams; exports._root_component_type_list_1_spec_for_NameValidationAlgParams = [ new __utils.ComponentSpec("nameCompAlgId", false, __utils.hasTag(asn1.ASN1TagClass.universal, 6), undefined, undefined), new __utils.ComponentSpec("validationNames", false, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_NameValidationAlgParams = []; exports._extension_additions_list_spec_for_NameValidationAlgParams = []; let _cached_decoder_for_NameValidationAlgParams = null; let _cached_encoder_for_NameValidationAlgParams = null; function _decode_NameValidationAlgParams(el) { if (!_cached_decoder_for_NameValidationAlgParams) { _cached_decoder_for_NameValidationAlgParams = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("NameValidationAlgParams contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "nameCompAlgId"; sequence[1].name = "validationNames"; let nameCompAlgId; let validationNames; nameCompAlgId = __utils._decodeObjectIdentifier(sequence[0]); validationNames = CertificateExtensions_1._decode_GeneralNames(sequence[1]); return new NameValidationAlgParams(nameCompAlgId, validationNames); }; } return _cached_decoder_for_NameValidationAlgParams(el); } exports._decode_NameValidationAlgParams = _decode_NameValidationAlgParams; function _encode_NameValidationAlgParams(value, elGetter) { if (!_cached_encoder_for_NameValidationAlgParams) { _cached_encoder_for_NameValidationAlgParams = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encodeObjectIdentifier(value.nameCompAlgId, __utils.BER), CertificateExtensions_1._encode_GeneralNames(value.validationNames, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_NameValidationAlgParams(value, elGetter); } exports._encode_NameValidationAlgParams = _encode_NameValidationAlgParams; exports.id_ct_scvp_certValResponse = new asn1.ObjectIdentifier([11], exports.id_ct); exports.CVStatusCode_okay = 0; exports.CVStatusCode_skipUnrecognizedItems = 1; exports.CVStatusCode_tooBusy = 10; exports.CVStatusCode_invalidRequest = 11; exports.CVStatusCode_internalError = 12; exports.CVStatusCode_badStructure = 20; exports.CVStatusCode_unsupportedVersion = 21; exports.CVStatusCode_abortUnrecognizedItems = 22; exports.CVStatusCode_unrecognizedSigKey = 23; exports.CVStatusCode_badSignatureOrMAC = 24; exports.CVStatusCode_unableToDecode = 25; exports.CVStatusCode_notAuthorized = 26; exports.CVStatusCode_unsupportedChecks = 27; exports.CVStatusCode_unsupportedWantBacks = 28; exports.CVStatusCode_unsupportedSignatureOrMAC = 29; exports.CVStatusCode_invalidSignatureOrMAC = 30; exports.CVStatusCode_protectedResponseUnsupported = 31; exports.CVStatusCode_unrecognizedResponderName = 32; exports.CVStatusCode_relayingLoop = 40; exports.CVStatusCode_unrecognizedValPol = 50; exports.CVStatusCode_unrecognizedValAlg = 51; exports.CVStatusCode_fullRequestInResponseUnsupported = 52; exports.CVStatusCode_fullPolResponseUnsupported = 53; exports.CVStatusCode_inhibitPolicyMappingUnsupported = 54; exports.CVStatusCode_requireExplicitPolicyUnsupported = 55; exports.CVStatusCode_inhibitAnyPolicyUnsupported = 56; exports.CVStatusCode_validationTimeUnsupported = 57; exports.CVStatusCode_unrecognizedCritQueryExt = 63; exports.CVStatusCode_unrecognizedCritRequestExt = 64; let _cached_decoder_for_CVStatusCode = null; let _cached_encoder_for_CVStatusCode = null; function _decode_CVStatusCode(el) { if (!_cached_decoder_for_CVStatusCode) { _cached_decoder_for_CVStatusCode = __utils._decodeEnumerated; } return _cached_decoder_for_CVStatusCode(el); } exports._decode_CVStatusCode = _decode_CVStatusCode; function _encode_CVStatusCode(value, elGetter) { if (!_cached_encoder_for_CVStatusCode) { _cached_encoder_for_CVStatusCode = __utils._encodeEnumerated; } return _cached_encoder_for_CVStatusCode(value, elGetter); } exports._encode_CVStatusCode = _encode_CVStatusCode; class ResponseStatus { constructor(statusCode, errorMessage) { this.statusCode = statusCode; this.errorMessage = errorMessage; } static get _default_value_for_statusCode() { return exports.CVStatusCode_okay; } } exports.ResponseStatus = ResponseStatus; exports._root_component_type_list_1_spec_for_ResponseStatus = [ new __utils.ComponentSpec("statusCode", true, __utils.hasTag(asn1.ASN1TagClass.universal, 10), undefined, undefined), new __utils.ComponentSpec("errorMessage", true, __utils.hasTag(asn1.ASN1TagClass.universal, 12), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_ResponseStatus = []; exports._extension_additions_list_spec_for_ResponseStatus = []; let _cached_decoder_for_ResponseStatus = null; let _cached_encoder_for_ResponseStatus = null; function _decode_ResponseStatus(el) { if (!_cached_decoder_for_ResponseStatus) { _cached_decoder_for_ResponseStatus = function (el) { let statusCode = ResponseStatus._default_value_for_statusCode; let errorMessage; const callbacks = { statusCode: (_el) => { statusCode = _decode_CVStatusCode(_el); }, errorMessage: (_el) => { errorMessage = __utils._decodeUTF8String(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_ResponseStatus, exports._extension_additions_list_spec_for_ResponseStatus, exports._root_component_type_list_2_spec_for_ResponseStatus, undefined); return new ResponseStatus(statusCode, errorMessage); }; } return _cached_decoder_for_ResponseStatus(el); } exports._decode_ResponseStatus = _decode_ResponseStatus; function _encode_ResponseStatus(value, elGetter) { if (!_cached_encoder_for_ResponseStatus) { _cached_encoder_for_ResponseStatus = function (value, elGetter) { return __utils._encodeSequence([] .concat([ value.statusCode === undefined || __utils.deepEq(value.statusCode, ResponseStatus._default_value_for_statusCode) ? undefined : _encode_CVStatusCode(value.statusCode, __utils.BER), value.errorMessage === undefined ? undefined : __utils._encodeUTF8String(value.errorMessage, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_ResponseStatus(value, elGetter); } exports._encode_ResponseStatus = _encode_ResponseStatus; class ValidationPolRef { constructor(valPolId, valPolParams) { this.valPolId = valPolId; this.valPolParams = valPolParams; } } exports.ValidationPolRef = ValidationPolRef; exports._root_component_type_list_1_spec_for_ValidationPolRef = [ new __utils.ComponentSpec("valPolId", false, __utils.hasTag(asn1.ASN1TagClass.universal, 6), undefined, undefined), new __utils.ComponentSpec("valPolParams", true, __utils.hasAnyTag, undefined, undefined), ]; exports._root_component_type_list_2_spec_for_ValidationPolRef = []; exports._extension_additions_list_spec_for_ValidationPolRef = []; let _cached_decoder_for_ValidationPolRef = null; let _cached_encoder_for_ValidationPolRef = null; function _decode_ValidationPolRef(el) { if (!_cached_decoder_for_ValidationPolRef) { _cached_decoder_for_ValidationPolRef = function (el) { let valPolId; let valPolParams; const callbacks = { valPolId: (_el) => { valPolId = __utils._decodeObjectIdentifier(_el); }, valPolParams: (_el) => { valPolParams = __utils._decodeAny(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_ValidationPolRef, exports._extension_additions_list_spec_for_ValidationPolRef, exports._root_component_type_list_2_spec_for_ValidationPolRef, undefined); return new ValidationPolRef(valPolId, valPolParams); }; } return _cached_decoder_for_ValidationPolRef(el); } exports._decode_ValidationPolRef = _decode_ValidationPolRef; function _encode_ValidationPolRef(value, elGetter) { if (!_cached_encoder_for_ValidationPolRef) { _cached_encoder_for_ValidationPolRef = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encodeObjectIdentifier(value.valPolId, __utils.BER), value.valPolParams === undefined ? undefined : __utils._encodeAny(value.valPolParams, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_ValidationPolRef(value, elGetter); } exports._encode_ValidationPolRef = _encode_ValidationPolRef; class ValidationAlg { constructor(valAlgId, parameters) { this.valAlgId = valAlgId; this.parameters = parameters; } } exports.ValidationAlg = ValidationAlg; exports._root_component_type_list_1_spec_for_ValidationAlg = [ new __utils.ComponentSpec("valAlgId", false, __utils.hasTag(asn1.ASN1TagClass.universal, 6), undefined, undefined), new __utils.ComponentSpec("parameters", true, __utils.hasAnyTag, undefined, undefined), ]; exports._root_component_type_list_2_spec_for_ValidationAlg = []; exports._extension_additions_list_spec_for_ValidationAlg = []; let _cached_decoder_for_ValidationAlg = null; let _cached_encoder_for_ValidationAlg = null; function _decode_ValidationAlg(el) { if (!_cached_decoder_for_ValidationAlg) { _cached_decoder_for_ValidationAlg = function (el) { let valAlgId; let parameters; const callbacks = { valAlgId: (_el) => { valAlgId = __utils._decodeObjectIdentifier(_el); }, parameters: (_el) => { parameters = __utils._decodeAny(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_ValidationAlg, exports._extension_additions_list_spec_for_ValidationAlg, exports._root_component_type_list_2_spec_for_ValidationAlg, undefined); return new ValidationAlg(valAlgId, parameters); }; } return _cached_decoder_for_ValidationAlg(el); } exports._decode_ValidationAlg = _decode_ValidationAlg; function _encode_ValidationAlg(value, elGetter) { if (!_cached_encoder_for_ValidationAlg) { _cached_encoder_for_ValidationAlg = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encodeObjectIdentifier(value.valAlgId, __utils.BER), value.parameters === undefined ? undefined : __utils._encodeAny(value.parameters, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_ValidationAlg(value, elGetter); } exports._encode_ValidationAlg = _encode_ValidationAlg; class SCVPIssuerSerial { constructor(issuer, serialNumber) { this.issuer = issuer; this.serialNumber = serialNumber; } } exports.SCVPIssuerSerial = SCVPIssuerSerial; exports._root_component_type_list_1_spec_for_SCVPIssuerSerial = [ new __utils.ComponentSpec("issuer", false, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), new __utils.ComponentSpec("serialNumber", false, __utils.hasTag(asn1.ASN1TagClass.universal, 2), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_SCVPIssuerSerial = []; exports._extension_additions_list_spec_for_SCVPIssuerSerial = []; let _cached_decoder_for_SCVPIssuerSerial = null; let _cached_encoder_for_SCVPIssuerSerial = null; function _decode_SCVPIssuerSerial(el) { if (!_cached_decoder_for_SCVPIssuerSerial) { _cached_decoder_for_SCVPIssuerSerial = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("SCVPIssuerSerial contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "issuer"; sequence[1].name = "serialNumber"; let issuer; let serialNumber; issuer = CertificateExtensions_1._decode_GeneralNames(sequence[0]); serialNumber = AuthenticationFramework_1._decode_CertificateSerialNumber(sequence[1]); return new SCVPIssuerSerial(issuer, serialNumber); }; } return _cached_decoder_for_SCVPIssuerSerial(el); } exports._decode_SCVPIssuerSerial = _decode_SCVPIssuerSerial; function _encode_SCVPIssuerSerial(value, elGetter) { if (!_cached_encoder_for_SCVPIssuerSerial) { _cached_encoder_for_SCVPIssuerSerial = function (value, elGetter) { return __utils._encodeSequence([] .concat([ CertificateExtensions_1._encode_GeneralNames(value.issuer, __utils.BER), AuthenticationFramework_1._encode_CertificateSerialNumber(value.serialNumber, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_SCVPIssuerSerial(value, elGetter); } exports._encode_SCVPIssuerSerial = _encode_SCVPIssuerSerial; let _cached_decoder_for_HashAlgorithm = null; let _cached_encoder_for_HashAlgorithm = null; function _decode_HashAlgorithm(el) { if (!_cached_decoder_for_HashAlgorithm) { _cached_decoder_for_HashAlgorithm = AuthenticationFramework_1._decode_AlgorithmIdentifier; } return _cached_decoder_for_HashAlgorithm(el); } exports._decode_HashAlgorithm = _decode_HashAlgorithm; function _encode_HashAlgorithm(value, elGetter) { if (!_cached_encoder_for_HashAlgorithm) { _cached_encoder_for_HashAlgorithm = AuthenticationFramework_1._encode_AlgorithmIdentifier; } return _cached_encoder_for_HashAlgorithm(value, elGetter); } exports._encode_HashAlgorithm = _encode_HashAlgorithm; class SCVPCertID { constructor(certHash, issuerSerial, hashAlgorithm) { this.certHash = certHash; this.issuerSerial = issuerSerial; this.hashAlgorithm = hashAlgorithm; } static get _default_value_for_hashAlgorithm() { return new AuthenticationFramework_1.AlgorithmIdentifier(AlgorithmObjectIdentifiers_1.id_sha1, undefined); } } exports.SCVPCertID = SCVPCertID; exports._root_component_type_list_1_spec_for_SCVPCertID = [ new __utils.ComponentSpec("certHash", false, __utils.hasTag(asn1.ASN1TagClass.universal, 4), undefined, undefined), new __utils.ComponentSpec("issuerSerial", false, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), new __utils.ComponentSpec("hashAlgorithm", true, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_SCVPCertID = []; exports._extension_additions_list_spec_for_SCVPCertID = []; let _cached_decoder_for_SCVPCertID = null; let _cached_encoder_for_SCVPCertID = null; function _decode_SCVPCertID(el) { if (!_cached_decoder_for_SCVPCertID) { _cached_decoder_for_SCVPCertID = function (el) { let certHash; let issuerSerial; let hashAlgorithm = SCVPCertID._default_value_for_hashAlgorithm; const callbacks = { certHash: (_el) => { certHash = __utils._decodeOctetString(_el); }, issuerSerial: (_el) => { issuerSerial = _decode_SCVPIssuerSerial(_el); }, hashAlgorithm: (_el) => { hashAlgorithm = _decode_HashAlgorithm(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_SCVPCertID, exports._extension_additions_list_spec_for_SCVPCertID, exports._root_component_type_list_2_spec_for_SCVPCertID, undefined); return new SCVPCertID(certHash, issuerSerial, hashAlgorithm); }; } return _cached_decoder_for_SCVPCertID(el); } exports._decode_SCVPCertID = _decode_SCVPCertID; function _encode_SCVPCertID(value, elGetter) { if (!_cached_encoder_for_SCVPCertID) { _cached_encoder_for_SCVPCertID = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encodeOctetString(value.certHash, __utils.BER), _encode_SCVPIssuerSerial(value.issuerSerial, __utils.BER), value.hashAlgorithm === undefined || __utils.deepEq(value.hashAlgorithm, SCVPCertID._default_value_for_hashAlgorithm) ? undefined : _encode_HashAlgorithm(value.hashAlgorithm, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_SCVPCertID(value, elGetter); } exports._encode_SCVPCertID = _encode_SCVPCertID; let _cached_decoder_for_PKCReference = null; let _cached_encoder_for_PKCReference = null; function _decode_PKCReference(el) { if (!_cached_decoder_for_PKCReference) { _cached_decoder_for_PKCReference = __utils._decode_inextensible_choice({ "CONTEXT 0": [ "cert", __utils._decode_implicit(() => AuthenticationFramework_1._decode_Certificate), ], "CONTEXT 1": [ "pkcRef", __utils._decode_implicit(() => _decode_SCVPCertID), ], }); } return _cached_decoder_for_PKCReference(el); } exports._decode_PKCReference = _decode_PKCReference; function _encode_PKCReference(value, elGetter) { if (!_cached_encoder_for_PKCReference) { _cached_encoder_for_PKCReference = __utils._encode_choice({ cert: __utils._encode_implicit(asn1.ASN1TagClass.context, 0, () => AuthenticationFramework_1._encode_Certificate, __utils.BER), pkcRef: __utils._encode_implicit(asn1.ASN1TagClass.context, 1, () => _encode_SCVPCertID, __utils.BER), }, __utils.BER); } return _cached_encoder_for_PKCReference(value, elGetter); } exports._encode_PKCReference = _encode_PKCReference; let _cached_decoder_for_TrustAnchors = null; let _cached_encoder_for_TrustAnchors = null; function _decode_TrustAnchors(el) { if (!_cached_decoder_for_TrustAnchors) { _cached_decoder_for_TrustAnchors = __utils._decodeSequenceOf(() => _decode_PKCReference); } return _cached_decoder_for_TrustAnchors(el); } exports._decode_TrustAnchors = _decode_TrustAnchors; function _encode_TrustAnchors(value, elGetter) { if (!_cached_encoder_for_TrustAnchors) { _cached_encoder_for_TrustAnchors = __utils._encodeSequenceOf(() => _encode_PKCReference, __utils.BER); } return _cached_encoder_for_TrustAnchors(value, elGetter); } exports._encode_TrustAnchors = _encode_TrustAnchors; class ValidationPolicy { constructor(validationPolRef, validationAlg, userPolicySet, inhibitPolicyMapping, requireExplicitPolicy, inhibitAnyPolicy, trustAnchors, keyUsages, extendedKeyUsages, specifiedKeyUsages) { this.validationPolRef = validationPolRef; this.validationAlg = validationAlg; this.userPolicySet = userPolicySet; this.inhibitPolicyMapping = inhibitPolicyMapping; this.requireExplicitPolicy = requireExplicitPolicy; this.inhibitAnyPolicy = inhibitAnyPolicy; this.trustAnchors = trustAnchors; this.keyUsages = keyUsages; this.extendedKeyUsages = extendedKeyUsages; this.specifiedKeyUsages = specifiedKeyUsages; } } exports.ValidationPolicy = ValidationPolicy; exports._root_component_type_list_1_spec_for_ValidationPolicy = [ new __utils.ComponentSpec("validationPolRef", false, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), new __utils.ComponentSpec("validationAlg", true, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("userPolicySet", true, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("inhibitPolicyMapping", true, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), new __utils.ComponentSpec("requireExplicitPolicy", true, __utils.hasTag(asn1.ASN1TagClass.context, 3), undefined, undefined), new __utils.ComponentSpec("inhibitAnyPolicy", true, __utils.hasTag(asn1.ASN1TagClass.context, 4), undefined, undefined), new __utils.ComponentSpec("trustAnchors", true, __utils.hasTag(asn1.ASN1TagClass.context, 5), undefined, undefined), new __utils.ComponentSpec("keyUsages", true, __utils.hasTag(asn1.ASN1TagClass.context, 6), undefined, undefined), new __utils.ComponentSpec("extendedKeyUsages", true, __utils.hasTag(asn1.ASN1TagClass.context, 7), undefined, undefined), new __utils.ComponentSpec("specifiedKeyUsages", true, __utils.hasTag(asn1.ASN1TagClass.context, 8), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_ValidationPolicy = []; exports._extension_additions_list_spec_for_ValidationPolicy = []; let _cached_decoder_for_ValidationPolicy = null; let _cached_encoder_for_ValidationPolicy = null; function _decode_ValidationPolicy(el) { if (!_cached_decoder_for_ValidationPolicy) { _cached_decoder_for_ValidationPolicy = function (el) { let validationPolRef; let validationAlg; let userPolicySet; let inhibitPolicyMapping; let requireExplicitPolicy; let inhibitAnyPolicy; let trustAnchors; let keyUsages; let extendedKeyUsages; let specifiedKeyUsages; const callbacks = { validationPolRef: (_el) => { validationPolRef = _decode_ValidationPolRef(_el); }, validationAlg: (_el) => { validationAlg = __utils._decode_implicit(() => _decode_ValidationAlg)(_el); }, userPolicySet: (_el) => { userPolicySet = __utils._decode_implicit(() => __utils._decodeSequenceOf(() => __utils._decodeObjectIdentifier))(_el); }, inhibitPolicyMapping: (_el) => { inhibitPolicyMapping = __utils._decode_implicit(() => __utils._decodeBoolean)(_el); }, requireExplicitPolicy: (_el) => { requireExplicitPolicy = __utils._decode_implicit(() => __utils._decodeBoolean)(_el); }, inhibitAnyPolicy: (_el) => { inhibitAnyPolicy = __utils._decode_implicit(() => __utils._decodeBoolean)(_el); }, trustAnchors: (_el) => { trustAnchors = __utils._decode_implicit(() => _decode_TrustAnchors)(_el); }, keyUsages: (_el) => { keyUsages = __utils._decode_implicit(() => __utils._decodeSequenceOf(() => CertificateExtensions_1._decode_KeyUsage))(_el); }, extendedKeyUsages: (_el) => { extendedKeyUsages = __utils._decode_implicit(() => __utils._decodeSequenceOf(() => CertificateExtensions_1._decode_KeyPurposeId))(_el); }, specifiedKeyUsages: (_el) => { specifiedKeyUsages = __utils._decode_implicit(() => __utils._decodeSequenceOf(() => CertificateExtensions_1._decode_KeyPurposeId))(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_ValidationPolicy, exports._extension_additions_list_spec_for_ValidationPolicy, exports._root_component_type_list_2_spec_for_ValidationPolicy, undefined); return new ValidationPolicy(validationPolRef, validationAlg, userPolicySet, inhibitPolicyMapping, requireExplicitPolicy, inhibitAnyPolicy, trustAnchors, keyUsages, extendedKeyUsages, specifiedKeyUsages); }; } return _cached_decoder_for_ValidationPolicy(el); } exports._decode_ValidationPolicy = _decode_ValidationPolicy; function _encode_ValidationPolicy(value, elGetter) { if (!_cached_encoder_for_ValidationPolicy) { _cached_encoder_for_ValidationPolicy = function (value, elGetter) { return __utils._encodeSequence([] .concat([ _encode_ValidationPolRef(value.validationPolRef, __utils.BER), value.validationAlg === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 0, () => _encode_ValidationAlg, __utils.BER)(value.validationAlg, __utils.BER), value.userPolicySet === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeSequenceOf(() => __utils._encodeObjectIdentifier, __utils.BER), __utils.BER)(value.userPolicySet, __utils.BER), value.inhibitPolicyMapping === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 2, () => __utils._encodeBoolean, __utils.BER)(value.inhibitPolicyMapping, __utils.BER), value.requireExplicitPolicy === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 3, () => __utils._encodeBoolean, __utils.BER)(value.requireExplicitPolicy, __utils.BER), value.inhibitAnyPolicy === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 4, () => __utils._encodeBoolean, __utils.BER)(value.inhibitAnyPolicy, __utils.BER), value.trustAnchors === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 5, () => _encode_TrustAnchors, __utils.BER)(value.trustAnchors, __utils.BER), value.keyUsages === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 6, () => __utils._encodeSequenceOf(() => CertificateExtensions_1._encode_KeyUsage, __utils.BER), __utils.BER)(value.keyUsages, __utils.BER), value.extendedKeyUsages === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 7, () => __utils._encodeSequenceOf(() => CertificateExtensions_1._encode_KeyPurposeId, __utils.BER), __utils.BER)(value.extendedKeyUsages, __utils.BER), value.specifiedKeyUsages === undefined ? undefined : __utils._encode_implicit(asn1.ASN1TagClass.context, 8, () => __utils._encodeSequenceOf(() => CertificateExtensions_1._encode_KeyPurposeId, __utils.BER), __utils.BER)(value.specifiedKeyUsages, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_ValidationPolicy(value, elGetter); } exports._encode_ValidationPolicy = _encode_ValidationPolicy; let _cached_decoder_for_RespValidationPolicy = null; let _cached_encoder_for_RespValidationPolicy = null; function _decode_RespValidationPolicy(el) { if (!_cached_decoder_for_RespValidationPolicy) { _cached_decoder_for_RespValidationPolicy = _decode_ValidationPolicy; } return _cached_decoder_for_RespValidationPolicy(el); } exports._decode_RespValidationPolicy = _decode_RespValidationPolicy; function _encode_RespValidationPolicy(value, elGetter) { if (!_cached_encoder_for_RespValidationPolicy) { _cached_encoder_for_RespValidationPolicy = _encode_ValidationPolicy; } return _cached_encoder_for_RespValidationPolicy(value, elGetter); } exports._encode_RespValidationPolicy = _encode_RespValidationPolicy; class HashValue { constructor(algorithm, value) { this.algorithm = algorithm; this.value = value; } static get _default_value_for_algorithm() { return new AuthenticationFramework_1.AlgorithmIdentifier(AlgorithmObjectIdentifiers_1.id_sha1, undefined); } } exports.HashValue = HashValue; exports._root_component_type_list_1_spec_for_HashValue = [ new __utils.ComponentSpec("algorithm", true, __utils.hasTag(asn1.ASN1TagClass.universal, 16), undefined, undefined), new __utils.ComponentSpec("value", false, __utils.hasTag(asn1.ASN1TagClass.universal, 4), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_HashValue = []; exports._extension_additions_list_spec_for_HashValue = []; let _cached_decoder_for_HashValue = null; let _cached_encoder_for_HashValue = null; function _decode_HashValue(el) { if (!_cached_decoder_for_HashValue) { _cached_decoder_for_HashValue = function (el) { let algorithm = HashValue._default_value_for_algorithm; let value; const callbacks = { algorithm: (_el) => { algorithm = _decode_HashAlgorithm(_el); }, value: (_el) => { value = __utils._decodeOctetString(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_HashValue, exports._extension_additions_list_spec_for_HashValue, exports._root_component_type_list_2_spec_for_HashValue, undefined); return new HashValue(algorithm, value); }; } return _cached_decoder_for_HashValue(el); } exports._decode_HashValue = _decode_HashValue; function _encode_HashValue(value, elGetter) { if (!_cached_encoder_for_HashValue) { _cached_encoder_for_HashValue = function (value, elGetter) { return __utils._encodeSequence([] .concat([ value.algorithm === undefined || __utils.deepEq(value.algorithm, HashValue._default_value_for_algorithm) ? undefined : _encode_HashAlgorithm(value.algorithm, __utils.BER), __utils._encodeOctetString(value.value, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_HashValue(value, elGetter); } exports._encode_HashValue = _encode_HashValue; let _cached_decoder_for_ACReference = null; let _cached_encoder_for_ACReference = null; function _decode_ACReference(el) { if (!_cached_decoder_for_ACReference) { _cached_decoder_for_ACReference = __utils._decode_inextensible_choice({ "CONTEXT 2": [ "attrCert", __utils._decode_implicit(() => AttributeCertificateDefinitions_1._decode_AttributeCertificate), ], "CONTEXT 3": [ "acRef", __utils._decode_implicit(() => _decode_SCVPCertID), ], }); } return _cached_decoder_for_ACReference(el); } exports._decode_ACReference = _decode_ACReference; function _encode_ACReference(value, elGetter) { if (!_cached_encoder_for_ACReference) { _cached_encoder_for_ACReference = __utils._encode_choice({ attrCert: __utils._encode_implicit(asn1.ASN1TagClass.context, 2, () => AttributeCertificateDefinitions_1._encode_AttributeCertificate, __utils.BER), acRef: __utils._encode_implicit(asn1.ASN1TagClass.context, 3, () => _encode_SCVPCertID, __utils.BER), }, __utils.BER); } return _cached_encoder_for_ACReference(value, elGetter); } exports._encode_ACReference = _encode_ACReference; let _cached_decoder_for_CertReferences = null; let _cached_encoder_for_CertReferences = null; function _decode_CertReferences(el) { if (!_cached_decoder_for_CertReferences) { _cached_decoder_for_CertReferences = __utils._decode_inextensible_choice({ "CONTEXT 0": [ "pkcRefs", __utils._decode_implicit(() => __utils._decodeSequenceOf(() => _decode_PKCReference)), ], "CONTEXT 1": [ "acRefs", __utils._decode_implicit(() => __utils._decodeSequenceOf(() => _decode_ACReference)), ], }); } return _cached_decoder_for_CertReferences(el); } exports._decode_CertReferences = _decode_CertReferences; function _encode_CertReferences(value, elGetter) { if (!_cached_encoder_for_CertReferences) { _cached_encoder_for_CertReferences = __utils._encode_choice({ pkcRefs: __utils._encode_implicit(asn1.ASN1TagClass.context, 0, () => __utils._encodeSequenceOf(() => _encode_PKCReference, __utils.BER), __utils.BER), acRefs: __utils._encode_implicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeSequenceOf(() => _encode_ACReference, __utils.BER), __utils.BER), }, __utils.BER); } return _cached_encoder_for_CertReferences(value, elGetter); } exports._encode_CertReferences = _encode_CertReferences; let _cached_decoder_for_CertChecks = null; let _cached_encoder_for_CertChecks = null; function _decode_CertChecks(el) { if (!_cached_decoder_for_CertChecks) { _cached_decoder_for_CertChecks = __utils._decodeSequenceOf(() => __utils._decodeObjectIdentifier); } return _cached_decoder_for_CertChecks(el); } exports._decode_CertChecks = _decode_CertChecks; function _encode_CertChecks(value, elGetter) { if (!_cached_encoder_for_CertChecks) { _cached_encoder_for_CertChecks = __utils._encodeSequenceOf(() => __utils._encodeObjectIdentifier, __utils.BER); } return _cached_encoder_for_CertChecks(value, elGetter); } exports._encode_CertChecks = _encode_CertChecks; let _cached_decoder_for_WantBack = null; let _cached_encoder_for_WantBack = null; function _decode_WantBack(el) { if (!_cached_decoder_for_WantBack) { _cached_decoder_for_WantBack = __utils._decodeSequenceOf(() => __utils._decodeObjectIdentifier); } return _cached_decoder_for_WantBack(el); } exports._decode_WantBack = _decode_WantBack; function _encode_WantBack(value, elGetter) { if (!_cached_encoder_for_WantBack) { _cached_encoder_for_WantBack = __utils._encodeSequenceOf(() => __utils._encodeObjectIdentifier, __utils.BER); } return _cached_encoder_for_WantBack(value, elGetter); } exports._encode_WantBack = _encode_WantBack; class ResponseFlags { constructor(fullRequestInResponse, responseValidationPolByRef, protectResponse, cachedResponse) { this.fullRequestInResponse = fullRequestInResponse; this.responseValidationPolByRef = responseValidationPolByRef; this.protectResponse = protectResponse; this.cachedResponse = cachedResponse; } static get _default_value_for_fullRequestInResponse() { return false; } static get _default_value_for_responseValidationPolByRef() { return true; } static get _default_value_for_protectResponse() { return true; } static get _default_value_for_cachedResponse() { return true; } } exports.ResponseFlags = ResponseFlags; exports._root_component_type_list_1_spec_for_ResponseFlags = [ new __utils.ComponentSpec("fullRequestInResponse", true, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("responseValidationPolByRef", true, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("protectResponse", true, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), new __utils.ComponentSpec("cachedResponse", true, __utils.hasTag(asn1.ASN1TagClass.context, 3), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_ResponseFlags = []; exports._extension_additions_list_spec_for_ResponseFlags = []; let _cached_decoder_for_ResponseFlags = null; let _cached_encoder_for_ResponseFlags = null; function _decode_ResponseFlags(el) { if (!_cached_decoder_for_ResponseFlags) { _cached_decoder_for_ResponseFlags = function (el) { let fullRequestInResponse = ResponseFlags._default_value_for_fullRequestInResponse; let responseValidationPolByRef = ResponseFlags._default_value_for_responseValidationPolByRef; let protectResponse = ResponseFlags._default_value_for_protectResponse; let cachedResponse = ResponseFlags._default_value_for_cachedResponse; const callbacks = { fullRequestInResponse: (_el) => { fullRequestInResponse = __utils._decode_implicit(() => __utils._decodeBoolean)(_el); }, responseValidationPolByRef: (_el) => { responseValidationPolByRef = __utils._decode_implicit(() => __utils._decodeBoolean)(_el); }, protectResponse: (_el) => {