diff --git a/asn1/cms/AttributeCertificateVersion1.asn b/asn1/cms/AttributeCertificateVersion1.asn new file mode 100644 index 0000000000..33dfbba7cf --- /dev/null +++ b/asn1/cms/AttributeCertificateVersion1.asn @@ -0,0 +1,52 @@ +-- Extracted from RFC3369 +-- $Id$ +AttributeCertificateVersion1 + { iso(1) member-body(2) us(840) rsadsi(113549) + pkcs(1) pkcs-9(9) smime(16) modules(0) v1AttrCert(15) } + +DEFINITIONS IMPLICIT TAGS ::= +BEGIN + +-- EXPORTS All + +IMPORTS + -- Directory Authentication Framework (X.509) + AttCertValidityPeriod, Extensions, IssuerSerial + FROM AuthenticationFramework { joint-iso-itu-t ds(5) + module(1) authenticationFramework(7) 3 } + + GeneralNames + FROM CertificateExtensions { joint-iso-ccitt ds(5) + module(1) certificateExtensions(26) 0 } + + UniqueIdentifier + FROM SelectedAttributeTypes { joint-iso-itu-t ds(5) module(1) + selectedAttributeTypes(5) 3 }; + + +-- Definition extracted from X.509-1997 [X.509-97], but +-- different type names are used to avoid collisions. + +AttributeCertificateV1 ::= SEQUENCE { + acInfo AttributeCertificateInfoV1, + signatureAlgorithm AlgorithmIdentifier, + signature BIT STRING } + +AttributeCertificateInfoV1 ::= SEQUENCE { + version AttCertVersionV1 DEFAULT v1, + subject CHOICE { + baseCertificateID [0] IssuerSerial, + -- associated with a Public Key Certificate + subjectName [1] GeneralNames }, + -- associated with a name + issuer GeneralNames, + signature AlgorithmIdentifier, + serialNumber CertificateSerialNumber, + attCertValidityPeriod AttCertValidityPeriod, + attributes SEQUENCE OF Attribute, + issuerUniqueID UniqueIdentifier OPTIONAL, + extensions Extensions OPTIONAL } + +AttCertVersionV1 ::= INTEGER { v1(0) } + +END -- of AttributeCertificateVersion1 diff --git a/asn1/cms/CryptographicMessageSyntax.asn b/asn1/cms/CryptographicMessageSyntax.asn index ad96da8ff7..1fefbd4ae3 100644 --- a/asn1/cms/CryptographicMessageSyntax.asn +++ b/asn1/cms/CryptographicMessageSyntax.asn @@ -1,5 +1,6 @@ --- Extracted from RFC2630 --- and massaged/modified so it passws through our asn2wrs compiler +-- Extracted from RFC3369 +-- and massaged/modified so it passes through our asn2wrs compiler +-- $Id$ CryptographicMessageSyntax { iso(1) member-body(2) us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) modules(0) cms(1) } DEFINITIONS IMPLICIT TAGS ::= @@ -103,7 +104,9 @@ UnprotectedAttributes ::= SET SIZE (1..MAX) OF Attribute RecipientInfo ::= CHOICE { ktri KeyTransRecipientInfo, kari [1] KeyAgreeRecipientInfo, - kekri [2] KEKRecipientInfo } + kekri [2] KEKRecipientInfo, + pwri [3] PasswordRecipientInfo, + ori [4] OtherRecipientInfo } EncryptedKey ::= OCTET STRING @@ -164,6 +167,17 @@ KEKIdentifier ::= SEQUENCE { date GeneralizedTime OPTIONAL, other OtherKeyAttribute OPTIONAL } +PasswordRecipientInfo ::= SEQUENCE { + version CMSVersion, -- always set to 0 + keyDerivationAlgorithm [0] KeyDerivationAlgorithmIdentifier + OPTIONAL, + keyEncryptionAlgorithm KeyEncryptionAlgorithmIdentifier, + encryptedKey EncryptedKey } + +OtherRecipientInfo ::= SEQUENCE { + oriType OBJECT IDENTIFIER, + oriValue ANY DEFINED BY oriType } + DigestedData ::= SEQUENCE { version CMSVersion, digestAlgorithm DigestAlgorithmIdentifier, @@ -184,9 +198,9 @@ AuthenticatedData ::= SEQUENCE { macAlgorithm MessageAuthenticationCodeAlgorithm, digestAlgorithm [1] DigestAlgorithmIdentifier OPTIONAL, encapContentInfo EncapsulatedContentInfo, - authenticatedAttributes [2] IMPLICIT AuthAttributes OPTIONAL, + authAttrs [2] IMPLICIT AuthAttributes OPTIONAL, mac MessageAuthenticationCode, - unauthenticatedAttributes [3] IMPLICIT UnauthAttributes OPTIONAL } + unauthAttrs [3] IMPLICIT UnauthAttributes OPTIONAL } AuthAttributes ::= SET SIZE (1..MAX) OF Attribute @@ -204,12 +218,17 @@ ContentEncryptionAlgorithmIdentifier ::= AlgorithmIdentifier MessageAuthenticationCodeAlgorithm ::= AlgorithmIdentifier +KeyDerivationAlgorithmIdentifier ::= AlgorithmIdentifier + CertificateRevocationLists ::= SET OF CertificateList CertificateChoices ::= CHOICE { certificate Certificate, - extendedCertificate [0] IMPLICIT ExtendedCertificate, - attrCert [1] IMPLICIT AttributeCertificate } + extendedCertificate [0] IMPLICIT ExtendedCertificate, -- Obsolete + v1AttrCert [1] IMPLICIT AttributeCertificateV1, -- Obsolete + v2AttrCert [2] IMPLICIT AttributeCertificateV2 } + +AttributeCertificateV2 ::= AttributeCertificate CertificateSet ::= SET OF CertificateChoices @@ -223,7 +242,7 @@ UserKeyingMaterial ::= OCTET STRING OtherKeyAttribute ::= SEQUENCE { keyAttrId OBJECT IDENTIFIER, - keyAttr ANY OPTIONAL + keyAttr ANY DEFINED BY keyAttrId OPTIONAL } -- CMS Attributes diff --git a/asn1/cms/Makefile.common b/asn1/cms/Makefile.common index 0091f73b83..a0537171b9 100644 --- a/asn1/cms/Makefile.common +++ b/asn1/cms/Makefile.common @@ -31,7 +31,7 @@ EXPORT_FILES = \ EXT_ASN_FILE_LIST = -ASN_FILE_LIST = CryptographicMessageSyntax.asn +ASN_FILE_LIST = CryptographicMessageSyntax.asn AttributeCertificateVersion1.asn # The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn # files do not exist for all protocols: Please add/remove as required. @@ -46,7 +46,7 @@ SRC_FILES = \ $(EXTRA_DIST) \ $(EXT_ASN_FILE_LIST) -A2W_FLAGS= -b -e +A2W_FLAGS= -b -e -C EXTRA_CNF= \ ../x509af/x509af-exp.cnf \ diff --git a/asn1/cms/cms.cnf b/asn1/cms/cms.cnf index c828889ae0..cc7f810092 100644 --- a/asn1/cms/cms.cnf +++ b/asn1/cms/cms.cnf @@ -4,7 +4,9 @@ # $Id$ #.IMPORT ../x509af/x509af-exp.cnf +#.IMPORT ../x509ce/x509ce-exp.cnf #.IMPORT ../x509if/x509if-exp.cnf +#.IMPORT ../x509sat/x509sat-exp.cnf #.OMIT_ASSIGNMENT KeyWrapAlgorithm @@ -63,6 +65,12 @@ RC2WrapParameter B "1.2.840.113549.1.9.16.3.7" "id-alg-cmsrc2-wrap" SignerInfo/signature signatureValue RecipientEncryptedKey/rid rekRid EncryptedContentInfo/contentType encryptedContentType +AttributeCertificateV1/signature signatureValue_v1 +AttributeCertificateV1/signatureAlgorithm signatureAlgorithm_v1 +AttributeCertificateInfoV1/attributes attributes_v1 +AttributeCertificateInfoV1/issuer issuer_v1 +AttributeCertificateInfoV1/signature signature_v1 +AttributeCertificateInfoV1/version version_v1 #.FN_BODY ContentInfo top_tree = tree; @@ -105,6 +113,12 @@ EncryptedContentInfo/contentType encryptedContentType /* save the content for checking the message digest */ content_tvb = tvb_new_subset(tvb, content_offset, len, -1); +#.FN_PARS OtherRecipientInfo/oriType + FN_VARIANT = _str VAL_PTR = &object_identifier_id + +#.FN_BODY OtherRecipientInfo/oriValue + offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); + #.FN_PARS OtherKeyAttribute/keyAttrId FN_VARIANT = _str HF_INDEX = hf_cms_ci_contentType VAL_PTR = &object_identifier_id diff --git a/asn1/cms/packet-cms-template.c b/asn1/cms/packet-cms-template.c index 0f4f6237b3..c928e38166 100644 --- a/asn1/cms/packet-cms-template.c +++ b/asn1/cms/packet-cms-template.c @@ -38,7 +38,9 @@ #include "packet-ber.h" #include "packet-cms.h" #include "packet-x509af.h" +#include "packet-x509ce.h" #include "packet-x509if.h" +#include "packet-x509sat.h" #include "packet-pkcs12.h" #include diff --git a/epan/dissectors/packet-cms.c b/epan/dissectors/packet-cms.c index 31be7f8341..907c0f6a75 100644 --- a/epan/dissectors/packet-cms.c +++ b/epan/dissectors/packet-cms.c @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-cms.c */ -/* ../../tools/asn2wrs.py -b -e -p cms -c ./cms.cnf -s ./packet-cms-template -D . CryptographicMessageSyntax.asn */ +/* ../../tools/asn2wrs.py -b -e -C -p cms -c ./cms.cnf -s ./packet-cms-template -D . CryptographicMessageSyntax.asn AttributeCertificateVersion1.asn */ /* Input file: packet-cms-template.c */ @@ -46,7 +46,9 @@ #include "packet-ber.h" #include "packet-cms.h" #include "packet-x509af.h" +#include "packet-x509ce.h" #include "packet-x509if.h" +#include "packet-x509sat.h" #include "packet-pkcs12.h" #include @@ -115,6 +117,8 @@ static int hf_cms_UnprotectedAttributes_item = -1; /* Attribute */ static int hf_cms_ktri = -1; /* KeyTransRecipientInfo */ static int hf_cms_kari = -1; /* KeyAgreeRecipientInfo */ static int hf_cms_kekri = -1; /* KEKRecipientInfo */ +static int hf_cms_pwri = -1; /* PasswordRecipientInfo */ +static int hf_cms_ori = -1; /* OtherRecipientInfo */ static int hf_cms_rid = -1; /* RecipientIdentifier */ static int hf_cms_keyEncryptionAlgorithm = -1; /* KeyEncryptionAlgorithmIdentifier */ static int hf_cms_encryptedKey = -1; /* EncryptedKey */ @@ -131,17 +135,21 @@ static int hf_cms_date = -1; /* GeneralizedTime */ static int hf_cms_other = -1; /* OtherKeyAttribute */ static int hf_cms_kekid = -1; /* KEKIdentifier */ static int hf_cms_keyIdentifier = -1; /* OCTET_STRING */ +static int hf_cms_keyDerivationAlgorithm = -1; /* KeyDerivationAlgorithmIdentifier */ +static int hf_cms_oriType = -1; /* T_oriType */ +static int hf_cms_oriValue = -1; /* T_oriValue */ static int hf_cms_digest = -1; /* Digest */ static int hf_cms_macAlgorithm = -1; /* MessageAuthenticationCodeAlgorithm */ -static int hf_cms_authenticatedAttributes = -1; /* AuthAttributes */ +static int hf_cms_authAttrs = -1; /* AuthAttributes */ static int hf_cms_mac = -1; /* MessageAuthenticationCode */ -static int hf_cms_unauthenticatedAttributes = -1; /* UnauthAttributes */ +static int hf_cms_unauthAttrs = -1; /* UnauthAttributes */ static int hf_cms_AuthAttributes_item = -1; /* Attribute */ static int hf_cms_UnauthAttributes_item = -1; /* Attribute */ static int hf_cms_CertificateRevocationLists_item = -1; /* CertificateList */ static int hf_cms_certificate = -1; /* Certificate */ static int hf_cms_extendedCertificate = -1; /* ExtendedCertificate */ -static int hf_cms_attrCert = -1; /* AttributeCertificate */ +static int hf_cms_v1AttrCert = -1; /* AttributeCertificateV1 */ +static int hf_cms_v2AttrCert = -1; /* AttributeCertificateV2 */ static int hf_cms_CertificateSet_item = -1; /* CertificateChoices */ static int hf_cms_issuer = -1; /* Name */ static int hf_cms_serialNumber = -1; /* CertificateSerialNumber */ @@ -161,9 +169,23 @@ static int hf_cms_recipientKeyId = -1; /* RecipientKeyIdentifier */ static int hf_cms_subjectAltKeyIdentifier = -1; /* SubjectKeyIdentifier */ static int hf_cms_rc2WrapParameter = -1; /* RC2WrapParameter */ static int hf_cms_rc2CBCParameter = -1; /* RC2CBCParameter */ +static int hf_cms_acInfo = -1; /* AttributeCertificateInfoV1 */ +static int hf_cms_signatureAlgorithm_v1 = -1; /* AlgorithmIdentifier */ +static int hf_cms_signatureValue_v1 = -1; /* BIT_STRING */ +static int hf_cms_version_v1 = -1; /* AttCertVersionV1 */ +static int hf_cms_subject = -1; /* T_subject */ +static int hf_cms_baseCertificateID = -1; /* IssuerSerial */ +static int hf_cms_subjectName = -1; /* GeneralNames */ +static int hf_cms_issuer_v1 = -1; /* GeneralNames */ +static int hf_cms_signature_v1 = -1; /* AlgorithmIdentifier */ +static int hf_cms_attCertValidityPeriod = -1; /* AttCertValidityPeriod */ +static int hf_cms_attributes_v1 = -1; /* SEQUENCE_OF_Attribute */ +static int hf_cms_attributes_v1_item = -1; /* Attribute */ +static int hf_cms_issuerUniqueID = -1; /* UniqueIdentifier */ +static int hf_cms_extensions = -1; /* Extensions */ /*--- End of included file: packet-cms-hf.c ---*/ -#line 55 "packet-cms-template.c" +#line 57 "packet-cms-template.c" /* Initialize the subtree pointers */ @@ -197,6 +219,8 @@ static gint ett_cms_KeyAgreeRecipientIdentifier = -1; static gint ett_cms_RecipientKeyIdentifier = -1; static gint ett_cms_KEKRecipientInfo = -1; static gint ett_cms_KEKIdentifier = -1; +static gint ett_cms_PasswordRecipientInfo = -1; +static gint ett_cms_OtherRecipientInfo = -1; static gint ett_cms_DigestedData = -1; static gint ett_cms_EncryptedData = -1; static gint ett_cms_AuthenticatedData = -1; @@ -215,9 +239,13 @@ static gint ett_cms_SMIMECapabilities = -1; static gint ett_cms_SMIMECapability = -1; static gint ett_cms_SMIMEEncryptionKeyPreference = -1; static gint ett_cms_RC2CBCParameters = -1; +static gint ett_cms_AttributeCertificateV1 = -1; +static gint ett_cms_AttributeCertificateInfoV1 = -1; +static gint ett_cms_T_subject = -1; +static gint ett_cms_SEQUENCE_OF_Attribute = -1; /*--- End of included file: packet-cms-ett.c ---*/ -#line 58 "packet-cms-template.c" +#line 60 "packet-cms-template.c" static int dissect_cms_OCTET_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) ; /* XXX kill a compiler warning until asn2wrs stops generating these silly wrappers */ @@ -302,7 +330,7 @@ cms_verify_msg_digest(proto_item *pi, tvbuff_t *content, const char *alg, tvbuff int dissect_cms_ContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 77 "cms.cnf" +#line 85 "cms.cnf" const char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id); @@ -322,7 +350,7 @@ dissect_cms_ContentType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_cms_T_content(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 87 "cms.cnf" +#line 95 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); @@ -340,7 +368,7 @@ static const ber_sequence_t ContentInfo_sequence[] = { int dissect_cms_ContentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 68 "cms.cnf" +#line 76 "cms.cnf" top_tree = tree; offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, ContentInfo_sequence, hf_index, ett_cms_ContentInfo); @@ -398,7 +426,7 @@ dissect_cms_DigestAlgorithmIdentifiers(gboolean implicit_tag _U_, tvbuff_t *tvb static int dissect_cms_T_eContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 91 "cms.cnf" +#line 99 "cms.cnf" gint8 class; gboolean pc, ind; gint32 tag; @@ -440,7 +468,7 @@ dissect_cms_EncapsulatedContentInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_ static int dissect_cms_T_attrType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 119 "cms.cnf" +#line 133 "cms.cnf" const char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_cms_attrType, &object_identifier_id); @@ -460,7 +488,7 @@ dissect_cms_T_attrType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_cms_AttributeValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 129 "cms.cnf" +#line 143 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); @@ -504,8 +532,8 @@ static const ber_sequence_t UnauthAttributes_set_of[1] = { static int dissect_cms_UnauthAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, - UnauthAttributes_set_of, hf_index, ett_cms_UnauthAttributes); + offset = dissect_ber_constrained_set_of(implicit_tag, actx, tree, tvb, offset, + 1, NO_BOUND, UnauthAttributes_set_of, hf_index, ett_cms_UnauthAttributes); return offset; } @@ -563,17 +591,127 @@ dissect_cms_ExtendedCertificate(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, in } +static const value_string cms_AttCertVersionV1_vals[] = { + { 0, "v1" }, + { 0, NULL } +}; + + +static int +dissect_cms_AttCertVersionV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, + NULL); + + return offset; +} + + +static const value_string cms_T_subject_vals[] = { + { 0, "baseCertificateID" }, + { 1, "subjectName" }, + { 0, NULL } +}; + +static const ber_choice_t T_subject_choice[] = { + { 0, &hf_cms_baseCertificateID, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_x509af_IssuerSerial }, + { 1, &hf_cms_subjectName , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x509ce_GeneralNames }, + { 0, NULL, 0, 0, 0, NULL } +}; + +static int +dissect_cms_T_subject(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_choice(actx, tree, tvb, offset, + T_subject_choice, hf_index, ett_cms_T_subject, + NULL); + + return offset; +} + + +static const ber_sequence_t SEQUENCE_OF_Attribute_sequence_of[1] = { + { &hf_cms_attributes_v1_item, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_Attribute }, +}; + +static int +dissect_cms_SEQUENCE_OF_Attribute(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence_of(implicit_tag, actx, tree, tvb, offset, + SEQUENCE_OF_Attribute_sequence_of, hf_index, ett_cms_SEQUENCE_OF_Attribute); + + return offset; +} + + +static const ber_sequence_t AttributeCertificateInfoV1_sequence[] = { + { &hf_cms_version_v1 , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_cms_AttCertVersionV1 }, + { &hf_cms_subject , BER_CLASS_ANY/*choice*/, -1/*choice*/, BER_FLAGS_NOOWNTAG|BER_FLAGS_NOTCHKTAG, dissect_cms_T_subject }, + { &hf_cms_issuer_v1 , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509ce_GeneralNames }, + { &hf_cms_signature_v1 , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier }, + { &hf_cms_serialNumber , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_x509af_CertificateSerialNumber }, + { &hf_cms_attCertValidityPeriod, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AttCertValidityPeriod }, + { &hf_cms_attributes_v1 , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_SEQUENCE_OF_Attribute }, + { &hf_cms_issuerUniqueID , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509sat_UniqueIdentifier }, + { &hf_cms_extensions , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_OPTIONAL|BER_FLAGS_NOOWNTAG, dissect_x509af_Extensions }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_cms_AttributeCertificateInfoV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + AttributeCertificateInfoV1_sequence, hf_index, ett_cms_AttributeCertificateInfoV1); + + return offset; +} + + + +static int +dissect_cms_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, + NULL, hf_index, -1, + NULL); + + return offset; +} + + +static const ber_sequence_t AttributeCertificateV1_sequence[] = { + { &hf_cms_acInfo , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_AttributeCertificateInfoV1 }, + { &hf_cms_signatureAlgorithm_v1, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier }, + { &hf_cms_signatureValue_v1, BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_cms_BIT_STRING }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_cms_AttributeCertificateV1(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + AttributeCertificateV1_sequence, hf_index, ett_cms_AttributeCertificateV1); + + return offset; +} + + + +static int +dissect_cms_AttributeCertificateV2(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_x509af_AttributeCertificate(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + static const value_string cms_CertificateChoices_vals[] = { { 0, "certificate" }, { 1, "extendedCertificate" }, - { 2, "attrCert" }, + { 2, "v1AttrCert" }, + { 3, "v2AttrCert" }, { 0, NULL } }; static const ber_choice_t CertificateChoices_choice[] = { { 0, &hf_cms_certificate , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_Certificate }, { 1, &hf_cms_extendedCertificate, BER_CLASS_CON, 0, BER_FLAGS_IMPLTAG, dissect_cms_ExtendedCertificate }, - { 2, &hf_cms_attrCert , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_x509af_AttributeCertificate }, + { 2, &hf_cms_v1AttrCert , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_cms_AttributeCertificateV1 }, + { 3, &hf_cms_v2AttrCert , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cms_AttributeCertificateV2 }, { 0, NULL, 0, 0, 0, NULL } }; @@ -666,8 +804,8 @@ static const ber_sequence_t SignedAttributes_set_of[1] = { int dissect_cms_SignedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, - SignedAttributes_set_of, hf_index, ett_cms_SignedAttributes); + offset = dissect_ber_constrained_set_of(implicit_tag, actx, tree, tvb, offset, + 1, NO_BOUND, SignedAttributes_set_of, hf_index, ett_cms_SignedAttributes); return offset; } @@ -689,8 +827,8 @@ static const ber_sequence_t UnsignedAttributes_set_of[1] = { int dissect_cms_UnsignedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, - UnsignedAttributes_set_of, hf_index, ett_cms_UnsignedAttributes); + offset = dissect_ber_constrained_set_of(implicit_tag, actx, tree, tvb, offset, + 1, NO_BOUND, UnsignedAttributes_set_of, hf_index, ett_cms_UnsignedAttributes); return offset; } @@ -821,17 +959,6 @@ dissect_cms_KeyTransRecipientInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, } - -static int -dissect_cms_BIT_STRING(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_bitstring(implicit_tag, actx, tree, tvb, offset, - NULL, hf_index, -1, - NULL); - - return offset; -} - - static const ber_sequence_t OriginatorPublicKey_sequence[] = { { &hf_cms_algorithm , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_x509af_AlgorithmIdentifier }, { &hf_cms_publicKey , BER_CLASS_UNI, BER_UNI_TAG_BITSTRING, BER_FLAGS_NOOWNTAG, dissect_cms_BIT_STRING }, @@ -902,7 +1029,7 @@ dissect_cms_T_keyAttrId(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset static int dissect_cms_T_keyAttr(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 112 "cms.cnf" +#line 126 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); @@ -1054,10 +1181,74 @@ dissect_cms_KEKRecipientInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o } + +static int +dissect_cms_KeyDerivationAlgorithmIdentifier(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_x509af_AlgorithmIdentifier(implicit_tag, tvb, offset, actx, tree, hf_index); + + return offset; +} + + +static const ber_sequence_t PasswordRecipientInfo_sequence[] = { + { &hf_cms_version , BER_CLASS_UNI, BER_UNI_TAG_INTEGER, BER_FLAGS_NOOWNTAG, dissect_cms_CMSVersion }, + { &hf_cms_keyDerivationAlgorithm, BER_CLASS_CON, 0, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_KeyDerivationAlgorithmIdentifier }, + { &hf_cms_keyEncryptionAlgorithm, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_KeyEncryptionAlgorithmIdentifier }, + { &hf_cms_encryptedKey , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cms_EncryptedKey }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_cms_PasswordRecipientInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + PasswordRecipientInfo_sequence, hf_index, ett_cms_PasswordRecipientInfo); + + return offset; +} + + + +static int +dissect_cms_T_oriType(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_index, &object_identifier_id); + + return offset; +} + + + +static int +dissect_cms_T_oriValue(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { +#line 120 "cms.cnf" + offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); + + + + return offset; +} + + +static const ber_sequence_t OtherRecipientInfo_sequence[] = { + { &hf_cms_oriType , BER_CLASS_UNI, BER_UNI_TAG_OID, BER_FLAGS_NOOWNTAG, dissect_cms_T_oriType }, + { &hf_cms_oriValue , BER_CLASS_ANY, 0, BER_FLAGS_NOOWNTAG, dissect_cms_T_oriValue }, + { NULL, 0, 0, 0, NULL } +}; + +static int +dissect_cms_OtherRecipientInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { + offset = dissect_ber_sequence(implicit_tag, actx, tree, tvb, offset, + OtherRecipientInfo_sequence, hf_index, ett_cms_OtherRecipientInfo); + + return offset; +} + + static const value_string cms_RecipientInfo_vals[] = { { 0, "ktri" }, { 1, "kari" }, { 2, "kekri" }, + { 3, "pwri" }, + { 4, "ori" }, { 0, NULL } }; @@ -1065,6 +1256,8 @@ static const ber_choice_t RecipientInfo_choice[] = { { 0, &hf_cms_ktri , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_KeyTransRecipientInfo }, { 1, &hf_cms_kari , BER_CLASS_CON, 1, BER_FLAGS_IMPLTAG, dissect_cms_KeyAgreeRecipientInfo }, { 2, &hf_cms_kekri , BER_CLASS_CON, 2, BER_FLAGS_IMPLTAG, dissect_cms_KEKRecipientInfo }, + { 3, &hf_cms_pwri , BER_CLASS_CON, 3, BER_FLAGS_IMPLTAG, dissect_cms_PasswordRecipientInfo }, + { 4, &hf_cms_ori , BER_CLASS_CON, 4, BER_FLAGS_IMPLTAG, dissect_cms_OtherRecipientInfo }, { 0, NULL, 0, 0, 0, NULL } }; @@ -1103,14 +1296,14 @@ dissect_cms_ContentEncryptionAlgorithmIdentifier(gboolean implicit_tag _U_, tvbu static int dissect_cms_EncryptedContent(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 179 "cms.cnf" +#line 193 "cms.cnf" tvbuff_t *encrypted_tvb; proto_item *item; offset = dissect_ber_octet_string(implicit_tag, actx, tree, tvb, offset, hf_index, &encrypted_tvb); -#line 184 "cms.cnf" +#line 198 "cms.cnf" item = actx->created_item; @@ -1143,8 +1336,8 @@ static const ber_sequence_t UnprotectedAttributes_set_of[1] = { static int dissect_cms_UnprotectedAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, - UnprotectedAttributes_set_of, hf_index, ett_cms_UnprotectedAttributes); + offset = dissect_ber_constrained_set_of(implicit_tag, actx, tree, tvb, offset, + 1, NO_BOUND, UnprotectedAttributes_set_of, hf_index, ett_cms_UnprotectedAttributes); return offset; } @@ -1226,8 +1419,8 @@ static const ber_sequence_t AuthAttributes_set_of[1] = { static int dissect_cms_AuthAttributes(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { - offset = dissect_ber_set_of(implicit_tag, actx, tree, tvb, offset, - AuthAttributes_set_of, hf_index, ett_cms_AuthAttributes); + offset = dissect_ber_constrained_set_of(implicit_tag, actx, tree, tvb, offset, + 1, NO_BOUND, AuthAttributes_set_of, hf_index, ett_cms_AuthAttributes); return offset; } @@ -1250,9 +1443,9 @@ static const ber_sequence_t AuthenticatedData_sequence[] = { { &hf_cms_macAlgorithm , BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_MessageAuthenticationCodeAlgorithm }, { &hf_cms_digestAlgorithm , BER_CLASS_CON, 1, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_DigestAlgorithmIdentifier }, { &hf_cms_encapContentInfo, BER_CLASS_UNI, BER_UNI_TAG_SEQUENCE, BER_FLAGS_NOOWNTAG, dissect_cms_EncapsulatedContentInfo }, - { &hf_cms_authenticatedAttributes, BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_AuthAttributes }, + { &hf_cms_authAttrs , BER_CLASS_CON, 2, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_AuthAttributes }, { &hf_cms_mac , BER_CLASS_UNI, BER_UNI_TAG_OCTETSTRING, BER_FLAGS_NOOWNTAG, dissect_cms_MessageAuthenticationCode }, - { &hf_cms_unauthenticatedAttributes, BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_UnauthAttributes }, + { &hf_cms_unauthAttrs , BER_CLASS_CON, 3, BER_FLAGS_OPTIONAL|BER_FLAGS_IMPLTAG, dissect_cms_UnauthAttributes }, { NULL, 0, 0, 0, NULL } }; @@ -1268,7 +1461,7 @@ dissect_cms_AuthenticatedData(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int static int dissect_cms_MessageDigest(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 133 "cms.cnf" +#line 147 "cms.cnf" proto_item *pi; int old_offset = offset; @@ -1343,7 +1536,7 @@ dissect_cms_Countersignature(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int o static int dissect_cms_RC2ParameterVersion(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 169 "cms.cnf" +#line 183 "cms.cnf" guint32 length = 0; offset = dissect_ber_integer(implicit_tag, actx, tree, tvb, offset, hf_index, @@ -1396,7 +1589,7 @@ dissect_cms_RC2CBCParameter(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int of static int dissect_cms_T_capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 151 "cms.cnf" +#line 165 "cms.cnf" const char *name = NULL; offset = dissect_ber_object_identifier_str(implicit_tag, actx, tree, tvb, offset, hf_cms_attrType, &object_identifier_id); @@ -1417,7 +1610,7 @@ dissect_cms_T_capability(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offse static int dissect_cms_T_parameters(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) { -#line 162 "cms.cnf" +#line 176 "cms.cnf" offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree); @@ -1580,7 +1773,7 @@ static void dissect_RC2CBCParameters_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _ /*--- End of included file: packet-cms-fn.c ---*/ -#line 136 "packet-cms-template.c" +#line 138 "packet-cms-template.c" /*--- proto_register_cms ----------------------------------------------*/ void proto_register_cms(void) { @@ -1806,6 +1999,14 @@ void proto_register_cms(void) { { "kekri", "cms.kekri", FT_NONE, BASE_NONE, NULL, 0, "cms.KEKRecipientInfo", HFILL }}, + { &hf_cms_pwri, + { "pwri", "cms.pwri", + FT_NONE, BASE_NONE, NULL, 0, + "cms.PasswordRecipientInfo", HFILL }}, + { &hf_cms_ori, + { "ori", "cms.ori", + FT_NONE, BASE_NONE, NULL, 0, + "cms.OtherRecipientInfo", HFILL }}, { &hf_cms_rid, { "rid", "cms.rid", FT_UINT32, BASE_DEC, VALS(cms_RecipientIdentifier_vals), 0, @@ -1870,6 +2071,18 @@ void proto_register_cms(void) { { "keyIdentifier", "cms.keyIdentifier", FT_BYTES, BASE_NONE, NULL, 0, "cms.OCTET_STRING", HFILL }}, + { &hf_cms_keyDerivationAlgorithm, + { "keyDerivationAlgorithm", "cms.keyDerivationAlgorithm", + FT_NONE, BASE_NONE, NULL, 0, + "cms.KeyDerivationAlgorithmIdentifier", HFILL }}, + { &hf_cms_oriType, + { "oriType", "cms.oriType", + FT_OID, BASE_NONE, NULL, 0, + "cms.T_oriType", HFILL }}, + { &hf_cms_oriValue, + { "oriValue", "cms.oriValue", + FT_NONE, BASE_NONE, NULL, 0, + "cms.T_oriValue", HFILL }}, { &hf_cms_digest, { "digest", "cms.digest", FT_BYTES, BASE_NONE, NULL, 0, @@ -1878,16 +2091,16 @@ void proto_register_cms(void) { { "macAlgorithm", "cms.macAlgorithm", FT_NONE, BASE_NONE, NULL, 0, "cms.MessageAuthenticationCodeAlgorithm", HFILL }}, - { &hf_cms_authenticatedAttributes, - { "authenticatedAttributes", "cms.authenticatedAttributes", + { &hf_cms_authAttrs, + { "authAttrs", "cms.authAttrs", FT_UINT32, BASE_DEC, NULL, 0, "cms.AuthAttributes", HFILL }}, { &hf_cms_mac, { "mac", "cms.mac", FT_BYTES, BASE_NONE, NULL, 0, "cms.MessageAuthenticationCode", HFILL }}, - { &hf_cms_unauthenticatedAttributes, - { "unauthenticatedAttributes", "cms.unauthenticatedAttributes", + { &hf_cms_unauthAttrs, + { "unauthAttrs", "cms.unauthAttrs", FT_UINT32, BASE_DEC, NULL, 0, "cms.UnauthAttributes", HFILL }}, { &hf_cms_AuthAttributes_item, @@ -1910,10 +2123,14 @@ void proto_register_cms(void) { { "extendedCertificate", "cms.extendedCertificate", FT_NONE, BASE_NONE, NULL, 0, "cms.ExtendedCertificate", HFILL }}, - { &hf_cms_attrCert, - { "attrCert", "cms.attrCert", + { &hf_cms_v1AttrCert, + { "v1AttrCert", "cms.v1AttrCert", FT_NONE, BASE_NONE, NULL, 0, - "x509af.AttributeCertificate", HFILL }}, + "cms.AttributeCertificateV1", HFILL }}, + { &hf_cms_v2AttrCert, + { "v2AttrCert", "cms.v2AttrCert", + FT_NONE, BASE_NONE, NULL, 0, + "cms.AttributeCertificateV2", HFILL }}, { &hf_cms_CertificateSet_item, { "CertificateChoices", "cms.CertificateChoices", FT_UINT32, BASE_DEC, VALS(cms_CertificateChoices_vals), 0, @@ -1990,9 +2207,65 @@ void proto_register_cms(void) { { "rc2CBCParameter", "cms.rc2CBCParameter", FT_NONE, BASE_NONE, NULL, 0, "cms.RC2CBCParameter", HFILL }}, + { &hf_cms_acInfo, + { "acInfo", "cms.acInfo", + FT_NONE, BASE_NONE, NULL, 0, + "cms.AttributeCertificateInfoV1", HFILL }}, + { &hf_cms_signatureAlgorithm_v1, + { "signatureAlgorithm", "cms.signatureAlgorithm", + FT_NONE, BASE_NONE, NULL, 0, + "x509af.AlgorithmIdentifier", HFILL }}, + { &hf_cms_signatureValue_v1, + { "signature", "cms.signature", + FT_BYTES, BASE_NONE, NULL, 0, + "cms.BIT_STRING", HFILL }}, + { &hf_cms_version_v1, + { "version", "cms.version", + FT_INT32, BASE_DEC, VALS(cms_AttCertVersionV1_vals), 0, + "cms.AttCertVersionV1", HFILL }}, + { &hf_cms_subject, + { "subject", "cms.subject", + FT_UINT32, BASE_DEC, VALS(cms_T_subject_vals), 0, + "cms.T_subject", HFILL }}, + { &hf_cms_baseCertificateID, + { "baseCertificateID", "cms.baseCertificateID", + FT_NONE, BASE_NONE, NULL, 0, + "x509af.IssuerSerial", HFILL }}, + { &hf_cms_subjectName, + { "subjectName", "cms.subjectName", + FT_UINT32, BASE_DEC, NULL, 0, + "x509ce.GeneralNames", HFILL }}, + { &hf_cms_issuer_v1, + { "issuer", "cms.issuer", + FT_UINT32, BASE_DEC, NULL, 0, + "x509ce.GeneralNames", HFILL }}, + { &hf_cms_signature_v1, + { "signature", "cms.signature", + FT_NONE, BASE_NONE, NULL, 0, + "x509af.AlgorithmIdentifier", HFILL }}, + { &hf_cms_attCertValidityPeriod, + { "attCertValidityPeriod", "cms.attCertValidityPeriod", + FT_NONE, BASE_NONE, NULL, 0, + "x509af.AttCertValidityPeriod", HFILL }}, + { &hf_cms_attributes_v1, + { "attributes", "cms.attributes", + FT_UINT32, BASE_DEC, NULL, 0, + "cms.SEQUENCE_OF_Attribute", HFILL }}, + { &hf_cms_attributes_v1_item, + { "Attribute", "cms.Attribute", + FT_NONE, BASE_NONE, NULL, 0, + "cms.Attribute", HFILL }}, + { &hf_cms_issuerUniqueID, + { "issuerUniqueID", "cms.issuerUniqueID", + FT_BYTES, BASE_NONE, NULL, 0, + "x509sat.UniqueIdentifier", HFILL }}, + { &hf_cms_extensions, + { "extensions", "cms.extensions", + FT_UINT32, BASE_DEC, NULL, 0, + "x509af.Extensions", HFILL }}, /*--- End of included file: packet-cms-hfarr.c ---*/ -#line 147 "packet-cms-template.c" +#line 149 "packet-cms-template.c" }; /* List of subtrees */ @@ -2028,6 +2301,8 @@ void proto_register_cms(void) { &ett_cms_RecipientKeyIdentifier, &ett_cms_KEKRecipientInfo, &ett_cms_KEKIdentifier, + &ett_cms_PasswordRecipientInfo, + &ett_cms_OtherRecipientInfo, &ett_cms_DigestedData, &ett_cms_EncryptedData, &ett_cms_AuthenticatedData, @@ -2046,9 +2321,13 @@ void proto_register_cms(void) { &ett_cms_SMIMECapability, &ett_cms_SMIMEEncryptionKeyPreference, &ett_cms_RC2CBCParameters, + &ett_cms_AttributeCertificateV1, + &ett_cms_AttributeCertificateInfoV1, + &ett_cms_T_subject, + &ett_cms_SEQUENCE_OF_Attribute, /*--- End of included file: packet-cms-ettarr.c ---*/ -#line 152 "packet-cms-template.c" +#line 154 "packet-cms-template.c" }; /* Register protocol */ @@ -2092,7 +2371,7 @@ void proto_reg_handoff_cms(void) { /*--- End of included file: packet-cms-dis-tab.c ---*/ -#line 173 "packet-cms-template.c" +#line 175 "packet-cms-template.c" oid_add_from_string("id-data","1.2.840.113549.1.7.1"); oid_add_from_string("id-alg-des-ede3-cbc","1.2.840.113549.3.7"); diff --git a/epan/dissectors/packet-cms.h b/epan/dissectors/packet-cms.h index 24e016f6a5..731a4a597a 100644 --- a/epan/dissectors/packet-cms.h +++ b/epan/dissectors/packet-cms.h @@ -1,7 +1,7 @@ /* Do not modify this file. */ /* It is created automatically by the ASN.1 to Wireshark dissector compiler */ /* packet-cms.h */ -/* ../../tools/asn2wrs.py -b -e -p cms -c ./cms.cnf -s ./packet-cms-template -D . CryptographicMessageSyntax.asn */ +/* ../../tools/asn2wrs.py -b -e -C -p cms -c ./cms.cnf -s ./packet-cms-template -D . CryptographicMessageSyntax.asn AttributeCertificateVersion1.asn */ /* Input file: packet-cms-template.h */