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