summaryrefslogtreecommitdiff
path: root/asn1
diff options
context:
space:
mode:
authorAnders Broman <anders.broman@ericsson.com>2012-06-25 21:16:43 +0000
committerAnders Broman <anders.broman@ericsson.com>2012-06-25 21:16:43 +0000
commitb160466dd2c446265d660a0ab7311c61ab079222 (patch)
tree3a6a574f902b65124d6ddf4434229bae1528127b /asn1
parent3814106d7e5333e887dcd9d4c8ced0c2e10cd22c (diff)
downloadwireshark-b160466dd2c446265d660a0ab7311c61ab079222.tar.gz
From Martin Kaiser:
add X.509 certificate extensions for DVB-CI/CI+ https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7397 svn path=/trunk/; revision=43485
Diffstat (limited to 'asn1')
-rw-r--r--asn1/x509ce/CertificateExtensionsCiplus.asn47
-rw-r--r--asn1/x509ce/Makefile.common3
-rw-r--r--asn1/x509ce/packet-x509ce-template.c25
-rw-r--r--asn1/x509ce/packet-x509ce-template.h3
-rw-r--r--asn1/x509ce/x509ce.cnf9
5 files changed, 86 insertions, 1 deletions
diff --git a/asn1/x509ce/CertificateExtensionsCiplus.asn b/asn1/x509ce/CertificateExtensionsCiplus.asn
new file mode 100644
index 0000000000..3bae673751
--- /dev/null
+++ b/asn1/x509ce/CertificateExtensionsCiplus.asn
@@ -0,0 +1,47 @@
+-- $Id$
+-- Module CertificateExtensionsCiplus
+-- X.509 certificate extensions defined by CI+ (www.ci-plus.com)
+CertificateExtensionsCiplus DEFINITIONS IMPLICIT TAGS ::=
+BEGIN
+
+-- EXPORTS ALL
+IMPORTS
+ id-pkix
+ FROM PKIX1Explicit93 {iso(1) identified-organization(3) dod(6) internet(1)
+ security(5) mechanisms(5) pkix(7) id-mod(0) id-pkix1-explicit-93(3)}
+ EXTENSION
+ FROM AuthenticationFramework { joint-iso-itu-t ds(5)
+ module(1) authenticationFramework(7) 3 };
+
+scramblerCapabilities EXTENSION ::= {
+ SYNTAX ScramblerCapabilities
+ IDENTIFIED BY id-pe-scramblerCapabilities
+}
+
+ScramblerCapabilities ::= SEQUENCE {
+ capability INTEGER (0..MAX),
+ version INTEGER (0..MAX)
+}
+
+
+ciplusInfo EXTENSION ::= {
+ SYNTAX CiplusInfo
+ IDENTIFIED BY id-pe-ciplusInfo
+}
+
+CiplusInfo ::= BIT STRING
+
+
+cicamBrandId EXTENSION ::= {
+ SYNTAX CicamBrandId
+ IDENTIFIED BY id-pe-cicamBrandId
+}
+
+CicamBrandId ::= INTEGER(1..65535)
+
+-- Object identifier assignments
+id-pe-scramblerCapabilities OBJECT IDENTIFIER ::= { id-pkix id-pe(1) 25 }
+id-pe-ciplusInfo OBJECT IDENTIFIER ::= { id-pkix id-pe(1) 26 }
+id-pe-cicamBrandId OBJECT IDENTIFIER ::= { id-pkix id-pe(1) 27 }
+
+END
diff --git a/asn1/x509ce/Makefile.common b/asn1/x509ce/Makefile.common
index c170347732..39f0120077 100644
--- a/asn1/x509ce/Makefile.common
+++ b/asn1/x509ce/Makefile.common
@@ -26,7 +26,8 @@ EXPORT_FILES = $(PROTOCOL_NAME)-exp.cnf
EXT_ASN_FILE_LIST =
-ASN_FILE_LIST = CertificateExtensions.asn
+ASN_FILE_LIST = CertificateExtensions.asn \
+ CertificateExtensionsCiplus.asn
# The packet-$(PROTOCOL_NAME)-template.h and $(PROTOCOL_NAME).asn
# files do not exist for all protocols: Please add/remove as required.
diff --git a/asn1/x509ce/packet-x509ce-template.c b/asn1/x509ce/packet-x509ce-template.c
index 3a6eeab9bc..7a9f501174 100644
--- a/asn1/x509ce/packet-x509ce-template.c
+++ b/asn1/x509ce/packet-x509ce-template.c
@@ -57,6 +57,31 @@ static const char *object_identifier_id;
#include "packet-x509ce-fn.c"
+/* CI+ (www.ci-plus.com) defines some X.509 certificate extensions
+ that use OIDs which are not officially assigned
+ dissection of these extensions can be enabled temporarily using the
+ functions below */
+void
+x509ce_enable_ciplus(void)
+{
+ dissector_handle_t dh25, dh26, dh27;
+
+ dh25 = create_dissector_handle(dissect_ScramblerCapabilities_PDU, proto_x509ce);
+ dissector_change_string("ber.oid", "1.3.6.1.5.5.7.1.25", dh25);
+ dh26 = create_dissector_handle(dissect_CiplusInfo_PDU, proto_x509ce);
+ dissector_change_string("ber.oid", "1.3.6.1.5.5.7.1.26", dh26);
+ dh27 = create_dissector_handle(dissect_CicamBrandId_PDU, proto_x509ce);
+ dissector_change_string("ber.oid", "1.3.6.1.5.5.7.1.27", dh27);
+}
+
+void
+x509ce_disable_ciplus(void)
+{
+ dissector_reset_string("ber.oid", "1.3.6.1.5.5.7.1.25");
+ dissector_reset_string("ber.oid", "1.3.6.1.5.5.7.1.26");
+ dissector_reset_string("ber.oid", "1.3.6.1.5.5.7.1.27");
+}
+
static void
dissect_x509ce_invalidityDate_callback(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
diff --git a/asn1/x509ce/packet-x509ce-template.h b/asn1/x509ce/packet-x509ce-template.h
index bf11cec3a2..985dcc28f0 100644
--- a/asn1/x509ce/packet-x509ce-template.h
+++ b/asn1/x509ce/packet-x509ce-template.h
@@ -28,5 +28,8 @@
#include "packet-x509ce-exp.h"
+void x509ce_enable_ciplus(void);
+void x509ce_disable_ciplus(void);
+
#endif /* PACKET_X509CE_H */
diff --git a/asn1/x509ce/x509ce.cnf b/asn1/x509ce/x509ce.cnf
index b2eda8ff63..31ee0ae38e 100644
--- a/asn1/x509ce/x509ce.cnf
+++ b/asn1/x509ce/x509ce.cnf
@@ -87,6 +87,15 @@ SkipCerts
StatusReferral
StatusReferrals
SubjectKeyIdentifier
+ScramblerCapabilities
+CiplusInfo
+CicamBrandId
+
+#.PDU
+ScramblerCapabilities
+CiplusInfo
+CicamBrandId
+
#.REGISTER
CertificatePoliciesSyntax B "2.5.29.3" "id-ce-certificatePolicies"