diff options
-rw-r--r-- | asn1/x411/packet-x411-template.c | 1 | ||||
-rw-r--r-- | asn1/x411/x411.asn | 68 | ||||
-rw-r--r-- | asn1/x411/x411.cnf | 43 | ||||
-rw-r--r-- | epan/dissectors/packet-x411.c | 443 |
4 files changed, 463 insertions, 92 deletions
diff --git a/asn1/x411/packet-x411-template.c b/asn1/x411/packet-x411-template.c index afa1266aa4..5713d7e5dc 100644 --- a/asn1/x411/packet-x411-template.c +++ b/asn1/x411/packet-x411-template.c @@ -63,6 +63,7 @@ static const char *content_type_id; /* content type identifier */ #define MAX_ORA_STR_LEN 256 static char *oraddress = NULL; static gboolean doing_address=FALSE; +static gboolean doing_mtaname=FALSE; static proto_item *address_item; static proto_tree *top_tree=NULL; diff --git a/asn1/x411/x411.asn b/asn1/x411/x411.asn index b4c642d48c..017d65364f 100644 --- a/asn1/x411/x411.asn +++ b/asn1/x411/x411.asn @@ -764,7 +764,7 @@ ResponderCredentials ::= Credentials Credentials ::= CHOICE { simple Password, --- strong [0] StrongCredentials, + strong [0] StrongCredentials, -- ..., protected [1] ProtectedPassword } @@ -774,12 +774,12 @@ Password ::= CHOICE { octet-string OCTET STRING --(SIZE (0..ub-password-length)) } ---StrongCredentials ::= SET { --- bind-token [0] Token OPTIONAL, --- certificate [1] Certificates OPTIONAL, +StrongCredentials ::= SET { + bind-token [0] Token OPTIONAL, + certificate [1] Certificates OPTIONAL, -- ..., --- certificate-selector [2] CertificateAssertion OPTIONAL ---} + certificate-selector [2] CertificateAssertion OPTIONAL +} ProtectedPassword ::= SET { signature @@ -2810,13 +2810,15 @@ TeletexNonBasicParameters ::= SET { -- as defined in CCITT Recommendation T.62 -- Token ---Token ::= SEQUENCE { --- token-type-identifier [0] TOKEN.&id({TokensTable}), --- token --- [1] TOKEN.&Type({TokensTable}{@token-type-identifier}) ---} +Token ::= SEQUENCE { + token-type-identifier [0] -- TOKEN.&id({TokensTable})-- TokenTypeIdentifier, + token + [1] --TOKEN.&Type({TokensTable}{@token-type-identifier})-- TokenTypeData +} --TOKEN ::= TYPE-IDENTIFIER +TokenTypeIdentifier ::= OBJECT IDENTIFIER +TokenTypeData ::= ANY --TokensTable TOKEN ::= {asymmetric-token, ...} @@ -2825,22 +2827,29 @@ TeletexNonBasicParameters ::= SET { -- IDENTIFIED BY id-tok-asymmetricToken --} ---AsymmetricToken ::= +AsymmetricTokenData ::= -- SIGNED --- {SEQUENCE {signature-algorithm-identifier AlgorithmIdentifier, --- name --- CHOICE {recipient-name RecipientName, --- mta --- [3] SEQUENCE {global-domain-identifier --- GlobalDomainIdentifier OPTIONAL, --- mta-name MTAName --- }}, --- time Time, --- signed-data [0] TokenData OPTIONAL, --- encryption-algorithm-identifier --- [1] AlgorithmIdentifier OPTIONAL, --- encrypted-data --- [2] ENCRYPTED{TokenData} OPTIONAL}} +-- {--SEQUENCE {signature-algorithm-identifier AlgorithmIdentifier, + name + CHOICE {recipient-name MTSRecipientName, + mta [3] MTANameAndOptionalGDI }, + time Time, + signed-data [0] TokenData OPTIONAL, + encryption-algorithm-identifier + [1] AlgorithmIdentifier OPTIONAL, + encrypted-data + [2] -- ENCRYPTED{TokenData}-- BIT STRING OPTIONAL} --} + +MTANameAndOptionalGDI ::= SEQUENCE { + global-domain-identifier GlobalDomainIdentifier OPTIONAL, + mta-name MTAName +} + +AsymmetricToken ::= SEQUENCE { + asymmetric-token-data AsymmetricTokenData, + algorithm-identifier AlgorithmIdentifier, + encrypted BIT STRING +} --TokenData ::= SEQUENCE { -- type [0] TOKEN-DATA.&id({TokenDataTable}), @@ -2861,9 +2870,12 @@ TeletexNonBasicParameters ::= SET { -- IDENTIFIED BY 1 --} ---BindTokenSignedData ::= RandomNumber +-- This is the only Token Data we know +TokenData ::= BindTokenSignedData + +BindTokenSignedData ::= RandomNumber ---RandomNumber ::= BIT STRING +RandomNumber ::= BIT STRING --message-token-signed-data TOKEN-DATA ::= { -- MessageTokenSignedData diff --git a/asn1/x411/x411.cnf b/asn1/x411/x411.cnf index 2f6367bfe0..19b37cde39 100644 --- a/asn1/x411/x411.cnf +++ b/asn1/x411/x411.cnf @@ -124,11 +124,13 @@ ReportDeliveryEnvelope/per-recipient-fields/_item per-recipient-report-delivery- 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 + + #.PDU MTABindArgument MTABindResult @@ -199,6 +201,9 @@ UniversalOrganizationalUnitNames B "x411.extension-attribute.27" "universal-orga 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" + # X402 - see master list in acp133.cnf ContentLength B "2.6.5.2.0" "id-at-mhs-maximum-content-length" @@ -217,8 +222,6 @@ ExtendedEncodedInformationType B "2.6.5.2.18" "id-at-mhs-unacceptable-eits" 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" - - #.FN_BODY AdditionalInformation /*XXX not implemented yet */ @@ -557,6 +560,15 @@ ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" doing_address = FALSE; +#.FN_BODY MTANameAndOptionalGDI + + doing_address = TRUE; + + %(DEFAULT_BODY)s + + doing_address = FALSE; + proto_item_append_text(tree, ")"); + #.FN_BODY BuiltInStandardAttributes address_item = tree; @@ -579,7 +591,6 @@ ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" doing_address = FALSE; - #.FN_BODY DomainSuppliedInformation doing_address = FALSE; @@ -606,7 +617,7 @@ ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" %(DEFAULT_BODY)s - if(arrival) + if(arrival && doing_address) proto_item_append_text(address_item, " %%s", tvb_format_text(arrival, 0, tvb_length(arrival))); #.FN_PARS RoutingAction @@ -628,5 +639,25 @@ ORAddress B "2.16.840.1.101.2.2.1.134.1" "id-at-collective-mhs-or-addresses" if((error != -1) && check_col(pinfo->cinfo, COL_INFO)) col_append_fstr(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, pinfo, tree); + +#.FN_PARS Credentials + VAL_PTR = &credentials + +#.FN_BODY Credentials + guint32 credentials; + + %(DEFAULT_BODY)s + + if (check_col(pinfo->cinfo, COL_INFO)) { + if(credentials == -1) credentials = 0; + col_append_fstr(pinfo->cinfo, COL_INFO, " %%s", val_to_str(credentials, x411_Credentials_vals, "Credentials(%%d)")); + } #.END diff --git a/epan/dissectors/packet-x411.c b/epan/dissectors/packet-x411.c index f6bfd5212a..6a18980300 100644 --- a/epan/dissectors/packet-x411.c +++ b/epan/dissectors/packet-x411.c @@ -71,6 +71,7 @@ static const char *content_type_id; /* content type identifier */ #define MAX_ORA_STR_LEN 256 static char *oraddress = NULL; static gboolean doing_address=FALSE; +static gboolean doing_mtaname=FALSE; static proto_item *address_item; static proto_tree *top_tree=NULL; @@ -141,6 +142,8 @@ static int hf_x411_PhysicalDeliveryCountryName_PDU = -1; /* PhysicalDeliveryCou static int hf_x411_PostalCode_PDU = -1; /* PostalCode */ static int hf_x411_PhysicalDeliveryOfficeName_PDU = -1; /* PhysicalDeliveryOfficeName */ static int hf_x411_ExtendedEncodedInformationType_PDU = -1; /* ExtendedEncodedInformationType */ +static int hf_x411_MTANameAndOptionalGDI_PDU = -1; /* MTANameAndOptionalGDI */ +static int hf_x411_AsymmetricToken_PDU = -1; /* AsymmetricToken */ static int hf_x411_unauthenticated = -1; /* NULL */ static int hf_x411_authenticated_argument = -1; /* AuthenticatedArgument */ static int hf_x411_authenticated_initiator_name = -1; /* MTAName */ @@ -224,9 +227,13 @@ static int hf_x411_non_urgent = -1; /* DeliveryQueue */ static int hf_x411_messages = -1; /* INTEGER */ static int hf_x411_delivery_queue_octets = -1; /* INTEGER */ static int hf_x411_simple = -1; /* Password */ +static int hf_x411_strong = -1; /* StrongCredentials */ static int hf_x411_protected = -1; /* ProtectedPassword */ static int hf_x411_ia5_string = -1; /* IA5String */ static int hf_x411_octet_string = -1; /* OCTET_STRING */ +static int hf_x411_bind_token = -1; /* Token */ +static int hf_x411_certificate = -1; /* Certificates */ +static int hf_x411_certificate_selector = -1; /* CertificateAssertion */ static int hf_x411_signature = -1; /* Signature */ static int hf_x411_time1 = -1; /* UTCTime */ static int hf_x411_time2 = -1; /* UTCTime */ @@ -357,7 +364,6 @@ static int hf_x411_non_delivery_report = -1; /* PerRecipientNonDeliveryRepo static int hf_x411_mta_directory_name = -1; /* Name */ static int hf_x411_ExtendedCertificates_item = -1; /* ExtendedCertificate */ static int hf_x411_directory_entry = -1; /* Name */ -static int hf_x411_certificate = -1; /* Certificates */ static int hf_x411_DLExemptedRecipients_item = -1; /* ORAddressAndOrDirectoryName */ static int hf_x411_encryption_recipient = -1; /* CertificateAssertion */ static int hf_x411_encryption_originator = -1; /* CertificateAssertion */ @@ -431,6 +437,18 @@ static int hf_x411_control_character_sets = -1; /* TeletexString */ static int hf_x411_page_formats = -1; /* OCTET_STRING */ static int hf_x411_miscellaneous_terminal_capabilities = -1; /* TeletexString */ static int hf_x411_private_use = -1; /* OCTET_STRING */ +static int hf_x411_token_type_identifier = -1; /* TokenTypeIdentifier */ +static int hf_x411_token = -1; /* TokenTypeData */ +static int hf_x411_signature_algorithm_identifier = -1; /* AlgorithmIdentifier */ +static int hf_x411_name = -1; /* T_name */ +static int hf_x411_token_recipient_name = -1; /* MTSRecipientName */ +static int hf_x411_token_mta = -1; /* MTANameAndOptionalGDI */ +static int hf_x411_time = -1; /* Time */ +static int hf_x411_signed_data = -1; /* TokenData */ +static int hf_x411_encryption_algorithm_identifier = -1; /* AlgorithmIdentifier */ +static int hf_x411_encrypted_data = -1; /* BIT_STRING */ +static int hf_x411_asymmetric_token_data = -1; /* AsymmetricTokenData */ +static int hf_x411_algorithm_identifier = -1; /* AlgorithmIdentifier */ static int hf_x411_security_policy_identifier = -1; /* SecurityPolicyIdentifier */ static int hf_x411_security_classification = -1; /* SecurityClassification */ static int hf_x411_privacy_mark = -1; /* PrivacyMark */ @@ -520,7 +538,7 @@ static int hf_x411_G3FacsimileNonBasicParameters_jpeg = -1; static int hf_x411_G3FacsimileNonBasicParameters_processable_mode_26 = -1; /*--- End of included file: packet-x411-hf.c ---*/ -#line 74 "packet-x411-template.c" +#line 75 "packet-x411-template.c" /* Initialize the subtree pointers */ static gint ett_x411 = -1; @@ -566,6 +584,7 @@ static gint ett_x411_MessagesWaiting = -1; static gint ett_x411_DeliveryQueue = -1; static gint ett_x411_Credentials = -1; static gint ett_x411_Password = -1; +static gint ett_x411_StrongCredentials = -1; static gint ett_x411_ProtectedPassword = -1; static gint ett_x411_Signature = -1; static gint ett_x411_SecurityContext = -1; @@ -688,18 +707,29 @@ static gint ett_x411_ExtendedEncodedInformationTypes = -1; static gint ett_x411_NonBasicParameters = -1; static gint ett_x411_G3FacsimileNonBasicParameters = -1; static gint ett_x411_TeletexNonBasicParameters = -1; +static gint ett_x411_Token = -1; +static gint ett_x411_AsymmetricTokenData = -1; +static gint ett_x411_T_name = -1; +static gint ett_x411_MTANameAndOptionalGDI = -1; +static gint ett_x411_AsymmetricToken = -1; static gint ett_x411_SecurityLabel = -1; static gint ett_x411_SecurityCategories = -1; static gint ett_x411_SecurityCategory = -1; /*--- End of included file: packet-x411-ett.c ---*/ -#line 78 "packet-x411-template.c" +#line 79 "packet-x411-template.c" /*--- Included file: packet-x411-fn.c ---*/ #line 1 "packet-x411-fn.c" /*--- Fields for imported types ---*/ +static int dissect_certificate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_Certificates(TRUE, tvb, offset, pinfo, tree, hf_x411_certificate); +} +static int dissect_certificate_selector_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_certificate_selector); +} static int dissect_algorithmIdentifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_algorithmIdentifier); } @@ -709,9 +739,6 @@ static int dissect_mta_directory_name_impl(packet_info *pinfo, proto_tree *tree, static int dissect_directory_entry_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x509if_Name(TRUE, tvb, offset, pinfo, tree, hf_x411_directory_entry); } -static int dissect_certificate_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { - return dissect_x509af_Certificates(TRUE, tvb, offset, pinfo, tree, hf_x411_certificate); -} static int dissect_encryption_recipient_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x509ce_CertificateAssertion(TRUE, tvb, offset, pinfo, tree, hf_x411_encryption_recipient); } @@ -733,6 +760,15 @@ static int dissect_directory_name_impl(packet_info *pinfo, proto_tree *tree, tvb static int dissect_psap_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x509sat_PresentationAddress(TRUE, tvb, offset, pinfo, tree, hf_x411_psap_address); } +static int dissect_signature_algorithm_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_signature_algorithm_identifier); +} +static int dissect_encryption_algorithm_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_AlgorithmIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_encryption_algorithm_identifier); +} +static int dissect_algorithm_identifier(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x509af_AlgorithmIdentifier(FALSE, tvb, offset, pinfo, tree, hf_x411_algorithm_identifier); +} @@ -753,7 +789,7 @@ static int dissect_empty_result(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_x411_MTAName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 373 "x411.cnf" +#line 376 "x411.cnf" tvbuff_t *mtaname = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, @@ -860,6 +896,72 @@ static int dissect_simple(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, i static int +dissect_x411_TokenTypeIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id); + + return offset; +} +static int dissect_token_type_identifier_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_TokenTypeIdentifier(TRUE, tvb, offset, pinfo, tree, hf_x411_token_type_identifier); +} + + + +static int +dissect_x411_TokenTypeData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 646 "x411.cnf" + + if(object_identifier_id) + call_ber_oid_callback(object_identifier_id, tvb, offset, pinfo, tree); + + + + return offset; +} +static int dissect_token_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_TokenTypeData(TRUE, tvb, offset, pinfo, tree, hf_x411_token); +} + + +static const ber_sequence_t Token_sequence[] = { + { BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_token_type_identifier_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_token_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_Token(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + Token_sequence, hf_index, ett_x411_Token); + + return offset; +} +static int dissect_bind_token_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_Token(TRUE, tvb, offset, pinfo, tree, hf_x411_bind_token); +} + + +static const ber_sequence_t StrongCredentials_set[] = { + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_bind_token_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_certificate_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_certificate_selector_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_StrongCredentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_set(implicit_tag, pinfo, tree, tvb, offset, + StrongCredentials_set, hf_index, ett_x411_StrongCredentials); + + return offset; +} +static int dissect_strong_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_StrongCredentials(TRUE, tvb, offset, pinfo, tree, hf_x411_strong); +} + + + +static int dissect_x411_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset, NULL, hf_index, -1, @@ -876,6 +978,9 @@ static int dissect_random2_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_encrypted(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_BIT_STRING(FALSE, tvb, offset, pinfo, tree, hf_x411_encrypted); } +static int dissect_encrypted_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_BIT_STRING(TRUE, tvb, offset, pinfo, tree, hf_x411_encrypted_data); +} static const ber_sequence_t Signature_sequence[] = { @@ -936,21 +1041,34 @@ static int dissect_protected_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t static const value_string x411_Credentials_vals[] = { { 0, "simple" }, - { 1, "protected" }, + { 1, "strong" }, + { 2, "protected" }, { 0, NULL } }; static const ber_choice_t Credentials_choice[] = { { 0, BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG, dissect_simple }, - { 1, BER_CLASS_CON, 1, 0, dissect_protected_impl }, + { 1, BER_CLASS_CON, 0, 0, dissect_strong_impl }, + { 2, BER_CLASS_CON, 1, 0, dissect_protected_impl }, { 0, 0, 0, 0, NULL } }; static int dissect_x411_Credentials(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { - offset = dissect_ber_choice(pinfo, tree, tvb, offset, +#line 654 "x411.cnf" + guint32 credentials; + + offset = dissect_ber_choice(pinfo, tree, tvb, offset, Credentials_choice, hf_index, ett_x411_Credentials, - NULL); + &credentials); + + + if (check_col(pinfo->cinfo, COL_INFO)) { + if(credentials == -1) credentials = 0; + col_append_fstr(pinfo->cinfo, COL_INFO, " %s", val_to_str(credentials, x411_Credentials_vals, "Credentials(%d)")); + } + + return offset; } @@ -1026,7 +1144,7 @@ static int dissect_privacy_mark(packet_info *pinfo, proto_tree *tree, tvbuff_t * static int dissect_x411_OBJECT_IDENTIFIER(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 320 "x411.cnf" +#line 323 "x411.cnf" offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &object_identifier_id); @@ -1047,7 +1165,7 @@ static int dissect_category_type_impl(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_x411_CategoryValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 241 "x411.cnf" +#line 244 "x411.cnf" offset = dissect_unknown_ber(pinfo, tvb, offset, tree); @@ -1241,7 +1359,7 @@ static const value_string x411_MTABindError_vals[] = { static int dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 626 "x411.cnf" +#line 637 "x411.cnf" int error = -1; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, &error); @@ -1251,7 +1369,6 @@ dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, - return offset; } @@ -1259,7 +1376,7 @@ dissect_x411_MTABindError(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, static int dissect_x411_NumericString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 462 "x411.cnf" +#line 465 "x411.cnf" tvbuff_t *nstring = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, @@ -1297,7 +1414,7 @@ static int dissect_sub_address_impl(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_PrintableString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 484 "x411.cnf" +#line 487 "x411.cnf" tvbuff_t *pstring = NULL; char *fmt = NULL; @@ -1380,7 +1497,7 @@ static const ber_choice_t CountryName_choice[] = { static int dissect_x411_CountryName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 252 "x411.cnf" +#line 255 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -1425,7 +1542,7 @@ static const ber_choice_t AdministrationDomainName_choice[] = { static int dissect_x411_AdministrationDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 274 "x411.cnf" +#line 277 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -1471,7 +1588,7 @@ static const ber_choice_t PrivateDomainIdentifier_choice[] = { static int dissect_x411_PrivateDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 424 "x411.cnf" +#line 427 "x411.cnf" if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); @@ -1502,7 +1619,7 @@ static const ber_sequence_t GlobalDomainIdentifier_sequence[] = { static int dissect_x411_GlobalDomainIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 531 "x411.cnf" +#line 534 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = tree; @@ -1533,7 +1650,7 @@ static int dissect_attempted_domain(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_LocalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 545 "x411.cnf" +#line 548 "x411.cnf" tvbuff_t *id = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_IA5String, @@ -1561,7 +1678,7 @@ static const ber_sequence_t MTSIdentifier_sequence[] = { static int dissect_x411_MTSIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 553 "x411.cnf" +#line 556 "x411.cnf" doing_address = TRUE; @@ -1592,7 +1709,7 @@ static int dissect_message_identifier(packet_info *pinfo, proto_tree *tree, tvbu static int dissect_x411_X121Address(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 393 "x411.cnf" +#line 396 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_NumericString, @@ -1627,7 +1744,7 @@ static int dissect_network_address_impl(packet_info *pinfo, proto_tree *tree, tv static int dissect_x411_TerminalIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 407 "x411.cnf" +#line 410 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -1663,7 +1780,7 @@ static const ber_choice_t PrivateDomainName_choice[] = { static int dissect_x411_PrivateDomainName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 417 "x411.cnf" +#line 420 "x411.cnf" if(doing_address) g_strlcat(oraddress, "/P=", MAX_ORA_STR_LEN); @@ -1685,7 +1802,7 @@ static int dissect_private_domain_name_impl(packet_info *pinfo, proto_tree *tree static int dissect_x411_OrganizationName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 434 "x411.cnf" +#line 437 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -1786,7 +1903,7 @@ static const ber_sequence_t BuiltInStandardAttributes_sequence[] = { static int dissect_x411_BuiltInStandardAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 561 "x411.cnf" +#line 573 "x411.cnf" address_item = tree; @@ -1862,7 +1979,7 @@ static int dissect_extension_attribute_type_impl(packet_info *pinfo, proto_tree static int dissect_x411_T_extension_attribute_value(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 245 "x411.cnf" +#line 248 "x411.cnf" offset=call_x411_oid_callback("x411.extension-attribute", tvb, offset, pinfo, tree); @@ -1919,7 +2036,7 @@ static const ber_sequence_t ORName_sequence[] = { int dissect_x411_ORName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 518 "x411.cnf" +#line 521 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; address_item = NULL; @@ -2052,7 +2169,7 @@ static int dissect_g3_facsimile_impl(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x411_TeletexString(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 472 "x411.cnf" +#line 475 "x411.cnf" tvbuff_t *tstring = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_TeletexString, @@ -2206,7 +2323,7 @@ static const value_string x411_BuiltInContentType_vals[] = { static int dissect_x411_BuiltInContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 344 "x411.cnf" +#line 347 "x411.cnf" guint32 ict = -1; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -2240,7 +2357,7 @@ static int dissect_built_in_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t int dissect_x411_ExtendedContentType(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 328 "x411.cnf" +#line 331 "x411.cnf" const char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, pinfo, tree, tvb, offset, hf_index, &content_type_id); @@ -2297,7 +2414,7 @@ static int dissect_ContentTypes_item(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_x411_ContentIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 294 "x411.cnf" +#line 297 "x411.cnf" gint8 class; gboolean pc, ind_field; gint32 tag; @@ -2383,7 +2500,7 @@ static int dissect_per_message_indicators(packet_info *pinfo, proto_tree *tree, static int dissect_x411_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 605 "x411.cnf" +#line 616 "x411.cnf" tvbuff_t *arrival = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_UTCTime, @@ -2391,7 +2508,7 @@ dissect_x411_Time(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_i &arrival); - if(arrival) + if(arrival && doing_address) proto_item_append_text(address_item, " %s", tvb_format_text(arrival, 0, tvb_length(arrival))); @@ -2407,6 +2524,9 @@ static int dissect_dl_expansion_time(packet_info *pinfo, proto_tree *tree, tvbuf static int dissect_origination_or_expansion_time(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_origination_or_expansion_time); } +static int dissect_time(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_Time(FALSE, tvb, offset, pinfo, tree, hf_x411_time); +} @@ -2519,7 +2639,7 @@ static const value_string x411_RoutingAction_vals[] = { static int dissect_x411_RoutingAction(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 616 "x411.cnf" +#line 627 "x411.cnf" int action = 0; offset = dissect_ber_integer(implicit_tag, pinfo, tree, tvb, offset, hf_index, @@ -2595,7 +2715,7 @@ static const ber_sequence_t DomainSuppliedInformation_set[] = { static int dissect_x411_DomainSuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 584 "x411.cnf" +#line 595 "x411.cnf" doing_address = FALSE; @@ -2623,7 +2743,7 @@ static const ber_sequence_t TraceInformationElement_sequence[] = { static int dissect_x411_TraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 567 "x411.cnf" +#line 579 "x411.cnf" doing_address = TRUE; @@ -2706,7 +2826,7 @@ static int dissect_criticality_impl(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_ExtensionValue(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 229 "x411.cnf" +#line 232 "x411.cnf" const char *name; if(extension_id != -1) @@ -2910,7 +3030,7 @@ static int dissect_message_envelope(packet_info *pinfo, proto_tree *tree, tvbuff static int dissect_x411_Content(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 361 "x411.cnf" +#line 364 "x411.cnf" tvbuff_t *next_tvb; /* we can do this now constructed octet strings are supported */ @@ -3133,7 +3253,7 @@ static int dissect_subject_intermediate_trace_information(packet_info *pinfo, pr static int dissect_x411_AdditionalInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 223 "x411.cnf" +#line 226 "x411.cnf" /*XXX not implemented yet */ @@ -3588,7 +3708,7 @@ static const ber_sequence_t MTASuppliedInformation_set[] = { static int dissect_x411_MTASuppliedInformation(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 593 "x411.cnf" +#line 604 "x411.cnf" doing_address = FALSE; @@ -3617,7 +3737,7 @@ static const ber_sequence_t InternalTraceInformationElement_sequence[] = { static int dissect_x411_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 575 "x411.cnf" +#line 587 "x411.cnf" doing_address = TRUE; @@ -3629,7 +3749,6 @@ dissect_x411_InternalTraceInformationElement(gboolean implicit_tag _U_, tvbuff_t - return offset; } static int dissect_InternalTraceInformation_item(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { @@ -3817,6 +3936,9 @@ static int dissect_submission_recipient_name(packet_info *pinfo, proto_tree *tre static int dissect_probe_recipient_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_probe_recipient_name); } +static int dissect_token_recipient_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_MTSRecipientName(FALSE, tvb, offset, pinfo, tree, hf_x411_token_recipient_name); +} static const asn_namedbit OriginatorReportRequest_bits[] = { @@ -4722,7 +4844,7 @@ static int dissect_built_in_argument_impl(packet_info *pinfo, proto_tree *tree, static int dissect_x411_T_refused_extension(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 249 "x411.cnf" +#line 252 "x411.cnf" /*XXX not implemented yet */ @@ -5175,7 +5297,7 @@ static int dissect_standard_parameters_impl(packet_info *pinfo, proto_tree *tree static int dissect_x411_T_extensions_item(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 226 "x411.cnf" +#line 229 "x411.cnf" /*XXX not implemented yet */ @@ -5541,7 +5663,7 @@ static const ber_sequence_t ORAddress_sequence[] = { int dissect_x411_ORAddress(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 505 "x411.cnf" +#line 508 "x411.cnf" oraddress = ep_alloc(MAX_ORA_STR_LEN); oraddress[0] = '\0'; doing_address = TRUE; @@ -6086,7 +6208,7 @@ dissect_x411_CertificateSelectors(gboolean implicit_tag _U_, tvbuff_t *tvb, int static int dissect_x411_CommonName(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { -#line 447 "x411.cnf" +#line 450 "x411.cnf" tvbuff_t *string = NULL; offset = dissect_ber_restricted_string(implicit_tag, BER_UNI_TAG_PrintableString, @@ -6763,6 +6885,129 @@ dissect_x411_NonBasicParameters(gboolean implicit_tag _U_, tvbuff_t *tvb, int of return offset; } + +static const ber_sequence_t MTANameAndOptionalGDI_sequence[] = { + { BER_CLASS_APP, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_global_domain_identifier }, + { BER_CLASS_UNI, BER_UNI_TAG_IA5String, BER_FLAGS_NOOWNTAG, dissect_mta_name }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_MTANameAndOptionalGDI(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { +#line 564 "x411.cnf" + + doing_address = TRUE; + + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + MTANameAndOptionalGDI_sequence, hf_index, ett_x411_MTANameAndOptionalGDI); + + + doing_address = FALSE; + proto_item_append_text(tree, ")"); + + + + return offset; +} +static int dissect_token_mta_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_MTANameAndOptionalGDI(TRUE, tvb, offset, pinfo, tree, hf_x411_token_mta); +} + + +static const value_string x411_T_name_vals[] = { + { 0, "recipient-name" }, + { 1, "mta" }, + { 0, NULL } +}; + +static const ber_choice_t T_name_choice[] = { + { 0, BER_CLASS_APP, 0, BER_FLAGS_NOOWNTAG, dissect_token_recipient_name }, + { 1, BER_CLASS_CON, 3, 0, dissect_token_mta_impl }, + { 0, 0, 0, 0, NULL } +}; + +static int +dissect_x411_T_name(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_choice(pinfo, tree, tvb, offset, + T_name_choice, hf_index, ett_x411_T_name, + NULL); + + return offset; +} +static int dissect_name(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_T_name(FALSE, tvb, offset, pinfo, tree, hf_x411_name); +} + + + +static int +dissect_x411_RandomNumber(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, pinfo, tree, tvb, offset, + NULL, hf_index, -1, + NULL); + + return offset; +} + + + +static int +dissect_x411_BindTokenSignedData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_RandomNumber(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} + + + +static int +dissect_x411_TokenData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_x411_BindTokenSignedData(implicit_tag, tvb, offset, pinfo, tree, hf_index); + + return offset; +} +static int dissect_signed_data_impl(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_TokenData(TRUE, tvb, offset, pinfo, tree, hf_x411_signed_data); +} + + +static const ber_sequence_t AsymmetricTokenData_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_signature_algorithm_identifier }, + { BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_name }, + { BER_CLASS_UNI, BER_UNI_TAG_UTCTime, BER_FLAGS_NOOWNTAG, dissect_time }, + { BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_signed_data_impl }, + { BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encryption_algorithm_identifier_impl }, + { BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_encrypted_data_impl }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_AsymmetricTokenData(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + AsymmetricTokenData_sequence, hf_index, ett_x411_AsymmetricTokenData); + + return offset; +} +static int dissect_asymmetric_token_data(packet_info *pinfo, proto_tree *tree, tvbuff_t *tvb, int offset) { + return dissect_x411_AsymmetricTokenData(FALSE, tvb, offset, pinfo, tree, hf_x411_asymmetric_token_data); +} + + +static const ber_sequence_t AsymmetricToken_sequence[] = { + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_asymmetric_token_data }, + { BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_algorithm_identifier }, + { BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_encrypted }, + { 0, 0, 0, NULL } +}; + +static int +dissect_x411_AsymmetricToken(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, pinfo, tree, tvb, offset, + AsymmetricToken_sequence, hf_index, ett_x411_AsymmetricToken); + + return offset; +} + /*--- PDUs ---*/ static void dissect_MTABindArgument_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { @@ -6945,10 +7190,16 @@ static void dissect_PhysicalDeliveryOfficeName_PDU(tvbuff_t *tvb, packet_info *p static void dissect_ExtendedEncodedInformationType_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { dissect_x411_ExtendedEncodedInformationType(FALSE, tvb, 0, pinfo, tree, hf_x411_ExtendedEncodedInformationType_PDU); } +static void dissect_MTANameAndOptionalGDI_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_MTANameAndOptionalGDI(FALSE, tvb, 0, pinfo, tree, hf_x411_MTANameAndOptionalGDI_PDU); +} +static void dissect_AsymmetricToken_PDU(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) { + dissect_x411_AsymmetricToken(FALSE, tvb, 0, pinfo, tree, hf_x411_AsymmetricToken_PDU); +} /*--- End of included file: packet-x411-fn.c ---*/ -#line 80 "packet-x411-template.c" +#line 81 "packet-x411-template.c" static int call_x411_oid_callback(char *base_oid, tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) @@ -7318,6 +7569,14 @@ void proto_register_x411(void) { { "ExtendedEncodedInformationType", "x411.ExtendedEncodedInformationType", FT_OID, BASE_NONE, NULL, 0, "ExtendedEncodedInformationType", HFILL }}, + { &hf_x411_MTANameAndOptionalGDI_PDU, + { "MTANameAndOptionalGDI", "x411.MTANameAndOptionalGDI", + FT_NONE, BASE_NONE, NULL, 0, + "MTANameAndOptionalGDI", HFILL }}, + { &hf_x411_AsymmetricToken_PDU, + { "AsymmetricToken", "x411.AsymmetricToken", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricToken", HFILL }}, { &hf_x411_unauthenticated, { "unauthenticated", "x411.unauthenticated", FT_NONE, BASE_NONE, NULL, 0, @@ -7650,6 +7909,10 @@ void proto_register_x411(void) { { "simple", "x411.simple", FT_UINT32, BASE_DEC, VALS(x411_Password_vals), 0, "Credentials/simple", HFILL }}, + { &hf_x411_strong, + { "strong", "x411.strong", + FT_NONE, BASE_NONE, NULL, 0, + "Credentials/strong", HFILL }}, { &hf_x411_protected, { "protected", "x411.protected", FT_NONE, BASE_NONE, NULL, 0, @@ -7662,6 +7925,18 @@ void proto_register_x411(void) { { "octet-string", "x411.octet_string", FT_BYTES, BASE_HEX, NULL, 0, "Password/octet-string", HFILL }}, + { &hf_x411_bind_token, + { "bind-token", "x411.bind_token", + FT_NONE, BASE_NONE, NULL, 0, + "StrongCredentials/bind-token", HFILL }}, + { &hf_x411_certificate, + { "certificate", "x411.certificate", + FT_NONE, BASE_NONE, NULL, 0, + "", HFILL }}, + { &hf_x411_certificate_selector, + { "certificate-selector", "x411.certificate_selector", + FT_NONE, BASE_NONE, NULL, 0, + "StrongCredentials/certificate-selector", HFILL }}, { &hf_x411_signature, { "signature", "x411.signature", FT_NONE, BASE_NONE, NULL, 0, @@ -7689,7 +7964,7 @@ void proto_register_x411(void) { { &hf_x411_encrypted, { "encrypted", "x411.encrypted", FT_BYTES, BASE_HEX, NULL, 0, - "Signature/encrypted", HFILL }}, + "", HFILL }}, { &hf_x411_SecurityContext_item, { "Item", "x411.SecurityContext_item", FT_NONE, BASE_NONE, NULL, 0, @@ -8182,10 +8457,6 @@ void proto_register_x411(void) { { "directory-entry", "x411.directory_entry", FT_UINT32, BASE_DEC, VALS(x509if_Name_vals), 0, "ExtendedCertificate/directory-entry", HFILL }}, - { &hf_x411_certificate, - { "certificate", "x411.certificate", - FT_NONE, BASE_NONE, NULL, 0, - "ExtendedCertificate/certificate", HFILL }}, { &hf_x411_DLExemptedRecipients_item, { "Item", "x411.DLExemptedRecipients_item", FT_NONE, BASE_NONE, NULL, 0, @@ -8478,6 +8749,54 @@ void proto_register_x411(void) { { "private-use", "x411.private_use", FT_BYTES, BASE_HEX, NULL, 0, "TeletexNonBasicParameters/private-use", HFILL }}, + { &hf_x411_token_type_identifier, + { "token-type-identifier", "x411.token_type_identifier", + FT_OID, BASE_NONE, NULL, 0, + "Token/token-type-identifier", HFILL }}, + { &hf_x411_token, + { "token", "x411.token", + FT_NONE, BASE_NONE, NULL, 0, + "Token/token", HFILL }}, + { &hf_x411_signature_algorithm_identifier, + { "signature-algorithm-identifier", "x411.signature_algorithm_identifier", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricTokenData/signature-algorithm-identifier", HFILL }}, + { &hf_x411_name, + { "name", "x411.name", + FT_UINT32, BASE_DEC, VALS(x411_T_name_vals), 0, + "AsymmetricTokenData/name", HFILL }}, + { &hf_x411_token_recipient_name, + { "recipient-name", "x411.recipient_name", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricTokenData/name/recipient-name", HFILL }}, + { &hf_x411_token_mta, + { "mta", "x411.mta", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricTokenData/name/mta", HFILL }}, + { &hf_x411_time, + { "time", "x411.time", + FT_STRING, BASE_NONE, NULL, 0, + "AsymmetricTokenData/time", HFILL }}, + { &hf_x411_signed_data, + { "signed-data", "x411.signed_data", + FT_BYTES, BASE_HEX, NULL, 0, + "AsymmetricTokenData/signed-data", HFILL }}, + { &hf_x411_encryption_algorithm_identifier, + { "encryption-algorithm-identifier", "x411.encryption_algorithm_identifier", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricTokenData/encryption-algorithm-identifier", HFILL }}, + { &hf_x411_encrypted_data, + { "encrypted-data", "x411.encrypted_data", + FT_BYTES, BASE_HEX, NULL, 0, + "AsymmetricTokenData/encrypted-data", HFILL }}, + { &hf_x411_asymmetric_token_data, + { "asymmetric-token-data", "x411.asymmetric_token_data", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricToken/asymmetric-token-data", HFILL }}, + { &hf_x411_algorithm_identifier, + { "algorithm-identifier", "x411.algorithm_identifier", + FT_NONE, BASE_NONE, NULL, 0, + "AsymmetricToken/algorithm-identifier", HFILL }}, { &hf_x411_security_policy_identifier, { "security-policy-identifier", "x411.security_policy_identifier", FT_OID, BASE_NONE, NULL, 0, @@ -8824,7 +9143,7 @@ void proto_register_x411(void) { "", HFILL }}, /*--- End of included file: packet-x411-hfarr.c ---*/ -#line 207 "packet-x411-template.c" +#line 208 "packet-x411-template.c" }; /* List of subtrees */ @@ -8872,6 +9191,7 @@ void proto_register_x411(void) { &ett_x411_DeliveryQueue, &ett_x411_Credentials, &ett_x411_Password, + &ett_x411_StrongCredentials, &ett_x411_ProtectedPassword, &ett_x411_Signature, &ett_x411_SecurityContext, @@ -8994,12 +9314,17 @@ void proto_register_x411(void) { &ett_x411_NonBasicParameters, &ett_x411_G3FacsimileNonBasicParameters, &ett_x411_TeletexNonBasicParameters, + &ett_x411_Token, + &ett_x411_AsymmetricTokenData, + &ett_x411_T_name, + &ett_x411_MTANameAndOptionalGDI, + &ett_x411_AsymmetricToken, &ett_x411_SecurityLabel, &ett_x411_SecurityCategories, &ett_x411_SecurityCategory, /*--- End of included file: packet-x411-ettarr.c ---*/ -#line 213 "packet-x411-template.c" +#line 214 "packet-x411-template.c" }; /* Register protocol */ @@ -9070,6 +9395,8 @@ void proto_reg_handoff_x411(void) { register_ber_oid_dissector("x411.extension-attribute.26", dissect_UniversalPersonalName_PDU, proto_x411, "universal-personal-name"); register_ber_oid_dissector("x411.extension-attribute.27", dissect_UniversalOrganizationalUnitNames_PDU, proto_x411, "universal-organizational-unit-names"); register_ber_oid_dissector("2.6.1.4.14", dissect_ReportDeliveryArgument_PDU, proto_x411, "id-et-report"); + register_ber_oid_dissector("2.6.3.6.0", dissect_AsymmetricToken_PDU, proto_x411, "id-tok-asymmetricToken"); + register_ber_oid_dissector("2.6.5.6.0", dissect_MTANameAndOptionalGDI_PDU, proto_x411, "id-on-mtaName"); register_ber_oid_dissector("2.6.5.2.0", dissect_ContentLength_PDU, proto_x411, "id-at-mhs-maximum-content-length"); register_ber_oid_dissector("2.6.5.2.1", dissect_ExtendedContentType_PDU, proto_x411, "id-at-mhs-deliverable-content-types"); register_ber_oid_dissector("2.6.5.2.2", dissect_ExtendedEncodedInformationType_PDU, proto_x411, "id-at-mhs-exclusively-acceptable-eits"); @@ -9085,7 +9412,7 @@ void proto_reg_handoff_x411(void) { /*--- End of included file: packet-x411-dis-tab.c ---*/ -#line 230 "packet-x411-template.c" +#line 231 "packet-x411-template.c" /* APPLICATION CONTEXT */ |