00001
00002
00003
00004
00005
00006
00007 #if ! H323_DISABLE_H235_SRTP
00008
00009 #ifndef __H235_SRTP_H
00010 #define __H235_SRTP_H
00011
00012 #ifdef P_USE_PRAGMA
00013 #pragma interface
00014 #endif
00015
00016 #include <ptclib/asner.h>
00017
00018
00019
00020
00021
00022 class H235_SRTP_SrtpCryptoInfo;
00023
00024 class H235_SRTP_SrtpCryptoCapability : public PASN_Array
00025 {
00026 #ifndef PASN_LEANANDMEAN
00027 PCLASSINFO(H235_SRTP_SrtpCryptoCapability, PASN_Array);
00028 #endif
00029 public:
00030 H235_SRTP_SrtpCryptoCapability(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00031
00032 PASN_Object * CreateObject() const;
00033 H235_SRTP_SrtpCryptoInfo & operator[](PINDEX i) const;
00034 PObject * Clone() const;
00035 };
00036
00037
00038
00039
00040
00041
00042 class H235_SRTP_SrtpKeyParameters;
00043
00044 class H235_SRTP_SrtpKeys : public PASN_Array
00045 {
00046 #ifndef PASN_LEANANDMEAN
00047 PCLASSINFO(H235_SRTP_SrtpKeys, PASN_Array);
00048 #endif
00049 public:
00050 H235_SRTP_SrtpKeys(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00051
00052 PASN_Object * CreateObject() const;
00053 H235_SRTP_SrtpKeyParameters & operator[](PINDEX i) const;
00054 PObject * Clone() const;
00055 };
00056
00057
00058
00059
00060
00061
00062 class H235_SRTP_FecOrder : public PASN_Sequence
00063 {
00064 #ifndef PASN_LEANANDMEAN
00065 PCLASSINFO(H235_SRTP_FecOrder, PASN_Sequence);
00066 #endif
00067 public:
00068 H235_SRTP_FecOrder(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00069
00070 enum OptionalFields {
00071 e_fecBeforeSrtp,
00072 e_fecAfterSrtp
00073 };
00074
00075 PASN_Null m_fecBeforeSrtp;
00076 PASN_Null m_fecAfterSrtp;
00077
00078 PINDEX GetDataLength() const;
00079 BOOL Decode(PASN_Stream & strm);
00080 void Encode(PASN_Stream & strm) const;
00081 #ifndef PASN_NOPRINTON
00082 void PrintOn(ostream & strm) const;
00083 #endif
00084 Comparison Compare(const PObject & obj) const;
00085 PObject * Clone() const;
00086 };
00087
00088
00089
00090
00091
00092
00093 class H235_SRTP_SrtpKeyParameters_lifetime : public PASN_Choice
00094 {
00095 #ifndef PASN_LEANANDMEAN
00096 PCLASSINFO(H235_SRTP_SrtpKeyParameters_lifetime, PASN_Choice);
00097 #endif
00098 public:
00099 H235_SRTP_SrtpKeyParameters_lifetime(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00100
00101 enum Choices {
00102 e_powerOfTwo,
00103 e_specific
00104 };
00105
00106 BOOL CreateObject();
00107 PObject * Clone() const;
00108 };
00109
00110
00111
00112
00113
00114
00115 class H235_SRTP_SrtpKeyParameters_mki : public PASN_Sequence
00116 {
00117 #ifndef PASN_LEANANDMEAN
00118 PCLASSINFO(H235_SRTP_SrtpKeyParameters_mki, PASN_Sequence);
00119 #endif
00120 public:
00121 H235_SRTP_SrtpKeyParameters_mki(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00122
00123 PASN_Integer m_length;
00124 PASN_OctetString m_value;
00125
00126 PINDEX GetDataLength() const;
00127 BOOL Decode(PASN_Stream & strm);
00128 void Encode(PASN_Stream & strm) const;
00129 #ifndef PASN_NOPRINTON
00130 void PrintOn(ostream & strm) const;
00131 #endif
00132 Comparison Compare(const PObject & obj) const;
00133 PObject * Clone() const;
00134 };
00135
00136
00137
00138
00139
00140
00141 class GenericData;
00142
00143 class H235_SRTP_ArrayOf_GenericData : public PASN_Array
00144 {
00145 #ifndef PASN_LEANANDMEAN
00146 PCLASSINFO(H235_SRTP_ArrayOf_GenericData, PASN_Array);
00147 #endif
00148 public:
00149 H235_SRTP_ArrayOf_GenericData(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00150
00151 PASN_Object * CreateObject() const;
00152 GenericData & operator[](PINDEX i) const;
00153 PObject * Clone() const;
00154 };
00155
00156
00157
00158
00159
00160
00161 class H235_SRTP_SrtpKeyParameters : public PASN_Sequence
00162 {
00163 #ifndef PASN_LEANANDMEAN
00164 PCLASSINFO(H235_SRTP_SrtpKeyParameters, PASN_Sequence);
00165 #endif
00166 public:
00167 H235_SRTP_SrtpKeyParameters(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00168
00169 enum OptionalFields {
00170 e_lifetime,
00171 e_mki
00172 };
00173
00174 PASN_OctetString m_masterKey;
00175 PASN_OctetString m_masterSalt;
00176 H235_SRTP_SrtpKeyParameters_lifetime m_lifetime;
00177 H235_SRTP_SrtpKeyParameters_mki m_mki;
00178
00179 PINDEX GetDataLength() const;
00180 BOOL Decode(PASN_Stream & strm);
00181 void Encode(PASN_Stream & strm) const;
00182 #ifndef PASN_NOPRINTON
00183 void PrintOn(ostream & strm) const;
00184 #endif
00185 Comparison Compare(const PObject & obj) const;
00186 PObject * Clone() const;
00187 };
00188
00189
00190
00191
00192
00193
00194 class H235_SRTP_SrtpSessionParameters : public PASN_Sequence
00195 {
00196 #ifndef PASN_LEANANDMEAN
00197 PCLASSINFO(H235_SRTP_SrtpSessionParameters, PASN_Sequence);
00198 #endif
00199 public:
00200 H235_SRTP_SrtpSessionParameters(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00201
00202 enum OptionalFields {
00203 e_kdr,
00204 e_unencryptedSrtp,
00205 e_unencryptedSrtcp,
00206 e_unauthenticatedSrtp,
00207 e_fecOrder,
00208 e_windowSizeHint,
00209 e_newParameter
00210 };
00211
00212 PASN_Integer m_kdr;
00213 PASN_Boolean m_unencryptedSrtp;
00214 PASN_Boolean m_unencryptedSrtcp;
00215 PASN_Boolean m_unauthenticatedSrtp;
00216 H235_SRTP_FecOrder m_fecOrder;
00217 PASN_Integer m_windowSizeHint;
00218 H235_SRTP_ArrayOf_GenericData m_newParameter;
00219
00220 PINDEX GetDataLength() const;
00221 BOOL Decode(PASN_Stream & strm);
00222 void Encode(PASN_Stream & strm) const;
00223 #ifndef PASN_NOPRINTON
00224 void PrintOn(ostream & strm) const;
00225 #endif
00226 Comparison Compare(const PObject & obj) const;
00227 PObject * Clone() const;
00228 };
00229
00230
00231
00232
00233
00234
00235 class H235_SRTP_SrtpCryptoInfo : public PASN_Sequence
00236 {
00237 #ifndef PASN_LEANANDMEAN
00238 PCLASSINFO(H235_SRTP_SrtpCryptoInfo, PASN_Sequence);
00239 #endif
00240 public:
00241 H235_SRTP_SrtpCryptoInfo(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00242
00243 enum OptionalFields {
00244 e_cryptoSuite,
00245 e_sessionParams,
00246 e_allowMKI
00247 };
00248
00249 PASN_ObjectId m_cryptoSuite;
00250 H235_SRTP_SrtpSessionParameters m_sessionParams;
00251 PASN_Boolean m_allowMKI;
00252
00253 PINDEX GetDataLength() const;
00254 BOOL Decode(PASN_Stream & strm);
00255 void Encode(PASN_Stream & strm) const;
00256 #ifndef PASN_NOPRINTON
00257 void PrintOn(ostream & strm) const;
00258 #endif
00259 Comparison Compare(const PObject & obj) const;
00260 PObject * Clone() const;
00261 };
00262
00263
00264 #endif // __H235_SRTP_H
00265
00266 #endif // if ! H323_DISABLE_H235_SRTP
00267
00268
00269