// NOTE: this is a machine generated file--editing not recommended // // sm_x509cmn.h - class definitions for ASN.1 module CommonX509Definitions // // This file was generated by snacc on Mon Apr 22 22:34:19 2002 // UBC snacc by Mike Sample // A couple of enhancements made by IBM European Networking Center #ifndef _sm_x509cmn_h_ #define _sm_x509cmn_h_ //------------------------------------------------------------------------------ // class declarations: class EDIPartyName; class GeneralName; class GeneralNames; //------------------------------------------------------------------------------ // class definitions: /* OBJECT IDENTIFIER */ typedef AsnOid OTHER_NAME; class EDIPartyName: public AsnType { public: DirectoryString *nameAssigner; DirectoryString *partyName; EDIPartyName(); EDIPartyName (const EDIPartyName &); virtual ~EDIPartyName(); virtual AsnType *Clone() const; virtual AsnType *Copy() const; EDIPartyName &operator = (const EDIPartyName &); AsnLen BEncContent (BUF_TYPE b); void BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env); AsnLen BEnc (BUF_TYPE b); void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env); void Print (ostream &os) const; }; class GeneralName: public AsnType { public: enum ChoiceIdEnum { otherNameCid = 0, rfc822NameCid = 1, dNSNameCid = 2, x400AddressCid = 3, directoryNameCid = 4, ediPartyNameCid = 5, uniformResourceIdentifierCid = 6, iPAddressCid = 7, registeredIDCid = 8 }; enum ChoiceIdEnum choiceId; union { OTHER_NAME *otherName; IA5String *rfc822Name; IA5String *dNSName; ORAddress *x400Address; Name *directoryName; EDIPartyName *ediPartyName; IA5String *uniformResourceIdentifier; AsnOcts *iPAddress; AsnOid *registeredID; }; GeneralName(); GeneralName (const GeneralName &); virtual ~GeneralName(); virtual AsnType *Clone() const; virtual AsnType *Copy() const; GeneralName &operator = (const GeneralName &); AsnLen BEncContent (BUF_TYPE b); void BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env); AsnLen BEnc (BUF_TYPE b); void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env); void Print (ostream &os) const; }; class GeneralNames: public AsnType { protected: unsigned long int count; struct AsnListElmt { AsnListElmt *next; AsnListElmt *prev; GeneralName *elmt; } *first, *curr, *last; public: GeneralNames() { count = 0; first = curr = last = NULL; } GeneralNames (const GeneralNames &); virtual ~GeneralNames(); virtual AsnType *Clone() const; virtual AsnType *Copy() const; GeneralNames &operator = (const GeneralNames &); void SetCurrElmt (unsigned long int index); unsigned long int GetCurrElmtIndex(); void SetCurrToFirst() { curr = first; } void SetCurrToLast() { curr = last; } // reading member fcns int Count() const { return count; } // NOTE: if your compiler complains about these NULLs, its definition of NULL is broken (and you better change it there!) GeneralName *First() const { return count > 0 ? first->elmt : NULL; } GeneralName *Last() const { return count > 0 ? last->elmt : NULL; } GeneralName *Curr() const { return curr ? curr->elmt : NULL; } GeneralName *Next() const { return curr && curr->next ? curr->next->elmt : NULL; } GeneralName *Prev() const { return curr && curr->prev ? curr->prev->elmt : NULL; } // routines that move the curr elmt GeneralName *GoNext() { if (curr) curr = curr->next; return Curr(); } GeneralName *GoPrev() { if (curr) curr = curr->prev; return Curr(); } // write & alloc fcns - returns new elmt GeneralName *Append(); // add elmt to end of list GeneralName *Prepend(); // add elmt to beginning of list GeneralName *InsertBefore(); //insert elmt before current elmt GeneralName *InsertAfter(); //insert elmt after current elmt // write & alloc & copy - returns list after copying elmt GeneralNames &AppendCopy (GeneralName &elmt); // add elmt to end of list GeneralNames &PrependCopy (GeneralName &elmt); // add elmt to beginning of list GeneralNames &InsertBeforeAndCopy (GeneralName &elmt); //insert elmt before current elmt GeneralNames &InsertAfterAndCopy (GeneralName &elmt); //insert elmt after current elmt // removing the current elmt from the list void RemoveCurrFromList(); // encode and decode routines AsnLen BEnc (BUF_TYPE b); void BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env); AsnLen BEncContent (BUF_TYPE b); void BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env); PDU_MEMBER_MACROS void Print (ostream &os) const; }; //------------------------------------------------------------------------------ // externs for value defs //------------------------------------------------------------------------------ #endif /* conditional include of sm_x509cmn.h */