forked from osmocom/wireshark
186 lines
5.0 KiB
INI
186 lines
5.0 KiB
INI
# CMS.cnf
|
|
# CMS conformation file
|
|
|
|
# $Id$
|
|
|
|
#.IMPORT ../x509af/x509af-exp.cnf
|
|
#.IMPORT ../x509if/x509if-exp.cnf
|
|
|
|
#.EXPORTS
|
|
ContentInfo
|
|
ContentType
|
|
Countersignature
|
|
Digest
|
|
DigestAlgorithmIdentifier
|
|
DigestAlgorithmIdentifiers
|
|
EncapsulatedContentInfo
|
|
EnvelopedData
|
|
IssuerAndSerialNumber
|
|
SignedAttributes
|
|
SignedData
|
|
SignerIdentifier
|
|
SignerInfo
|
|
SignerInfos
|
|
SignatureValue
|
|
UnsignedAttributes
|
|
|
|
#.REGISTER
|
|
ContentInfo B "1.2.840.113549.1.9.16.1.6" "id-ct-contentInfo"
|
|
#OctetString B "1.2.840.113549.1.7.1" "id-data" see x509sat.cnf
|
|
SignedData B "1.2.840.113549.1.7.2" "id-signedData"
|
|
EnvelopedData B "1.2.840.113549.1.7.3" "id-envelopedData"
|
|
DigestedData B "1.2.840.113549.1.7.5" "id-digestedData"
|
|
EncryptedData B "1.2.840.113549.1.7.6" "id-encryptedData"
|
|
AuthenticatedData B "1.2.840.113549.1.9.16.1.2" "id-ct-authenticatedData"
|
|
|
|
ContentType B "1.2.840.113549.1.9.3" "id-contentType"
|
|
MessageDigest B "1.2.840.113549.1.9.4" "id-messageDigest"
|
|
SigningTime B "1.2.840.113549.1.9.5" "id-signingTime"
|
|
Countersignature B "1.2.840.113549.1.9.6" "id-counterSignature"
|
|
|
|
ContentInfo B "2.6.1.4.18" "id-et-pkcs7"
|
|
|
|
IssuerAndSerialNumber B "1.3.6.1.4.1.311.16.4" "ms-oe-encryption-key-preference"
|
|
SMIMECapabilities B "1.2.840.113549.1.9.15" "id-smime-capabilities"
|
|
SMIMEEncryptionKeyPreference B "1.2.840.113549.1.9.16.2.11" "id-encryption-key-preference"
|
|
|
|
# I think the following should be RC2CBCParameter - but that appears to be incorrect
|
|
RC2CBCParameters B "1.2.840.113549.3.2" "id-alg-rc2-cbc"
|
|
RC2CBCParameters B "1.2.840.113549.3.4" "id-alg-rc4"
|
|
RC2WrapParameter B "1.2.840.113549.1.9.16.3.7" "id-alg-cmsrc2-wrap"
|
|
|
|
#.NO_EMIT
|
|
|
|
#.TYPE_RENAME
|
|
|
|
#.FIELD_RENAME
|
|
SignerInfo/signature signatureValue
|
|
RecipientEncryptedKey/rid rekRid
|
|
EncryptedContentInfo/contentType encryptedContentType
|
|
|
|
#.FN_BODY ContentInfo
|
|
top_tree = tree;
|
|
%(DEFAULT_BODY)s
|
|
content_tvb = NULL;
|
|
top_tree = NULL;
|
|
|
|
#.FN_PARS ContentType
|
|
FN_VARIANT = _str VAL_PTR = &object_identifier_id
|
|
|
|
#.FN_BODY ContentType
|
|
const char *name = NULL;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if(object_identifier_id) {
|
|
name = oid_resolved_from_string(object_identifier_id);
|
|
proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id);
|
|
}
|
|
|
|
#.FN_BODY ContentInfo/content
|
|
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
|
|
|
|
|
|
#.FN_BODY EncapsulatedContentInfo/eContent
|
|
gint8 class;
|
|
gboolean pc, ind;
|
|
gint32 tag;
|
|
guint32 len;
|
|
int pdu_offset = offset;
|
|
int content_offset;
|
|
|
|
/* XXX Do we care about printing out the octet string? */
|
|
offset = dissect_cms_OCTET_STRING(FALSE, tvb, offset, actx, NULL, hf_cms_eContent);
|
|
|
|
pdu_offset = get_ber_identifier(tvb, pdu_offset, &class, &pc, &tag);
|
|
content_offset = pdu_offset = get_ber_length(tvb, pdu_offset, &len, &ind);
|
|
pdu_offset = call_ber_oid_callback(object_identifier_id, tvb, pdu_offset, actx->pinfo, top_tree ? top_tree : tree);
|
|
|
|
/* save the content for checking the message digest */
|
|
content_tvb = tvb_new_subset(tvb, content_offset, len, -1);
|
|
|
|
#.FN_PARS OtherKeyAttribute/keyAttrId
|
|
FN_VARIANT = _str HF_INDEX = hf_cms_ci_contentType VAL_PTR = &object_identifier_id
|
|
|
|
#.FN_BODY OtherKeyAttribute/keyAttr
|
|
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
|
|
|
|
|
|
#.FN_PARS Attribute/attrType
|
|
FN_VARIANT = _str HF_INDEX = hf_cms_attrType VAL_PTR = &object_identifier_id
|
|
|
|
#.FN_BODY Attribute/attrType
|
|
const char *name = NULL;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if(object_identifier_id) {
|
|
name = oid_resolved_from_string(object_identifier_id);
|
|
proto_item_append_text(tree, " (%%s)", name ? name : object_identifier_id);
|
|
}
|
|
|
|
#.FN_BODY AttributeValue
|
|
|
|
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
|
|
|
|
#.FN_BODY MessageDigest
|
|
proto_item *pi;
|
|
int old_offset = offset;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
pi = actx->created_item;
|
|
|
|
/* move past TLV */
|
|
old_offset = get_ber_identifier(tvb, old_offset, NULL, NULL, NULL);
|
|
old_offset = get_ber_length(tvb, old_offset, NULL, NULL);
|
|
|
|
if(content_tvb)
|
|
cms_verify_msg_digest(pi, content_tvb, x509af_get_last_algorithm_id(), tvb, old_offset);
|
|
|
|
#.FN_PARS SMIMECapability/capability
|
|
FN_VARIANT = _str HF_INDEX = hf_cms_attrType VAL_PTR = &object_identifier_id
|
|
|
|
#.FN_BODY SMIMECapability/capability
|
|
const char *name = NULL;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if(object_identifier_id) {
|
|
name = oid_resolved_from_string(object_identifier_id);
|
|
proto_item_append_text(tree, " %%s", name ? name : object_identifier_id);
|
|
cap_tree = tree;
|
|
}
|
|
|
|
#.FN_BODY SMIMECapability/parameters
|
|
|
|
offset=call_ber_oid_callback(object_identifier_id, tvb, offset, actx->pinfo, tree);
|
|
|
|
#.FN_PARS RC2ParameterVersion
|
|
VAL_PTR = &length
|
|
|
|
#.FN_BODY RC2ParameterVersion
|
|
guint32 length = 0;
|
|
|
|
%(DEFAULT_BODY)s
|
|
|
|
if(cap_tree != NULL)
|
|
proto_item_append_text(cap_tree, " (%%d bits)", length);
|
|
|
|
#.FN_PARS EncryptedContent VAL_PTR = &encrypted_tvb
|
|
|
|
#.FN_HDR EncryptedContent
|
|
tvbuff_t *encrypted_tvb;
|
|
proto_item *item;
|
|
#.END
|
|
|
|
#.FN_FTR EncryptedContent
|
|
|
|
item = actx->created_item;
|
|
|
|
PBE_decrypt_data(object_identifier_id, encrypted_tvb, actx, item);
|
|
|
|
#.END
|
|
|
|
|