aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--asn1/h235/H235-SECURITY-MESSAGES.asn185
-rw-r--r--asn1/h235/H235-SRTP.asn59
-rw-r--r--asn1/h235/Makefile.nmake4
-rw-r--r--asn1/h235/h235-exp.cnf12
-rw-r--r--asn1/h235/h235.cnf5
-rw-r--r--asn1/h235/packet-h235-template.c1
-rw-r--r--epan/dissectors/packet-h235.c594
-rw-r--r--epan/dissectors/packet-h235.h4
8 files changed, 774 insertions, 90 deletions
diff --git a/asn1/h235/H235-SECURITY-MESSAGES.asn b/asn1/h235/H235-SECURITY-MESSAGES.asn
index 882236722e..a6655ddae4 100644
--- a/asn1/h235/H235-SECURITY-MESSAGES.asn
+++ b/asn1/h235/H235-SECURITY-MESSAGES.asn
@@ -1,21 +1,21 @@
--
-- Taken from ITU ASN.1 database
--- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h235/2003-amd1/H235-SECURITY-MESSAGES.asn
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h235.0/2005/H235-SECURITY-MESSAGES.asn
--
-- Features unbacked with ASN.1 to Ethereal compiler was commented out
--
-
--- Module H235-SECURITY-MESSAGES (H.235:08/2003)
+-- 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
+TimeStamp ::= INTEGER(1..4294967295) -- seconds since 00:00
+-- 1/1/1970 UTC
RandomVal ::= INTEGER -- 32-bit Integer
Password ::= BMPString(SIZE (1..128))
@@ -30,7 +30,7 @@ NonStandardParameter ::= SEQUENCE {
}
-- if local octet representations of these bit strings are used they shall
--- utilize standard Network Octet ordering (e.g. Big Endian)
+-- 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
@@ -39,8 +39,10 @@ DHset ::= SEQUENCE {
}
ECpoint ::=
- SEQUENCE -- uncompressed (x, y) affine coordinate representation of an elliptic curve point
- {
+ 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,
...
@@ -51,71 +53,80 @@ ECKASDH ::=
{
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.
+ 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).
+ 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).--
+ 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).
+ 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).
+ 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.
+ 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).
+ 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).--
+ 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).
+ 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).
+ 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
+ SEQUENCE -- parameters for elliptic curve digital signature
+
+ -- algorithm
+ {
+ r BIT STRING(SIZE (0..511)), -- This field contains the
- -- ECGDSA digital signature.
- s
- BIT STRING
- (SIZE (0..511))-- This field contains the representation of the s component of the--
- -- ECGDSA digital signature.
+ -- 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 {
@@ -139,40 +150,61 @@ AuthenticationMechanism ::= CHOICE {
tls NULL,
nonStandard NonStandardParameter, -- something else.
...,
- authenticationBES AuthenticationBES -- user authentication for BES
+ 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,
+ 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
+ eckasdhkey ECKASDH OPTIONAL, -- elliptic curve Key Agreement
- -- Hellman Analogue (ECKAS-DH)
- sendersID Identifier OPTIONAL,
- h235Key H235Key OPTIONAL -- central distributed key in V3
+ -- 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...
+-- 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 ECGDSASignature
+ signature BIT STRING -- could be an RSA or an ASN.1 coded ECGDSA Signature
}(CONSTRAINED BY { -- Verify or Sign Certificate --})
ENCRYPTED{ToBeEncrypted} ::= SEQUENCE {
@@ -197,9 +229,9 @@ IV16 ::= OCTET STRING(SIZE (16)) -- initial value for 128-bit block ciphers
-- needed by receiving end of signature.
Params ::= SEQUENCE {
ranInt INTEGER OPTIONAL, -- some integer value
- iv8 IV8 OPTIONAL, -- 8 octet initialization vector
+ iv8 IV8 OPTIONAL, -- 8-octet initialization vector
...,
- iv16 IV16 OPTIONAL, -- 16 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
}
@@ -248,15 +280,16 @@ CryptoToken ::= CHOICE {
}
-- 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
+-- 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
+ 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 end points
+ secureSharedSecret V3KeySyncMaterial -- for H.235 V3 endpoints
}
KeySignedMaterial ::= SEQUENCE {
@@ -295,15 +328,25 @@ KeySyncMaterial ::= SEQUENCE {
--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
- ...
+ 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
diff --git a/asn1/h235/H235-SRTP.asn b/asn1/h235/H235-SRTP.asn
new file mode 100644
index 0000000000..151c4e8c98
--- /dev/null
+++ b/asn1/h235/H235-SRTP.asn
@@ -0,0 +1,59 @@
+--
+-- Taken from ITU ASN.1 database
+-- http://www.itu.int/ITU-T/asn1/database/itu-t/h/h235.8/2005/H235-SRTP.asn
+--
+-- Features unbacked with ASN.1 to Ethereal compiler was commented out
+--
+
+-- 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/asn1/h235/Makefile.nmake b/asn1/h235/Makefile.nmake
index 030a3cfa42..e521711e23 100644
--- a/asn1/h235/Makefile.nmake
+++ b/asn1/h235/Makefile.nmake
@@ -13,9 +13,9 @@ all: generate_dissector
generate_dissector: $(DISSECTOR_FILES)
-$(DISSECTOR_FILES): ../../tools/asn2eth.py H235-SECURITY-MESSAGES.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
+$(DISSECTOR_FILES): ../../tools/asn2eth.py H235-SECURITY-MESSAGES.asn H235-SRTP.asn packet-$(PROTOCOL_NAME)-template.c packet-$(PROTOCOL_NAME)-template.h $(PROTOCOL_NAME).cnf
!IFDEF PYTHON
- $(PYTHON) ../../tools/asn2eth.py -X -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template H235-SECURITY-MESSAGES.asn
+ $(PYTHON) ../../tools/asn2eth.py -e -p $(PROTOCOL_NAME) -c $(PROTOCOL_NAME).cnf -s packet-$(PROTOCOL_NAME)-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn
!ELSE
@echo Error: You need Python to use asn2eth.py
@exit 1
diff --git a/asn1/h235/h235-exp.cnf b/asn1/h235/h235-exp.cnf
index c5bc2a4aec..d9864d3f0a 100644
--- a/asn1/h235/h235-exp.cnf
+++ b/asn1/h235/h235-exp.cnf
@@ -1,3 +1,13 @@
+# Do not modify this file.
+# It is created automatically by the ASN.1 to Ethereal dissector compiler
+# .\h235-exp.cnf
+# ../../tools/asn2eth.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn
+
+#.MODULE
+H235-SECURITY-MESSAGES h235
+H235-SRTP h235
+#.END
+
#.TYPE_ATTR
TimeStamp TYPE = FT_ABSOLUTE_TIME DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
AuthenticationMechanism TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(h235_AuthenticationMechanism_vals) BITMASK = 0
@@ -6,5 +16,7 @@ SIGNEDxxx TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL
ENCRYPTEDxxx TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
HASHEDxxx TYPE = FT_NONE DISPLAY = BASE_NONE STRINGS = NULL BITMASK = 0
CryptoToken TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = VALS(h235_CryptoToken_vals) BITMASK = 0
+SrtpCryptoCapability TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
+SrtpKeys TYPE = FT_UINT32 DISPLAY = BASE_DEC STRINGS = NULL BITMASK = 0
#.END
diff --git a/asn1/h235/h235.cnf b/asn1/h235/h235.cnf
index 88abce10d9..3eccc7173a 100644
--- a/asn1/h235/h235.cnf
+++ b/asn1/h235/h235.cnf
@@ -4,6 +4,8 @@
# $Id$
+#.INCLUDE ../h225/h225-exp.cnf
+
#.EXPORTS
SIGNEDxxx
@@ -14,6 +16,9 @@ ClearToken
CryptoToken
AuthenticationMechanism
+SrtpCryptoCapability
+SrtpKeys
+
#.OMIT_ASSIGNMENT
ECGDSASignature
diff --git a/asn1/h235/packet-h235-template.c b/asn1/h235/packet-h235-template.c
index e57458401b..faea4c4e28 100644
--- a/asn1/h235/packet-h235-template.c
+++ b/asn1/h235/packet-h235-template.c
@@ -36,6 +36,7 @@
#include "packet-per.h"
#include "packet-h235.h"
+#include "packet-h225.h"
#define PNAME "H235-SECURITY-MESSAGES"
#define PSNAME "H.235"
diff --git a/epan/dissectors/packet-h235.c b/epan/dissectors/packet-h235.c
index 9270104658..1cc0710498 100644
--- a/epan/dissectors/packet-h235.c
+++ b/epan/dissectors/packet-h235.c
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* .\packet-h235.c */
-/* ../../tools/asn2eth.py -X -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn */
+/* ../../tools/asn2eth.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */
/* Input file: packet-h235-template.c */
@@ -44,6 +44,7 @@
#include "packet-per.h"
#include "packet-h235.h"
+#include "packet-h225.h"
#define PNAME "H235-SECURITY-MESSAGES"
#define PSNAME "H.235"
@@ -81,6 +82,7 @@ static int hf_h235_ipsec = -1; /* NULL */
static int hf_h235_tls = -1; /* NULL */
static int hf_h235_nonStandard = -1; /* NonStandardParameter */
static int hf_h235_authenticationBES = -1; /* AuthenticationBES */
+static int hf_h235_keyExch = -1; /* OBJECT_IDENTIFIER */
static int hf_h235_tokenOID = -1; /* OBJECT_IDENTIFIER */
static int hf_h235_timeStamp = -1; /* TimeStamp */
static int hf_h235_password = -1; /* Password */
@@ -92,9 +94,18 @@ static int hf_h235_generalID = -1; /* Identifier */
static int hf_h235_eckasdhkey = -1; /* ECKASDH */
static int hf_h235_sendersID = -1; /* Identifier */
static int hf_h235_h235Key = -1; /* H235Key */
+static int hf_h235_profileInfo = -1; /* SEQUENCE_OF_ProfileElement */
+static int hf_h235_profileInfo_item = -1; /* ProfileElement */
+static int hf_h235_elementID = -1; /* INTEGER_0_255 */
+static int hf_h235_paramS = -1; /* Params */
+static int hf_h235_element = -1; /* Element */
+static int hf_h235_octets = -1; /* OCTET_STRING */
+static int hf_h235_integer = -1; /* INTEGER */
+static int hf_h235_bits = -1; /* BIT_STRING */
+static int hf_h235_name = -1; /* BMPString */
+static int hf_h235_flag = -1; /* BOOLEAN */
static int hf_h235_toBeSigned = -1; /* ToBeSigned */
static int hf_h235_algorithmOID = -1; /* OBJECT_IDENTIFIER */
-static int hf_h235_paramS = -1; /* Params */
static int hf_h235_signaturedata = -1; /* BIT_STRING */
static int hf_h235_encryptedData = -1; /* OCTET_STRING */
static int hf_h235_hash = -1; /* BIT_STRING */
@@ -120,9 +131,33 @@ static int hf_h235_encryptedSaltingKey = -1; /* OCTET_STRING */
static int hf_h235_clearSaltingKey = -1; /* OCTET_STRING */
static int hf_h235_paramSsalt = -1; /* Params */
static int hf_h235_keyDerivationOID = -1; /* OBJECT_IDENTIFIER */
+static int hf_h235_genericKeyMaterial = -1; /* OCTET_STRING */
+static int hf_h235_SrtpCryptoCapability_item = -1; /* SrtpCryptoInfo */
+static int hf_h235_cryptoSuite = -1; /* OBJECT_IDENTIFIER */
+static int hf_h235_sessionParams = -1; /* SrtpSessionParameters */
+static int hf_h235_allowMKI = -1; /* BOOLEAN */
+static int hf_h235_SrtpKeys_item = -1; /* SrtpKeyParameters */
+static int hf_h235_masterKey = -1; /* OCTET_STRING */
+static int hf_h235_masterSalt = -1; /* OCTET_STRING */
+static int hf_h235_lifetime = -1; /* T_lifetime */
+static int hf_h235_powerOfTwo = -1; /* INTEGER */
+static int hf_h235_specific = -1; /* INTEGER */
+static int hf_h235_mki = -1; /* T_mki */
+static int hf_h235_length = -1; /* INTEGER_1_128 */
+static int hf_h235_value = -1; /* OCTET_STRING */
+static int hf_h235_kdr = -1; /* INTEGER_0_24 */
+static int hf_h235_unencryptedSrtp = -1; /* BOOLEAN */
+static int hf_h235_unencryptedSrtcp = -1; /* BOOLEAN */
+static int hf_h235_unauthenticatedSrtp = -1; /* BOOLEAN */
+static int hf_h235_fecOrder = -1; /* FecOrder */
+static int hf_h235_windowSizeHint = -1; /* INTEGER_64_65535 */
+static int hf_h235_newParameter = -1; /* SEQUENCE_OF_GenericData */
+static int hf_h235_newParameter_item = -1; /* GenericData */
+static int hf_h235_fecBeforeSrtp = -1; /* NULL */
+static int hf_h235_fecAfterSrtp = -1; /* NULL */
/*--- End of included file: packet-h235-hf.c ---*/
-#line 47 "packet-h235-template.c"
+#line 48 "packet-h235-template.c"
/* Initialize the subtree pointers */
@@ -138,6 +173,9 @@ static gint ett_h235_TypedCertificate = -1;
static gint ett_h235_AuthenticationBES = -1;
static gint ett_h235_AuthenticationMechanism = -1;
static gint ett_h235_ClearToken = -1;
+static gint ett_h235_SEQUENCE_OF_ProfileElement = -1;
+static gint ett_h235_ProfileElement = -1;
+static gint ett_h235_Element = -1;
static gint ett_h235_SIGNEDxxx = -1;
static gint ett_h235_ENCRYPTEDxxx = -1;
static gint ett_h235_HASHEDxxx = -1;
@@ -148,9 +186,18 @@ static gint ett_h235_T_cryptoSignedToken = -1;
static gint ett_h235_T_cryptoHashedToken = -1;
static gint ett_h235_H235Key = -1;
static gint ett_h235_V3KeySyncMaterial = -1;
+static gint ett_h235_SrtpCryptoCapability = -1;
+static gint ett_h235_SrtpCryptoInfo = -1;
+static gint ett_h235_SrtpKeys = -1;
+static gint ett_h235_SrtpKeyParameters = -1;
+static gint ett_h235_T_lifetime = -1;
+static gint ett_h235_T_mki = -1;
+static gint ett_h235_SrtpSessionParameters = -1;
+static gint ett_h235_SEQUENCE_OF_GenericData = -1;
+static gint ett_h235_FecOrder = -1;
/*--- End of included file: packet-h235-ett.c ---*/
-#line 50 "packet-h235-template.c"
+#line 51 "packet-h235-template.c"
static guint32
dissect_xxx_ToBeSigned(tvbuff_t *tvb, guint32 offset, packet_info *pinfo, proto_tree *tree, int hf_index _U_) {
@@ -166,6 +213,9 @@ PER_NOT_DECODED_YET("ToBeSigned");
static int dissect_toBeSigned(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_xxx_ToBeSigned(tvb, offset, pinfo, tree, hf_h235_toBeSigned);
}
+static int dissect_newParameter_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h225_GenericData(tvb, offset, pinfo, tree, hf_h235_newParameter_item);
+}
@@ -262,6 +312,9 @@ static int dissect_nonStandardIdentifier(tvbuff_t *tvb, int offset, packet_info
static int dissect_type(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h235_type);
}
+static int dissect_keyExch(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h235_keyExch);
+}
static int dissect_tokenOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h235_tokenOID);
}
@@ -271,6 +324,9 @@ static int dissect_algorithmOID(tvbuff_t *tvb, int offset, packet_info *pinfo, p
static int dissect_keyDerivationOID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h235_keyDerivationOID);
}
+static int dissect_cryptoSuite(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OBJECT_IDENTIFIER(tvb, offset, pinfo, tree, hf_h235_cryptoSuite);
+}
@@ -287,6 +343,9 @@ static int dissect_data(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tre
static int dissect_certificatedata(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_certificatedata);
}
+static int dissect_octets(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_octets);
+}
static int dissect_encryptedData(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_encryptedData);
}
@@ -305,6 +364,18 @@ static int dissect_encryptedSaltingKey(tvbuff_t *tvb, int offset, packet_info *p
static int dissect_clearSaltingKey(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_clearSaltingKey);
}
+static int dissect_genericKeyMaterial(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_genericKeyMaterial);
+}
+static int dissect_masterKey(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_masterKey);
+}
+static int dissect_masterSalt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_masterSalt);
+}
+static int dissect_value(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_OCTET_STRING(tvb, offset, pinfo, tree, hf_h235_value);
+}
static const per_sequence_t NonStandardParameter_sequence[] = {
@@ -528,6 +599,12 @@ static int dissect_ipsec(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tr
static int dissect_tls(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_NULL(tvb, offset, pinfo, tree, hf_h235_tls);
}
+static int dissect_fecBeforeSrtp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_NULL(tvb, offset, pinfo, tree, hf_h235_fecBeforeSrtp);
+}
+static int dissect_fecAfterSrtp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_NULL(tvb, offset, pinfo, tree, hf_h235_fecAfterSrtp);
+}
static const value_string h235_AuthenticationBES_vals[] = {
@@ -564,6 +641,7 @@ const value_string h235_AuthenticationMechanism_vals[] = {
{ 5, "tls" },
{ 6, "nonStandard" },
{ 7, "authenticationBES" },
+ { 8, "keyExch" },
{ 0, NULL }
};
@@ -576,6 +654,7 @@ static const per_choice_t AuthenticationMechanism_choice[] = {
{ 5, "tls" , ASN1_EXTENSION_ROOT , dissect_tls },
{ 6, "nonStandard" , ASN1_EXTENSION_ROOT , dissect_nonStandard },
{ 7, "authenticationBES" , ASN1_NOT_EXTENSION_ROOT, dissect_authenticationBES },
+ { 8, "keyExch" , ASN1_NOT_EXTENSION_ROOT, dissect_keyExch },
{ 0, NULL, 0, NULL }
};
@@ -597,9 +676,18 @@ dissect_h235_INTEGER(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tr
return offset;
}
+static int dissect_integer(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER(tvb, offset, pinfo, tree, hf_h235_integer);
+}
static int dissect_ranInt(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_INTEGER(tvb, offset, pinfo, tree, hf_h235_ranInt);
}
+static int dissect_powerOfTwo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER(tvb, offset, pinfo, tree, hf_h235_powerOfTwo);
+}
+static int dissect_specific(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER(tvb, offset, pinfo, tree, hf_h235_specific);
+}
@@ -661,7 +749,7 @@ static const per_sequence_t ENCRYPTEDxxx_sequence[] = {
int
dissect_h235_ENCRYPTEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 48 "h235.cnf"
+#line 53 "h235.cnf"
proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE);
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
@@ -688,6 +776,9 @@ dissect_h235_BIT_STRING(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto
return offset;
}
+static int dissect_bits(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BIT_STRING(tvb, offset, pinfo, tree, hf_h235_bits);
+}
static int dissect_signaturedata(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
return dissect_h235_BIT_STRING(tvb, offset, pinfo, tree, hf_h235_signaturedata);
}
@@ -706,7 +797,7 @@ static const per_sequence_t SIGNEDxxx_sequence[] = {
int
dissect_h235_SIGNEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 45 "h235.cnf"
+#line 50 "h235.cnf"
proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE);
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
@@ -731,6 +822,7 @@ static const per_sequence_t V3KeySyncMaterial_sequence[] = {
{ "clearSaltingKey" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_clearSaltingKey },
{ "paramSsalt" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_paramSsalt },
{ "keyDerivationOID" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_keyDerivationOID },
+ { "genericKeyMaterial" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_genericKeyMaterial },
{ NULL, 0, 0, NULL }
};
@@ -775,6 +867,123 @@ static int dissect_h235Key(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
}
+
+static int
+dissect_h235_INTEGER_0_255(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 255U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_elementID(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER_0_255(tvb, offset, pinfo, tree, hf_h235_elementID);
+}
+
+
+
+static int
+dissect_h235_BMPString(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_BMPString(tvb, offset, pinfo, tree, hf_index,
+ NO_BOUND, NO_BOUND);
+
+ return offset;
+}
+static int dissect_name(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BMPString(tvb, offset, pinfo, tree, hf_h235_name);
+}
+
+
+
+static int
+dissect_h235_BOOLEAN(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_boolean(tvb, offset, pinfo, tree, hf_index,
+ NULL, NULL);
+
+ return offset;
+}
+static int dissect_flag(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BOOLEAN(tvb, offset, pinfo, tree, hf_h235_flag);
+}
+static int dissect_allowMKI(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BOOLEAN(tvb, offset, pinfo, tree, hf_h235_allowMKI);
+}
+static int dissect_unencryptedSrtp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BOOLEAN(tvb, offset, pinfo, tree, hf_h235_unencryptedSrtp);
+}
+static int dissect_unencryptedSrtcp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BOOLEAN(tvb, offset, pinfo, tree, hf_h235_unencryptedSrtcp);
+}
+static int dissect_unauthenticatedSrtp(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_BOOLEAN(tvb, offset, pinfo, tree, hf_h235_unauthenticatedSrtp);
+}
+
+
+static const value_string h235_Element_vals[] = {
+ { 0, "octets" },
+ { 1, "integer" },
+ { 2, "bits" },
+ { 3, "name" },
+ { 4, "flag" },
+ { 0, NULL }
+};
+
+static const per_choice_t Element_choice[] = {
+ { 0, "octets" , ASN1_EXTENSION_ROOT , dissect_octets },
+ { 1, "integer" , ASN1_EXTENSION_ROOT , dissect_integer },
+ { 2, "bits" , ASN1_EXTENSION_ROOT , dissect_bits },
+ { 3, "name" , ASN1_EXTENSION_ROOT , dissect_name },
+ { 4, "flag" , ASN1_EXTENSION_ROOT , dissect_flag },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h235_Element(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_Element, Element_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_element(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_Element(tvb, offset, pinfo, tree, hf_h235_element);
+}
+
+
+static const per_sequence_t ProfileElement_sequence[] = {
+ { "elementID" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_elementID },
+ { "paramS" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_paramS },
+ { "element" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_element },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_ProfileElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_ProfileElement, ProfileElement_sequence);
+
+ return offset;
+}
+static int dissect_profileInfo_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_ProfileElement(tvb, offset, pinfo, tree, hf_h235_profileInfo_item);
+}
+
+
+static const per_sequence_t SEQUENCE_OF_ProfileElement_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_profileInfo_item },
+};
+
+static int
+dissect_h235_SEQUENCE_OF_ProfileElement(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SEQUENCE_OF_ProfileElement, SEQUENCE_OF_ProfileElement_sequence_of);
+
+ return offset;
+}
+static int dissect_profileInfo(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_SEQUENCE_OF_ProfileElement(tvb, offset, pinfo, tree, hf_h235_profileInfo);
+}
+
+
static const per_sequence_t ClearToken_sequence[] = {
{ "tokenOID" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_tokenOID },
{ "timeStamp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_timeStamp },
@@ -788,12 +997,13 @@ static const per_sequence_t ClearToken_sequence[] = {
{ "eckasdhkey" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_eckasdhkey },
{ "sendersID" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_sendersID },
{ "h235Key" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_h235Key },
+ { "profileInfo" , ASN1_NOT_EXTENSION_ROOT, ASN1_OPTIONAL , dissect_profileInfo },
{ NULL, 0, 0, NULL }
};
int
dissect_h235_ClearToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 55 "h235.cnf"
+#line 60 "h235.cnf"
proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE);
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
@@ -815,7 +1025,7 @@ static const per_sequence_t HASHEDxxx_sequence[] = {
int
dissect_h235_HASHEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 51 "h235.cnf"
+#line 56 "h235.cnf"
proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE);
offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
@@ -901,7 +1111,7 @@ static const per_choice_t CryptoToken_choice[] = {
int
dissect_h235_CryptoToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
-#line 59 "h235.cnf"
+#line 64 "h235.cnf"
proto_tree_add_item_hidden(tree, proto_h235, tvb, offset, 0, FALSE);
offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
@@ -912,8 +1122,212 @@ dissect_h235_CryptoToken(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, prot
}
+
+static int
+dissect_h235_INTEGER_0_24(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 0U, 24U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_kdr(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER_0_24(tvb, offset, pinfo, tree, hf_h235_kdr);
+}
+
+
+static const per_sequence_t FecOrder_sequence[] = {
+ { "fecBeforeSrtp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_fecBeforeSrtp },
+ { "fecAfterSrtp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_fecAfterSrtp },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_FecOrder(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_FecOrder, FecOrder_sequence);
+
+ return offset;
+}
+static int dissect_fecOrder(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_FecOrder(tvb, offset, pinfo, tree, hf_h235_fecOrder);
+}
+
+
+
+static int
+dissect_h235_INTEGER_64_65535(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 64U, 65535U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_windowSizeHint(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER_64_65535(tvb, offset, pinfo, tree, hf_h235_windowSizeHint);
+}
+
+
+static const per_sequence_t SEQUENCE_OF_GenericData_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_newParameter_item },
+};
+
+static int
+dissect_h235_SEQUENCE_OF_GenericData(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SEQUENCE_OF_GenericData, SEQUENCE_OF_GenericData_sequence_of);
+
+ return offset;
+}
+static int dissect_newParameter(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_SEQUENCE_OF_GenericData(tvb, offset, pinfo, tree, hf_h235_newParameter);
+}
+
+
+static const per_sequence_t SrtpSessionParameters_sequence[] = {
+ { "kdr" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_kdr },
+ { "unencryptedSrtp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_unencryptedSrtp },
+ { "unencryptedSrtcp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_unencryptedSrtcp },
+ { "unauthenticatedSrtp" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_unauthenticatedSrtp },
+ { "fecOrder" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_fecOrder },
+ { "windowSizeHint" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_windowSizeHint },
+ { "newParameter" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_newParameter },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_SrtpSessionParameters(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SrtpSessionParameters, SrtpSessionParameters_sequence);
+
+ return offset;
+}
+static int dissect_sessionParams(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_SrtpSessionParameters(tvb, offset, pinfo, tree, hf_h235_sessionParams);
+}
+
+
+static const per_sequence_t SrtpCryptoInfo_sequence[] = {
+ { "cryptoSuite" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_cryptoSuite },
+ { "sessionParams" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_sessionParams },
+ { "allowMKI" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_allowMKI },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_SrtpCryptoInfo(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SrtpCryptoInfo, SrtpCryptoInfo_sequence);
+
+ return offset;
+}
+static int dissect_SrtpCryptoCapability_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_SrtpCryptoInfo(tvb, offset, pinfo, tree, hf_h235_SrtpCryptoCapability_item);
+}
+
+
+static const per_sequence_t SrtpCryptoCapability_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SrtpCryptoCapability_item },
+};
+
+int
+dissect_h235_SrtpCryptoCapability(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SrtpCryptoCapability, SrtpCryptoCapability_sequence_of);
+
+ return offset;
+}
+
+
+static const value_string h235_T_lifetime_vals[] = {
+ { 0, "powerOfTwo" },
+ { 1, "specific" },
+ { 0, NULL }
+};
+
+static const per_choice_t T_lifetime_choice[] = {
+ { 0, "powerOfTwo" , ASN1_EXTENSION_ROOT , dissect_powerOfTwo },
+ { 1, "specific" , ASN1_EXTENSION_ROOT , dissect_specific },
+ { 0, NULL, 0, NULL }
+};
+
+static int
+dissect_h235_T_lifetime(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_choice(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_T_lifetime, T_lifetime_choice,
+ NULL);
+
+ return offset;
+}
+static int dissect_lifetime(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_T_lifetime(tvb, offset, pinfo, tree, hf_h235_lifetime);
+}
+
+
+
+static int
+dissect_h235_INTEGER_1_128(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_constrained_integer(tvb, offset, pinfo, tree, hf_index,
+ 1U, 128U, NULL, NULL, FALSE);
+
+ return offset;
+}
+static int dissect_length(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_INTEGER_1_128(tvb, offset, pinfo, tree, hf_h235_length);
+}
+
+
+static const per_sequence_t T_mki_sequence[] = {
+ { "length" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_length },
+ { "value" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_value },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_T_mki(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_T_mki, T_mki_sequence);
+
+ return offset;
+}
+static int dissect_mki(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_T_mki(tvb, offset, pinfo, tree, hf_h235_mki);
+}
+
+
+static const per_sequence_t SrtpKeyParameters_sequence[] = {
+ { "masterKey" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_masterKey },
+ { "masterSalt" , ASN1_EXTENSION_ROOT , ASN1_NOT_OPTIONAL, dissect_masterSalt },
+ { "lifetime" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_lifetime },
+ { "mki" , ASN1_EXTENSION_ROOT , ASN1_OPTIONAL , dissect_mki },
+ { NULL, 0, 0, NULL }
+};
+
+static int
+dissect_h235_SrtpKeyParameters(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SrtpKeyParameters, SrtpKeyParameters_sequence);
+
+ return offset;
+}
+static int dissect_SrtpKeys_item(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree) {
+ return dissect_h235_SrtpKeyParameters(tvb, offset, pinfo, tree, hf_h235_SrtpKeys_item);
+}
+
+
+static const per_sequence_t SrtpKeys_sequence_of[1] = {
+ { "" , ASN1_NO_EXTENSIONS , ASN1_NOT_OPTIONAL, dissect_SrtpKeys_item },
+};
+
+int
+dissect_h235_SrtpKeys(tvbuff_t *tvb, int offset, packet_info *pinfo _U_, proto_tree *tree, int hf_index) {
+ offset = dissect_per_sequence_of(tvb, offset, pinfo, tree, hf_index,
+ ett_h235_SrtpKeys, SrtpKeys_sequence_of);
+
+ return offset;
+}
+
+
/*--- End of included file: packet-h235-fn.c ---*/
-#line 58 "packet-h235-template.c"
+#line 59 "packet-h235-template.c"
/*--- proto_register_h235 ----------------------------------------------*/
@@ -1032,6 +1446,10 @@ void proto_register_h235(void) {
{ "authenticationBES", "h235.authenticationBES",
FT_UINT32, BASE_DEC, VALS(h235_AuthenticationBES_vals), 0,
"AuthenticationMechanism/authenticationBES", HFILL }},
+ { &hf_h235_keyExch,
+ { "keyExch", "h235.keyExch",
+ FT_OID, BASE_NONE, NULL, 0,
+ "AuthenticationMechanism/keyExch", HFILL }},
{ &hf_h235_tokenOID,
{ "tokenOID", "h235.tokenOID",
FT_OID, BASE_NONE, NULL, 0,
@@ -1076,6 +1494,46 @@ void proto_register_h235(void) {
{ "h235Key", "h235.h235Key",
FT_UINT32, BASE_DEC, VALS(h235_H235Key_vals), 0,
"ClearToken/h235Key", HFILL }},
+ { &hf_h235_profileInfo,
+ { "profileInfo", "h235.profileInfo",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ClearToken/profileInfo", HFILL }},
+ { &hf_h235_profileInfo_item,
+ { "Item", "h235.profileInfo_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "ClearToken/profileInfo/_item", HFILL }},
+ { &hf_h235_elementID,
+ { "elementID", "h235.elementID",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "ProfileElement/elementID", HFILL }},
+ { &hf_h235_paramS,
+ { "paramS", "h235.paramS",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "", HFILL }},
+ { &hf_h235_element,
+ { "element", "h235.element",
+ FT_UINT32, BASE_DEC, VALS(h235_Element_vals), 0,
+ "ProfileElement/element", HFILL }},
+ { &hf_h235_octets,
+ { "octets", "h235.octets",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Element/octets", HFILL }},
+ { &hf_h235_integer,
+ { "integer", "h235.integer",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "Element/integer", HFILL }},
+ { &hf_h235_bits,
+ { "bits", "h235.bits",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "Element/bits", HFILL }},
+ { &hf_h235_name,
+ { "name", "h235.name",
+ FT_STRING, BASE_NONE, NULL, 0,
+ "Element/name", HFILL }},
+ { &hf_h235_flag,
+ { "flag", "h235.flag",
+ FT_BOOLEAN, 8, NULL, 0,
+ "Element/flag", HFILL }},
{ &hf_h235_toBeSigned,
{ "toBeSigned", "h235.toBeSigned",
FT_NONE, BASE_NONE, NULL, 0,
@@ -1084,10 +1542,6 @@ void proto_register_h235(void) {
{ "algorithmOID", "h235.algorithmOID",
FT_OID, BASE_NONE, NULL, 0,
"", HFILL }},
- { &hf_h235_paramS,
- { "paramS", "h235.paramS",
- FT_NONE, BASE_NONE, NULL, 0,
- "", HFILL }},
{ &hf_h235_signaturedata,
{ "signature", "h235.signature",
FT_BYTES, BASE_HEX, NULL, 0,
@@ -1188,9 +1642,105 @@ void proto_register_h235(void) {
{ "keyDerivationOID", "h235.keyDerivationOID",
FT_OID, BASE_NONE, NULL, 0,
"V3KeySyncMaterial/keyDerivationOID", HFILL }},
+ { &hf_h235_genericKeyMaterial,
+ { "genericKeyMaterial", "h235.genericKeyMaterial",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "V3KeySyncMaterial/genericKeyMaterial", HFILL }},
+ { &hf_h235_SrtpCryptoCapability_item,
+ { "Item", "h235.SrtpCryptoCapability_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpCryptoCapability/_item", HFILL }},
+ { &hf_h235_cryptoSuite,
+ { "cryptoSuite", "h235.cryptoSuite",
+ FT_OID, BASE_NONE, NULL, 0,
+ "SrtpCryptoInfo/cryptoSuite", HFILL }},
+ { &hf_h235_sessionParams,
+ { "sessionParams", "h235.sessionParams",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpCryptoInfo/sessionParams", HFILL }},
+ { &hf_h235_allowMKI,
+ { "allowMKI", "h235.allowMKI",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SrtpCryptoInfo/allowMKI", HFILL }},
+ { &hf_h235_SrtpKeys_item,
+ { "Item", "h235.SrtpKeys_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpKeys/_item", HFILL }},
+ { &hf_h235_masterKey,
+ { "masterKey", "h235.masterKey",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SrtpKeyParameters/masterKey", HFILL }},
+ { &hf_h235_masterSalt,
+ { "masterSalt", "h235.masterSalt",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SrtpKeyParameters/masterSalt", HFILL }},
+ { &hf_h235_lifetime,
+ { "lifetime", "h235.lifetime",
+ FT_UINT32, BASE_DEC, VALS(h235_T_lifetime_vals), 0,
+ "SrtpKeyParameters/lifetime", HFILL }},
+ { &hf_h235_powerOfTwo,
+ { "powerOfTwo", "h235.powerOfTwo",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SrtpKeyParameters/lifetime/powerOfTwo", HFILL }},
+ { &hf_h235_specific,
+ { "specific", "h235.specific",
+ FT_INT32, BASE_DEC, NULL, 0,
+ "SrtpKeyParameters/lifetime/specific", HFILL }},
+ { &hf_h235_mki,
+ { "mki", "h235.mki",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpKeyParameters/mki", HFILL }},
+ { &hf_h235_length,
+ { "length", "h235.length",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SrtpKeyParameters/mki/length", HFILL }},
+ { &hf_h235_value,
+ { "value", "h235.value",
+ FT_BYTES, BASE_HEX, NULL, 0,
+ "SrtpKeyParameters/mki/value", HFILL }},
+ { &hf_h235_kdr,
+ { "kdr", "h235.kdr",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SrtpSessionParameters/kdr", HFILL }},
+ { &hf_h235_unencryptedSrtp,
+ { "unencryptedSrtp", "h235.unencryptedSrtp",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SrtpSessionParameters/unencryptedSrtp", HFILL }},
+ { &hf_h235_unencryptedSrtcp,
+ { "unencryptedSrtcp", "h235.unencryptedSrtcp",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SrtpSessionParameters/unencryptedSrtcp", HFILL }},
+ { &hf_h235_unauthenticatedSrtp,
+ { "unauthenticatedSrtp", "h235.unauthenticatedSrtp",
+ FT_BOOLEAN, 8, NULL, 0,
+ "SrtpSessionParameters/unauthenticatedSrtp", HFILL }},
+ { &hf_h235_fecOrder,
+ { "fecOrder", "h235.fecOrder",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpSessionParameters/fecOrder", HFILL }},
+ { &hf_h235_windowSizeHint,
+ { "windowSizeHint", "h235.windowSizeHint",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SrtpSessionParameters/windowSizeHint", HFILL }},
+ { &hf_h235_newParameter,
+ { "newParameter", "h235.newParameter",
+ FT_UINT32, BASE_DEC, NULL, 0,
+ "SrtpSessionParameters/newParameter", HFILL }},
+ { &hf_h235_newParameter_item,
+ { "Item", "h235.newParameter_item",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "SrtpSessionParameters/newParameter/_item", HFILL }},
+ { &hf_h235_fecBeforeSrtp,
+ { "fecBeforeSrtp", "h235.fecBeforeSrtp",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FecOrder/fecBeforeSrtp", HFILL }},
+ { &hf_h235_fecAfterSrtp,
+ { "fecAfterSrtp", "h235.fecAfterSrtp",
+ FT_NONE, BASE_NONE, NULL, 0,
+ "FecOrder/fecAfterSrtp", HFILL }},
/*--- End of included file: packet-h235-hfarr.c ---*/
-#line 66 "packet-h235-template.c"
+#line 67 "packet-h235-template.c"
};
/* List of subtrees */
@@ -1208,6 +1758,9 @@ void proto_register_h235(void) {
&ett_h235_AuthenticationBES,
&ett_h235_AuthenticationMechanism,
&ett_h235_ClearToken,
+ &ett_h235_SEQUENCE_OF_ProfileElement,
+ &ett_h235_ProfileElement,
+ &ett_h235_Element,
&ett_h235_SIGNEDxxx,
&ett_h235_ENCRYPTEDxxx,
&ett_h235_HASHEDxxx,
@@ -1218,9 +1771,18 @@ void proto_register_h235(void) {
&ett_h235_T_cryptoHashedToken,
&ett_h235_H235Key,
&ett_h235_V3KeySyncMaterial,
+ &ett_h235_SrtpCryptoCapability,
+ &ett_h235_SrtpCryptoInfo,
+ &ett_h235_SrtpKeys,
+ &ett_h235_SrtpKeyParameters,
+ &ett_h235_T_lifetime,
+ &ett_h235_T_mki,
+ &ett_h235_SrtpSessionParameters,
+ &ett_h235_SEQUENCE_OF_GenericData,
+ &ett_h235_FecOrder,
/*--- End of included file: packet-h235-ettarr.c ---*/
-#line 71 "packet-h235-template.c"
+#line 72 "packet-h235-template.c"
};
/* Register protocol */
diff --git a/epan/dissectors/packet-h235.h b/epan/dissectors/packet-h235.h
index 5631e74760..91ff744694 100644
--- a/epan/dissectors/packet-h235.h
+++ b/epan/dissectors/packet-h235.h
@@ -1,7 +1,7 @@
/* Do not modify this file. */
/* It is created automatically by the ASN.1 to Ethereal dissector compiler */
/* .\packet-h235.h */
-/* ../../tools/asn2eth.py -X -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn */
+/* ../../tools/asn2eth.py -e -p h235 -c h235.cnf -s packet-h235-template H235-SECURITY-MESSAGES.asn H235-SRTP.asn */
/* Input file: packet-h235-template.h */
@@ -46,6 +46,8 @@ int dissect_h235_SIGNEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_
int dissect_h235_ENCRYPTEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_h235_HASHEDxxx(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
int dissect_h235_CryptoToken(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_h235_SrtpCryptoCapability(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
+int dissect_h235_SrtpKeys(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *tree, int hf_index);
/*--- End of included file: packet-h235-exp.h ---*/
#line 30 "packet-h235-template.h"