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

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

/* Object definitions */

/**************************************************************/
/*                                                            */
/*  simpleData                                                */
/*                                                            */
/**************************************************************/

class EXTERN simpleData : public CONTENT_TYPE {
 public:
   simpleData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~simpleData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  signedData                                                */
/*                                                            */
/**************************************************************/

class EXTERN signedData : public CONTENT_TYPE {
 public:
   signedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~signedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  envelopedData                                             */
/*                                                            */
/**************************************************************/

class EXTERN envelopedData : public CONTENT_TYPE {
 public:
   envelopedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~envelopedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  digestedData                                              */
/*                                                            */
/**************************************************************/

class EXTERN digestedData : public CONTENT_TYPE {
 public:
   digestedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~digestedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  encryptedData                                             */
/*                                                            */
/**************************************************************/

class EXTERN encryptedData : public CONTENT_TYPE {
 public:
   encryptedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~encryptedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  authData                                                  */
/*                                                            */
/**************************************************************/

class EXTERN authData : public CONTENT_TYPE {
 public:
   authData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~authData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  contentInfo                                               */
/*                                                            */
/**************************************************************/

class EXTERN contentInfo : public CONTENT_TYPE {
 public:
   contentInfo();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~contentInfo() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_signedData                                              */
/*                                                            */
/**************************************************************/

class EXTERN e_signedData : public ECONTENT_TYPE {
 public:
   e_signedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_signedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_envelopedData                                           */
/*                                                            */
/**************************************************************/

class EXTERN e_envelopedData : public ECONTENT_TYPE {
 public:
   e_envelopedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_envelopedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_digestedData                                            */
/*                                                            */
/**************************************************************/

class EXTERN e_digestedData : public ECONTENT_TYPE {
 public:
   e_digestedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_digestedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_encryptedData                                           */
/*                                                            */
/**************************************************************/

class EXTERN e_encryptedData : public ECONTENT_TYPE {
 public:
   e_encryptedData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_encryptedData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_authData                                                */
/*                                                            */
/**************************************************************/

class EXTERN e_authData : public ECONTENT_TYPE {
 public:
   e_authData();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_authData() {}

   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);
} ;

/**************************************************************/
/*                                                            */
/*  e_contentInfo                                             */
/*                                                            */
/**************************************************************/

class EXTERN e_contentInfo : public ECONTENT_TYPE {
 public:
   e_contentInfo();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~e_contentInfo() {}

   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 */

/**************************************************************/
/*                                                            */
/*  SupportedContentTypes                                     */
/*                                                            */
/**************************************************************/

class EXTERN SupportedContentTypes {
 protected:
   CONTENT_TYPE* mObjectSet[6];
   const size_t mNumObjects;
   static SupportedContentTypes* mpInstance;
   SupportedContentTypes (ASN1CTXT *pctxt);

 public:
   CONTENT_TYPE* lookupObject (ASN1TObjId _id);

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

/**************************************************************/
/*                                                            */
/*  SupportedEContentTypes                                    */
/*                                                            */
/**************************************************************/

class EXTERN SupportedEContentTypes {
 protected:
   ECONTENT_TYPE* mObjectSet[8];
   const size_t mNumObjects;
   static SupportedEContentTypes* mpInstance;
   SupportedEContentTypes (ASN1CTXT *pctxt);

 public:
   ECONTENT_TYPE* lookupObject (ASN1TObjId _id);

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


}
#endif
