# h235.h

Go to the documentation of this file.

    00001 //
    00002 // h235.h
    00003 //
    00004 // Code automatically generated by asnparse.
    00005 //
    00006
    00007 #if ! H323_DISABLE_H235
    00008
    00009 #ifndef __H235_H
    00010 #define __H235_H
    00011
    00012 #ifdef P_USE_PRAGMA
    00013 #pragma interface
    00014 #endif
    00015
    00016 #include <ptclib/asner.h>
    00017
    00018 //
    00019 // ChallengeString
    00020 //
    00021
    00022 class H235_ChallengeString : public PASN_OctetString
    00023 {
    00024 #ifndef PASN_LEANANDMEAN
    00025     PCLASSINFO(H235_ChallengeString, PASN_OctetString);
    00026 #endif
    00027   public:
    00028     H235_ChallengeString(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
    00029
    00030     H235_ChallengeString(const char * v);
    00031     H235_ChallengeString(const PString & v);
    00032     H235_ChallengeString(const PBYTEArray & v);
    00033
    00034     H235_ChallengeString & operator=(const char * v);
    00035     H235_ChallengeString & operator=(const PString & v);
    00036     H235_ChallengeString & operator=(const PBYTEArray & v);
    00037     PObject * Clone() const;
    00038 };
    00039
    00040
    00041 //
    00042 // TimeStamp
    00043 //
    00044
    00045 class H235_TimeStamp : public PASN_Integer
    00046 {
    00047 #ifndef PASN_LEANANDMEAN
    00048     PCLASSINFO(H235_TimeStamp, PASN_Integer);
    00049 #endif
    00050   public:
    00051     H235_TimeStamp(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass);
    00052
    00053     H235_TimeStamp & operator=(int v);
    00054     H235_TimeStamp & operator=(unsigned v);
    00055     PObject * Clone() const;
    00056 };
    00057
    00058
    00059 //
    00060 // RandomVal
    00061 //
    00062
    00063 class H235_RandomVal : public PASN_Integer
    00064 {
    00065 #ifndef PASN_LEANANDMEAN
    00066     PCLASSINFO(H235_RandomVal, PASN_Integer);
    00067 #endif
    00068   public:
    00069     H235_RandomVal(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass);
    00070
    00071     H235_RandomVal & operator=(int v);
    00072     H235_RandomVal & operator=(unsigned v);
    00073     PObject * Clone() const;
    00074 };
    00075
    00076
    00077 //
    00078 // Password
    00079 //
    00080
    00081 class H235_Password : public PASN_BMPString
    00082 {
    00083 #ifndef PASN_LEANANDMEAN
    00084     PCLASSINFO(H235_Password, PASN_BMPString);
    00085 #endif
    00086   public:
    00087     H235_Password(unsigned tag = UniversalBMPString, TagClass tagClass = UniversalTagClass);
    00088
    00089     H235_Password & operator=(const char * v);
    00090     H235_Password & operator=(const PString & v);
    00091     H235_Password & operator=(const PWCharArray & v);
    00092     H235_Password & operator=(const PASN_BMPString & v);
    00093     PObject * Clone() const;
    00094 };
    00095
    00096
    00097 //
    00098 // Identifier
    00099 //
    00100
    00101 class H235_Identifier : public PASN_BMPString
    00102 {
    00103 #ifndef PASN_LEANANDMEAN
    00104     PCLASSINFO(H235_Identifier, PASN_BMPString);
    00105 #endif
    00106   public:
    00107     H235_Identifier(unsigned tag = UniversalBMPString, TagClass tagClass = UniversalTagClass);
    00108
    00109     H235_Identifier & operator=(const char * v);
    00110     H235_Identifier & operator=(const PString & v);
    00111     H235_Identifier & operator=(const PWCharArray & v);
    00112     H235_Identifier & operator=(const PASN_BMPString & v);
    00113     PObject * Clone() const;
    00114 };
    00115
    00116
    00117 //
    00118 // KeyMaterial
    00119 //
    00120
    00121 class H235_KeyMaterial : public PASN_BitString
    00122 {
    00123 #ifndef PASN_LEANANDMEAN
    00124     PCLASSINFO(H235_KeyMaterial, PASN_BitString);
    00125 #endif
    00126   public:
    00127     H235_KeyMaterial(unsigned tag = UniversalBitString, TagClass tagClass = UniversalTagClass);
    00128
    00129     PObject * Clone() const;
    00130 };
    00131
    00132
    00133 //
    00134 // NonStandardParameter
    00135 //
    00136
    00137 class H235_NonStandardParameter : public PASN_Sequence
    00138 {
    00139 #ifndef PASN_LEANANDMEAN
    00140     PCLASSINFO(H235_NonStandardParameter, PASN_Sequence);
    00141 #endif
    00142   public:
    00143     H235_NonStandardParameter(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00144
    00145     PASN_ObjectId m_nonStandardIdentifier;
    00146     PASN_OctetString m_data;
    00147
    00148     PINDEX GetDataLength() const;
    00149     PBoolean Decode(PASN_Stream & strm);
    00150     void Encode(PASN_Stream & strm) const;
    00151 #ifndef PASN_NOPRINTON
    00152     void PrintOn(ostream & strm) const;
    00153 #endif
    00154     Comparison Compare(const PObject & obj) const;
    00155     PObject * Clone() const;
    00156 };
    00157
    00158
    00159 //
    00160 // DHset
    00161 //
    00162
    00163 class H235_DHset : public PASN_Sequence
    00164 {
    00165 #ifndef PASN_LEANANDMEAN
    00166     PCLASSINFO(H235_DHset, PASN_Sequence);
    00167 #endif
    00168   public:
    00169     H235_DHset(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00170
    00171     PASN_BitString m_halfkey;
    00172     PASN_BitString m_modSize;
    00173     PASN_BitString m_generator;
    00174
    00175     PINDEX GetDataLength() const;
    00176     PBoolean Decode(PASN_Stream & strm);
    00177     void Encode(PASN_Stream & strm) const;
    00178 #ifndef PASN_NOPRINTON
    00179     void PrintOn(ostream & strm) const;
    00180 #endif
    00181     Comparison Compare(const PObject & obj) const;
    00182     PObject * Clone() const;
    00183 };
    00184
    00185
    00186 //
    00187 // ECpoint
    00188 //
    00189
    00190 class H235_ECpoint : public PASN_Sequence
    00191 {
    00192 #ifndef PASN_LEANANDMEAN
    00193     PCLASSINFO(H235_ECpoint, PASN_Sequence);
    00194 #endif
    00195   public:
    00196     H235_ECpoint(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00197
    00198     enum OptionalFields {
    00199       e_x,
    00200       e_y
    00201     };
    00202
    00203     PASN_BitString m_x;
    00204     PASN_BitString m_y;
    00205
    00206     PINDEX GetDataLength() const;
    00207     PBoolean Decode(PASN_Stream & strm);
    00208     void Encode(PASN_Stream & strm) const;
    00209 #ifndef PASN_NOPRINTON
    00210     void PrintOn(ostream & strm) const;
    00211 #endif
    00212     Comparison Compare(const PObject & obj) const;
    00213     PObject * Clone() const;
    00214 };
    00215
    00216
    00217 //
    00218 // ECKASDH
    00219 //
    00220
    00221 class H235_ECKASDH_eckasdhp;
    00222 class H235_ECKASDH_eckasdh2;
    00223
    00224 class H235_ECKASDH : public PASN_Choice
    00225 {
    00226 #ifndef PASN_LEANANDMEAN
    00227     PCLASSINFO(H235_ECKASDH, PASN_Choice);
    00228 #endif
    00229   public:
    00230     H235_ECKASDH(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00231
    00232     enum Choices {
    00233       e_eckasdhp,
    00234       e_eckasdh2
    00235     };
    00236
    00237 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00238     operator H235_ECKASDH_eckasdhp &() const;
    00239 #else
    00240     operator H235_ECKASDH_eckasdhp &();
    00241     operator const H235_ECKASDH_eckasdhp &() const;
    00242 #endif
    00243 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00244     operator H235_ECKASDH_eckasdh2 &() const;
    00245 #else
    00246     operator H235_ECKASDH_eckasdh2 &();
    00247     operator const H235_ECKASDH_eckasdh2 &() const;
    00248 #endif
    00249
    00250     PBoolean CreateObject();
    00251     PObject * Clone() const;
    00252 };
    00253
    00254
    00255 //
    00256 // ECGDSASignature
    00257 //
    00258
    00259 class H235_ECGDSASignature : public PASN_Sequence
    00260 {
    00261 #ifndef PASN_LEANANDMEAN
    00262     PCLASSINFO(H235_ECGDSASignature, PASN_Sequence);
    00263 #endif
    00264   public:
    00265     H235_ECGDSASignature(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00266
    00267     PASN_BitString m_r;
    00268     PASN_BitString m_s;
    00269
    00270     PINDEX GetDataLength() const;
    00271     PBoolean Decode(PASN_Stream & strm);
    00272     void Encode(PASN_Stream & strm) const;
    00273 #ifndef PASN_NOPRINTON
    00274     void PrintOn(ostream & strm) const;
    00275 #endif
    00276     Comparison Compare(const PObject & obj) const;
    00277     PObject * Clone() const;
    00278 };
    00279
    00280
    00281 //
    00282 // TypedCertificate
    00283 //
    00284
    00285 class H235_TypedCertificate : public PASN_Sequence
    00286 {
    00287 #ifndef PASN_LEANANDMEAN
    00288     PCLASSINFO(H235_TypedCertificate, PASN_Sequence);
    00289 #endif
    00290   public:
    00291     H235_TypedCertificate(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00292
    00293     PASN_ObjectId m_type;
    00294     PASN_OctetString m_certificate;
    00295
    00296     PINDEX GetDataLength() const;
    00297     PBoolean Decode(PASN_Stream & strm);
    00298     void Encode(PASN_Stream & strm) const;
    00299 #ifndef PASN_NOPRINTON
    00300     void PrintOn(ostream & strm) const;
    00301 #endif
    00302     Comparison Compare(const PObject & obj) const;
    00303     PObject * Clone() const;
    00304 };
    00305
    00306
    00307 //
    00308 // AuthenticationBES
    00309 //
    00310
    00311 class H235_AuthenticationBES : public PASN_Choice
    00312 {
    00313 #ifndef PASN_LEANANDMEAN
    00314     PCLASSINFO(H235_AuthenticationBES, PASN_Choice);
    00315 #endif
    00316   public:
    00317     H235_AuthenticationBES(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00318
    00319     enum Choices {
    00320       e_default,
    00321       e_radius
    00322     };
    00323
    00324     PBoolean CreateObject();
    00325     PObject * Clone() const;
    00326 };
    00327
    00328
    00329 //
    00330 // AuthenticationMechanism
    00331 //
    00332
    00333 class H235_NonStandardParameter;
    00334 class H235_AuthenticationBES;
    00335
    00336 class H235_AuthenticationMechanism : public PASN_Choice
    00337 {
    00338 #ifndef PASN_LEANANDMEAN
    00339     PCLASSINFO(H235_AuthenticationMechanism, PASN_Choice);
    00340 #endif
    00341   public:
    00342     H235_AuthenticationMechanism(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00343
    00344     enum Choices {
    00345       e_dhExch,
    00346       e_pwdSymEnc,
    00347       e_pwdHash,
    00348       e_certSign,
    00349       e_ipsec,
    00350       e_tls,
    00351       e_nonStandard,
    00352       e_authenticationBES,
    00353       e_keyExch
    00354     };
    00355
    00356 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00357     operator H235_NonStandardParameter &() const;
    00358 #else
    00359     operator H235_NonStandardParameter &();
    00360     operator const H235_NonStandardParameter &() const;
    00361 #endif
    00362 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00363     operator H235_AuthenticationBES &() const;
    00364 #else
    00365     operator H235_AuthenticationBES &();
    00366     operator const H235_AuthenticationBES &() const;
    00367 #endif
    00368
    00369     PBoolean CreateObject();
    00370     PObject * Clone() const;
    00371 };
    00372
    00373
    00374 //
    00375 // Element
    00376 //
    00377
    00378 class H235_Element : public PASN_Choice
    00379 {
    00380 #ifndef PASN_LEANANDMEAN
    00381     PCLASSINFO(H235_Element, PASN_Choice);
    00382 #endif
    00383   public:
    00384     H235_Element(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00385
    00386     enum Choices {
    00387       e_octets,
    00388       e_integer,
    00389       e_bits,
    00390       e_name,
    00391       e_flag
    00392     };
    00393
    00394     PBoolean CreateObject();
    00395     PObject * Clone() const;
    00396 };
    00397
    00398
    00399 //
    00400 // IV8
    00401 //
    00402
    00403 class H235_IV8 : public PASN_OctetString
    00404 {
    00405 #ifndef PASN_LEANANDMEAN
    00406     PCLASSINFO(H235_IV8, PASN_OctetString);
    00407 #endif
    00408   public:
    00409     H235_IV8(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
    00410
    00411     H235_IV8(const char * v);
    00412     H235_IV8(const PString & v);
    00413     H235_IV8(const PBYTEArray & v);
    00414
    00415     H235_IV8 & operator=(const char * v);
    00416     H235_IV8 & operator=(const PString & v);
    00417     H235_IV8 & operator=(const PBYTEArray & v);
    00418     PObject * Clone() const;
    00419 };
    00420
    00421
    00422 //
    00423 // IV16
    00424 //
    00425
    00426 class H235_IV16 : public PASN_OctetString
    00427 {
    00428 #ifndef PASN_LEANANDMEAN
    00429     PCLASSINFO(H235_IV16, PASN_OctetString);
    00430 #endif
    00431   public:
    00432     H235_IV16(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
    00433
    00434     H235_IV16(const char * v);
    00435     H235_IV16(const PString & v);
    00436     H235_IV16(const PBYTEArray & v);
    00437
    00438     H235_IV16 & operator=(const char * v);
    00439     H235_IV16 & operator=(const PString & v);
    00440     H235_IV16 & operator=(const PBYTEArray & v);
    00441     PObject * Clone() const;
    00442 };
    00443
    00444
    00445 //
    00446 // Params
    00447 //
    00448
    00449 class H235_Params : public PASN_Sequence
    00450 {
    00451 #ifndef PASN_LEANANDMEAN
    00452     PCLASSINFO(H235_Params, PASN_Sequence);
    00453 #endif
    00454   public:
    00455     H235_Params(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00456
    00457     enum OptionalFields {
    00458       e_ranInt,
    00459       e_iv8,
    00460       e_iv16,
    00461       e_iv,
    00462       e_clearSalt
    00463     };
    00464
    00465     PASN_Integer m_ranInt;
    00466     H235_IV8 m_iv8;
    00467     H235_IV16 m_iv16;
    00468     PASN_OctetString m_iv;
    00469     PASN_OctetString m_clearSalt;
    00470
    00471     PINDEX GetDataLength() const;
    00472     PBoolean Decode(PASN_Stream & strm);
    00473     void Encode(PASN_Stream & strm) const;
    00474 #ifndef PASN_NOPRINTON
    00475     void PrintOn(ostream & strm) const;
    00476 #endif
    00477     Comparison Compare(const PObject & obj) const;
    00478     PObject * Clone() const;
    00479 };
    00480
    00481
    00482 //
    00483 // ReturnSig
    00484 //
    00485
    00486 class H235_ReturnSig : public PASN_Sequence
    00487 {
    00488 #ifndef PASN_LEANANDMEAN
    00489     PCLASSINFO(H235_ReturnSig, PASN_Sequence);
    00490 #endif
    00491   public:
    00492     H235_ReturnSig(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00493
    00494     enum OptionalFields {
    00495       e_requestRandom,
    00496       e_certificate
    00497     };
    00498
    00499     H235_Identifier m_generalId;
    00500     H235_RandomVal m_responseRandom;
    00501     H235_RandomVal m_requestRandom;
    00502     H235_TypedCertificate m_certificate;
    00503
    00504     PINDEX GetDataLength() const;
    00505     PBoolean Decode(PASN_Stream & strm);
    00506     void Encode(PASN_Stream & strm) const;
    00507 #ifndef PASN_NOPRINTON
    00508     void PrintOn(ostream & strm) const;
    00509 #endif
    00510     Comparison Compare(const PObject & obj) const;
    00511     PObject * Clone() const;
    00512 };
    00513
    00514
    00515 //
    00516 // EncodedReturnSig
    00517 //
    00518
    00519 class H235_EncodedReturnSig : public PASN_OctetString
    00520 {
    00521 #ifndef PASN_LEANANDMEAN
    00522     PCLASSINFO(H235_EncodedReturnSig, PASN_OctetString);
    00523 #endif
    00524   public:
    00525     H235_EncodedReturnSig(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00526
    00527     PBoolean DecodeSubType(H235_ReturnSig & obj) { return PASN_OctetString::DecodeSubType(obj); }
    00528     void EncodeSubType(const H235_ReturnSig & obj) { PASN_OctetString::EncodeSubType(obj); }
    00529
    00530     PObject * Clone() const;
    00531 };
    00532
    00533
    00534 //
    00535 // KeySyncMaterial
    00536 //
    00537
    00538 class H235_KeySyncMaterial : public PASN_Sequence
    00539 {
    00540 #ifndef PASN_LEANANDMEAN
    00541     PCLASSINFO(H235_KeySyncMaterial, PASN_Sequence);
    00542 #endif
    00543   public:
    00544     H235_KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00545
    00546     H235_Identifier m_generalID;
    00547     H235_KeyMaterial m_keyMaterial;
    00548
    00549     PINDEX GetDataLength() const;
    00550     PBoolean Decode(PASN_Stream & strm);
    00551     void Encode(PASN_Stream & strm) const;
    00552 #ifndef PASN_NOPRINTON
    00553     void PrintOn(ostream & strm) const;
    00554 #endif
    00555     Comparison Compare(const PObject & obj) const;
    00556     PObject * Clone() const;
    00557 };
    00558
    00559
    00560 //
    00561 // EncodedKeySyncMaterial
    00562 //
    00563
    00564 class H235_EncodedKeySyncMaterial : public PASN_OctetString
    00565 {
    00566 #ifndef PASN_LEANANDMEAN
    00567     PCLASSINFO(H235_EncodedKeySyncMaterial, PASN_OctetString);
    00568 #endif
    00569   public:
    00570     H235_EncodedKeySyncMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00571
    00572     PBoolean DecodeSubType(H235_KeySyncMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); }
    00573     void EncodeSubType(const H235_KeySyncMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }
    00574
    00575     PObject * Clone() const;
    00576 };
    00577
    00578
    00579 //
    00580 // V3KeySyncMaterial
    00581 //
    00582
    00583 class H235_V3KeySyncMaterial : public PASN_Sequence
    00584 {
    00585 #ifndef PASN_LEANANDMEAN
    00586     PCLASSINFO(H235_V3KeySyncMaterial, PASN_Sequence);
    00587 #endif
    00588   public:
    00589     H235_V3KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00590
    00591     enum OptionalFields {
    00592       e_generalID,
    00593       e_algorithmOID,
    00594       e_encryptedSessionKey,
    00595       e_encryptedSaltingKey,
    00596       e_clearSaltingKey,
    00597       e_paramSsalt,
    00598       e_keyDerivationOID,
    00599       e_genericKeyMaterial
    00600     };
    00601
    00602     H235_Identifier m_generalID;
    00603     PASN_ObjectId m_algorithmOID;
    00604     H235_Params m_paramS;
    00605     PASN_OctetString m_encryptedSessionKey;
    00606     PASN_OctetString m_encryptedSaltingKey;
    00607     PASN_OctetString m_clearSaltingKey;
    00608     H235_Params m_paramSsalt;
    00609     PASN_ObjectId m_keyDerivationOID;
    00610     PASN_OctetString m_genericKeyMaterial;
    00611
    00612     PINDEX GetDataLength() const;
    00613     PBoolean Decode(PASN_Stream & strm);
    00614     void Encode(PASN_Stream & strm) const;
    00615 #ifndef PASN_NOPRINTON
    00616     void PrintOn(ostream & strm) const;
    00617 #endif
    00618     Comparison Compare(const PObject & obj) const;
    00619     PObject * Clone() const;
    00620 };
    00621
    00622
    00623 //
    00624 // ECKASDH_eckasdhp
    00625 //
    00626
    00627 class H235_ECKASDH_eckasdhp : public PASN_Sequence
    00628 {
    00629 #ifndef PASN_LEANANDMEAN
    00630     PCLASSINFO(H235_ECKASDH_eckasdhp, PASN_Sequence);
    00631 #endif
    00632   public:
    00633     H235_ECKASDH_eckasdhp(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00634
    00635     H235_ECpoint m_public_key;
    00636     PASN_BitString m_modulus;
    00637     H235_ECpoint m_base;
    00638     PASN_BitString m_weierstrassA;
    00639     PASN_BitString m_weierstrassB;
    00640
    00641     PINDEX GetDataLength() const;
    00642     PBoolean Decode(PASN_Stream & strm);
    00643     void Encode(PASN_Stream & strm) const;
    00644 #ifndef PASN_NOPRINTON
    00645     void PrintOn(ostream & strm) const;
    00646 #endif
    00647     Comparison Compare(const PObject & obj) const;
    00648     PObject * Clone() const;
    00649 };
    00650
    00651
    00652 //
    00653 // ECKASDH_eckasdh2
    00654 //
    00655
    00656 class H235_ECKASDH_eckasdh2 : public PASN_Sequence
    00657 {
    00658 #ifndef PASN_LEANANDMEAN
    00659     PCLASSINFO(H235_ECKASDH_eckasdh2, PASN_Sequence);
    00660 #endif
    00661   public:
    00662     H235_ECKASDH_eckasdh2(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00663
    00664     H235_ECpoint m_public_key;
    00665     PASN_BitString m_fieldSize;
    00666     H235_ECpoint m_base;
    00667     PASN_BitString m_weierstrassA;
    00668     PASN_BitString m_weierstrassB;
    00669
    00670     PINDEX GetDataLength() const;
    00671     PBoolean Decode(PASN_Stream & strm);
    00672     void Encode(PASN_Stream & strm) const;
    00673 #ifndef PASN_NOPRINTON
    00674     void PrintOn(ostream & strm) const;
    00675 #endif
    00676     Comparison Compare(const PObject & obj) const;
    00677     PObject * Clone() const;
    00678 };
    00679
    00680
    00681 //
    00682 // ArrayOf_ProfileElement
    00683 //
    00684
    00685 class H235_ProfileElement;
    00686
    00687 class H235_ArrayOf_ProfileElement : public PASN_Array
    00688 {
    00689 #ifndef PASN_LEANANDMEAN
    00690     PCLASSINFO(H235_ArrayOf_ProfileElement, PASN_Array);
    00691 #endif
    00692   public:
    00693     H235_ArrayOf_ProfileElement(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00694
    00695     PASN_Object * CreateObject() const;
    00696     H235_ProfileElement & operator[](PINDEX i) const;
    00697     PObject * Clone() const;
    00698 };
    00699
    00700
    00701 //
    00702 // ProfileElement
    00703 //
    00704
    00705 class H235_ProfileElement : public PASN_Sequence
    00706 {
    00707 #ifndef PASN_LEANANDMEAN
    00708     PCLASSINFO(H235_ProfileElement, PASN_Sequence);
    00709 #endif
    00710   public:
    00711     H235_ProfileElement(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00712
    00713     enum OptionalFields {
    00714       e_paramS,
    00715       e_element
    00716     };
    00717
    00718     PASN_Integer m_elementID;
    00719     H235_Params m_paramS;
    00720     H235_Element m_element;
    00721
    00722     PINDEX GetDataLength() const;
    00723     PBoolean Decode(PASN_Stream & strm);
    00724     void Encode(PASN_Stream & strm) const;
    00725 #ifndef PASN_NOPRINTON
    00726     void PrintOn(ostream & strm) const;
    00727 #endif
    00728     Comparison Compare(const PObject & obj) const;
    00729     PObject * Clone() const;
    00730 };
    00731
    00732
    00733 //
    00734 // SIGNED
    00735 //
    00736
    00737 template <class ToBeSigned>
    00738 class H235_SIGNED : public PASN_Sequence
    00739 {
    00740 #ifndef PASN_LEANANDMEAN
    00741     PCLASSINFO(H235_SIGNED, PASN_Sequence);
    00742 #endif
    00743   public:
    00744     H235_SIGNED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00745
    00746     ToBeSigned m_toBeSigned;
    00747     PASN_ObjectId m_algorithmOID;
    00748     H235_Params m_paramS;
    00749     PASN_BitString m_signature;
    00750
    00751     PINDEX GetDataLength() const;
    00752     PBoolean Decode(PASN_Stream & strm);
    00753     void Encode(PASN_Stream & strm) const;
    00754 #ifndef PASN_NOPRINTON
    00755     void PrintOn(ostream & strm) const;
    00756 #endif
    00757     Comparison Compare(const PObject & obj) const;
    00758     PObject * Clone() const;
    00759 };
    00760
    00761
    00762 //
    00763 // ENCRYPTED
    00764 //
    00765
    00766 template <class ToBeEncrypted>
    00767 class H235_ENCRYPTED : public PASN_Sequence
    00768 {
    00769 #ifndef PASN_LEANANDMEAN
    00770     PCLASSINFO(H235_ENCRYPTED, PASN_Sequence);
    00771 #endif
    00772   public:
    00773     H235_ENCRYPTED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00774
    00775     PASN_ObjectId m_algorithmOID;
    00776     H235_Params m_paramS;
    00777     PASN_OctetString m_encryptedData;
    00778
    00779     PINDEX GetDataLength() const;
    00780     PBoolean Decode(PASN_Stream & strm);
    00781     void Encode(PASN_Stream & strm) const;
    00782 #ifndef PASN_NOPRINTON
    00783     void PrintOn(ostream & strm) const;
    00784 #endif
    00785     Comparison Compare(const PObject & obj) const;
    00786     PObject * Clone() const;
    00787 };
    00788
    00789
    00790 //
    00791 // HASHED
    00792 //
    00793
    00794 template <class ToBeHashed>
    00795 class H235_HASHED : public PASN_Sequence
    00796 {
    00797 #ifndef PASN_LEANANDMEAN
    00798     PCLASSINFO(H235_HASHED, PASN_Sequence);
    00799 #endif
    00800   public:
    00801     H235_HASHED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00802
    00803     PASN_ObjectId m_algorithmOID;
    00804     H235_Params m_paramS;
    00805     PASN_BitString m_hash;
    00806
    00807     PINDEX GetDataLength() const;
    00808     PBoolean Decode(PASN_Stream & strm);
    00809     void Encode(PASN_Stream & strm) const;
    00810 #ifndef PASN_NOPRINTON
    00811     void PrintOn(ostream & strm) const;
    00812 #endif
    00813     Comparison Compare(const PObject & obj) const;
    00814     PObject * Clone() const;
    00815 };
    00816
    00817
    00818 //
    00819 // KeySignedMaterial
    00820 //
    00821
    00822 class H235_KeySignedMaterial : public PASN_Sequence
    00823 {
    00824 #ifndef PASN_LEANANDMEAN
    00825     PCLASSINFO(H235_KeySignedMaterial, PASN_Sequence);
    00826 #endif
    00827   public:
    00828     H235_KeySignedMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00829
    00830     enum OptionalFields {
    00831       e_srandom,
    00832       e_timeStamp
    00833     };
    00834
    00835     H235_Identifier m_generalId;
    00836     H235_RandomVal m_mrandom;
    00837     H235_RandomVal m_srandom;
    00838     H235_TimeStamp m_timeStamp;
    00839     H235_ENCRYPTED<H235_EncodedKeySyncMaterial> m_encrptval;
    00840
    00841     PINDEX GetDataLength() const;
    00842     PBoolean Decode(PASN_Stream & strm);
    00843     void Encode(PASN_Stream & strm) const;
    00844 #ifndef PASN_NOPRINTON
    00845     void PrintOn(ostream & strm) const;
    00846 #endif
    00847     Comparison Compare(const PObject & obj) const;
    00848     PObject * Clone() const;
    00849 };
    00850
    00851
    00852 //
    00853 // EncodedKeySignedMaterial
    00854 //
    00855
    00856 class H235_EncodedKeySignedMaterial : public PASN_OctetString
    00857 {
    00858 #ifndef PASN_LEANANDMEAN
    00859     PCLASSINFO(H235_EncodedKeySignedMaterial, PASN_OctetString);
    00860 #endif
    00861   public:
    00862     H235_EncodedKeySignedMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00863
    00864     PBoolean DecodeSubType(H235_KeySignedMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); }
    00865     void EncodeSubType(const H235_KeySignedMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }
    00866
    00867     PObject * Clone() const;
    00868 };
    00869
    00870
    00871 //
    00872 // H235CertificateSignature
    00873 //
    00874
    00875 class H235_H235CertificateSignature : public PASN_Sequence
    00876 {
    00877 #ifndef PASN_LEANANDMEAN
    00878     PCLASSINFO(H235_H235CertificateSignature, PASN_Sequence);
    00879 #endif
    00880   public:
    00881     H235_H235CertificateSignature(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00882
    00883     enum OptionalFields {
    00884       e_requesterRandom
    00885     };
    00886
    00887     H235_TypedCertificate m_certificate;
    00888     H235_RandomVal m_responseRandom;
    00889     H235_RandomVal m_requesterRandom;
    00890     H235_SIGNED<H235_EncodedReturnSig> m_signature;
    00891
    00892     PINDEX GetDataLength() const;
    00893     PBoolean Decode(PASN_Stream & strm);
    00894     void Encode(PASN_Stream & strm) const;
    00895 #ifndef PASN_NOPRINTON
    00896     void PrintOn(ostream & strm) const;
    00897 #endif
    00898     Comparison Compare(const PObject & obj) const;
    00899     PObject * Clone() const;
    00900 };
    00901
    00902
    00903 //
    00904 // H235Key
    00905 //
    00906
    00907 class H235_KeyMaterial;
    00908 class H235_V3KeySyncMaterial;
    00909
    00910 class H235_H235Key : public PASN_Choice
    00911 {
    00912 #ifndef PASN_LEANANDMEAN
    00913     PCLASSINFO(H235_H235Key, PASN_Choice);
    00914 #endif
    00915   public:
    00916     H235_H235Key(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    00917
    00918     enum Choices {
    00919       e_secureChannel,
    00920       e_sharedSecret,
    00921       e_certProtectedKey,
    00922       e_secureSharedSecret
    00923     };
    00924
    00925 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00926     operator H235_KeyMaterial &() const;
    00927 #else
    00928     operator H235_KeyMaterial &();
    00929     operator const H235_KeyMaterial &() const;
    00930 #endif
    00931 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00932     operator H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &() const;
    00933 #else
    00934     operator H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &();
    00935     operator const H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &() const;
    00936 #endif
    00937 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00938     operator H235_SIGNED<H235_EncodedKeySignedMaterial> &() const;
    00939 #else
    00940     operator H235_SIGNED<H235_EncodedKeySignedMaterial> &();
    00941     operator const H235_SIGNED<H235_EncodedKeySignedMaterial> &() const;
    00942 #endif
    00943 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    00944     operator H235_V3KeySyncMaterial &() const;
    00945 #else
    00946     operator H235_V3KeySyncMaterial &();
    00947     operator const H235_V3KeySyncMaterial &() const;
    00948 #endif
    00949
    00950     PBoolean CreateObject();
    00951     PObject * Clone() const;
    00952 };
    00953
    00954
    00955 //
    00956 // ClearToken
    00957 //
    00958
    00959 class H235_ClearToken : public PASN_Sequence
    00960 {
    00961 #ifndef PASN_LEANANDMEAN
    00962     PCLASSINFO(H235_ClearToken, PASN_Sequence);
    00963 #endif
    00964   public:
    00965     H235_ClearToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    00966
    00967     enum OptionalFields {
    00968       e_timeStamp,
    00969       e_password,
    00970       e_dhkey,
    00971       e_challenge,
    00972       e_random,
    00973       e_certificate,
    00974       e_generalID,
    00975       e_nonStandard,
    00976       e_eckasdhkey,
    00977       e_sendersID,
    00978       e_h235Key,
    00979       e_profileInfo
    00980     };
    00981
    00982     PASN_ObjectId m_tokenOID;
    00983     H235_TimeStamp m_timeStamp;
    00984     H235_Password m_password;
    00985     H235_DHset m_dhkey;
    00986     H235_ChallengeString m_challenge;
    00987     H235_RandomVal m_random;
    00988     H235_TypedCertificate m_certificate;
    00989     H235_Identifier m_generalID;
    00990     H235_NonStandardParameter m_nonStandard;
    00991     H235_ECKASDH m_eckasdhkey;
    00992     H235_Identifier m_sendersID;
    00993     H235_H235Key m_h235Key;
    00994     H235_ArrayOf_ProfileElement m_profileInfo;
    00995
    00996     PINDEX GetDataLength() const;
    00997     PBoolean Decode(PASN_Stream & strm);
    00998     void Encode(PASN_Stream & strm) const;
    00999 #ifndef PASN_NOPRINTON
    01000     void PrintOn(ostream & strm) const;
    01001 #endif
    01002     Comparison Compare(const PObject & obj) const;
    01003     PObject * Clone() const;
    01004 };
    01005
    01006
    01007 //
    01008 // EncodedGeneralToken
    01009 //
    01010
    01011 class H235_EncodedGeneralToken : public PASN_OctetString
    01012 {
    01013 #ifndef PASN_LEANANDMEAN
    01014     PCLASSINFO(H235_EncodedGeneralToken, PASN_OctetString);
    01015 #endif
    01016   public:
    01017     H235_EncodedGeneralToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    01018
    01019     PBoolean DecodeSubType(H235_ClearToken & obj) { return PASN_OctetString::DecodeSubType(obj); }
    01020     void EncodeSubType(const H235_ClearToken & obj) { PASN_OctetString::EncodeSubType(obj); }
    01021
    01022     PObject * Clone() const;
    01023 };
    01024
    01025
    01026 //
    01027 // PwdCertToken
    01028 //
    01029
    01030 class H235_PwdCertToken : public H235_ClearToken
    01031 {
    01032 #ifndef PASN_LEANANDMEAN
    01033     PCLASSINFO(H235_PwdCertToken, H235_ClearToken);
    01034 #endif
    01035   public:
    01036     H235_PwdCertToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    01037
    01038     PObject * Clone() const;
    01039 };
    01040
    01041
    01042 //
    01043 // EncodedPwdCertToken
    01044 //
    01045
    01046 class H235_EncodedPwdCertToken : public PASN_OctetString
    01047 {
    01048 #ifndef PASN_LEANANDMEAN
    01049     PCLASSINFO(H235_EncodedPwdCertToken, PASN_OctetString);
    01050 #endif
    01051   public:
    01052     H235_EncodedPwdCertToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    01053
    01054     PBoolean DecodeSubType(H235_PwdCertToken & obj) { return PASN_OctetString::DecodeSubType(obj); }
    01055     void EncodeSubType(const H235_PwdCertToken & obj) { PASN_OctetString::EncodeSubType(obj); }
    01056
    01057     PObject * Clone() const;
    01058 };
    01059
    01060
    01061 //
    01062 // CryptoToken
    01063 //
    01064
    01065 class H235_CryptoToken_cryptoEncryptedToken;
    01066 class H235_CryptoToken_cryptoSignedToken;
    01067 class H235_CryptoToken_cryptoHashedToken;
    01068
    01069 class H235_CryptoToken : public PASN_Choice
    01070 {
    01071 #ifndef PASN_LEANANDMEAN
    01072     PCLASSINFO(H235_CryptoToken, PASN_Choice);
    01073 #endif
    01074   public:
    01075     H235_CryptoToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
    01076
    01077     enum Choices {
    01078       e_cryptoEncryptedToken,
    01079       e_cryptoSignedToken,
    01080       e_cryptoHashedToken,
    01081       e_cryptoPwdEncr
    01082     };
    01083
    01084 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    01085     operator H235_CryptoToken_cryptoEncryptedToken &() const;
    01086 #else
    01087     operator H235_CryptoToken_cryptoEncryptedToken &();
    01088     operator const H235_CryptoToken_cryptoEncryptedToken &() const;
    01089 #endif
    01090 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    01091     operator H235_CryptoToken_cryptoSignedToken &() const;
    01092 #else
    01093     operator H235_CryptoToken_cryptoSignedToken &();
    01094     operator const H235_CryptoToken_cryptoSignedToken &() const;
    01095 #endif
    01096 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    01097     operator H235_CryptoToken_cryptoHashedToken &() const;
    01098 #else
    01099     operator H235_CryptoToken_cryptoHashedToken &();
    01100     operator const H235_CryptoToken_cryptoHashedToken &() const;
    01101 #endif
    01102 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
    01103     operator H235_ENCRYPTED<H235_EncodedPwdCertToken> &() const;
    01104 #else
    01105     operator H235_ENCRYPTED<H235_EncodedPwdCertToken> &();
    01106     operator const H235_ENCRYPTED<H235_EncodedPwdCertToken> &() const;
    01107 #endif
    01108
    01109     PBoolean CreateObject();
    01110     PObject * Clone() const;
    01111 };
    01112
    01113
    01114 //
    01115 // CryptoToken_cryptoEncryptedToken
    01116 //
    01117
    01118 class H235_CryptoToken_cryptoEncryptedToken : public PASN_Sequence
    01119 {
    01120 #ifndef PASN_LEANANDMEAN
    01121     PCLASSINFO(H235_CryptoToken_cryptoEncryptedToken, PASN_Sequence);
    01122 #endif
    01123   public:
    01124     H235_CryptoToken_cryptoEncryptedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    01125
    01126     PASN_ObjectId m_tokenOID;
    01127     H235_ENCRYPTED<H235_EncodedGeneralToken> m_token;
    01128
    01129     PINDEX GetDataLength() const;
    01130     PBoolean Decode(PASN_Stream & strm);
    01131     void Encode(PASN_Stream & strm) const;
    01132 #ifndef PASN_NOPRINTON
    01133     void PrintOn(ostream & strm) const;
    01134 #endif
    01135     Comparison Compare(const PObject & obj) const;
    01136     PObject * Clone() const;
    01137 };
    01138
    01139
    01140 //
    01141 // CryptoToken_cryptoSignedToken
    01142 //
    01143
    01144 class H235_CryptoToken_cryptoSignedToken : public PASN_Sequence
    01145 {
    01146 #ifndef PASN_LEANANDMEAN
    01147     PCLASSINFO(H235_CryptoToken_cryptoSignedToken, PASN_Sequence);
    01148 #endif
    01149   public:
    01150     H235_CryptoToken_cryptoSignedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    01151
    01152     PASN_ObjectId m_tokenOID;
    01153     H235_SIGNED<H235_EncodedGeneralToken> m_token;
    01154
    01155     PINDEX GetDataLength() const;
    01156     PBoolean Decode(PASN_Stream & strm);
    01157     void Encode(PASN_Stream & strm) const;
    01158 #ifndef PASN_NOPRINTON
    01159     void PrintOn(ostream & strm) const;
    01160 #endif
    01161     Comparison Compare(const PObject & obj) const;
    01162     PObject * Clone() const;
    01163 };
    01164
    01165
    01166 //
    01167 // CryptoToken_cryptoHashedToken
    01168 //
    01169
    01170 class H235_CryptoToken_cryptoHashedToken : public PASN_Sequence
    01171 {
    01172 #ifndef PASN_LEANANDMEAN
    01173     PCLASSINFO(H235_CryptoToken_cryptoHashedToken, PASN_Sequence);
    01174 #endif
    01175   public:
    01176     H235_CryptoToken_cryptoHashedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
    01177
    01178     PASN_ObjectId m_tokenOID;
    01179     H235_ClearToken m_hashedVals;
    01180     H235_HASHED<H235_EncodedGeneralToken> m_token;
    01181
    01182     PINDEX GetDataLength() const;
    01183     PBoolean Decode(PASN_Stream & strm);
    01184     void Encode(PASN_Stream & strm) const;
    01185 #ifndef PASN_NOPRINTON
    01186     void PrintOn(ostream & strm) const;
    01187 #endif
    01188     Comparison Compare(const PObject & obj) const;
    01189     PObject * Clone() const;
    01190 };
    01191
    01192
    01193 #endif // __H235_H
    01194
    01195 #endif // if ! H323_DISABLE_H235
    01196
    01197
    01198 // End of h235.h