00001
00002
00003
00004
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
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
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
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
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 PWORDArray & v);
00092 H235_Password & operator=(const PASN_BMPString & v);
00093 PObject * Clone() const;
00094 };
00095
00096
00097
00098
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 PWORDArray & v);
00112 H235_Identifier & operator=(const PASN_BMPString & v);
00113 PObject * Clone() const;
00114 };
00115
00116
00117
00118
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
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 BOOL 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
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 BOOL 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
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 BOOL 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
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 BOOL CreateObject();
00251 PObject * Clone() const;
00252 };
00253
00254
00255
00256
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 BOOL 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
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 BOOL 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
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 BOOL CreateObject();
00325 PObject * Clone() const;
00326 };
00327
00328
00329
00330
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 };
00354
00355 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00356 operator H235_NonStandardParameter &() const;
00357 #else
00358 operator H235_NonStandardParameter &();
00359 operator const H235_NonStandardParameter &() const;
00360 #endif
00361 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00362 operator H235_AuthenticationBES &() const;
00363 #else
00364 operator H235_AuthenticationBES &();
00365 operator const H235_AuthenticationBES &() const;
00366 #endif
00367
00368 BOOL CreateObject();
00369 PObject * Clone() const;
00370 };
00371
00372
00373
00374
00375
00376
00377 class H235_IV8 : public PASN_OctetString
00378 {
00379 #ifndef PASN_LEANANDMEAN
00380 PCLASSINFO(H235_IV8, PASN_OctetString);
00381 #endif
00382 public:
00383 H235_IV8(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
00384
00385 H235_IV8(const char * v);
00386 H235_IV8(const PString & v);
00387 H235_IV8(const PBYTEArray & v);
00388
00389 H235_IV8 & operator=(const char * v);
00390 H235_IV8 & operator=(const PString & v);
00391 H235_IV8 & operator=(const PBYTEArray & v);
00392 PObject * Clone() const;
00393 };
00394
00395
00396
00397
00398
00399
00400 class H235_IV16 : public PASN_OctetString
00401 {
00402 #ifndef PASN_LEANANDMEAN
00403 PCLASSINFO(H235_IV16, PASN_OctetString);
00404 #endif
00405 public:
00406 H235_IV16(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass);
00407
00408 H235_IV16(const char * v);
00409 H235_IV16(const PString & v);
00410 H235_IV16(const PBYTEArray & v);
00411
00412 H235_IV16 & operator=(const char * v);
00413 H235_IV16 & operator=(const PString & v);
00414 H235_IV16 & operator=(const PBYTEArray & v);
00415 PObject * Clone() const;
00416 };
00417
00418
00419
00420
00421
00422
00423 class H235_Params : public PASN_Sequence
00424 {
00425 #ifndef PASN_LEANANDMEAN
00426 PCLASSINFO(H235_Params, PASN_Sequence);
00427 #endif
00428 public:
00429 H235_Params(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00430
00431 enum OptionalFields {
00432 e_ranInt,
00433 e_iv8,
00434 e_iv16,
00435 e_iv,
00436 e_clearSalt
00437 };
00438
00439 PASN_Integer m_ranInt;
00440 H235_IV8 m_iv8;
00441 H235_IV16 m_iv16;
00442 PASN_OctetString m_iv;
00443 PASN_OctetString m_clearSalt;
00444
00445 PINDEX GetDataLength() const;
00446 BOOL Decode(PASN_Stream & strm);
00447 void Encode(PASN_Stream & strm) const;
00448 #ifndef PASN_NOPRINTON
00449 void PrintOn(ostream & strm) const;
00450 #endif
00451 Comparison Compare(const PObject & obj) const;
00452 PObject * Clone() const;
00453 };
00454
00455
00456
00457
00458
00459
00460 class H235_ReturnSig : public PASN_Sequence
00461 {
00462 #ifndef PASN_LEANANDMEAN
00463 PCLASSINFO(H235_ReturnSig, PASN_Sequence);
00464 #endif
00465 public:
00466 H235_ReturnSig(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00467
00468 enum OptionalFields {
00469 e_requestRandom,
00470 e_certificate
00471 };
00472
00473 H235_Identifier m_generalId;
00474 H235_RandomVal m_responseRandom;
00475 H235_RandomVal m_requestRandom;
00476 H235_TypedCertificate m_certificate;
00477
00478 PINDEX GetDataLength() const;
00479 BOOL Decode(PASN_Stream & strm);
00480 void Encode(PASN_Stream & strm) const;
00481 #ifndef PASN_NOPRINTON
00482 void PrintOn(ostream & strm) const;
00483 #endif
00484 Comparison Compare(const PObject & obj) const;
00485 PObject * Clone() const;
00486 };
00487
00488
00489
00490
00491
00492
00493 class H235_EncodedReturnSig : public PASN_OctetString
00494 {
00495 #ifndef PASN_LEANANDMEAN
00496 PCLASSINFO(H235_EncodedReturnSig, PASN_OctetString);
00497 #endif
00498 public:
00499 H235_EncodedReturnSig(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00500
00501 BOOL DecodeSubType(H235_ReturnSig & obj) { return PASN_OctetString::DecodeSubType(obj); }
00502 void EncodeSubType(const H235_ReturnSig & obj) { PASN_OctetString::EncodeSubType(obj); }
00503
00504 PObject * Clone() const;
00505 };
00506
00507
00508
00509
00510
00511
00512 class H235_KeySyncMaterial : public PASN_Sequence
00513 {
00514 #ifndef PASN_LEANANDMEAN
00515 PCLASSINFO(H235_KeySyncMaterial, PASN_Sequence);
00516 #endif
00517 public:
00518 H235_KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00519
00520 H235_Identifier m_generalID;
00521 H235_KeyMaterial m_keyMaterial;
00522
00523 PINDEX GetDataLength() const;
00524 BOOL Decode(PASN_Stream & strm);
00525 void Encode(PASN_Stream & strm) const;
00526 #ifndef PASN_NOPRINTON
00527 void PrintOn(ostream & strm) const;
00528 #endif
00529 Comparison Compare(const PObject & obj) const;
00530 PObject * Clone() const;
00531 };
00532
00533
00534
00535
00536
00537
00538 class H235_EncodedKeySyncMaterial : public PASN_OctetString
00539 {
00540 #ifndef PASN_LEANANDMEAN
00541 PCLASSINFO(H235_EncodedKeySyncMaterial, PASN_OctetString);
00542 #endif
00543 public:
00544 H235_EncodedKeySyncMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00545
00546 BOOL DecodeSubType(H235_KeySyncMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); }
00547 void EncodeSubType(const H235_KeySyncMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }
00548
00549 PObject * Clone() const;
00550 };
00551
00552
00553
00554
00555
00556
00557 class H235_V3KeySyncMaterial : public PASN_Sequence
00558 {
00559 #ifndef PASN_LEANANDMEAN
00560 PCLASSINFO(H235_V3KeySyncMaterial, PASN_Sequence);
00561 #endif
00562 public:
00563 H235_V3KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00564
00565 enum OptionalFields {
00566 e_generalID,
00567 e_algorithmOID,
00568 e_encryptedSessionKey,
00569 e_encryptedSaltingKey,
00570 e_clearSaltingKey,
00571 e_paramSsalt,
00572 e_keyDerivationOID
00573 };
00574
00575 H235_Identifier m_generalID;
00576 PASN_ObjectId m_algorithmOID;
00577 H235_Params m_paramS;
00578 PASN_OctetString m_encryptedSessionKey;
00579 PASN_OctetString m_encryptedSaltingKey;
00580 PASN_OctetString m_clearSaltingKey;
00581 H235_Params m_paramSsalt;
00582 PASN_ObjectId m_keyDerivationOID;
00583
00584 PINDEX GetDataLength() const;
00585 BOOL Decode(PASN_Stream & strm);
00586 void Encode(PASN_Stream & strm) const;
00587 #ifndef PASN_NOPRINTON
00588 void PrintOn(ostream & strm) const;
00589 #endif
00590 Comparison Compare(const PObject & obj) const;
00591 PObject * Clone() const;
00592 };
00593
00594
00595
00596
00597
00598
00599 class H235_ECKASDH_eckasdhp : public PASN_Sequence
00600 {
00601 #ifndef PASN_LEANANDMEAN
00602 PCLASSINFO(H235_ECKASDH_eckasdhp, PASN_Sequence);
00603 #endif
00604 public:
00605 H235_ECKASDH_eckasdhp(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00606
00607 H235_ECpoint m_public_key;
00608 PASN_BitString m_modulus;
00609 H235_ECpoint m_base;
00610 PASN_BitString m_weierstrassA;
00611 PASN_BitString m_weierstrassB;
00612
00613 PINDEX GetDataLength() const;
00614 BOOL Decode(PASN_Stream & strm);
00615 void Encode(PASN_Stream & strm) const;
00616 #ifndef PASN_NOPRINTON
00617 void PrintOn(ostream & strm) const;
00618 #endif
00619 Comparison Compare(const PObject & obj) const;
00620 PObject * Clone() const;
00621 };
00622
00623
00624
00625
00626
00627
00628 class H235_ECKASDH_eckasdh2 : public PASN_Sequence
00629 {
00630 #ifndef PASN_LEANANDMEAN
00631 PCLASSINFO(H235_ECKASDH_eckasdh2, PASN_Sequence);
00632 #endif
00633 public:
00634 H235_ECKASDH_eckasdh2(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00635
00636 H235_ECpoint m_public_key;
00637 PASN_BitString m_fieldSize;
00638 H235_ECpoint m_base;
00639 PASN_BitString m_weierstrassA;
00640 PASN_BitString m_weierstrassB;
00641
00642 PINDEX GetDataLength() const;
00643 BOOL Decode(PASN_Stream & strm);
00644 void Encode(PASN_Stream & strm) const;
00645 #ifndef PASN_NOPRINTON
00646 void PrintOn(ostream & strm) const;
00647 #endif
00648 Comparison Compare(const PObject & obj) const;
00649 PObject * Clone() const;
00650 };
00651
00652
00653
00654
00655
00656
00657 template <class ToBeSigned>
00658 class H235_SIGNED : public PASN_Sequence
00659 {
00660 #ifndef PASN_LEANANDMEAN
00661 PCLASSINFO(H235_SIGNED, PASN_Sequence);
00662 #endif
00663 public:
00664 H235_SIGNED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00665
00666 ToBeSigned m_toBeSigned;
00667 PASN_ObjectId m_algorithmOID;
00668 H235_Params m_paramS;
00669 PASN_BitString m_signature;
00670
00671 PINDEX GetDataLength() const;
00672 BOOL Decode(PASN_Stream & strm);
00673 void Encode(PASN_Stream & strm) const;
00674 #ifndef PASN_NOPRINTON
00675 void PrintOn(ostream & strm) const;
00676 #endif
00677 Comparison Compare(const PObject & obj) const;
00678 PObject * Clone() const;
00679 };
00680
00681
00682
00683
00684
00685
00686 template <class ToBeEncrypted>
00687 class H235_ENCRYPTED : public PASN_Sequence
00688 {
00689 #ifndef PASN_LEANANDMEAN
00690 PCLASSINFO(H235_ENCRYPTED, PASN_Sequence);
00691 #endif
00692 public:
00693 H235_ENCRYPTED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00694
00695 PASN_ObjectId m_algorithmOID;
00696 H235_Params m_paramS;
00697 PASN_OctetString m_encryptedData;
00698
00699 PINDEX GetDataLength() const;
00700 BOOL Decode(PASN_Stream & strm);
00701 void Encode(PASN_Stream & strm) const;
00702 #ifndef PASN_NOPRINTON
00703 void PrintOn(ostream & strm) const;
00704 #endif
00705 Comparison Compare(const PObject & obj) const;
00706 PObject * Clone() const;
00707 };
00708
00709
00710
00711
00712
00713
00714 template <class ToBeHashed>
00715 class H235_HASHED : public PASN_Sequence
00716 {
00717 #ifndef PASN_LEANANDMEAN
00718 PCLASSINFO(H235_HASHED, PASN_Sequence);
00719 #endif
00720 public:
00721 H235_HASHED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00722
00723 PASN_ObjectId m_algorithmOID;
00724 H235_Params m_paramS;
00725 PASN_BitString m_hash;
00726
00727 PINDEX GetDataLength() const;
00728 BOOL Decode(PASN_Stream & strm);
00729 void Encode(PASN_Stream & strm) const;
00730 #ifndef PASN_NOPRINTON
00731 void PrintOn(ostream & strm) const;
00732 #endif
00733 Comparison Compare(const PObject & obj) const;
00734 PObject * Clone() const;
00735 };
00736
00737
00738
00739
00740
00741
00742 class H235_KeySignedMaterial : public PASN_Sequence
00743 {
00744 #ifndef PASN_LEANANDMEAN
00745 PCLASSINFO(H235_KeySignedMaterial, PASN_Sequence);
00746 #endif
00747 public:
00748 H235_KeySignedMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00749
00750 enum OptionalFields {
00751 e_srandom,
00752 e_timeStamp
00753 };
00754
00755 H235_Identifier m_generalId;
00756 H235_RandomVal m_mrandom;
00757 H235_RandomVal m_srandom;
00758 H235_TimeStamp m_timeStamp;
00759 H235_ENCRYPTED<H235_EncodedKeySyncMaterial> m_encrptval;
00760
00761 PINDEX GetDataLength() const;
00762 BOOL Decode(PASN_Stream & strm);
00763 void Encode(PASN_Stream & strm) const;
00764 #ifndef PASN_NOPRINTON
00765 void PrintOn(ostream & strm) const;
00766 #endif
00767 Comparison Compare(const PObject & obj) const;
00768 PObject * Clone() const;
00769 };
00770
00771
00772
00773
00774
00775
00776 class H235_EncodedKeySignedMaterial : public PASN_OctetString
00777 {
00778 #ifndef PASN_LEANANDMEAN
00779 PCLASSINFO(H235_EncodedKeySignedMaterial, PASN_OctetString);
00780 #endif
00781 public:
00782 H235_EncodedKeySignedMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00783
00784 BOOL DecodeSubType(H235_KeySignedMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); }
00785 void EncodeSubType(const H235_KeySignedMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }
00786
00787 PObject * Clone() const;
00788 };
00789
00790
00791
00792
00793
00794
00795 class H235_H235CertificateSignature : public PASN_Sequence
00796 {
00797 #ifndef PASN_LEANANDMEAN
00798 PCLASSINFO(H235_H235CertificateSignature, PASN_Sequence);
00799 #endif
00800 public:
00801 H235_H235CertificateSignature(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00802
00803 enum OptionalFields {
00804 e_requesterRandom
00805 };
00806
00807 H235_TypedCertificate m_certificate;
00808 H235_RandomVal m_responseRandom;
00809 H235_RandomVal m_requesterRandom;
00810 H235_SIGNED<H235_EncodedReturnSig> m_signature;
00811
00812 PINDEX GetDataLength() const;
00813 BOOL Decode(PASN_Stream & strm);
00814 void Encode(PASN_Stream & strm) const;
00815 #ifndef PASN_NOPRINTON
00816 void PrintOn(ostream & strm) const;
00817 #endif
00818 Comparison Compare(const PObject & obj) const;
00819 PObject * Clone() const;
00820 };
00821
00822
00823
00824
00825
00826
00827 class H235_KeyMaterial;
00828 class H235_V3KeySyncMaterial;
00829
00830 class H235_H235Key : public PASN_Choice
00831 {
00832 #ifndef PASN_LEANANDMEAN
00833 PCLASSINFO(H235_H235Key, PASN_Choice);
00834 #endif
00835 public:
00836 H235_H235Key(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00837
00838 enum Choices {
00839 e_secureChannel,
00840 e_sharedSecret,
00841 e_certProtectedKey,
00842 e_secureSharedSecret
00843 };
00844
00845 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00846 operator H235_KeyMaterial &() const;
00847 #else
00848 operator H235_KeyMaterial &();
00849 operator const H235_KeyMaterial &() const;
00850 #endif
00851 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00852 operator H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &() const;
00853 #else
00854 operator H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &();
00855 operator const H235_ENCRYPTED<H235_EncodedKeySyncMaterial> &() const;
00856 #endif
00857 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00858 operator H235_SIGNED<H235_EncodedKeySignedMaterial> &() const;
00859 #else
00860 operator H235_SIGNED<H235_EncodedKeySignedMaterial> &();
00861 operator const H235_SIGNED<H235_EncodedKeySignedMaterial> &() const;
00862 #endif
00863 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
00864 operator H235_V3KeySyncMaterial &() const;
00865 #else
00866 operator H235_V3KeySyncMaterial &();
00867 operator const H235_V3KeySyncMaterial &() const;
00868 #endif
00869
00870 BOOL CreateObject();
00871 PObject * Clone() const;
00872 };
00873
00874
00875
00876
00877
00878
00879 class H235_ClearToken : public PASN_Sequence
00880 {
00881 #ifndef PASN_LEANANDMEAN
00882 PCLASSINFO(H235_ClearToken, PASN_Sequence);
00883 #endif
00884 public:
00885 H235_ClearToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00886
00887 enum OptionalFields {
00888 e_timeStamp,
00889 e_password,
00890 e_dhkey,
00891 e_challenge,
00892 e_random,
00893 e_certificate,
00894 e_generalID,
00895 e_nonStandard,
00896 e_eckasdhkey,
00897 e_sendersID,
00898 e_h235Key
00899 };
00900
00901 PASN_ObjectId m_tokenOID;
00902 H235_TimeStamp m_timeStamp;
00903 H235_Password m_password;
00904 H235_DHset m_dhkey;
00905 H235_ChallengeString m_challenge;
00906 H235_RandomVal m_random;
00907 H235_TypedCertificate m_certificate;
00908 H235_Identifier m_generalID;
00909 H235_NonStandardParameter m_nonStandard;
00910 H235_ECKASDH m_eckasdhkey;
00911 H235_Identifier m_sendersID;
00912 H235_H235Key m_h235Key;
00913
00914 PINDEX GetDataLength() const;
00915 BOOL Decode(PASN_Stream & strm);
00916 void Encode(PASN_Stream & strm) const;
00917 #ifndef PASN_NOPRINTON
00918 void PrintOn(ostream & strm) const;
00919 #endif
00920 Comparison Compare(const PObject & obj) const;
00921 PObject * Clone() const;
00922 };
00923
00924
00925
00926
00927
00928
00929 class H235_EncodedGeneralToken : public PASN_OctetString
00930 {
00931 #ifndef PASN_LEANANDMEAN
00932 PCLASSINFO(H235_EncodedGeneralToken, PASN_OctetString);
00933 #endif
00934 public:
00935 H235_EncodedGeneralToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00936
00937 BOOL DecodeSubType(H235_ClearToken & obj) { return PASN_OctetString::DecodeSubType(obj); }
00938 void EncodeSubType(const H235_ClearToken & obj) { PASN_OctetString::EncodeSubType(obj); }
00939
00940 PObject * Clone() const;
00941 };
00942
00943
00944
00945
00946
00947
00948 class H235_PwdCertToken : public H235_ClearToken
00949 {
00950 #ifndef PASN_LEANANDMEAN
00951 PCLASSINFO(H235_PwdCertToken, H235_ClearToken);
00952 #endif
00953 public:
00954 H235_PwdCertToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
00955
00956 PObject * Clone() const;
00957 };
00958
00959
00960
00961
00962
00963
00964 class H235_EncodedPwdCertToken : public PASN_OctetString
00965 {
00966 #ifndef PASN_LEANANDMEAN
00967 PCLASSINFO(H235_EncodedPwdCertToken, PASN_OctetString);
00968 #endif
00969 public:
00970 H235_EncodedPwdCertToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00971
00972 BOOL DecodeSubType(H235_PwdCertToken & obj) { return PASN_OctetString::DecodeSubType(obj); }
00973 void EncodeSubType(const H235_PwdCertToken & obj) { PASN_OctetString::EncodeSubType(obj); }
00974
00975 PObject * Clone() const;
00976 };
00977
00978
00979
00980
00981
00982
00983 class H235_CryptoToken_cryptoEncryptedToken;
00984 class H235_CryptoToken_cryptoSignedToken;
00985 class H235_CryptoToken_cryptoHashedToken;
00986
00987 class H235_CryptoToken : public PASN_Choice
00988 {
00989 #ifndef PASN_LEANANDMEAN
00990 PCLASSINFO(H235_CryptoToken, PASN_Choice);
00991 #endif
00992 public:
00993 H235_CryptoToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass);
00994
00995 enum Choices {
00996 e_cryptoEncryptedToken,
00997 e_cryptoSignedToken,
00998 e_cryptoHashedToken,
00999 e_cryptoPwdEncr
01000 };
01001
01002 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
01003 operator H235_CryptoToken_cryptoEncryptedToken &() const;
01004 #else
01005 operator H235_CryptoToken_cryptoEncryptedToken &();
01006 operator const H235_CryptoToken_cryptoEncryptedToken &() const;
01007 #endif
01008 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
01009 operator H235_CryptoToken_cryptoSignedToken &() const;
01010 #else
01011 operator H235_CryptoToken_cryptoSignedToken &();
01012 operator const H235_CryptoToken_cryptoSignedToken &() const;
01013 #endif
01014 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
01015 operator H235_CryptoToken_cryptoHashedToken &() const;
01016 #else
01017 operator H235_CryptoToken_cryptoHashedToken &();
01018 operator const H235_CryptoToken_cryptoHashedToken &() const;
01019 #endif
01020 #if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9
01021 operator H235_ENCRYPTED<H235_EncodedPwdCertToken> &() const;
01022 #else
01023 operator H235_ENCRYPTED<H235_EncodedPwdCertToken> &();
01024 operator const H235_ENCRYPTED<H235_EncodedPwdCertToken> &() const;
01025 #endif
01026
01027 BOOL CreateObject();
01028 PObject * Clone() const;
01029 };
01030
01031
01032
01033
01034
01035
01036 class H235_CryptoToken_cryptoEncryptedToken : public PASN_Sequence
01037 {
01038 #ifndef PASN_LEANANDMEAN
01039 PCLASSINFO(H235_CryptoToken_cryptoEncryptedToken, PASN_Sequence);
01040 #endif
01041 public:
01042 H235_CryptoToken_cryptoEncryptedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
01043
01044 PASN_ObjectId m_tokenOID;
01045 H235_ENCRYPTED<H235_EncodedGeneralToken> m_token;
01046
01047 PINDEX GetDataLength() const;
01048 BOOL Decode(PASN_Stream & strm);
01049 void Encode(PASN_Stream & strm) const;
01050 #ifndef PASN_NOPRINTON
01051 void PrintOn(ostream & strm) const;
01052 #endif
01053 Comparison Compare(const PObject & obj) const;
01054 PObject * Clone() const;
01055 };
01056
01057
01058
01059
01060
01061
01062 class H235_CryptoToken_cryptoSignedToken : public PASN_Sequence
01063 {
01064 #ifndef PASN_LEANANDMEAN
01065 PCLASSINFO(H235_CryptoToken_cryptoSignedToken, PASN_Sequence);
01066 #endif
01067 public:
01068 H235_CryptoToken_cryptoSignedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
01069
01070 PASN_ObjectId m_tokenOID;
01071 H235_SIGNED<H235_EncodedGeneralToken> m_token;
01072
01073 PINDEX GetDataLength() const;
01074 BOOL Decode(PASN_Stream & strm);
01075 void Encode(PASN_Stream & strm) const;
01076 #ifndef PASN_NOPRINTON
01077 void PrintOn(ostream & strm) const;
01078 #endif
01079 Comparison Compare(const PObject & obj) const;
01080 PObject * Clone() const;
01081 };
01082
01083
01084
01085
01086
01087
01088 class H235_CryptoToken_cryptoHashedToken : public PASN_Sequence
01089 {
01090 #ifndef PASN_LEANANDMEAN
01091 PCLASSINFO(H235_CryptoToken_cryptoHashedToken, PASN_Sequence);
01092 #endif
01093 public:
01094 H235_CryptoToken_cryptoHashedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass);
01095
01096 PASN_ObjectId m_tokenOID;
01097 H235_ClearToken m_hashedVals;
01098 H235_HASHED<H235_EncodedGeneralToken> m_token;
01099
01100 PINDEX GetDataLength() const;
01101 BOOL Decode(PASN_Stream & strm);
01102 void Encode(PASN_Stream & strm) const;
01103 #ifndef PASN_NOPRINTON
01104 void PrintOn(ostream & strm) const;
01105 #endif
01106 Comparison Compare(const PObject & obj) const;
01107 PObject * Clone() const;
01108 };
01109
01110
01111 #endif // __H235_H
01112
01113 #endif // if ! H323_DISABLE_H235
01114
01115
01116