summaryrefslogtreecommitdiffstats
path: root/epan/dissectors/asn1/h235
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-10 20:34:10 +0000
commite4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc (patch)
tree68cb5ef9081156392f1dd62a00c6ccc1451b93df /epan/dissectors/asn1/h235
parentInitial commit. (diff)
downloadwireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.tar.xz
wireshark-e4ba6dbc3f1e76890b22773807ea37fe8fa2b1bc.zip
Adding upstream version 4.2.2.upstream/4.2.2
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'epan/dissectors/asn1/h235')
-rw-r--r--epan/dissectors/asn1/h235/CMakeLists.txt44
-rw-r--r--epan/dissectors/asn1/h235/H235-SECURITY-MESSAGES.asn354
-rw-r--r--epan/dissectors/asn1/h235/H235-SRTP.asn58
-rw-r--r--epan/dissectors/asn1/h235/h235.cnf85
-rw-r--r--epan/dissectors/asn1/h235/packet-h235-template.c132
-rw-r--r--epan/dissectors/asn1/h235/packet-h235-template.h18
6 files changed, 691 insertions, 0 deletions
diff --git a/epan/dissectors/asn1/h235/CMakeLists.txt b/epan/dissectors/asn1/h235/CMakeLists.txt
new file mode 100644
index 00000000..ec467698
--- /dev/null
+++ b/epan/dissectors/asn1/h235/CMakeLists.txt
@@ -0,0 +1,44 @@
+# CMakeLists.txt
+#
+# Wireshark - Network traffic analyzer
+# By Gerald Combs <gerald@wireshark.org>
+# Copyright 1998 Gerald Combs
+#
+# SPDX-License-Identifier: GPL-2.0-or-later
+#
+
+set( PROTOCOL_NAME h235 )
+
+set( PROTO_OPT )
+
+set( EXPORT_FILES
+ ${PROTOCOL_NAME}-exp.cnf
+)
+
+set( EXT_ASN_FILE_LIST
+)
+
+set( ASN_FILE_LIST
+ H235-SECURITY-MESSAGES.asn
+ H235-SRTP.asn
+)
+
+set( EXTRA_DIST
+ ${ASN_FILE_LIST}
+ packet-${PROTOCOL_NAME}-template.c
+ packet-${PROTOCOL_NAME}-template.h
+ ${PROTOCOL_NAME}.cnf
+)
+
+set( SRC_FILES
+ ${EXTRA_DIST}
+ ${EXT_ASN_FILE_LIST}
+)
+
+set( A2W_FLAGS )
+
+set( EXTRA_CNF
+ "${CMAKE_CURRENT_BINARY_DIR}/../h225/h225-exp.cnf"
+)
+
+ASN2WRS()
diff --git a/epan/dissectors/asn1/h235/H235-SECURITY-MESSAGES.asn b/epan/dissectors/asn1/h235/H235-SECURITY-MESSAGES.asn
new file mode 100644
index 00000000..bd88c6d0
--- /dev/null
+++ b/epan/dissectors/asn1/h235/H235-SECURITY-MESSAGES.asn
@@ -0,0 +1,354 @@
+-- H235-SECURITY-MESSAGES.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h235.0/2005/H235-SECURITY-MESSAGES.asn
+--
+
+-- Module H235-SECURITY-MESSAGES (H.235.0:09/2005)
+H235-SECURITY-MESSAGES DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+-- EXPORTS All
+ChallengeString ::= OCTET STRING(SIZE (8..128))
+
+TimeStamp ::= INTEGER(1..4294967295) -- seconds since 00:00
+
+
+-- 1/1/1970 UTC
+RandomVal ::= INTEGER -- 32-bit Integer
+
+Password ::= BMPString(SIZE (1..128))
+
+Identifier ::= BMPString(SIZE (1..128))
+
+KeyMaterial ::= BIT STRING(SIZE (1..2048))
+
+NonStandardParameter ::= SEQUENCE {
+ nonStandardIdentifier OBJECT IDENTIFIER,
+ data OCTET STRING
+}
+
+-- if local octet representations of these bit strings are used they shall
+-- utilize standard Network Octet ordering (e.g., Big Endian)
+DHset ::= SEQUENCE {
+ halfkey BIT STRING(SIZE (0..2048)), -- = g^x mod n
+ modSize BIT STRING(SIZE (0..2048)), -- n
+ generator BIT STRING(SIZE (0..2048)), -- g
+ ...
+}
+
+ECpoint ::=
+ SEQUENCE -- uncompressed (x, y) affine coordinate representation of
+
+ -- an elliptic curve point
+ {
+ x BIT STRING(SIZE (0..511)) OPTIONAL,
+ y BIT STRING(SIZE (0..511)) OPTIONAL,
+ ...
+}
+
+ECKASDH ::=
+ CHOICE -- parameters for elliptic curve key agreement scheme Diffie-Hellman
+ {
+ eckasdhp
+ SEQUENCE-- parameters for elliptic curves of prime field-- {public-key
+ ECpoint, -- This field contains representation of --
+ -- the ECKAS-DHp public key value. This field contains the
+ -- initiator's ECKAS-DHp public key value (aP) when this
+ -- information element is sent from originator to receiver. This
+ -- field contains the responder's ECKAS-DHp public key value (bP)
+ -- when this information element is sent back from receiver to
+ -- originator.
+ modulus
+ BIT STRING
+ (SIZE (0..
+ 511)), -- This field contains --
+ -- representation of the ECKAS-DHp public modulus value (p).
+ base
+ ECpoint, -- This field contains representation of the --
+ -- ECKAS-DHp public base (P).
+ weierstrassA
+ BIT STRING
+ (SIZE (0..
+ 511)), -- This field contains --
+ -- representation of the ECKAS-DHp Weierstrass coefficient (a).
+ weierstrassB
+ BIT STRING
+ (SIZE (0..
+ 511))-- This field contains --
+ -- representation of the ECKAS-DHp Weierstrass coefficient (b).
+ },
+ eckasdh2
+ SEQUENCE-- parameters for elliptic curves of characteristic 2 -- {public-key
+
+ ECpoint, -- This field contains representation of --
+ -- the ECKAS-DH2 public key value.
+ -- This field contains the initiator's ECKAS-DH2 public key value
+ -- (aP) when this information element is sent from originator to
+ -- receiver. This field contains the responder's ECKAS-DH2 public
+ -- key value (bP) when this information element is sent back from
+ -- receiver to originator.
+ fieldSize
+
+ BIT STRING
+ (SIZE (0..
+ 511)), -- This field contains --
+ -- representation of the ECKAS-DH2 field size value (m).
+ base
+
+ ECpoint, -- This field contains representation of the --
+ -- ECKAS-DH2 public base (P).
+ weierstrassA
+
+ BIT STRING
+ (SIZE (0..
+ 511)), -- This field contains --
+ -- representation of the ECKAS-DH2 Weierstrass coefficient (a).
+ weierstrassB
+
+ BIT STRING
+ (SIZE (0..
+ 511))-- This field contains --
+ -- representation of the ECKAS-DH2 Weierstrass coefficient (b).
+ },
+ ...
+}
+
+ECGDSASignature ::=
+ SEQUENCE -- parameters for elliptic curve digital signature
+
+ -- algorithm
+ {
+ r BIT STRING(SIZE (0..511)), -- This field contains the
+
+ -- representation of the r component of the ECGDSA digital
+ -- signature.
+ s BIT STRING(SIZE (0..511))-- This field contains the --
+ -- representation of the s component of the ECGDSA digital
+ -- signature.
+}
+
+TypedCertificate ::= SEQUENCE {
+ type OBJECT IDENTIFIER,
+ certificate OCTET STRING,
+ ...
+}
+
+AuthenticationBES ::= CHOICE {
+ default NULL, -- encrypted ClearToken
+ radius NULL, -- RADIUS-challenge/response
+ ...
+}
+
+AuthenticationMechanism ::= CHOICE {
+ dhExch NULL, -- Diffie-Hellman
+ pwdSymEnc NULL, -- password with symmetric encryption
+ pwdHash NULL, -- password with hashing
+ certSign NULL, -- Certificate with signature
+ ipsec NULL, -- IPSEC based connection
+ tls NULL,
+ nonStandard NonStandardParameter, -- something else.
+ ...,
+ authenticationBES AuthenticationBES, -- user authentication for BES
+ keyExch OBJECT IDENTIFIER -- key exchange profile
+}
+
+ClearToken ::= SEQUENCE -- a "token" may contain multiple value types.
+ {
+ tokenOID OBJECT IDENTIFIER,
+ timeStamp TimeStamp OPTIONAL,
+ password Password OPTIONAL,
+ dhkey DHset OPTIONAL,
+ challenge ChallengeString OPTIONAL,
+ random RandomVal OPTIONAL,
+ certificate TypedCertificate OPTIONAL,
+ generalID Identifier OPTIONAL,
+ nonStandard NonStandardParameter OPTIONAL,
+ ...,
+ eckasdhkey ECKASDH OPTIONAL, -- elliptic curve Key Agreement
+
+ -- Scheme-Diffie Hellman Analogue
+ -- (ECKAS-DH)
+ sendersID Identifier OPTIONAL,
+ h235Key H235Key OPTIONAL, -- central distributed key in V3
+ profileInfo SEQUENCE OF ProfileElement OPTIONAL -- profile-specific
+}
+
+-- An object identifier should be placed in the tokenOID field when a
+-- ClearToken is included directly in a message (as opposed to being
+-- encrypted). In all other cases, an application should use the
+-- object identifier { 0 0 } to indicate that the tokenOID value is not
+-- present.
+-- Start all the cryptographic parameterized types here...
+--
+ProfileElement ::= SEQUENCE {
+ elementID INTEGER(0..255), -- element identifier, as defined by
+
+ -- profile
+ paramS Params OPTIONAL, -- any element-specific parameters
+ element Element OPTIONAL, -- value in required form
+ ...
+}
+
+Element ::= CHOICE {
+ octets OCTET STRING,
+ integer INTEGER,
+ bits BIT STRING,
+ name BMPString,
+ flag BOOLEAN,
+ ...
+}
+
+SIGNED{ToBeSigned} ::= SEQUENCE {
+ toBeSigned ToBeSigned,
+ algorithmOID OBJECT IDENTIFIER,
+ paramS Params, -- any "runtime" parameters
+ signature BIT STRING -- could be an RSA or an ASN.1 coded ECGDSA Signature
+}(CONSTRAINED BY { -- Verify or Sign Certificate --})
+
+ENCRYPTED{ToBeEncrypted} ::= SEQUENCE {
+ algorithmOID OBJECT IDENTIFIER,
+ paramS Params, -- any "runtime" parameters
+ encryptedData OCTET STRING
+}(CONSTRAINED BY { -- Encrypt or Decrypt --ToBeEncrypted})
+
+HASHED{ToBeHashed} ::= SEQUENCE {
+ algorithmOID OBJECT IDENTIFIER,
+ paramS Params, -- any "runtime" parameters
+ hash BIT STRING
+}(CONSTRAINED BY { -- Hash --ToBeHashed})
+
+IV8 ::= OCTET STRING(SIZE (8)) -- initial value for 64-bit block ciphers
+
+
+IV16 ::= OCTET STRING(SIZE (16)) -- initial value for 128-bit block ciphers
+
+
+-- signing algorithm used must select one of these types of parameters
+-- needed by receiving end of signature.
+Params ::= SEQUENCE {
+ ranInt INTEGER OPTIONAL, -- some integer value
+ iv8 IV8 OPTIONAL, -- 8-octet initialization vector
+ ...,
+ iv16 IV16 OPTIONAL, -- 16-octet initialization vector
+ iv OCTET STRING OPTIONAL, -- arbitrary length initialization vector
+ clearSalt OCTET STRING OPTIONAL -- unencrypted salting key for encryption
+}
+
+EncodedGeneralToken ::=
+ TYPE-IDENTIFIER.&Type(ClearToken -- general usage token --)
+
+PwdCertToken ::=
+ ClearToken(WITH COMPONENTS {
+ ...,
+ timeStamp PRESENT,
+ generalID PRESENT
+ })
+
+EncodedPwdCertToken ::= TYPE-IDENTIFIER.&Type(PwdCertToken)
+
+CryptoToken ::= CHOICE {
+ cryptoEncryptedToken
+ SEQUENCE-- General purpose/application specific token-- {tokenOID
+ OBJECT
+ IDENTIFIER,
+ token
+ ENCRYPTED
+ {EncodedGeneralToken}
+ },
+ cryptoSignedToken
+ SEQUENCE-- General purpose/application specific token-- {tokenOID
+ OBJECT
+ IDENTIFIER,
+ token
+ SIGNED
+ {EncodedGeneralToken}
+ },
+ cryptoHashedToken
+ SEQUENCE-- General purpose/application specific token-- {tokenOID
+ OBJECT
+ IDENTIFIER,
+ hashedVals
+ ClearToken,
+ token
+ HASHED
+ {EncodedGeneralToken}
+ },
+ cryptoPwdEncr ENCRYPTED{EncodedPwdCertToken},
+ ...
+}
+
+-- These allow the passing of session keys within the H.245 OLC structure.
+-- They are encoded as standalone ASN.1 and based as an OCTET STRING within
+-- H.245
+H235Key ::=
+ CHOICE -- This is used with the H.245 or ClearToken "h235Key" field
+ {
+ secureChannel KeyMaterial,
+ sharedSecret ENCRYPTED{EncodedKeySyncMaterial},
+ certProtectedKey SIGNED{EncodedKeySignedMaterial},
+ ...,
+ secureSharedSecret V3KeySyncMaterial -- for H.235 V3 endpoints
+}
+
+KeySignedMaterial ::= SEQUENCE {
+ generalId Identifier, -- slave's alias
+ mrandom RandomVal, -- master's random value
+ srandom RandomVal OPTIONAL, -- slave's random value
+ timeStamp TimeStamp OPTIONAL, -- master's timestamp for unsolicited EU
+ encrptval ENCRYPTED{EncodedKeySyncMaterial}
+}
+
+EncodedKeySignedMaterial ::= TYPE-IDENTIFIER.&Type(KeySignedMaterial)
+
+H235CertificateSignature ::= SEQUENCE {
+ certificate TypedCertificate,
+ responseRandom RandomVal,
+ requesterRandom RandomVal OPTIONAL,
+ signature SIGNED{EncodedReturnSig},
+ ...
+}
+
+ReturnSig ::= SEQUENCE {
+ generalId Identifier, -- slave's alias
+ responseRandom RandomVal,
+ requestRandom RandomVal OPTIONAL,
+ certificate TypedCertificate OPTIONAL -- requested certificate
+}
+
+EncodedReturnSig ::= TYPE-IDENTIFIER.&Type(ReturnSig)
+
+KeySyncMaterial ::= SEQUENCE {
+ generalID Identifier,
+ keyMaterial KeyMaterial,
+ ...
+}
+
+EncodedKeySyncMaterial ::= TYPE-IDENTIFIER.&Type(KeySyncMaterial)
+
+V3KeySyncMaterial ::= SEQUENCE {
+ generalID Identifier OPTIONAL, -- peer terminal ID
+ algorithmOID OBJECT IDENTIFIER OPTIONAL, -- encryption algorithm
+ paramS Params, -- IV
+ encryptedSessionKey OCTET STRING OPTIONAL, -- encrypted session key
+ encryptedSaltingKey OCTET STRING OPTIONAL, -- encrypted media salting
+
+ -- key
+ clearSaltingKey OCTET STRING OPTIONAL, -- unencrypted media salting
+
+ -- key
+ paramSsalt Params OPTIONAL, -- IV (and clear salt) for salting
+
+ -- key encryption
+ keyDerivationOID OBJECT IDENTIFIER OPTIONAL, -- key derivation
+
+ -- method
+ ...,
+ genericKeyMaterial OCTET STRING OPTIONAL -- ASN.1-encoded key material--
+ -- form is dependent on associated media encryption tag
+}
+
+END -- End of H235-SECURITY-MESSAGES DEFINITIONS
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/h235/H235-SRTP.asn b/epan/dissectors/asn1/h235/H235-SRTP.asn
new file mode 100644
index 00000000..1783cd6e
--- /dev/null
+++ b/epan/dissectors/asn1/h235/H235-SRTP.asn
@@ -0,0 +1,58 @@
+-- H235-SRTP.asn
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h235.8/2005/H235-SRTP.asn
+--
+
+-- Module H235-SRTP (H.235.8:09/2005)
+H235-SRTP DEFINITIONS AUTOMATIC TAGS ::=
+BEGIN
+
+IMPORTS GenericData
+ FROM H323-MESSAGES;
+
+SrtpCryptoCapability ::=
+ SEQUENCE OF SrtpCryptoInfo -- used in H.245 genericH235SecurityCapability
+
+SrtpCryptoInfo ::= SEQUENCE {
+ cryptoSuite OBJECT IDENTIFIER OPTIONAL,
+ sessionParams SrtpSessionParameters OPTIONAL,
+ allowMKI BOOLEAN OPTIONAL,
+ ...
+}
+
+SrtpKeys ::= SEQUENCE OF SrtpKeyParameters -- used in H.235 V3KeySyncMaterial
+
+SrtpKeyParameters ::= SEQUENCE {
+ masterKey OCTET STRING,
+ masterSalt OCTET STRING,
+ lifetime CHOICE {powerOfTwo INTEGER,
+ specific INTEGER,
+ ...} OPTIONAL,
+ mki SEQUENCE {length INTEGER(1..128),
+ value OCTET STRING,
+ ...} OPTIONAL,
+ ...
+}
+
+SrtpSessionParameters ::= SEQUENCE {
+ kdr INTEGER(0..24) OPTIONAL, -- power of 2
+ unencryptedSrtp BOOLEAN OPTIONAL,
+ unencryptedSrtcp BOOLEAN OPTIONAL,
+ unauthenticatedSrtp BOOLEAN OPTIONAL,
+ fecOrder FecOrder OPTIONAL,
+ windowSizeHint INTEGER(64..65535) OPTIONAL,
+ newParameter SEQUENCE OF GenericData OPTIONAL,
+ ...
+}
+
+FecOrder ::= SEQUENCE {
+ fecBeforeSrtp NULL OPTIONAL,
+ fecAfterSrtp NULL OPTIONAL,
+ ...
+}
+
+END
+
+-- Generated by Asnp, the ASN.1 pretty-printer of France Telecom R&D
+
diff --git a/epan/dissectors/asn1/h235/h235.cnf b/epan/dissectors/asn1/h235/h235.cnf
new file mode 100644
index 00000000..2de817e2
--- /dev/null
+++ b/epan/dissectors/asn1/h235/h235.cnf
@@ -0,0 +1,85 @@
+# h235.cnf
+# H.235.x conformation file
+# 2004 Tomas Kukosa
+
+#.IMPORT ../h225/h225-exp.cnf
+
+#.EXPORTS
+
+SIGNED
+ENCRYPTED
+HASHED
+TimeStamp
+ClearToken
+CryptoToken
+AuthenticationMechanism
+
+SrtpKeys
+#.END
+
+#.PDU
+SrtpCryptoCapability
+#.END
+
+#.OMIT_ASSIGNMENT
+ECGDSASignature
+H235CertificateSignature
+
+EncodedGeneralToken
+EncodedPwdCertToken
+PwdCertToken
+EncodedKeySignedMaterial
+KeySignedMaterial
+EncodedReturnSig
+ReturnSig
+EncodedKeySyncMaterial
+KeySyncMaterial
+#.END
+
+#.FIELD_RENAME
+
+TypedCertificate/certificate certificatedata
+SIGNED/signature signaturedata
+CryptoToken/cryptoHashedToken/token hashedToken
+CryptoToken/cryptoSignedToken/token signedToken
+CryptoToken/cryptoEncryptedToken/token encryptedToken
+
+#.END
+
+#.TYPE_ATTR
+TimeStamp TYPE = FT_ABSOLUTE_TIME DISPLAY = ABSOLUTE_TIME_LOCAL
+#.END
+
+#.FIELD_ATTR
+NonStandardParameter/data TYPE = FT_UINT32 DISPLAY = BASE_DEC
+#.END
+
+#.FN_HDR SIGNED
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA);
+ proto_item_set_hidden(hidden_item);
+#.END
+#.FN_HDR ENCRYPTED
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA);
+ proto_item_set_hidden(hidden_item);
+#.END
+#.FN_HDR HASHED
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA);
+ proto_item_set_hidden(hidden_item);
+#.END
+
+#.FN_HDR ClearToken
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA);
+ proto_item_set_hidden(hidden_item);
+#.END
+
+#.FN_HDR CryptoToken
+ proto_item *hidden_item;
+ hidden_item = proto_tree_add_item(tree, proto_h235, tvb, offset>>3, 0, ENC_NA);
+ proto_item_set_hidden(hidden_item);
+#.END
+
+
diff --git a/epan/dissectors/asn1/h235/packet-h235-template.c b/epan/dissectors/asn1/h235/packet-h235-template.c
new file mode 100644
index 00000000..4441bbb8
--- /dev/null
+++ b/epan/dissectors/asn1/h235/packet-h235-template.c
@@ -0,0 +1,132 @@
+/* packet-h235.c
+ * Routines for H.235 packet dissection
+ * 2004 Tomas Kukosa
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "config.h"
+
+#include <epan/packet.h>
+#include <epan/oids.h>
+#include <epan/asn1.h>
+
+#include "packet-per.h"
+#include "packet-h235.h"
+#include "packet-h225.h"
+
+#define PNAME "H235-SECURITY-MESSAGES"
+#define PSNAME "H.235"
+#define PFNAME "h235"
+
+#define OID_MIKEY "0.0.8.235.0.3.76"
+#define OID_MIKEY_PS "0.0.8.235.0.3.72"
+#define OID_MIKEY_DHHMAC "0.0.8.235.0.3.73"
+#define OID_MIKEY_PK_SIGN "0.0.8.235.0.3.74"
+#define OID_MIKEY_DH_SIGN "0.0.8.235.0.3.75"
+#define OID_TG "0.0.8.235.0.3.70"
+#define OID_SG "0.0.8.235.0.3.71"
+
+void proto_register_h235(void);
+void proto_reg_handoff_h235(void);
+
+/* Initialize the protocol and registered fields */
+static int proto_h235 = -1;
+#include "packet-h235-hf.c"
+
+/* Initialize the subtree pointers */
+#include "packet-h235-ett.c"
+
+
+static int
+dissect_xxx_ToBeSigned(tvbuff_t *tvb, int offset, asn1_ctx_t *actx, proto_tree *tree, int hf_index _U_) {
+ dissect_per_not_decoded_yet(tree, actx->pinfo, tvb, "ToBeSigned");
+ return offset;
+}
+
+#include "packet-h235-fn.c"
+
+
+/*--- proto_register_h235 ----------------------------------------------*/
+void proto_register_h235(void) {
+
+ /* List of fields */
+ static hf_register_info hf[] = {
+#include "packet-h235-hfarr.c"
+ };
+
+ /* List of subtrees */
+ static gint *ett[] = {
+#include "packet-h235-ettarr.c"
+ };
+
+ /* Register protocol */
+ proto_h235 = proto_register_protocol(PNAME, PSNAME, PFNAME);
+
+ /* Register fields and subtrees */
+ proto_register_field_array(proto_h235, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ /* OID names */
+ /* H.235.1, Chapter 15, Table 3 */
+ /* A */
+ oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.1.1");
+ oid_add_from_string("all fields in RAS/CS","0.0.8.235.0.2.1");
+ /* T */
+ oid_add_from_string("ClearToken","0.0.8.235.0.1.5");
+ oid_add_from_string("ClearToken","0.0.8.235.0.2.5");
+ /* U */
+ oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.1.6");
+ oid_add_from_string("HMAC-SHA1-96","0.0.8.235.0.2.6");
+ /* H.235.7, Chapter 5, Table 1 */
+ oid_add_from_string("MIKEY", OID_MIKEY);
+ oid_add_from_string("MIKEY-PS", OID_MIKEY_PS);
+ oid_add_from_string("MIKEY-DHHMAC", OID_MIKEY_DHHMAC);
+ oid_add_from_string("MIKEY-PK-SIGN", OID_MIKEY_PK_SIGN);
+ oid_add_from_string("MIKEY-DH-SIGN", OID_MIKEY_DH_SIGN);
+ /* H.235.7, Chapter 8.5 */
+ oid_add_from_string("TG",OID_TG);
+ /* H.235.7, Chapter 9.5 */
+ oid_add_from_string("SG",OID_SG);
+ /* H.235.8, Chapter 4.2, Table 2 */
+ oid_add_from_string("AES_CM_128_HMAC_SHA1_80","0.0.8.235.0.4.91");
+ oid_add_from_string("AES_CM_128_HMAC_SHA1_32","0.0.8.235.0.4.92");
+ oid_add_from_string("F8_128_HMAC_SHA1_80","0.0.8.235.0.4.93");
+}
+
+
+/*--- proto_reg_handoff_h235 -------------------------------------------*/
+void proto_reg_handoff_h235(void) {
+ dissector_handle_t mikey_handle;
+
+ mikey_handle = find_dissector("mikey");
+
+ /* H.235.7, Chapter 7.1, MIKEY operation at "session level" */
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/0", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/0", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/0", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/0", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/0", mikey_handle);
+ dissector_add_string("h245.gef.content", "EncryptionSync/0", mikey_handle);
+ /* H.235.7, Chapter 7.2, MIKEY operation at "media level" */
+ dissector_add_string("h245.gef.content", "EncryptionSync/76", mikey_handle);
+ dissector_add_string("h245.gef.content", "EncryptionSync/72", mikey_handle);
+ dissector_add_string("h245.gef.content", "EncryptionSync/73", mikey_handle);
+ dissector_add_string("h245.gef.content", "EncryptionSync/74", mikey_handle);
+ dissector_add_string("h245.gef.content", "EncryptionSync/75", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY "/nonCollapsing/76", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PS "/nonCollapsing/72", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DHHMAC "/nonCollapsing/73", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_PK_SIGN "/nonCollapsing/74", mikey_handle);
+ dissector_add_string("h245.gef.content", "GenericCapability/" OID_MIKEY_DH_SIGN "/nonCollapsing/75", mikey_handle);
+
+ /* H.235.8, Chapter 4.1.2, SrtpCryptoCapability transport */
+ dissector_add_string("h245.gef.content", "GenericCapability/0.0.8.235.0.4.90/nonCollapsingRaw",
+ create_dissector_handle(dissect_SrtpCryptoCapability_PDU, proto_h235));
+
+}
+
diff --git a/epan/dissectors/asn1/h235/packet-h235-template.h b/epan/dissectors/asn1/h235/packet-h235-template.h
new file mode 100644
index 00000000..60b889e1
--- /dev/null
+++ b/epan/dissectors/asn1/h235/packet-h235-template.h
@@ -0,0 +1,18 @@
+/* packet-h235.h
+ * Routines for H.235 packet dissection
+ * 2004 Tomas Kukosa
+ *
+ * Wireshark - Network traffic analyzer
+ * By Gerald Combs <gerald@wireshark.org>
+ * Copyright 1998 Gerald Combs
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#ifndef PACKET_H235_H
+#define PACKET_H235_H
+
+#include "packet-h235-exp.h"
+
+#endif /* PACKET_H235_H */
+