#.TYPE_ATTR CountryName TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(x411_CountryName_U_vals) BITMASK = 0 Time TYPE = FT_STRING DISPLAY = BASE_NONE STRING = NULL BITMASK = 0 #.IMPORT ../x509ce/x509ce-exp.cnf #.IMPORT ../x509if/x509if-exp.cnf #.IMPORT ../x509sat/x509sat-exp.cnf #.IMPORT ../x509af/x509af-exp.cnf #.IMPORT ../ros/ros-exp.cnf #.IMPORT ../rtse/rtse-exp.cnf #.OMIT_ASSIGNMENT # These gives unused code warnings MTAOriginatorRequestedAlternateRecipient ProofOfDeliveryAlgorithmIdentifier DeliveryControls ContentIntegrityAlgorithmIdentifier MessageOriginAuthenticationAlgorithmIdentifier ProbeOriginAuthenticationAlgorithmIdentifier ReportOriginAuthenticationAlgorithmIdentifier #.END #.EXPORTS EXTENSION Content ContentIdentifier ContentIntegrityCheck ContentLength ContentType Credentials EncodedInformationTypes EncodedInformationTypesConstraints ExtendedCertificates ExtendedContentType ExtensionField G3FacsimileNonBasicParameters ImproperlySpecifiedRecipients InitiatorCredentials MessageDeliveryIdentifier MessageDeliveryTime MessageOriginAuthenticationCheck MessageSecurityLabel MessageSubmissionEnvelope MessageSubmissionIdentifier MessageSubmissionTime MessageToken ORAddress ORAddressAndOrDirectoryName OriginatorName ORName OriginalEncodedInformationTypes OriginatingMTACertificate OtherMessageDeliveryFields PerMessageIndicators PerRecipientProbeSubmissionFields ProbeSubmissionEnvelope ProbeSubmissionIdentifier ProbeSubmissionTime ProofOfSubmission RequestedDeliveryMethod ResponderCredentials SecurityContext SecurityLabel SecurityProblem SupplementaryInformation TeletexNonBasicParameters UniversalOrBMPString NonDeliveryReasonCode NonDeliveryDiagnosticCode # Forward declaration of Classes # CONNECTION-PACKAGE CONTRACT from ROS #.CLASS CONNECTION-PACKAGE &bind ClassReference OPERATION &unbind ClassReference OPERATION &responderCanUnbind BooleanType &unbindCanFail BooleanType &id ObjectIdentifierType #.END #.CLASS APPLICATION-CONTEXT &associationContract ClassReference CONTRACT &associationRealization &transferRealization &AbstractSyntaxes ClassReference ABSTRACT-SYNTAX &applicationContextName ObjectIdentifierType #.END #.CLASS CONTRACT &connection ClassReference CONNECTION-PACKAGE &OperationsOf ClassReference OPERATION-PACKAGE &InitiatorConsumerOf ClassReference OPERATION-PACKAGE &InitiatorSupplierOf ClassReference OPERATION-PACKAGE &id ObjectIdentifierType #.END #.CLASS MHS-OBJECT &Is ClassReference MHS-OBJECT &Initiates ClassReference CONTRACT &Responds ClassReference CONTRACT &InitiatesAndResponds ClassReference CONTRACT &id ObjectIdentifierType #.END # Ros OPERATION #.CLASS ABSTRACT-OPERATION &ArgumentType &argumentTypeOptional BooleanType &returnResult BooleanType &ResultType &resultTypeOptional BooleanType &Errors ClassReference ERROR &Linked ClassReference OPERATION &synchronous BooleanType &alwaysReturns BooleanType &InvokePriority _FixedTypeValueSetFieldSpec &ResultPriority _FixedTypeValueSetFieldSpec &operationCode TypeReference Code #.END # ros ERROR #.CLASS ABSTRACT-ERROR &ParameterType ¶meterTypeOptional BooleanType &ErrorPriority _FixedTypeValueSetFieldSpec &errorCode TypeReference Code #.END #.CLASS EXTENSION &id TypeReference ExtensionType &Type &absent _VariableTypeValueSetFieldSpec &recommended TypeReference Criticality #.END #.CLASS EXTENSION-ATTRIBUTE &id IntegerType &Type #.END #.CLASS TOKEN-DATA &id IntegerType &Type #.END #.TYPE_RENAME MTABindArgument/authenticated AuthenticatedArgument MTABindResult/authenticated AuthenticatedResult ExtensionField/value ExtensionValue SecurityCategory/value CategoryValue #.FIELD_RENAME PrivateDomainName/printable printable-private-domain-name PrivateDomainName/numeric numeric-private-domain-name PrivateDomainIdentifier/printable printable-private-domain-identifier PrivateDomainIdentifier/numeric numeric-private-domain-identifier TeletexPersonalName/surname teletex-surname PersonalName/surname printable-surname UniversalPersonalName/surname universal-surname TeletexPersonalName/given-name teletex-given-name PersonalName/given-name printable-given-name UniversalPersonalName/given-name universal-given-name TeletexPersonalName/initials teletex-initials PersonalName/initials printable-initials UniversalPersonalName/initials universal-initials TeletexPersonalName/generation-qualifier teletex-generation-qualifier PersonalName/generation-qualifier printable-generation-qualifier UniversalPersonalName/generation-qualifier universal-generation-qualifier BuiltInDomainDefinedAttribute/type printable-type UniversalDomainDefinedAttribute/type universal-type SecurityCategory/type category-type ExtensionField/type extension-type TeletexDomainDefinedAttribute/value teletex-value BuiltInDomainDefinedAttribute/value printable-value UniversalDomainDefinedAttribute/value universal-value SecurityCategory/value category-value ExtensionField/value extension-value LastTraceInformation/report-type trace-report-type PerRecipientReportDeliveryFields/report-type delivery-report-type PerRecipientReportFields/report-type/delivery report-type-delivery PerRecipientMessageSubmissionFields/recipient-name submission-recipient-name PerRecipientProbeSubmissionFields/recipient-name probe-recipient-name PerRecipientReportTransferFields/actual-recipient-name mta-actual-recipient-name MessageClass/priority class-priority DeliveryQueue/octets delivery-queue-octets PerRecipientReportFields/report-type/non-delivery non-delivery-report MTABindResult/authenticated authenticated-result MTABindArgument/authenticated authenticated-argument MTABindResult/authenticated/responder-name authenticated-responder-name MTABindArgument/authenticated/initiator-name authenticated-initiator-name RegistrationTypes/extensions type-extensions RegistrationTypes/extensions/_item type-extensions-item MessageSubmissionArgument/envelope message-submission-envelope OtherMessageDeliveryFields/content-type delivered-content-type Report/content report-content ReportDeliveryResult/extensions max-extensions OtherMessageDeliveryFields/originator-name delivered-originator-name PDSParameter/teletex-string pds-teletex-string PerDomainBilateralInformation/domain bilateral-domain Report/envelope report-envelope Message/envelope message-envelope PerRecipientReportTransferFields/originally-intended-recipient-name report-originally-intended-recipient-name MessageSubmissionEnvelope/originator-name mts-originator-name ProbeSubmissionEnvelope/originator-name mts-originator-name MessageTransferEnvelope/originator-name mta-originator-name ProbeTransferEnvelope/originator-name mta-originator-name MessageSubmissionEnvelope/per-recipient-fields per-recipient-message-submission-fields ProbeTransferEnvelope/per-recipient-fields per-recipient-probe-transfer-fields ProbeSubmissionEnvelope/per-recipient-fields per-recipient-probe-submission-fields ReportDeliveryArgument/per-recipient-fields per-recipient-report-delivery-fields ReportDeliveryEnvelope/per-recipient-fields per-recipient-report-delivery-fields MessageSubmissionEnvelope/per-recipient-fields/_item per-recipient-message-submission-fields-item ProbeTransferEnvelope/per-recipient-fields/_item per-recipient-probe-transfer-fields-item ProbeSubmissionEnvelope/per-recipient-fields/_item per-recipient-probe-submission-fields-item ReportDeliveryArgument/per-recipient-fields/_item per-recipient-report-delivery-fields-item ReportDeliveryEnvelope/per-recipient-fields/_item per-recipient-report-delivery-fields-item MessageTransferEnvelope/per-recipient-fields/_item per-recipient-message-fields-item MessageTransferEnvelope/per-recipient-fields per-recipient-message-fields ReportTransferContent/per-recipient-fields per-recipient-report-fields AsymmetricTokenData/name/mta token-mta AsymmetricTokenData/name/recipient-name token-recipient-name TokenData/type token-data-type CertificateSelectors/content-integrity-check selectors-content-integrity-check #.PDU # This table creates the value_sting to name P3 operation codes and errors # in file packet-p3-table.c which is included in the template file # #.TABLE_HDR /* P3 ABSTRACT-OPERATIONS */ const value_string p3_opr_code_string_vals[] = { #.TABLE_BODY OPERATION { %(&operationCode)s, "%(_ident)s" }, #.TABLE_FTR { 0, NULL } }; #.END #.TABLE_HDR /* P3 ERRORS */ static const value_string p3_err_code_string_vals[] = { #.TABLE_BODY ERROR { %(&errorCode)s, "%(_ident)s" }, #.TABLE_FTR { 0, NULL } }; #.END # Create a table of opcode and corresponding args and res #.TABLE11_HDR static const ros_opr_t p3_opr_tab[] = { #.TABLE11_BODY OPERATION /* %(_name)s */ { %(&operationCode)-25s, %(_argument_pdu)s, %(_result_pdu)s }, #.TABLE11_FTR { 0, (new_dissector_t)(-1), (new_dissector_t)(-1) }, }; #.END #.TABLE21_HDR static const ros_err_t p3_err_tab[] = { #.TABLE21_BODY ERROR /* %(_name)s*/ { %(&errorCode)s, %(_parameter_pdu)s }, #.TABLE21_FTR { 0, (new_dissector_t)(-1) }, }; #.END #.PDU_NEW ERROR.&ParameterType OPERATION.&ArgumentType OPERATION.&ResultType #.END #.REGISTER RecipientReassignmentProhibited N x411.extension 1 OriginatorRequestedAlternateRecipient N x411.extension 2 DLExpansionProhibited N x411.extension 3 ConversionWithLossProhibited N x411.extension 4 LatestDeliveryTime N x411.extension 5 RequestedDeliveryMethod N x411.extension 6 PhysicalForwardingProhibited N x411.extension 7 PhysicalForwardingAddressRequest N x411.extension 8 PhysicalDeliveryModes N x411.extension 9 RegisteredMailType N x411.extension 10 RecipientNumberForAdvice N x411.extension 11 PhysicalRenditionAttributes N x411.extension 12 OriginatorReturnAddress N x411.extension 13 PhysicalDeliveryReportRequest N x411.extension 14 OriginatorCertificate N x411.extension 15 MessageToken N x411.extension 16 ContentConfidentialityAlgorithmIdentifier N x411.extension 17 ContentIntegrityCheck N x411.extension 18 MessageOriginAuthenticationCheck N x411.extension 19 MessageSecurityLabel N x411.extension 20 ProofOfSubmissionRequest N x411.extension 21 ProofOfDeliveryRequest N x411.extension 22 ContentCorrelator N x411.extension 23 ProbeOriginAuthenticationCheck N x411.extension 24 RedirectionHistory N x411.extension 25 DLExpansionHistory N x411.extension 26 PhysicalForwardingAddress N x411.extension 27 RecipientCertificate N x411.extension 28 ProofOfDelivery N x411.extension 29 OriginatorAndDLExpansionHistory N x411.extension 30 ReportingDLName N x411.extension 31 ReportingMTACertificate N x411.extension 32 ReportOriginAuthenticationCheck N x411.extension 33 ProofOfSubmission N x411.extension 35 TraceInformation N x411.extension 37 InternalTraceInformation N x411.extension 38 ReportingMTAName N x411.extension 39 ExtendedCertificates N x411.extension 40 DLExemptedRecipients N x411.extension 42 CertificateSelectors N x411.extension 45 CommonName N x411.extension-attribute 1 TeletexCommonName N x411.extension-attribute 2 TeletexOrganizationName N x411.extension-attribute 3 TeletexPersonalName N x411.extension-attribute 4 TeletexOrganizationalUnitNames N x411.extension-attribute 5 TeletexDomainDefinedAttributes N x411.extension-attribute 6 PDSName N x411.extension-attribute 7 PhysicalDeliveryCountryName N x411.extension-attribute 8 PostalCode N x411.extension-attribute 9 PhysicalDeliveryOfficeName N x411.extension-attribute 10 PhysicalDeliveryOfficeNumber N x411.extension-attribute 11 ExtensionORAddressComponents N x411.extension-attribute 12 PhysicalDeliveryPersonalName N x411.extension-attribute 13 PhysicalDeliveryOrganizationName N x411.extension-attribute 14 ExtensionPhysicalDeliveryAddressComponents N x411.extension-attribute 15 UnformattedPostalAddress N x411.extension-attribute 16 StreetAddress N x411.extension-attribute 17 PostOfficeBoxAddress N x411.extension-attribute 18 PosteRestanteAddress N x411.extension-attribute 19 UniquePostalName N x411.extension-attribute 20 LocalPostalAttributes N x411.extension-attribute 21 ExtendedNetworkAddress N x411.extension-attribute 22 TerminalType N x411.extension-attribute 23 UniversalCommonName N x411.extension-attribute 24 UniversalOrganizationName N x411.extension-attribute 25 UniversalPersonalName N x411.extension-attribute 26 UniversalOrganizationalUnitNames N x411.extension-attribute 27 UniversalDomainDefinedAttributes N x411.extension-attribute 28 UniversalPhysicalDeliveryOfficeName N x411.extension-attribute 29 UniversalPhysicalDeliveryOfficeNumber N x411.extension-attribute 30 UniversalExtensionORAddressComponents N x411.extension-attribute 31 UniversalPhysicalDeliveryPersonalName N x411.extension-attribute 32 UniversalPhysicalDeliveryOrganizationName N x411.extension-attribute 33 UniversalExtensionPhysicalDeliveryAddressComponents N x411.extension-attribute 34 UniversalUnformattedPostalAddress N x411.extension-attribute 35 UniversalStreetAddress N x411.extension-attribute 36 UniversalPostOfficeBoxAddress N x411.extension-attribute 37 UniversalPosteRestanteAddress N x411.extension-attribute 38 UniversalUniquePostalName N x411.extension-attribute 39 UniversalLocalPostalAttributes N x411.extension-attribute 40 #ReportDeliveryArgument B "2.6.1.4.14" "id-et-report" AsymmetricToken B "2.6.3.6.0" "id-tok-asymmetricToken" MTANameAndOptionalGDI B "2.6.5.6.0" "id-on-mtaName" BindTokenSignedData N x411.tokendata 1 MessageTokenSignedData N x411.tokendata 2 # the next two are unlikely to ever be seen (unless in a bad encoding) MessageTokenEncryptedData N x411.tokendata 3 BindTokenEncryptedData N x411.tokendata 4 # X402 - see master list in acp133.cnf ContentLength B "2.6.5.2.0" "id-at-mhs-maximum-content-length" ExtendedContentType B "2.6.5.2.1" "id-at-mhs-deliverable-content-types" ExtendedEncodedInformationType B "2.6.5.2.2" "id-at-mhs-exclusively-acceptable-eits" ORName B "2.6.5.2.3" "id-at-mhs-dl-members" ORAddress B "2.6.5.2.6" "id-at-mhs-or-addresses" ExtendedContentType B "2.6.5.2.9" "id-at-mhs-supported-content-types" ORName B "2.6.5.2.12" "id-at-mhs-dl-archive-service" ORName B "2.6.5.2.15" "id-at-mhs-dl-subscription-service" ExtendedEncodedInformationType B "2.6.5.2.17" "id-at-mhs-acceptable-eits" ExtendedEncodedInformationType B "2.6.5.2.18" "id-at-mhs-unacceptable-eits" # ACP133 - see master list in acp133.cnf ORName B "2.16.840.1.101.2.1.5.47" "id-at-aLExemptedAddressProcessor" ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" # MSGeneralAttributeTypes - see master list in p7.cnf CertificateSelectors B "2.6.4.3.80" "id-att-certificate-selectors" Content B "2.6.4.3.1" "id-att-content" ContentCorrelator B "2.6.4.3.3" "id-att-content-correlator" ContentIdentifier B "2.6.4.3.4" "id-att-content-identifier" ContentIntegrityCheck B "2.6.4.3.5" "id-att-content-inetgrity-check" ContentLength B "2.6.4.3.6" "id-att-content-length" ExtendedContentType B "2.6.4.3.8" "id-att-content-type" ConversionWithLossProhibited B "2.6.4.3.9" "id-att-conversion-with-loss-prohibited" DeferredDeliveryTime B "2.6.4.3.51" "id-att-deferred-delivery-time" DeliveryFlags B "2.6.4.3.13" "id-att-delivery-flags" ORName B "2.6.4.3.78" "id-att-dl-exempted-recipients" DLExpansion B "2.6.4.3.14" "id-att-dl-expansion-history" DLExpansionProhibited B "2.6.4.3.53" "id-att-dl-expansion-prohibited" InternalTraceInformationElement B "2.6.4.3.54" "id-att-internal-trace-information" LatestDeliveryTime B "2.6.4.3.55" "id-att-latest-delivery-time" MessageDeliveryEnvelope B "2.6.4.3.18" "id-att-message-delivery-envelope" MessageDeliveryTime B "2.6.4.3.20" "id-att-message-delivery-time" MTSIdentifier B "2.6.4.3.19" "id-att-message-identifier" MessageOriginAuthenticationCheck B "2.6.4.3.21" "id-at-message-orgin-authentication-check" MessageSecurityLabel B "2.6.4.3.22" "id-att-message-security-label" MessageSubmissionEnvelope B "2.6.4.3.59" "id-att-message-submission-envelope" MessageSubmissionTime B "2.6.4.3.23" "id-att-message-submission-time" MessageToken B "2.6.4.3.24" "id-att-message-token" ExtendedCertificates B "2.6.4.3.81" "id-att-multiple-originator-certificates" ORName B "2.6.4.3.17" "id-att-originally-intended-recipient-name" OriginatingMTACertificate B "2.6.4.3.62" "id-att-originating-MTA-certificate" OriginatorCertificate B "2.6.4.3.26" "id-att-originator-certificate" ORName B "2.6.4.3.27" "id-att-originator-name" OriginatorReportRequest B "2.6.4.3.63" "id-att-originator-report-request" OriginatorReturnAddress B "2.6.4.3.64" "id-att-originator-return-address" ORName B "2.6.4.3.28" "id-att-other-recipient-names" PerMessageIndicators B "2.6.4.3.65" "id-att-per-message-indicators" PerRecipientMessageSubmissionFields B "2.6.4.3.66" "id-att-per-recipient-message-submission-fields" PerRecipientProbeSubmissionFields B "2.6.4.3.67" "id-att-per-recipient-probe-submission-fields" PerRecipientReportDeliveryFields B "2.6.4.3.30" "id-att-per-recipient-report-delivery-fields" Priority B "2.6.4.3.31" "id-att-priority" ProbeOriginAuthenticationCheck B "2.6.4.3.68" "id-att-probe-origin-authentication-check" ProbeSubmissionEnvelope B "2.6.4.3.69" "id-att-probe-submission-envelope" ProofOfDeliveryRequest B "2.6.4.3.32" "id-att-proof-of-delivery-request" ProofOfSubmission B "2.6.4.3.70" "id-att-proof-of-submission" ExtendedCertificates B "2.6.4.3.82" "id-att-recipient-certificate" ORName B "2.6.4.3.71" "id-att-recipient-names" RecipientReassignmentProhibited B "2.6.4.3.72" "id-att-recipient-reassignment-prohibited" Redirection B "2.6.4.3.33" "id-at-redirection-history" ReportDeliveryEnvelope B "2.6.4.3.34" "id-att-report-delivery-envelope" ReportingDLName B "2.6.4.3.35" "id-att-reporting-DL-name" ReportingMTACertificate B "2.6.4.3.36" "id-att-reporting-MTA-certificate" ReportOriginAuthenticationCheck B "2.6.4.3.37" "id-att-report-origin-authentication-check" SecurityClassification B "2.6.4.3.38" "id-att-security-classification" SubjectSubmissionIdentifier B "2.6.4.3.40" "id-att-subject-submission-identifier" ORName B "2.6.4.3.41" "id-att-this-recipient-name" TraceInformationElement B "2.6.4.3.75" "id-att-trace-information" # IPMSMessageStoreAttributes - see master list in x420.cnf MessageToken B "2.6.1.7.36" "id-hat-forwarded-token" #.FN_BODY AdditionalInformation proto_item *item = NULL; int loffset = 0; guint32 len = 0; /* work out the length */ loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL); (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL); item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE); tree = proto_item_add_subtree(item, ett_x411_additional_information); proto_item_append_text(tree, " (The use of this field is \"strongly deprecated\".)"); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); #.FN_BODY RegistrationTypes/extensions/_item /*XXX not implemented yet */ #.FN_BODY ExtensionField/value const char *name; if(extension_id != -1) { proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, x411_StandardExtension_vals, "standard-extension %%d")); if (dissector_try_port(x411_extension_dissector_table, extension_id, tvb, actx->pinfo, tree)) { offset = tvb_length(tvb); } else { proto_item *item = NULL; proto_tree *next_tree = NULL; item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "Dissector for standard-extension %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); next_tree = proto_item_add_subtree(item, ett_x411_unknown_standard_extension); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown standard-extension"); } } else if (object_identifier_id) { offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); name = oid_resolved_from_string(object_identifier_id); proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id); } #.FN_PARS SecurityCategoryIdentifier FN_VARIANT = _str VAL_PTR = &object_identifier_id #.FN_BODY SecurityCategoryValue const char *name; if (object_identifier_id) { offset = call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); name = oid_resolved_from_string(object_identifier_id); proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id); } else { offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); } #.FN_PARS ExtensionAttributeType VAL_PTR = &extension_id #.FN_BODY ExtensionAttribute/extension-attribute-value proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, x411_ExtensionAttributeType_vals, "extension-attribute-type %%d")); if (dissector_try_port(x411_extension_attribute_dissector_table, extension_id, tvb, actx->pinfo, tree)) { offset =tvb_length(tvb); } else { proto_item *item = NULL; proto_tree *next_tree = NULL; item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "Dissector for extension-attribute-type %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); next_tree = proto_item_add_subtree(item, ett_x411_unknown_extension_attribute_type); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown extension-attribute-type"); } #.FN_BODY RefusedOperation/refused-argument/refused-extension /*XXX not implemented yet */ #.FN_BODY CountryName if(doing_address) g_strlcat(oraddress, "/C=", MAX_ORA_STR_LEN); %(DEFAULT_BODY)s #.FN_BODY AdministrationDomainName if(doing_address) g_strlcat(oraddress, "/A=", MAX_ORA_STR_LEN); %(DEFAULT_BODY)s #.FN_PARS StandardExtension VAL_PTR = &extension_id #.FN_BODY ExtensionType/private-extension FN_VARIANT = _str VAL_PTR = &object_identifier_id %(DEFAULT_BODY)s extension_id = -1; #.FN_PARS ExtendedContentType FN_VARIANT = _str VAL_PTR = &content_type_id #.FN_BODY ExtendedContentType const char *name = NULL; %(DEFAULT_BODY)s if(content_type_id) { name = oid_resolved_from_string(content_type_id); if(!name) name = content_type_id; proto_item_append_text(tree, " (%%s)", name); } #.FN_PARS BuiltInContentType/_untag VAL_PTR = &ict #.FN_BODY BuiltInContentType/_untag static guint32 ict = -1; %(DEFAULT_BODY)s /* convert integer content type to oid for dispatch when the content is found */ switch(ict) { case 2: content_type_id = ep_strdup("2.6.1.10.0"); break; case 22: content_type_id = ep_strdup("2.6.1.10.1"); break; default: content_type_id = NULL; break; } #.FN_BODY Content tvbuff_t *next_tvb; /* we can do this now constructed octet strings are supported */ offset = dissect_ber_octet_string(FALSE, actx, NULL, tvb, offset, hf_index, &next_tvb); if (next_tvb) { if (content_type_id) { (void) call_ber_oid_callback(content_type_id, next_tvb, 0, actx->pinfo, top_tree ? top_tree : tree); } else { proto_item *item = NULL; proto_tree *next_tree = NULL; item = proto_tree_add_text(top_tree ? top_tree : tree, next_tvb, 0, tvb_length_remaining(tvb, offset), "X.411 Unknown Content (unknown built-in content-type)"); expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown built-in content-type"); if (item) { next_tree=proto_item_add_subtree(item, ett_x411_content_unknown); } dissect_unknown_ber(actx->pinfo, next_tvb, 0, next_tree); } } #.FN_PARS MTAName VAL_PTR = &mtaname #.FN_BODY MTAName tvbuff_t *mtaname = NULL; %(DEFAULT_BODY)s if(doing_address) { proto_item_append_text(address_item, " %%s", tvb_format_text(mtaname, 0, tvb_length(mtaname))); } else { if (check_col(actx->pinfo->cinfo, COL_INFO) && mtaname) { col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", tvb_format_text(mtaname, 0, tvb_length(mtaname))); } } #.FN_PARS X121Address VAL_PTR=&string #.FN_BODY X121Address tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/X121=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS TerminalIdentifier VAL_PTR=&string #.FN_BODY TerminalIdentifier tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/UA-ID=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_BODY PrivateDomainName if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); %(DEFAULT_BODY)s #.FN_BODY PrivateDomainIdentifier if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); %(DEFAULT_BODY)s #.FN_PARS OrganizationName VAL_PTR=&string #.FN_BODY OrganizationName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/O=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS TeletexOrganizationName VAL_PTR=&string #.FN_BODY TeletexOrganizationName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/O=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS OrganizationalUnitName VAL_PTR=&string #.FN_BODY OrganizationalUnitName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/OU=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS TeletexOrganizationalUnitName VAL_PTR=&string #.FN_BODY TeletexOrganizationalUnitName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/OU=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS CommonName VAL_PTR=&string #.FN_BODY CommonName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/CN=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_PARS TeletexCommonName VAL_PTR=&string #.FN_BODY TeletexCommonName tvbuff_t *string = NULL; %(DEFAULT_BODY)s if(doing_address && string) { g_strlcat(oraddress, "/CN=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(string, 0, tvb_length(string)), MAX_ORA_STR_LEN); } #.FN_BODY CountryName/_untag/iso-3166-alpha2-code VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY AdministrationDomainName/_untag/printable VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PrivateDomainName/printable VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PrivateDomainIdentifier/printable VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PhysicalDeliveryCountryName/iso-3166-alpha2-code VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY UserAddress/x121/x121-address VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY CountryName/_untag/x121-dcc-code VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY AdministrationDomainName/_untag/numeric VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PrivateDomainName/numeric VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PrivateDomainIdentifier/numeric VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PhysicalDeliveryCountryName/x121-dcc-code VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY PostalCode/numeric-code VAL_PTR=&nstring tvbuff_t *nstring = NULL; %(DEFAULT_BODY)s if(doing_address && nstring) g_strlcat(oraddress, tvb_format_text(nstring, 0, tvb_length(nstring)), MAX_ORA_STR_LEN); #.FN_BODY TeletexDomainDefinedAttribute/type VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "/DD.", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); g_strlcat(ddatype, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); } #.FN_BODY TeletexDomainDefinedAttribute/value VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); if (*ddatype) { proto_item_append_text (tree, " (%%s=%%s)", ddatype, tvb_format_text(tstring, 0, tvb_length(tstring))); } } #.FN_BODY TeletexDomainDefinedAttribute ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0'; %(DEFAULT_BODY)s #.FN_BODY PersonalName/surname VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "/S=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); } #.FN_BODY PersonalName/given-name VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "/G=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); } #.FN_BODY PersonalName/initials VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "/I=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); } #.FN_BODY PersonalName/generation-qualifier VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "/Q=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); } #.FN_BODY TeletexPersonalName/surname VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "/S=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); } #.FN_BODY TeletexPersonalName/given-name VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "/G=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); } #.FN_BODY TeletexPersonalName/initials VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "/I=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); } #.FN_BODY TeletexPersonalName/generation-qualifier VAL_PTR=&tstring tvbuff_t *tstring = NULL; %(DEFAULT_BODY)s if(doing_address && tstring) { g_strlcat(oraddress, "/Q=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(tstring, 0, tvb_length(tstring)), MAX_ORA_STR_LEN); } #.FN_BODY BuiltInDomainDefinedAttribute/type VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "/DD.", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); g_strlcat(ddatype, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); } #.FN_BODY BuiltInDomainDefinedAttribute/value VAL_PTR=&pstring tvbuff_t *pstring = NULL; %(DEFAULT_BODY)s if(doing_address && pstring) { g_strlcat(oraddress, "=", MAX_ORA_STR_LEN); g_strlcat(oraddress, tvb_format_text(pstring, 0, tvb_length(pstring)), MAX_ORA_STR_LEN); if (*ddatype) { proto_item_append_text (tree, " (%%s=%%s)", ddatype, tvb_format_text(pstring, 0, tvb_length(pstring))); } } #.FN_BODY BuiltInDomainDefinedAttribute ddatype = ep_alloc(MAX_ORA_STR_LEN); ddatype[0] = '\0'; %(DEFAULT_BODY)s #.FN_BODY ORAddress oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; doing_address = TRUE; address_item = NULL; %(DEFAULT_BODY)s if(*oraddress && address_item) proto_item_append_text(address_item, " %%s/", oraddress); doing_address = FALSE; #.FN_BODY ORName oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = NULL; doing_address = TRUE; %(DEFAULT_BODY)s if(*oraddress && address_item) proto_item_append_text(address_item, " (%%s/)", oraddress); doing_address = FALSE; #.FN_BODY MessageIdentifier address_item = NULL; %(DEFAULT_BODY)s #.FN_BODY GlobalDomainIdentifier oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = tree; %(DEFAULT_BODY)s if(*oraddress) { proto_item_append_text(address_item, " (%%s/", oraddress); if(doing_subjectid && check_col(actx->pinfo->cinfo, COL_INFO)) { col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s/", oraddress); } } #.FN_PARS LocalIdentifier VAL_PTR=&id #.FN_BODY LocalIdentifier tvbuff_t *id = NULL; %(DEFAULT_BODY)s if(id) { if(doing_address) proto_item_append_text(address_item, " $ %%s)", tvb_format_text(id, 0, tvb_length(id))); if(doing_subjectid && check_col(actx->pinfo->cinfo, COL_INFO)) col_append_fstr(actx->pinfo->cinfo, COL_INFO, " $ %%s)", tvb_format_text(id, 0, tvb_length(id))); } #.FN_BODY MTSIdentifier doing_address = TRUE; if(hf_index == hf_x411_subject_identifier) doing_subjectid = TRUE; %(DEFAULT_BODY)s doing_address = FALSE; if(hf_index == hf_x411_subject_identifier) doing_subjectid = FALSE; #.FN_BODY MTANameAndOptionalGDI doing_address = TRUE; %(DEFAULT_BODY)s doing_address = FALSE; proto_item_append_text(tree, ")"); #.FN_BODY BuiltInStandardAttributes address_item = tree; %(DEFAULT_BODY)s #.FN_BODY TraceInformationElement doing_address = TRUE; %(DEFAULT_BODY)s doing_address = FALSE; #.FN_BODY InternalTraceInformationElement doing_address = TRUE; %(DEFAULT_BODY)s doing_address = FALSE; #.FN_BODY DomainSuppliedInformation doing_address = FALSE; %(DEFAULT_BODY)s doing_address = TRUE; proto_item_append_text(tree, ")"); #.FN_BODY MTASuppliedInformation doing_address = FALSE; %(DEFAULT_BODY)s doing_address = TRUE; proto_item_append_text(tree, ")"); #.FN_PARS Time VAL_PTR = &arrival #.FN_BODY Time tvbuff_t *arrival = NULL; %(DEFAULT_BODY)s if(arrival && doing_address) proto_item_append_text(address_item, " %%s", tvb_format_text(arrival, 0, tvb_length(arrival))); #.FN_PARS RoutingAction VAL_PTR = &action #.FN_BODY RoutingAction int action = 0; %(DEFAULT_BODY)s proto_item_append_text(address_item, " %%s", val_to_str(action, x411_RoutingAction_vals, "action(%%d)")); #.FN_PARS MTABindError VAL_PTR=&error #.FN_BODY MTABindError int error = -1; %(DEFAULT_BODY)s if((error != -1) && check_col(actx->pinfo->cinfo, COL_INFO)) col_append_fstr(actx->pinfo->cinfo, COL_INFO, " (%%s)", val_to_str(error, x411_MTABindError_vals, "error(%%d)")); #.FN_PARS TokenTypeIdentifier FN_VARIANT = _str VAL_PTR = &object_identifier_id #.FN_BODY TokenTypeData if(object_identifier_id) call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); #.FN_PARS Credentials VAL_PTR = &credentials #.FN_BODY Credentials gint credentials = -1; %(DEFAULT_BODY)s if( (credentials!=-1) && x411_Credentials_vals[credentials].strptr ){ if (check_col(actx->pinfo->cinfo, COL_INFO)) { col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", x411_Credentials_vals[credentials].strptr); } } #.FN_PARS TokenDataType VAL_PTR = &extension_id #.FN_BODY TokenData/value proto_item_append_text(tree, " (%%s)", val_to_str(extension_id, x411_TokenDataType_vals, "tokendata-type %%d")); if (dissector_try_port(x411_tokendata_dissector_table, extension_id, tvb, actx->pinfo, tree)) { offset = tvb_length(tvb); } else { proto_item *item = NULL; proto_tree *next_tree = NULL; item = proto_tree_add_text(tree, tvb, 0, tvb_length_remaining(tvb, offset), "Dissector for tokendata-type %%d not implemented. Contact Wireshark developers if you want this supported", extension_id); next_tree = proto_item_add_subtree(item, ett_x411_unknown_tokendata_type); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, next_tree); expert_add_info_format(actx->pinfo, item, PI_UNDECODED, PI_WARN, "Unknown tokendata-type"); } #.FN_BODY PerDomainBilateralInformation/bilateral-information proto_item *item = NULL; int loffset = 0; guint32 len = 0; /* work out the length */ loffset = dissect_ber_identifier(actx->pinfo, tree, tvb, offset, NULL, NULL, NULL); (void) dissect_ber_length(actx->pinfo, tree, tvb, loffset, &len, NULL); /* create some structure so we can tell what this unknown ASN.1 represents */ item = proto_tree_add_item(tree, hf_index, tvb, offset, len, FALSE); tree = proto_item_add_subtree(item, ett_x411_bilateral_information); offset = dissect_unknown_ber(actx->pinfo, tvb, offset, tree); #.FN_PARS MTS-APDU VAL_PTR = &apdu #.FN_BODY MTS-APDU gint apdu = -1; %(DEFAULT_BODY)s if( (apdu!=-1) && x411_MTS_APDU_vals[apdu].strptr ){ if(check_col(actx->pinfo->cinfo, COL_INFO) && (apdu != 0)) { /* we don't show "message" - sub-dissectors have better idea */ col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", x411_MTS_APDU_vals[apdu].strptr); } } #.FN_PARS ReportType VAL_PTR = &report #.FN_BODY ReportType gint report = -1; %(DEFAULT_BODY)s if( (report!=-1) && x411_ReportType_vals[report].strptr ){ if(check_col(actx->pinfo->cinfo, COL_INFO)) { col_append_fstr(actx->pinfo->cinfo, COL_INFO, " %%s", x411_ReportType_vals[report].strptr); } } #.END