www.pudn.com > openh323-v1_15_1-src.zip > h235.h


// 
// h235.h 
// 
// Code automatically generated by asnparse. 
// 
 
#if ! H323_DISABLE_H235 
 
#ifndef __H235_H 
#define __H235_H 
 
#ifdef P_USE_PRAGMA 
#pragma interface 
#endif 
 
#include  
 
// 
// ChallengeString 
// 
 
class H235_ChallengeString : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ChallengeString, PASN_OctetString); 
#endif 
  public: 
    H235_ChallengeString(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass); 
 
    H235_ChallengeString(const char * v); 
    H235_ChallengeString(const PString & v); 
    H235_ChallengeString(const PBYTEArray & v); 
 
    H235_ChallengeString & operator=(const char * v); 
    H235_ChallengeString & operator=(const PString & v); 
    H235_ChallengeString & operator=(const PBYTEArray & v); 
    PObject * Clone() const; 
}; 
 
 
// 
// TimeStamp 
// 
 
class H235_TimeStamp : public PASN_Integer 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_TimeStamp, PASN_Integer); 
#endif 
  public: 
    H235_TimeStamp(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass); 
 
    H235_TimeStamp & operator=(int v); 
    H235_TimeStamp & operator=(unsigned v); 
    PObject * Clone() const; 
}; 
 
 
// 
// RandomVal 
// 
 
class H235_RandomVal : public PASN_Integer 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_RandomVal, PASN_Integer); 
#endif 
  public: 
    H235_RandomVal(unsigned tag = UniversalInteger, TagClass tagClass = UniversalTagClass); 
 
    H235_RandomVal & operator=(int v); 
    H235_RandomVal & operator=(unsigned v); 
    PObject * Clone() const; 
}; 
 
 
// 
// Password 
// 
 
class H235_Password : public PASN_BMPString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_Password, PASN_BMPString); 
#endif 
  public: 
    H235_Password(unsigned tag = UniversalBMPString, TagClass tagClass = UniversalTagClass); 
 
    H235_Password & operator=(const char * v); 
    H235_Password & operator=(const PString & v); 
    H235_Password & operator=(const PWORDArray & v); 
    H235_Password & operator=(const PASN_BMPString & v); 
    PObject * Clone() const; 
}; 
 
 
// 
// Identifier 
// 
 
class H235_Identifier : public PASN_BMPString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_Identifier, PASN_BMPString); 
#endif 
  public: 
    H235_Identifier(unsigned tag = UniversalBMPString, TagClass tagClass = UniversalTagClass); 
 
    H235_Identifier & operator=(const char * v); 
    H235_Identifier & operator=(const PString & v); 
    H235_Identifier & operator=(const PWORDArray & v); 
    H235_Identifier & operator=(const PASN_BMPString & v); 
    PObject * Clone() const; 
}; 
 
 
// 
// KeyMaterial 
// 
 
class H235_KeyMaterial : public PASN_BitString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_KeyMaterial, PASN_BitString); 
#endif 
  public: 
    H235_KeyMaterial(unsigned tag = UniversalBitString, TagClass tagClass = UniversalTagClass); 
 
    PObject * Clone() const; 
}; 
 
 
// 
// NonStandardParameter 
// 
 
class H235_NonStandardParameter : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_NonStandardParameter, PASN_Sequence); 
#endif 
  public: 
    H235_NonStandardParameter(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_nonStandardIdentifier; 
    PASN_OctetString m_data; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// DHset 
// 
 
class H235_DHset : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_DHset, PASN_Sequence); 
#endif 
  public: 
    H235_DHset(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_BitString m_halfkey; 
    PASN_BitString m_modSize; 
    PASN_BitString m_generator; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ECpoint 
// 
 
class H235_ECpoint : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ECpoint, PASN_Sequence); 
#endif 
  public: 
    H235_ECpoint(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_x, 
      e_y 
    }; 
 
    PASN_BitString m_x; 
    PASN_BitString m_y; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ECKASDH 
// 
 
class H235_ECKASDH_eckasdhp; 
class H235_ECKASDH_eckasdh2; 
 
class H235_ECKASDH : public PASN_Choice 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ECKASDH, PASN_Choice); 
#endif 
  public: 
    H235_ECKASDH(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    enum Choices { 
      e_eckasdhp, 
      e_eckasdh2 
    }; 
 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_ECKASDH_eckasdhp &() const; 
#else 
    operator H235_ECKASDH_eckasdhp &(); 
    operator const H235_ECKASDH_eckasdhp &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_ECKASDH_eckasdh2 &() const; 
#else 
    operator H235_ECKASDH_eckasdh2 &(); 
    operator const H235_ECKASDH_eckasdh2 &() const; 
#endif 
 
    BOOL CreateObject(); 
    PObject * Clone() const; 
}; 
 
 
// 
// ECGDSASignature 
// 
 
class H235_ECGDSASignature : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ECGDSASignature, PASN_Sequence); 
#endif 
  public: 
    H235_ECGDSASignature(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_BitString m_r; 
    PASN_BitString m_s; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// TypedCertificate 
// 
 
class H235_TypedCertificate : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_TypedCertificate, PASN_Sequence); 
#endif 
  public: 
    H235_TypedCertificate(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_type; 
    PASN_OctetString m_certificate; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// AuthenticationBES 
// 
 
class H235_AuthenticationBES : public PASN_Choice 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_AuthenticationBES, PASN_Choice); 
#endif 
  public: 
    H235_AuthenticationBES(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    enum Choices { 
      e_default, 
      e_radius 
    }; 
 
    BOOL CreateObject(); 
    PObject * Clone() const; 
}; 
 
 
// 
// AuthenticationMechanism 
// 
 
class H235_NonStandardParameter; 
class H235_AuthenticationBES; 
 
class H235_AuthenticationMechanism : public PASN_Choice 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_AuthenticationMechanism, PASN_Choice); 
#endif 
  public: 
    H235_AuthenticationMechanism(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    enum Choices { 
      e_dhExch, 
      e_pwdSymEnc, 
      e_pwdHash, 
      e_certSign, 
      e_ipsec, 
      e_tls, 
      e_nonStandard, 
      e_authenticationBES 
    }; 
 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_NonStandardParameter &() const; 
#else 
    operator H235_NonStandardParameter &(); 
    operator const H235_NonStandardParameter &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_AuthenticationBES &() const; 
#else 
    operator H235_AuthenticationBES &(); 
    operator const H235_AuthenticationBES &() const; 
#endif 
 
    BOOL CreateObject(); 
    PObject * Clone() const; 
}; 
 
 
// 
// IV8 
// 
 
class H235_IV8 : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_IV8, PASN_OctetString); 
#endif 
  public: 
    H235_IV8(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass); 
 
    H235_IV8(const char * v); 
    H235_IV8(const PString & v); 
    H235_IV8(const PBYTEArray & v); 
 
    H235_IV8 & operator=(const char * v); 
    H235_IV8 & operator=(const PString & v); 
    H235_IV8 & operator=(const PBYTEArray & v); 
    PObject * Clone() const; 
}; 
 
 
// 
// IV16 
// 
 
class H235_IV16 : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_IV16, PASN_OctetString); 
#endif 
  public: 
    H235_IV16(unsigned tag = UniversalOctetString, TagClass tagClass = UniversalTagClass); 
 
    H235_IV16(const char * v); 
    H235_IV16(const PString & v); 
    H235_IV16(const PBYTEArray & v); 
 
    H235_IV16 & operator=(const char * v); 
    H235_IV16 & operator=(const PString & v); 
    H235_IV16 & operator=(const PBYTEArray & v); 
    PObject * Clone() const; 
}; 
 
 
// 
// Params 
// 
 
class H235_Params : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_Params, PASN_Sequence); 
#endif 
  public: 
    H235_Params(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_ranInt, 
      e_iv8, 
      e_iv16, 
      e_iv, 
      e_clearSalt 
    }; 
 
    PASN_Integer m_ranInt; 
    H235_IV8 m_iv8; 
    H235_IV16 m_iv16; 
    PASN_OctetString m_iv; 
    PASN_OctetString m_clearSalt; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ReturnSig 
// 
 
class H235_ReturnSig : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ReturnSig, PASN_Sequence); 
#endif 
  public: 
    H235_ReturnSig(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_requestRandom, 
      e_certificate 
    }; 
 
    H235_Identifier m_generalId; 
    H235_RandomVal m_responseRandom; 
    H235_RandomVal m_requestRandom; 
    H235_TypedCertificate m_certificate; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// EncodedReturnSig 
// 
 
class H235_EncodedReturnSig : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_EncodedReturnSig, PASN_OctetString); 
#endif 
  public: 
    H235_EncodedReturnSig(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    BOOL DecodeSubType(H235_ReturnSig & obj) { return PASN_OctetString::DecodeSubType(obj); } 
    void EncodeSubType(const H235_ReturnSig & obj) { PASN_OctetString::EncodeSubType(obj); }  
 
    PObject * Clone() const; 
}; 
 
 
// 
// KeySyncMaterial 
// 
 
class H235_KeySyncMaterial : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_KeySyncMaterial, PASN_Sequence); 
#endif 
  public: 
    H235_KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    H235_Identifier m_generalID; 
    H235_KeyMaterial m_keyMaterial; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// EncodedKeySyncMaterial 
// 
 
class H235_EncodedKeySyncMaterial : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_EncodedKeySyncMaterial, PASN_OctetString); 
#endif 
  public: 
    H235_EncodedKeySyncMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    BOOL DecodeSubType(H235_KeySyncMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); } 
    void EncodeSubType(const H235_KeySyncMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }  
 
    PObject * Clone() const; 
}; 
 
 
// 
// V3KeySyncMaterial 
// 
 
class H235_V3KeySyncMaterial : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_V3KeySyncMaterial, PASN_Sequence); 
#endif 
  public: 
    H235_V3KeySyncMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_generalID, 
      e_algorithmOID, 
      e_encryptedSessionKey, 
      e_encryptedSaltingKey, 
      e_clearSaltingKey, 
      e_paramSsalt, 
      e_keyDerivationOID 
    }; 
 
    H235_Identifier m_generalID; 
    PASN_ObjectId m_algorithmOID; 
    H235_Params m_paramS; 
    PASN_OctetString m_encryptedSessionKey; 
    PASN_OctetString m_encryptedSaltingKey; 
    PASN_OctetString m_clearSaltingKey; 
    H235_Params m_paramSsalt; 
    PASN_ObjectId m_keyDerivationOID; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ECKASDH_eckasdhp 
// 
 
class H235_ECKASDH_eckasdhp : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ECKASDH_eckasdhp, PASN_Sequence); 
#endif 
  public: 
    H235_ECKASDH_eckasdhp(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    H235_ECpoint m_public_key; 
    PASN_BitString m_modulus; 
    H235_ECpoint m_base; 
    PASN_BitString m_weierstrassA; 
    PASN_BitString m_weierstrassB; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ECKASDH_eckasdh2 
// 
 
class H235_ECKASDH_eckasdh2 : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ECKASDH_eckasdh2, PASN_Sequence); 
#endif 
  public: 
    H235_ECKASDH_eckasdh2(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    H235_ECpoint m_public_key; 
    PASN_BitString m_fieldSize; 
    H235_ECpoint m_base; 
    PASN_BitString m_weierstrassA; 
    PASN_BitString m_weierstrassB; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// SIGNED 
// 
 
template  
class H235_SIGNED : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_SIGNED, PASN_Sequence); 
#endif 
  public: 
    H235_SIGNED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    ToBeSigned m_toBeSigned; 
    PASN_ObjectId m_algorithmOID; 
    H235_Params m_paramS; 
    PASN_BitString m_signature; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// ENCRYPTED 
// 
 
template  
class H235_ENCRYPTED : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ENCRYPTED, PASN_Sequence); 
#endif 
  public: 
    H235_ENCRYPTED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_algorithmOID; 
    H235_Params m_paramS; 
    PASN_OctetString m_encryptedData; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// HASHED 
// 
 
template  
class H235_HASHED : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_HASHED, PASN_Sequence); 
#endif 
  public: 
    H235_HASHED(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_algorithmOID; 
    H235_Params m_paramS; 
    PASN_BitString m_hash; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// KeySignedMaterial 
// 
 
class H235_KeySignedMaterial : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_KeySignedMaterial, PASN_Sequence); 
#endif 
  public: 
    H235_KeySignedMaterial(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_srandom, 
      e_timeStamp 
    }; 
 
    H235_Identifier m_generalId; 
    H235_RandomVal m_mrandom; 
    H235_RandomVal m_srandom; 
    H235_TimeStamp m_timeStamp; 
    H235_ENCRYPTED m_encrptval; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// EncodedKeySignedMaterial 
// 
 
class H235_EncodedKeySignedMaterial : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_EncodedKeySignedMaterial, PASN_OctetString); 
#endif 
  public: 
    H235_EncodedKeySignedMaterial(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    BOOL DecodeSubType(H235_KeySignedMaterial & obj) { return PASN_OctetString::DecodeSubType(obj); } 
    void EncodeSubType(const H235_KeySignedMaterial & obj) { PASN_OctetString::EncodeSubType(obj); }  
 
    PObject * Clone() const; 
}; 
 
 
// 
// H235CertificateSignature 
// 
 
class H235_H235CertificateSignature : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_H235CertificateSignature, PASN_Sequence); 
#endif 
  public: 
    H235_H235CertificateSignature(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_requesterRandom 
    }; 
 
    H235_TypedCertificate m_certificate; 
    H235_RandomVal m_responseRandom; 
    H235_RandomVal m_requesterRandom; 
    H235_SIGNED m_signature; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// H235Key 
// 
 
class H235_KeyMaterial; 
class H235_V3KeySyncMaterial; 
 
class H235_H235Key : public PASN_Choice 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_H235Key, PASN_Choice); 
#endif 
  public: 
    H235_H235Key(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    enum Choices { 
      e_secureChannel, 
      e_sharedSecret, 
      e_certProtectedKey, 
      e_secureSharedSecret 
    }; 
 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_KeyMaterial &() const; 
#else 
    operator H235_KeyMaterial &(); 
    operator const H235_KeyMaterial &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_ENCRYPTED &() const; 
#else 
    operator H235_ENCRYPTED &(); 
    operator const H235_ENCRYPTED &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_SIGNED &() const; 
#else 
    operator H235_SIGNED &(); 
    operator const H235_SIGNED &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_V3KeySyncMaterial &() const; 
#else 
    operator H235_V3KeySyncMaterial &(); 
    operator const H235_V3KeySyncMaterial &() const; 
#endif 
 
    BOOL CreateObject(); 
    PObject * Clone() const; 
}; 
 
 
// 
// ClearToken 
// 
 
class H235_ClearToken : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_ClearToken, PASN_Sequence); 
#endif 
  public: 
    H235_ClearToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    enum OptionalFields { 
      e_timeStamp, 
      e_password, 
      e_dhkey, 
      e_challenge, 
      e_random, 
      e_certificate, 
      e_generalID, 
      e_nonStandard, 
      e_eckasdhkey, 
      e_sendersID, 
      e_h235Key 
    }; 
 
    PASN_ObjectId m_tokenOID; 
    H235_TimeStamp m_timeStamp; 
    H235_Password m_password; 
    H235_DHset m_dhkey; 
    H235_ChallengeString m_challenge; 
    H235_RandomVal m_random; 
    H235_TypedCertificate m_certificate; 
    H235_Identifier m_generalID; 
    H235_NonStandardParameter m_nonStandard; 
    H235_ECKASDH m_eckasdhkey; 
    H235_Identifier m_sendersID; 
    H235_H235Key m_h235Key; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// EncodedGeneralToken 
// 
 
class H235_EncodedGeneralToken : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_EncodedGeneralToken, PASN_OctetString); 
#endif 
  public: 
    H235_EncodedGeneralToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    BOOL DecodeSubType(H235_ClearToken & obj) { return PASN_OctetString::DecodeSubType(obj); } 
    void EncodeSubType(const H235_ClearToken & obj) { PASN_OctetString::EncodeSubType(obj); }  
 
    PObject * Clone() const; 
}; 
 
 
// 
// PwdCertToken 
// 
 
class H235_PwdCertToken : public H235_ClearToken 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_PwdCertToken, H235_ClearToken); 
#endif 
  public: 
    H235_PwdCertToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PObject * Clone() const; 
}; 
 
 
// 
// EncodedPwdCertToken 
// 
 
class H235_EncodedPwdCertToken : public PASN_OctetString 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_EncodedPwdCertToken, PASN_OctetString); 
#endif 
  public: 
    H235_EncodedPwdCertToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    BOOL DecodeSubType(H235_PwdCertToken & obj) { return PASN_OctetString::DecodeSubType(obj); } 
    void EncodeSubType(const H235_PwdCertToken & obj) { PASN_OctetString::EncodeSubType(obj); }  
 
    PObject * Clone() const; 
}; 
 
 
// 
// CryptoToken 
// 
 
class H235_CryptoToken_cryptoEncryptedToken; 
class H235_CryptoToken_cryptoSignedToken; 
class H235_CryptoToken_cryptoHashedToken; 
 
class H235_CryptoToken : public PASN_Choice 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_CryptoToken, PASN_Choice); 
#endif 
  public: 
    H235_CryptoToken(unsigned tag = 0, TagClass tagClass = UniversalTagClass); 
 
    enum Choices { 
      e_cryptoEncryptedToken, 
      e_cryptoSignedToken, 
      e_cryptoHashedToken, 
      e_cryptoPwdEncr 
    }; 
 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_CryptoToken_cryptoEncryptedToken &() const; 
#else 
    operator H235_CryptoToken_cryptoEncryptedToken &(); 
    operator const H235_CryptoToken_cryptoEncryptedToken &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_CryptoToken_cryptoSignedToken &() const; 
#else 
    operator H235_CryptoToken_cryptoSignedToken &(); 
    operator const H235_CryptoToken_cryptoSignedToken &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_CryptoToken_cryptoHashedToken &() const; 
#else 
    operator H235_CryptoToken_cryptoHashedToken &(); 
    operator const H235_CryptoToken_cryptoHashedToken &() const; 
#endif 
#if defined(__GNUC__) && __GNUC__ <= 2 && __GNUC_MINOR__ < 9 
    operator H235_ENCRYPTED &() const; 
#else 
    operator H235_ENCRYPTED &(); 
    operator const H235_ENCRYPTED &() const; 
#endif 
 
    BOOL CreateObject(); 
    PObject * Clone() const; 
}; 
 
 
// 
// CryptoToken_cryptoEncryptedToken 
// 
 
class H235_CryptoToken_cryptoEncryptedToken : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_CryptoToken_cryptoEncryptedToken, PASN_Sequence); 
#endif 
  public: 
    H235_CryptoToken_cryptoEncryptedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_tokenOID; 
    H235_ENCRYPTED m_token; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// CryptoToken_cryptoSignedToken 
// 
 
class H235_CryptoToken_cryptoSignedToken : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_CryptoToken_cryptoSignedToken, PASN_Sequence); 
#endif 
  public: 
    H235_CryptoToken_cryptoSignedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_tokenOID; 
    H235_SIGNED m_token; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
// 
// CryptoToken_cryptoHashedToken 
// 
 
class H235_CryptoToken_cryptoHashedToken : public PASN_Sequence 
{ 
#ifndef PASN_LEANANDMEAN 
    PCLASSINFO(H235_CryptoToken_cryptoHashedToken, PASN_Sequence); 
#endif 
  public: 
    H235_CryptoToken_cryptoHashedToken(unsigned tag = UniversalSequence, TagClass tagClass = UniversalTagClass); 
 
    PASN_ObjectId m_tokenOID; 
    H235_ClearToken m_hashedVals; 
    H235_HASHED m_token; 
 
    PINDEX GetDataLength() const; 
    BOOL Decode(PASN_Stream & strm); 
    void Encode(PASN_Stream & strm) const; 
#ifndef PASN_NOPRINTON 
    void PrintOn(ostream & strm) const; 
#endif 
    Comparison Compare(const PObject & obj) const; 
    PObject * Clone() const; 
}; 
 
 
#endif // __H235_H 
 
#endif // if ! H323_DISABLE_H235 
 
 
// End of h235.h