UNPKG

kerberos5-ts

Version:

Kerberos 5 Protocol in pure TypeScript

805 lines 158 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports._encode_AD_MANDATORY_FOR_KDC = exports._decode_AD_MANDATORY_FOR_KDC = exports._encode_AD_AND_OR = exports._decode_AD_AND_OR = exports._extension_additions_list_spec_for_AD_AND_OR = exports._root_component_type_list_2_spec_for_AD_AND_OR = exports._root_component_type_list_1_spec_for_AD_AND_OR = exports.AD_AND_OR = exports._encode_AD_KDCIssued = exports._decode_AD_KDCIssued = exports._extension_additions_list_spec_for_AD_KDCIssued = exports._root_component_type_list_2_spec_for_AD_KDCIssued = exports._root_component_type_list_1_spec_for_AD_KDCIssued = exports.AD_KDCIssued = exports._encode_AD_IF_RELEVANT = exports._decode_AD_IF_RELEVANT = exports._encode_ETYPE_INFO2 = exports._decode_ETYPE_INFO2 = exports._encode_ETYPE_INFO2_ENTRY = exports._decode_ETYPE_INFO2_ENTRY = exports._extension_additions_list_spec_for_ETYPE_INFO2_ENTRY = exports._root_component_type_list_2_spec_for_ETYPE_INFO2_ENTRY = exports._root_component_type_list_1_spec_for_ETYPE_INFO2_ENTRY = exports.ETYPE_INFO2_ENTRY = exports._encode_ETYPE_INFO = exports._decode_ETYPE_INFO = exports._encode_ETYPE_INFO_ENTRY = exports._decode_ETYPE_INFO_ENTRY = exports._extension_additions_list_spec_for_ETYPE_INFO_ENTRY = exports._root_component_type_list_2_spec_for_ETYPE_INFO_ENTRY = exports._root_component_type_list_1_spec_for_ETYPE_INFO_ENTRY = exports.ETYPE_INFO_ENTRY = exports._encode_PA_ENC_TS_ENC = exports._decode_PA_ENC_TS_ENC = exports._extension_additions_list_spec_for_PA_ENC_TS_ENC = exports._root_component_type_list_2_spec_for_PA_ENC_TS_ENC = exports._root_component_type_list_1_spec_for_PA_ENC_TS_ENC = exports.PA_ENC_TS_ENC = exports._encode_PA_ENC_TIMESTAMP = exports._decode_PA_ENC_TIMESTAMP = exports._encode_TYPED_DATA = exports._decode_TYPED_DATA = exports._encode_TYPED_DATA_Item = exports._decode_TYPED_DATA_Item = exports._extension_additions_list_spec_for_TYPED_DATA_Item = exports._root_component_type_list_2_spec_for_TYPED_DATA_Item = exports._root_component_type_list_1_spec_for_TYPED_DATA_Item = exports.TYPED_DATA_Item = exports._encode_METHOD_DATA = exports._decode_METHOD_DATA = exports._encode_KRB_ERROR = exports._decode_KRB_ERROR = exports._extension_additions_list_spec_for_KRB_ERROR = exports._root_component_type_list_2_spec_for_KRB_ERROR = exports._root_component_type_list_1_spec_for_KRB_ERROR = exports.KRB_ERROR = exports._encode_EncKrbCredPart = exports._decode_EncKrbCredPart = exports._extension_additions_list_spec_for_EncKrbCredPart = exports._root_component_type_list_2_spec_for_EncKrbCredPart = exports._root_component_type_list_1_spec_for_EncKrbCredPart = exports.EncKrbCredPart = exports._encode_KrbCredInfo = exports._decode_KrbCredInfo = exports._extension_additions_list_spec_for_KrbCredInfo = exports._root_component_type_list_2_spec_for_KrbCredInfo = exports._root_component_type_list_1_spec_for_KrbCredInfo = exports.KrbCredInfo = exports._encode_KRB_CRED = exports._decode_KRB_CRED = exports._extension_additions_list_spec_for_KRB_CRED = exports._root_component_type_list_2_spec_for_KRB_CRED = exports._root_component_type_list_1_spec_for_KRB_CRED = exports.KRB_CRED = exports._encode_EncKrbPrivPart = exports._decode_EncKrbPrivPart = exports._extension_additions_list_spec_for_EncKrbPrivPart = exports._root_component_type_list_2_spec_for_EncKrbPrivPart = exports._root_component_type_list_1_spec_for_EncKrbPrivPart = exports.EncKrbPrivPart = exports._encode_KRB_PRIV = exports._decode_KRB_PRIV = exports._extension_additions_list_spec_for_KRB_PRIV = exports._root_component_type_list_2_spec_for_KRB_PRIV = exports._root_component_type_list_1_spec_for_KRB_PRIV = exports.KRB_PRIV = exports._encode_KRB_SAFE = exports._decode_KRB_SAFE = exports._extension_additions_list_spec_for_KRB_SAFE = exports._root_component_type_list_2_spec_for_KRB_SAFE = exports._root_component_type_list_1_spec_for_KRB_SAFE = exports.KRB_SAFE = exports._encode_KRB_SAFE_BODY = exports._decode_KRB_SAFE_BODY = exports._extension_additions_list_spec_for_KRB_SAFE_BODY = exports._root_component_type_list_2_spec_for_KRB_SAFE_BODY = exports._root_component_type_list_1_spec_for_KRB_SAFE_BODY = exports.KRB_SAFE_BODY = exports._encode_EncAPRepPart = exports._decode_EncAPRepPart = exports._extension_additions_list_spec_for_EncAPRepPart = exports._root_component_type_list_2_spec_for_EncAPRepPart = exports._root_component_type_list_1_spec_for_EncAPRepPart = exports.EncAPRepPart = exports._encode_AP_REP = exports._decode_AP_REP = exports._extension_additions_list_spec_for_AP_REP = exports._root_component_type_list_2_spec_for_AP_REP = exports._root_component_type_list_1_spec_for_AP_REP = exports.AP_REP = exports._encode_Authenticator = exports._decode_Authenticator = exports._extension_additions_list_spec_for_Authenticator = exports._root_component_type_list_2_spec_for_Authenticator = exports._root_component_type_list_1_spec_for_Authenticator = exports.Authenticator = exports._encode_Microseconds = exports._decode_Microseconds = exports._encode_Checksum = exports._decode_Checksum = exports._extension_additions_list_spec_for_Checksum = exports._root_component_type_list_2_spec_for_Checksum = exports._root_component_type_list_1_spec_for_Checksum = exports.Checksum = exports._encode_AP_REQ = exports._decode_AP_REQ = exports._extension_additions_list_spec_for_AP_REQ = exports._root_component_type_list_2_spec_for_AP_REQ = exports._root_component_type_list_1_spec_for_AP_REQ = exports.AP_REQ = exports._encode_APOptions = exports._decode_APOptions = exports._encode_EncTGSRepPart = exports._decode_EncTGSRepPart = exports._encode_EncASRepPart = exports._decode_EncASRepPart = exports._encode_EncKDCRepPart = exports._decode_EncKDCRepPart = exports._extension_additions_list_spec_for_EncKDCRepPart = exports._root_component_type_list_2_spec_for_EncKDCRepPart = exports._root_component_type_list_1_spec_for_EncKDCRepPart = exports.EncKDCRepPart = exports._encode_LastReq = exports._decode_LastReq = exports._encode_LastReq_Item = exports._decode_LastReq_Item = exports._extension_additions_list_spec_for_LastReq_Item = exports._root_component_type_list_2_spec_for_LastReq_Item = exports._root_component_type_list_1_spec_for_LastReq_Item = exports.LastReq_Item = exports._encode_TGS_REP = exports._decode_TGS_REP = exports._encode_AS_REP = exports._decode_AS_REP = exports._encode_KDC_REP = exports._decode_KDC_REP = exports._extension_additions_list_spec_for_KDC_REP = exports._root_component_type_list_2_spec_for_KDC_REP = exports._root_component_type_list_1_spec_for_KDC_REP = exports.KDC_REP = exports._encode_TGS_REQ = exports._decode_TGS_REQ = exports._encode_AS_REQ = exports._decode_AS_REQ = exports._encode_KDC_REQ = exports._decode_KDC_REQ = exports._extension_additions_list_spec_for_KDC_REQ = exports._root_component_type_list_2_spec_for_KDC_REQ = exports._root_component_type_list_1_spec_for_KDC_REQ = exports.KDC_REQ = exports._encode_KDC_REQ_BODY = exports._decode_KDC_REQ_BODY = exports._extension_additions_list_spec_for_KDC_REQ_BODY = exports._root_component_type_list_2_spec_for_KDC_REQ_BODY = exports._root_component_type_list_1_spec_for_KDC_REQ_BODY = exports.KDC_REQ_BODY = exports._encode_Ticket = exports._decode_Ticket = exports._extension_additions_list_spec_for_Ticket = exports._root_component_type_list_2_spec_for_Ticket = exports._root_component_type_list_1_spec_for_Ticket = exports.Ticket = exports._encode_EncryptedData = exports._decode_EncryptedData = exports._extension_additions_list_spec_for_EncryptedData = exports._root_component_type_list_2_spec_for_EncryptedData = exports._root_component_type_list_1_spec_for_EncryptedData = exports.EncryptedData = exports._encode_UInt32 = exports._decode_UInt32 = exports._encode_KDCOptions = exports._decode_KDCOptions = exports._encode_PA_DATA = exports._decode_PA_DATA = exports._extension_additions_list_spec_for_PA_DATA = exports._root_component_type_list_2_spec_for_PA_DATA = exports._root_component_type_list_1_spec_for_PA_DATA = exports.PA_DATA = exports._encode_EncTicketPart = exports._decode_EncTicketPart = exports._extension_additions_list_spec_for_EncTicketPart = exports._root_component_type_list_2_spec_for_EncTicketPart = exports._root_component_type_list_1_spec_for_EncTicketPart = exports.EncTicketPart = exports._encode_AuthorizationData = exports._decode_AuthorizationData = exports._encode_AuthorizationData_Item = exports._decode_AuthorizationData_Item = exports._extension_additions_list_spec_for_AuthorizationData_Item = exports._root_component_type_list_2_spec_for_AuthorizationData_Item = exports._root_component_type_list_1_spec_for_AuthorizationData_Item = exports.AuthorizationData_Item = exports._encode_HostAddresses = exports._decode_HostAddresses = exports._encode_HostAddress = exports._decode_HostAddress = exports._extension_additions_list_spec_for_HostAddress = exports._root_component_type_list_2_spec_for_HostAddress = exports._root_component_type_list_1_spec_for_HostAddress = exports.HostAddress = exports._encode_KerberosTime = exports._decode_KerberosTime = exports._encode_TransitedEncoding = exports._decode_TransitedEncoding = exports._extension_additions_list_spec_for_TransitedEncoding = exports._root_component_type_list_2_spec_for_TransitedEncoding = exports._root_component_type_list_1_spec_for_TransitedEncoding = exports.TransitedEncoding = exports._encode_PrincipalName = exports._decode_PrincipalName = exports._extension_additions_list_spec_for_PrincipalName = exports._root_component_type_list_2_spec_for_PrincipalName = exports._root_component_type_list_1_spec_for_PrincipalName = exports.PrincipalName = exports._encode_Realm = exports._decode_Realm = exports._encode_KerberosString = exports._decode_KerberosString = exports._encode_EncryptionKey = exports._decode_EncryptionKey = exports._extension_additions_list_spec_for_EncryptionKey = exports._root_component_type_list_2_spec_for_EncryptionKey = exports._root_component_type_list_1_spec_for_EncryptionKey = exports.EncryptionKey = exports._encode_Int32 = exports._decode_Int32 = exports._encode_TicketFlags = exports._decode_TicketFlags = exports._encode_KerberosFlags = exports._decode_KerberosFlags = exports.id_krb5 = void 0; const tslib_1 = require("tslib"); const asn1 = tslib_1.__importStar(require("asn1-ts")); const __utils = tslib_1.__importStar(require("./__utils")); exports.id_krb5 = new asn1.ObjectIdentifier([ 1, 3, 6, 1, 5, 2, ]); let _cached_decoder_for_KerberosFlags = null; let _cached_encoder_for_KerberosFlags = null; function _decode_KerberosFlags(el) { if (!_cached_decoder_for_KerberosFlags) { _cached_decoder_for_KerberosFlags = __utils._decodeBitString; } return _cached_decoder_for_KerberosFlags(el); } exports._decode_KerberosFlags = _decode_KerberosFlags; function _encode_KerberosFlags(value, elGetter) { if (!_cached_encoder_for_KerberosFlags) { _cached_encoder_for_KerberosFlags = __utils._encodeBitString; } return _cached_encoder_for_KerberosFlags(value, elGetter); } exports._encode_KerberosFlags = _encode_KerberosFlags; let _cached_decoder_for_TicketFlags = null; let _cached_encoder_for_TicketFlags = null; function _decode_TicketFlags(el) { if (!_cached_decoder_for_TicketFlags) { _cached_decoder_for_TicketFlags = _decode_KerberosFlags; } return _cached_decoder_for_TicketFlags(el); } exports._decode_TicketFlags = _decode_TicketFlags; function _encode_TicketFlags(value, elGetter) { if (!_cached_encoder_for_TicketFlags) { _cached_encoder_for_TicketFlags = _encode_KerberosFlags; } return _cached_encoder_for_TicketFlags(value, elGetter); } exports._encode_TicketFlags = _encode_TicketFlags; let _cached_decoder_for_Int32 = null; let _cached_encoder_for_Int32 = null; function _decode_Int32(el) { if (!_cached_decoder_for_Int32) { _cached_decoder_for_Int32 = __utils._decodeInteger; } return _cached_decoder_for_Int32(el); } exports._decode_Int32 = _decode_Int32; function _encode_Int32(value, elGetter) { if (!_cached_encoder_for_Int32) { _cached_encoder_for_Int32 = __utils._encodeInteger; } return _cached_encoder_for_Int32(value, elGetter); } exports._encode_Int32 = _encode_Int32; class EncryptionKey { constructor(keytype, keyvalue) { this.keytype = keytype; this.keyvalue = keyvalue; } } exports.EncryptionKey = EncryptionKey; exports._root_component_type_list_1_spec_for_EncryptionKey = [ new __utils.ComponentSpec("keytype", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("keyvalue", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_EncryptionKey = []; exports._extension_additions_list_spec_for_EncryptionKey = []; let _cached_decoder_for_EncryptionKey = null; let _cached_encoder_for_EncryptionKey = null; function _decode_EncryptionKey(el) { if (!_cached_decoder_for_EncryptionKey) { _cached_decoder_for_EncryptionKey = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("EncryptionKey contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "keytype"; sequence[1].name = "keyvalue"; let keytype; let keyvalue; keytype = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); keyvalue = __utils._decode_explicit(() => __utils._decodeOctetString)(sequence[1]); return new EncryptionKey(keytype, keyvalue); }; } return _cached_decoder_for_EncryptionKey(el); } exports._decode_EncryptionKey = _decode_EncryptionKey; function _encode_EncryptionKey(value, elGetter) { if (!_cached_encoder_for_EncryptionKey) { _cached_encoder_for_EncryptionKey = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.keytype, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeOctetString, __utils.BER)(value.keyvalue, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_EncryptionKey(value, elGetter); } exports._encode_EncryptionKey = _encode_EncryptionKey; let _cached_decoder_for_KerberosString = null; let _cached_encoder_for_KerberosString = null; function _decode_KerberosString(el) { if (!_cached_decoder_for_KerberosString) { _cached_decoder_for_KerberosString = __utils._decodeGeneralString; } return _cached_decoder_for_KerberosString(el); } exports._decode_KerberosString = _decode_KerberosString; function _encode_KerberosString(value, elGetter) { if (!_cached_encoder_for_KerberosString) { _cached_encoder_for_KerberosString = __utils._encodeGeneralString; } return _cached_encoder_for_KerberosString(value, elGetter); } exports._encode_KerberosString = _encode_KerberosString; let _cached_decoder_for_Realm = null; let _cached_encoder_for_Realm = null; function _decode_Realm(el) { if (!_cached_decoder_for_Realm) { _cached_decoder_for_Realm = _decode_KerberosString; } return _cached_decoder_for_Realm(el); } exports._decode_Realm = _decode_Realm; function _encode_Realm(value, elGetter) { if (!_cached_encoder_for_Realm) { _cached_encoder_for_Realm = _encode_KerberosString; } return _cached_encoder_for_Realm(value, elGetter); } exports._encode_Realm = _encode_Realm; class PrincipalName { constructor(name_type, name_string) { this.name_type = name_type; this.name_string = name_string; } } exports.PrincipalName = PrincipalName; exports._root_component_type_list_1_spec_for_PrincipalName = [ new __utils.ComponentSpec("name-type", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("name-string", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_PrincipalName = []; exports._extension_additions_list_spec_for_PrincipalName = []; let _cached_decoder_for_PrincipalName = null; let _cached_encoder_for_PrincipalName = null; function _decode_PrincipalName(el) { if (!_cached_decoder_for_PrincipalName) { _cached_decoder_for_PrincipalName = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("PrincipalName contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "name-type"; sequence[1].name = "name-string"; let name_type; let name_string; name_type = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); name_string = __utils._decode_explicit(() => __utils._decodeSequenceOf(() => _decode_KerberosString))(sequence[1]); return new PrincipalName(name_type, name_string); }; } return _cached_decoder_for_PrincipalName(el); } exports._decode_PrincipalName = _decode_PrincipalName; function _encode_PrincipalName(value, elGetter) { if (!_cached_encoder_for_PrincipalName) { _cached_encoder_for_PrincipalName = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.name_type, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeSequenceOf(() => _encode_KerberosString, __utils.BER), __utils.BER)(value.name_string, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_PrincipalName(value, elGetter); } exports._encode_PrincipalName = _encode_PrincipalName; class TransitedEncoding { constructor(tr_type, contents) { this.tr_type = tr_type; this.contents = contents; } } exports.TransitedEncoding = TransitedEncoding; exports._root_component_type_list_1_spec_for_TransitedEncoding = [ new __utils.ComponentSpec("tr-type", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("contents", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_TransitedEncoding = []; exports._extension_additions_list_spec_for_TransitedEncoding = []; let _cached_decoder_for_TransitedEncoding = null; let _cached_encoder_for_TransitedEncoding = null; function _decode_TransitedEncoding(el) { if (!_cached_decoder_for_TransitedEncoding) { _cached_decoder_for_TransitedEncoding = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("TransitedEncoding contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "tr-type"; sequence[1].name = "contents"; let tr_type; let contents; tr_type = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); contents = __utils._decode_explicit(() => __utils._decodeOctetString)(sequence[1]); return new TransitedEncoding(tr_type, contents); }; } return _cached_decoder_for_TransitedEncoding(el); } exports._decode_TransitedEncoding = _decode_TransitedEncoding; function _encode_TransitedEncoding(value, elGetter) { if (!_cached_encoder_for_TransitedEncoding) { _cached_encoder_for_TransitedEncoding = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.tr_type, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeOctetString, __utils.BER)(value.contents, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_TransitedEncoding(value, elGetter); } exports._encode_TransitedEncoding = _encode_TransitedEncoding; let _cached_decoder_for_KerberosTime = null; let _cached_encoder_for_KerberosTime = null; function _decode_KerberosTime(el) { if (!_cached_decoder_for_KerberosTime) { _cached_decoder_for_KerberosTime = __utils._decodeGeneralizedTime; } return _cached_decoder_for_KerberosTime(el); } exports._decode_KerberosTime = _decode_KerberosTime; function _encode_KerberosTime(value, elGetter) { if (!_cached_encoder_for_KerberosTime) { _cached_encoder_for_KerberosTime = __utils._encodeGeneralizedTime; } return _cached_encoder_for_KerberosTime(value, elGetter); } exports._encode_KerberosTime = _encode_KerberosTime; class HostAddress { constructor(addr_type, address) { this.addr_type = addr_type; this.address = address; } } exports.HostAddress = HostAddress; exports._root_component_type_list_1_spec_for_HostAddress = [ new __utils.ComponentSpec("addr-type", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("address", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_HostAddress = []; exports._extension_additions_list_spec_for_HostAddress = []; let _cached_decoder_for_HostAddress = null; let _cached_encoder_for_HostAddress = null; function _decode_HostAddress(el) { if (!_cached_decoder_for_HostAddress) { _cached_decoder_for_HostAddress = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("HostAddress contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "addr-type"; sequence[1].name = "address"; let addr_type; let address; addr_type = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); address = __utils._decode_explicit(() => __utils._decodeOctetString)(sequence[1]); return new HostAddress(addr_type, address); }; } return _cached_decoder_for_HostAddress(el); } exports._decode_HostAddress = _decode_HostAddress; function _encode_HostAddress(value, elGetter) { if (!_cached_encoder_for_HostAddress) { _cached_encoder_for_HostAddress = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.addr_type, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeOctetString, __utils.BER)(value.address, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_HostAddress(value, elGetter); } exports._encode_HostAddress = _encode_HostAddress; let _cached_decoder_for_HostAddresses = null; let _cached_encoder_for_HostAddresses = null; function _decode_HostAddresses(el) { if (!_cached_decoder_for_HostAddresses) { _cached_decoder_for_HostAddresses = __utils._decodeSequenceOf(() => _decode_HostAddress); } return _cached_decoder_for_HostAddresses(el); } exports._decode_HostAddresses = _decode_HostAddresses; function _encode_HostAddresses(value, elGetter) { if (!_cached_encoder_for_HostAddresses) { _cached_encoder_for_HostAddresses = __utils._encodeSequenceOf(() => _encode_HostAddress, __utils.BER); } return _cached_encoder_for_HostAddresses(value, elGetter); } exports._encode_HostAddresses = _encode_HostAddresses; class AuthorizationData_Item { constructor(ad_type, ad_data) { this.ad_type = ad_type; this.ad_data = ad_data; } } exports.AuthorizationData_Item = AuthorizationData_Item; exports._root_component_type_list_1_spec_for_AuthorizationData_Item = [ new __utils.ComponentSpec("ad-type", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("ad-data", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_AuthorizationData_Item = []; exports._extension_additions_list_spec_for_AuthorizationData_Item = []; let _cached_decoder_for_AuthorizationData_Item = null; let _cached_encoder_for_AuthorizationData_Item = null; function _decode_AuthorizationData_Item(el) { if (!_cached_decoder_for_AuthorizationData_Item) { _cached_decoder_for_AuthorizationData_Item = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("AuthorizationData-Item contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "ad-type"; sequence[1].name = "ad-data"; let ad_type; let ad_data; ad_type = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); ad_data = __utils._decode_explicit(() => __utils._decodeOctetString)(sequence[1]); return new AuthorizationData_Item(ad_type, ad_data); }; } return _cached_decoder_for_AuthorizationData_Item(el); } exports._decode_AuthorizationData_Item = _decode_AuthorizationData_Item; function _encode_AuthorizationData_Item(value, elGetter) { if (!_cached_encoder_for_AuthorizationData_Item) { _cached_encoder_for_AuthorizationData_Item = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.ad_type, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => __utils._encodeOctetString, __utils.BER)(value.ad_data, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_AuthorizationData_Item(value, elGetter); } exports._encode_AuthorizationData_Item = _encode_AuthorizationData_Item; let _cached_decoder_for_AuthorizationData = null; let _cached_encoder_for_AuthorizationData = null; function _decode_AuthorizationData(el) { if (!_cached_decoder_for_AuthorizationData) { _cached_decoder_for_AuthorizationData = __utils._decodeSequenceOf(() => _decode_AuthorizationData_Item); } return _cached_decoder_for_AuthorizationData(el); } exports._decode_AuthorizationData = _decode_AuthorizationData; function _encode_AuthorizationData(value, elGetter) { if (!_cached_encoder_for_AuthorizationData) { _cached_encoder_for_AuthorizationData = __utils._encodeSequenceOf(() => _encode_AuthorizationData_Item, __utils.BER); } return _cached_encoder_for_AuthorizationData(value, elGetter); } exports._encode_AuthorizationData = _encode_AuthorizationData; class EncTicketPart { constructor(flags, key, crealm, cname, transited, authtime, starttime, endtime, renew_till, caddr, authorization_data) { this.flags = flags; this.key = key; this.crealm = crealm; this.cname = cname; this.transited = transited; this.authtime = authtime; this.starttime = starttime; this.endtime = endtime; this.renew_till = renew_till; this.caddr = caddr; this.authorization_data = authorization_data; } } exports.EncTicketPart = EncTicketPart; exports._root_component_type_list_1_spec_for_EncTicketPart = [ new __utils.ComponentSpec("flags", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("key", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("crealm", false, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), new __utils.ComponentSpec("cname", false, __utils.hasTag(asn1.ASN1TagClass.context, 3), undefined, undefined), new __utils.ComponentSpec("transited", false, __utils.hasTag(asn1.ASN1TagClass.context, 4), undefined, undefined), new __utils.ComponentSpec("authtime", false, __utils.hasTag(asn1.ASN1TagClass.context, 5), undefined, undefined), new __utils.ComponentSpec("starttime", true, __utils.hasTag(asn1.ASN1TagClass.context, 6), undefined, undefined), new __utils.ComponentSpec("endtime", false, __utils.hasTag(asn1.ASN1TagClass.context, 7), undefined, undefined), new __utils.ComponentSpec("renew-till", true, __utils.hasTag(asn1.ASN1TagClass.context, 8), undefined, undefined), new __utils.ComponentSpec("caddr", true, __utils.hasTag(asn1.ASN1TagClass.context, 9), undefined, undefined), new __utils.ComponentSpec("authorization-data", true, __utils.hasTag(asn1.ASN1TagClass.context, 10), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_EncTicketPart = []; exports._extension_additions_list_spec_for_EncTicketPart = []; let _cached_decoder_for_EncTicketPart = null; let _cached_encoder_for_EncTicketPart = null; function _decode_EncTicketPart(el) { if (!_cached_decoder_for_EncTicketPart) { _cached_decoder_for_EncTicketPart = __utils._decode_explicit(() => function (el) { let flags; let key; let crealm; let cname; let transited; let authtime; let starttime; let endtime; let renew_till; let caddr; let authorization_data; const callbacks = { flags: (_el) => { flags = __utils._decode_explicit(() => _decode_TicketFlags)(_el); }, key: (_el) => { key = __utils._decode_explicit(() => _decode_EncryptionKey)(_el); }, crealm: (_el) => { crealm = __utils._decode_explicit(() => _decode_Realm)(_el); }, cname: (_el) => { cname = __utils._decode_explicit(() => _decode_PrincipalName)(_el); }, transited: (_el) => { transited = __utils._decode_explicit(() => _decode_TransitedEncoding)(_el); }, authtime: (_el) => { authtime = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, starttime: (_el) => { starttime = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, endtime: (_el) => { endtime = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, "renew-till": (_el) => { renew_till = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, caddr: (_el) => { caddr = __utils._decode_explicit(() => _decode_HostAddresses)(_el); }, "authorization-data": (_el) => { authorization_data = __utils._decode_explicit(() => _decode_AuthorizationData)(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_EncTicketPart, exports._extension_additions_list_spec_for_EncTicketPart, exports._root_component_type_list_2_spec_for_EncTicketPart, undefined); return new EncTicketPart(flags, key, crealm, cname, transited, authtime, starttime, endtime, renew_till, caddr, authorization_data); }); } return _cached_decoder_for_EncTicketPart(el); } exports._decode_EncTicketPart = _decode_EncTicketPart; function _encode_EncTicketPart(value, elGetter) { if (!_cached_encoder_for_EncTicketPart) { _cached_encoder_for_EncTicketPart = __utils._encode_explicit(asn1.ASN1TagClass.application, 3, () => function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_TicketFlags, __utils.BER)(value.flags, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => _encode_EncryptionKey, __utils.BER)(value.key, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 2, () => _encode_Realm, __utils.BER)(value.crealm, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 3, () => _encode_PrincipalName, __utils.BER)(value.cname, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 4, () => _encode_TransitedEncoding, __utils.BER)(value.transited, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 5, () => _encode_KerberosTime, __utils.BER)(value.authtime, __utils.BER), value.starttime === undefined ? undefined : __utils._encode_explicit(asn1.ASN1TagClass.context, 6, () => _encode_KerberosTime, __utils.BER)(value.starttime, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 7, () => _encode_KerberosTime, __utils.BER)(value.endtime, __utils.BER), value.renew_till === undefined ? undefined : __utils._encode_explicit(asn1.ASN1TagClass.context, 8, () => _encode_KerberosTime, __utils.BER)(value.renew_till, __utils.BER), value.caddr === undefined ? undefined : __utils._encode_explicit(asn1.ASN1TagClass.context, 9, () => _encode_HostAddresses, __utils.BER)(value.caddr, __utils.BER), value.authorization_data === undefined ? undefined : __utils._encode_explicit(asn1.ASN1TagClass.context, 10, () => _encode_AuthorizationData, __utils.BER)(value.authorization_data, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }, __utils.BER); } return _cached_encoder_for_EncTicketPart(value, elGetter); } exports._encode_EncTicketPart = _encode_EncTicketPart; class PA_DATA { constructor(padata_type, padata_value) { this.padata_type = padata_type; this.padata_value = padata_value; } } exports.PA_DATA = PA_DATA; exports._root_component_type_list_1_spec_for_PA_DATA = [ new __utils.ComponentSpec("padata-type", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("padata-value", false, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_PA_DATA = []; exports._extension_additions_list_spec_for_PA_DATA = []; let _cached_decoder_for_PA_DATA = null; let _cached_encoder_for_PA_DATA = null; function _decode_PA_DATA(el) { if (!_cached_decoder_for_PA_DATA) { _cached_decoder_for_PA_DATA = function (el) { const sequence = el.sequence; if (sequence.length < 2) { throw new asn1.ASN1ConstructionError("PA-DATA contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "padata-type"; sequence[1].name = "padata-value"; let padata_type; let padata_value; padata_type = __utils._decode_explicit(() => _decode_Int32)(sequence[0]); padata_value = __utils._decode_explicit(() => __utils._decodeOctetString)(sequence[1]); return new PA_DATA(padata_type, padata_value); }; } return _cached_decoder_for_PA_DATA(el); } exports._decode_PA_DATA = _decode_PA_DATA; function _encode_PA_DATA(value, elGetter) { if (!_cached_encoder_for_PA_DATA) { _cached_encoder_for_PA_DATA = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => _encode_Int32, __utils.BER)(value.padata_type, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 2, () => __utils._encodeOctetString, __utils.BER)(value.padata_value, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_PA_DATA(value, elGetter); } exports._encode_PA_DATA = _encode_PA_DATA; let _cached_decoder_for_KDCOptions = null; let _cached_encoder_for_KDCOptions = null; function _decode_KDCOptions(el) { if (!_cached_decoder_for_KDCOptions) { _cached_decoder_for_KDCOptions = _decode_KerberosFlags; } return _cached_decoder_for_KDCOptions(el); } exports._decode_KDCOptions = _decode_KDCOptions; function _encode_KDCOptions(value, elGetter) { if (!_cached_encoder_for_KDCOptions) { _cached_encoder_for_KDCOptions = _encode_KerberosFlags; } return _cached_encoder_for_KDCOptions(value, elGetter); } exports._encode_KDCOptions = _encode_KDCOptions; let _cached_decoder_for_UInt32 = null; let _cached_encoder_for_UInt32 = null; function _decode_UInt32(el) { if (!_cached_decoder_for_UInt32) { _cached_decoder_for_UInt32 = __utils._decodeInteger; } return _cached_decoder_for_UInt32(el); } exports._decode_UInt32 = _decode_UInt32; function _encode_UInt32(value, elGetter) { if (!_cached_encoder_for_UInt32) { _cached_encoder_for_UInt32 = __utils._encodeInteger; } return _cached_encoder_for_UInt32(value, elGetter); } exports._encode_UInt32 = _encode_UInt32; class EncryptedData { constructor(etype, kvno, cipher) { this.etype = etype; this.kvno = kvno; this.cipher = cipher; } } exports.EncryptedData = EncryptedData; exports._root_component_type_list_1_spec_for_EncryptedData = [ new __utils.ComponentSpec("etype", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("kvno", true, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("cipher", false, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_EncryptedData = []; exports._extension_additions_list_spec_for_EncryptedData = []; let _cached_decoder_for_EncryptedData = null; let _cached_encoder_for_EncryptedData = null; function _decode_EncryptedData(el) { if (!_cached_decoder_for_EncryptedData) { _cached_decoder_for_EncryptedData = function (el) { let etype; let kvno; let cipher; const callbacks = { etype: (_el) => { etype = __utils._decode_explicit(() => _decode_Int32)(_el); }, kvno: (_el) => { kvno = __utils._decode_explicit(() => _decode_UInt32)(_el); }, cipher: (_el) => { cipher = __utils._decode_explicit(() => __utils._decodeOctetString)(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_EncryptedData, exports._extension_additions_list_spec_for_EncryptedData, exports._root_component_type_list_2_spec_for_EncryptedData, undefined); return new EncryptedData(etype, kvno, cipher); }; } return _cached_decoder_for_EncryptedData(el); } exports._decode_EncryptedData = _decode_EncryptedData; function _encode_EncryptedData(value, elGetter) { if (!_cached_encoder_for_EncryptedData) { _cached_encoder_for_EncryptedData = function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => _encode_Int32, __utils.BER)(value.etype, __utils.BER), value.kvno === undefined ? undefined : __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => _encode_UInt32, __utils.BER)(value.kvno, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 2, () => __utils._encodeOctetString, __utils.BER)(value.cipher, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }; } return _cached_encoder_for_EncryptedData(value, elGetter); } exports._encode_EncryptedData = _encode_EncryptedData; class Ticket { constructor(tkt_vno, realm, sname, enc_part) { this.tkt_vno = tkt_vno; this.realm = realm; this.sname = sname; this.enc_part = enc_part; } } exports.Ticket = Ticket; exports._root_component_type_list_1_spec_for_Ticket = [ new __utils.ComponentSpec("tkt-vno", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("realm", false, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("sname", false, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), new __utils.ComponentSpec("enc-part", false, __utils.hasTag(asn1.ASN1TagClass.context, 3), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_Ticket = []; exports._extension_additions_list_spec_for_Ticket = []; let _cached_decoder_for_Ticket = null; let _cached_encoder_for_Ticket = null; function _decode_Ticket(el) { if (!_cached_decoder_for_Ticket) { _cached_decoder_for_Ticket = __utils._decode_explicit(() => function (el) { const sequence = el.sequence; if (sequence.length < 4) { throw new asn1.ASN1ConstructionError("Ticket contained only " + sequence.length.toString() + " elements."); } sequence[0].name = "tkt-vno"; sequence[1].name = "realm"; sequence[2].name = "sname"; sequence[3].name = "enc-part"; let tkt_vno; let realm; let sname; let enc_part; tkt_vno = __utils._decode_explicit(() => __utils._decodeInteger)(sequence[0]); realm = __utils._decode_explicit(() => _decode_Realm)(sequence[1]); sname = __utils._decode_explicit(() => _decode_PrincipalName)(sequence[2]); enc_part = __utils._decode_explicit(() => _decode_EncryptedData)(sequence[3]); return new Ticket(tkt_vno, realm, sname, enc_part); }); } return _cached_decoder_for_Ticket(el); } exports._decode_Ticket = _decode_Ticket; function _encode_Ticket(value, elGetter) { if (!_cached_encoder_for_Ticket) { _cached_encoder_for_Ticket = __utils._encode_explicit(asn1.ASN1TagClass.application, 1, () => function (value, elGetter) { return __utils._encodeSequence([] .concat([ __utils._encode_explicit(asn1.ASN1TagClass.context, 0, () => __utils._encodeInteger, __utils.BER)(value.tkt_vno, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 1, () => _encode_Realm, __utils.BER)(value.realm, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 2, () => _encode_PrincipalName, __utils.BER)(value.sname, __utils.BER), __utils._encode_explicit(asn1.ASN1TagClass.context, 3, () => _encode_EncryptedData, __utils.BER)(value.enc_part, __utils.BER), ]) .filter((c) => !!c), __utils.BER); }, __utils.BER); } return _cached_encoder_for_Ticket(value, elGetter); } exports._encode_Ticket = _encode_Ticket; class KDC_REQ_BODY { constructor(kdc_options, cname, realm, sname, from_, till, rtime, nonce, etype, addresses, enc_authorization_data, additional_tickets) { this.kdc_options = kdc_options; this.cname = cname; this.realm = realm; this.sname = sname; this.from_ = from_; this.till = till; this.rtime = rtime; this.nonce = nonce; this.etype = etype; this.addresses = addresses; this.enc_authorization_data = enc_authorization_data; this.additional_tickets = additional_tickets; } } exports.KDC_REQ_BODY = KDC_REQ_BODY; exports._root_component_type_list_1_spec_for_KDC_REQ_BODY = [ new __utils.ComponentSpec("kdc-options", false, __utils.hasTag(asn1.ASN1TagClass.context, 0), undefined, undefined), new __utils.ComponentSpec("cname", true, __utils.hasTag(asn1.ASN1TagClass.context, 1), undefined, undefined), new __utils.ComponentSpec("realm", false, __utils.hasTag(asn1.ASN1TagClass.context, 2), undefined, undefined), new __utils.ComponentSpec("sname", true, __utils.hasTag(asn1.ASN1TagClass.context, 3), undefined, undefined), new __utils.ComponentSpec("from", true, __utils.hasTag(asn1.ASN1TagClass.context, 4), undefined, undefined), new __utils.ComponentSpec("till", false, __utils.hasTag(asn1.ASN1TagClass.context, 5), undefined, undefined), new __utils.ComponentSpec("rtime", true, __utils.hasTag(asn1.ASN1TagClass.context, 6), undefined, undefined), new __utils.ComponentSpec("nonce", false, __utils.hasTag(asn1.ASN1TagClass.context, 7), undefined, undefined), new __utils.ComponentSpec("etype", false, __utils.hasTag(asn1.ASN1TagClass.context, 8), undefined, undefined), new __utils.ComponentSpec("addresses", true, __utils.hasTag(asn1.ASN1TagClass.context, 9), undefined, undefined), new __utils.ComponentSpec("enc-authorization-data", true, __utils.hasTag(asn1.ASN1TagClass.context, 10), undefined, undefined), new __utils.ComponentSpec("additional-tickets", true, __utils.hasTag(asn1.ASN1TagClass.context, 11), undefined, undefined), ]; exports._root_component_type_list_2_spec_for_KDC_REQ_BODY = []; exports._extension_additions_list_spec_for_KDC_REQ_BODY = []; let _cached_decoder_for_KDC_REQ_BODY = null; let _cached_encoder_for_KDC_REQ_BODY = null; function _decode_KDC_REQ_BODY(el) { if (!_cached_decoder_for_KDC_REQ_BODY) { _cached_decoder_for_KDC_REQ_BODY = function (el) { let kdc_options; let cname; let realm; let sname; let from_; let till; let rtime; let nonce; let etype; let addresses; let enc_authorization_data; let additional_tickets; const callbacks = { "kdc-options": (_el) => { kdc_options = __utils._decode_explicit(() => _decode_KDCOptions)(_el); }, cname: (_el) => { cname = __utils._decode_explicit(() => _decode_PrincipalName)(_el); }, realm: (_el) => { realm = __utils._decode_explicit(() => _decode_Realm)(_el); }, sname: (_el) => { sname = __utils._decode_explicit(() => _decode_PrincipalName)(_el); }, from: (_el) => { from_ = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, till: (_el) => { till = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, rtime: (_el) => { rtime = __utils._decode_explicit(() => _decode_KerberosTime)(_el); }, nonce: (_el) => { nonce = __utils._decode_explicit(() => _decode_UInt32)(_el); }, etype: (_el) => { etype = __utils._decode_explicit(() => __utils._decodeSequenceOf(() => _decode_Int32))(_el); }, addresses: (_el) => { addresses = __utils._decode_explicit(() => _decode_HostAddresses)(_el); }, "enc-authorization-data": (_el) => { enc_authorization_data = __utils._decode_explicit(() => _decode_EncryptedData)(_el); }, "additional-tickets": (_el) => { additional_tickets = __utils._decode_explicit(() => __utils._decodeSequenceOf(() => _decode_Ticket))(_el); }, }; __utils._parse_sequence(el, callbacks, exports._root_component_type_list_1_spec_for_KDC_REQ_BODY, exports._extension_additions_list_spec_for_KDC_REQ_BODY, exports._root_component_type_list_2_spec_for_KDC_REQ_BODY, undefined); return new KDC_REQ_BODY(kdc_options, cname, realm, sname, from_, till, rtime,