/**
 * This file was generated by the Objective Systems ASN1C Compiler
 * (http://www.obj-sys.com).  Version: 5.63.
 */
#ifndef PKIXOCSPTABLE_H
#define PKIXOCSPTABLE_H

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "rtTable.h"
#include "ASN1CGeneralizedTime.h"
#include "ASN1CSeqOfList.h"
#include "PKIXOCSPClass.h"
#include "Cryptographic-Gost-Useful-DefinitionsClass.h"
#include "CertificateExtensionsClass.h"
#include "PKIX1Explicit88Class.h"
#include "PKIXCMPClass.h"
#include "CryptographicMessageSyntaxClass.h"
#include "PKIX1Explicit88BaseTypesClass.h"
#include "ETS-ElectronicSignatureFormats-97SyntaxClass.h"
namespace asn1data {

/* Object definitions */

/**************************************************************/
/*                                                            */
/*  ocspCrl                                                   */
/*                                                            */
/**************************************************************/

class EXTERN ocspCrl : public EXTENSION {
 public:
   ocspCrl();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspCrl() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspHistoricalRequest                                     */
/*                                                            */
/**************************************************************/

class EXTERN ocspHistoricalRequest : public EXTENSION {
 public:
   ocspHistoricalRequest();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspHistoricalRequest() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspResponse                                              */
/*                                                            */
/**************************************************************/

class EXTERN ocspResponse : public EXTENSION {
 public:
   ocspResponse();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspResponse() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspNoCheck                                               */
/*                                                            */
/**************************************************************/

class EXTERN ocspNoCheck : public EXTENSION {
 public:
   ocspNoCheck();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspNoCheck() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspArchiveCutoff                                         */
/*                                                            */
/**************************************************************/

class EXTERN ocspArchiveCutoff : public EXTENSION {
 public:
   ocspArchiveCutoff();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspArchiveCutoff() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspServiceLocator                                        */
/*                                                            */
/**************************************************************/

class EXTERN ocspServiceLocator : public EXTENSION {
 public:
   ocspServiceLocator();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspServiceLocator() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspCRLLocator                                            */
/*                                                            */
/**************************************************************/

class EXTERN ocspCRLLocator : public EXTENSION {
 public:
   ocspCRLLocator();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspCRLLocator() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspInstantRevocationIndicator                            */
/*                                                            */
/**************************************************************/

class EXTERN ocspInstantRevocationIndicator : public EXTENSION {
 public:
   ocspInstantRevocationIndicator();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspInstantRevocationIndicator() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspInstantRevocationAnnouncementReference                */
/*                                                            */
/**************************************************************/

class EXTERN ocspInstantRevocationAnnouncementReference : public EXTENSION {
 public:
   ocspInstantRevocationAnnouncementReference();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspInstantRevocationAnnouncementReference() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspTreatsExpKeyOrExpCertRev                              */
/*                                                            */
/**************************************************************/

class EXTERN ocspTreatsExpKeyOrExpCertRev : public EXTENSION {
 public:
   ocspTreatsExpKeyOrExpCertRev();

   virtual void* constructASN1TExtnType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CExtnType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CExtnType
       (ASN1CType* obj);

   virtual ~ocspTreatsExpKeyOrExpCertRev() {}

   virtual int encodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyExtnType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeExtnType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;

/**************************************************************/
/*                                                            */
/*  ocspBasicResponse                                         */
/*                                                            */
/**************************************************************/

class EXTERN ocspBasicResponse : public OCSP_RESPONSE_TYPE {
 public:
   ocspBasicResponse();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

   virtual ASN1CType* constructASN1CType
       (ASN1MessageBufferIF& msgBuf, void* data);

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~ocspBasicResponse() {}

   virtual int encodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual int decodeBERType
      (ASN1CTXT* pctxt, ASN1TObject& object);

   virtual void copyType
      (ASN1CTXT* pctxt, ASN1TObject& srcObject, ASN1TObject& dstObject);
   virtual void freeType
      (ASN1CTXT* pctxt, ASN1TObject& object);
} ;


/* ObjectSet definitions */

/**************************************************************/
/*                                                            */
/*  SupportedOCSPResponseTypes                                */
/*                                                            */
/**************************************************************/

class EXTERN SupportedOCSPResponseTypes {
 protected:
   OCSP_RESPONSE_TYPE* mObjectSet[1];
   const size_t mNumObjects;
   static SupportedOCSPResponseTypes* mpInstance;
   SupportedOCSPResponseTypes (ASN1CTXT *pctxt);

 public:
   OCSP_RESPONSE_TYPE* lookupObject (ASN1TObjId _id);

   static SupportedOCSPResponseTypes* instance(ASN1CTXT *pctxt = 0);
} ;


}
#endif
