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
01112
01113 #endif
01114
01115
01116