aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorРоман Донченко <dpb@corrigendum.ru>2016-12-14 23:55:31 +0300
committerAnders Broman <a.broman58@gmail.com>2016-12-15 07:27:43 +0000
commit85266a0f720bae8b527dc6f130e0697d61622d52 (patch)
tree0a07e3eea3f865d913e8e50b30e84967423e88b7
parent104b1029486e3a656c9abefa733bc038563afa43 (diff)
pkixtsp: add support for dissecting CMS signature time-stamps
As per RFC 3161 Appendix A. The ASN.1 elements it defines are not officially part of any module, so just stick them into PKIXTSP. Change-Id: I728505cb305b924465b62eb442288edea7f916a7 Reviewed-on: https://code.wireshark.org/review/19272 Reviewed-by: Michael Mann <mmann78@netscape.net> Petri-Dish: Michael Mann <mmann78@netscape.net> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Anders Broman <a.broman58@gmail.com>
-rw-r--r--epan/dissectors/asn1/pkixtsp/PKIXTSP.asn7
-rw-r--r--epan/dissectors/asn1/pkixtsp/pkixtsp.cnf1
-rw-r--r--epan/dissectors/packet-pkixtsp.c22
3 files changed, 30 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/pkixtsp/PKIXTSP.asn b/epan/dissectors/asn1/pkixtsp/PKIXTSP.asn
index ce310a7a85..d4f97d69c3 100644
--- a/epan/dissectors/asn1/pkixtsp/PKIXTSP.asn
+++ b/epan/dissectors/asn1/pkixtsp/PKIXTSP.asn
@@ -174,4 +174,11 @@ Accuracy ::= SEQUENCE {
millis [0] INTEGER (1..999) OPTIONAL,
micros [1] INTEGER (1..999) OPTIONAL }
+-- from Appendix A
+
+id-aa-timeStampToken OBJECT IDENTIFIER ::= { iso(1) member-body(2)
+ us(840) rsadsi(113549) pkcs(1) pkcs-9(9) smime(16) aa(2) 14 }
+
+SignatureTimeStampToken ::= TimeStampToken
+
END
diff --git a/epan/dissectors/asn1/pkixtsp/pkixtsp.cnf b/epan/dissectors/asn1/pkixtsp/pkixtsp.cnf
index 2687427b16..70803de0f3 100644
--- a/epan/dissectors/asn1/pkixtsp/pkixtsp.cnf
+++ b/epan/dissectors/asn1/pkixtsp/pkixtsp.cnf
@@ -23,6 +23,7 @@ PKIStatusInfo/status pki_status
TSTInfo/version tst_version
#.REGISTER
+SignatureTimeStampToken B "1.2.840.113549.1.9.16.2.14" "id-aa-timeStampToken"
TSTInfo B "1.2.840.113549.1.9.16.1.4" "id-ct-TSTInfo"
#.END
diff --git a/epan/dissectors/packet-pkixtsp.c b/epan/dissectors/packet-pkixtsp.c
index 34da60095c..3ac9063cf7 100644
--- a/epan/dissectors/packet-pkixtsp.c
+++ b/epan/dissectors/packet-pkixtsp.c
@@ -53,6 +53,7 @@ static int proto_pkixtsp = -1;
/*--- Included file: packet-pkixtsp-hf.c ---*/
#line 1 "./asn1/pkixtsp/packet-pkixtsp-hf.c"
static int hf_pkixtsp_TSTInfo_PDU = -1; /* TSTInfo */
+static int hf_pkixtsp_SignatureTimeStampToken_PDU = -1; /* SignatureTimeStampToken */
static int hf_pkixtsp_version = -1; /* T_version */
static int hf_pkixtsp_messageImprint = -1; /* MessageImprint */
static int hf_pkixtsp_reqPolicy = -1; /* TSAPolicyId */
@@ -349,6 +350,15 @@ dissect_pkixtsp_TSTInfo(gboolean implicit_tag _U_, tvbuff_t *tvb _U_, int offset
return offset;
}
+
+
+static int
+dissect_pkixtsp_SignatureTimeStampToken(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_pkixtsp_TimeStampToken(implicit_tag, tvb, offset, actx, tree, hf_index);
+
+ return offset;
+}
+
/*--- PDUs ---*/
static int dissect_TSTInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
@@ -358,6 +368,13 @@ static int dissect_TSTInfo_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_
offset = dissect_pkixtsp_TSTInfo(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkixtsp_TSTInfo_PDU);
return offset;
}
+static int dissect_SignatureTimeStampToken_PDU(tvbuff_t *tvb _U_, packet_info *pinfo _U_, proto_tree *tree _U_, void *data _U_) {
+ int offset = 0;
+ asn1_ctx_t asn1_ctx;
+ asn1_ctx_init(&asn1_ctx, ASN1_ENC_BER, TRUE, pinfo);
+ offset = dissect_pkixtsp_SignatureTimeStampToken(FALSE, tvb, offset, &asn1_ctx, tree, hf_pkixtsp_SignatureTimeStampToken_PDU);
+ return offset;
+}
/*--- End of included file: packet-pkixtsp-fn.c ---*/
@@ -419,6 +436,10 @@ void proto_register_pkixtsp(void) {
{ "TSTInfo", "pkixtsp.TSTInfo_element",
FT_NONE, BASE_NONE, NULL, 0,
NULL, HFILL }},
+ { &hf_pkixtsp_SignatureTimeStampToken_PDU,
+ { "SignatureTimeStampToken", "pkixtsp.SignatureTimeStampToken_element",
+ FT_NONE, BASE_NONE, NULL, 0,
+ NULL, HFILL }},
{ &hf_pkixtsp_version,
{ "version", "pkixtsp.version",
FT_INT32, BASE_DEC, VALS(pkixtsp_T_version_vals), 0,
@@ -586,6 +607,7 @@ void proto_reg_handoff_pkixtsp(void) {
/*--- Included file: packet-pkixtsp-dis-tab.c ---*/
#line 1 "./asn1/pkixtsp/packet-pkixtsp-dis-tab.c"
+ register_ber_oid_dissector("1.2.840.113549.1.9.16.2.14", dissect_SignatureTimeStampToken_PDU, proto_pkixtsp, "id-aa-timeStampToken");
register_ber_oid_dissector("1.2.840.113549.1.9.16.1.4", dissect_TSTInfo_PDU, proto_pkixtsp, "id-ct-TSTInfo");