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

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

/* Object definitions */

/**************************************************************/
/*                                                            */
/*  keyBag                                                    */
/*                                                            */
/**************************************************************/

class EXTERN keyBag : public BAG_TYPE {
 public:
   keyBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~keyBag() {}

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

/**************************************************************/
/*                                                            */
/*  pkcs8ShroudedKeyBag                                       */
/*                                                            */
/**************************************************************/

class EXTERN pkcs8ShroudedKeyBag : public BAG_TYPE {
 public:
   pkcs8ShroudedKeyBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~pkcs8ShroudedKeyBag() {}

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

/**************************************************************/
/*                                                            */
/*  certBag                                                   */
/*                                                            */
/**************************************************************/

class EXTERN certBag : public BAG_TYPE {
 public:
   certBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~certBag() {}

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

/**************************************************************/
/*                                                            */
/*  crlBag                                                    */
/*                                                            */
/**************************************************************/

class EXTERN crlBag : public BAG_TYPE {
 public:
   crlBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~crlBag() {}

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

/**************************************************************/
/*                                                            */
/*  secretBag                                                 */
/*                                                            */
/**************************************************************/

class EXTERN secretBag : public BAG_TYPE {
 public:
   secretBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~secretBag() {}

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

/**************************************************************/
/*                                                            */
/*  safeContentsBag                                           */
/*                                                            */
/**************************************************************/

class EXTERN safeContentsBag : public BAG_TYPE {
 public:
   safeContentsBag();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~safeContentsBag() {}

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

/**************************************************************/
/*                                                            */
/*  x509Certificate                                           */
/*                                                            */
/**************************************************************/

class EXTERN x509Certificate : public BAG_TYPE {
 public:
   x509Certificate();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~x509Certificate() {}

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

/**************************************************************/
/*                                                            */
/*  x509CRL                                                   */
/*                                                            */
/**************************************************************/

class EXTERN x509CRL : public BAG_TYPE {
 public:
   x509CRL();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~x509CRL() {}

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

/**************************************************************/
/*                                                            */
/*  providerName                                              */
/*                                                            */
/**************************************************************/

class EXTERN providerName : public ATTRIBUTE {
 public:
   providerName();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~providerName() {}

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

/**************************************************************/
/*                                                            */
/*  localMachine                                              */
/*                                                            */
/**************************************************************/

class EXTERN localMachine : public ATTRIBUTE {
 public:
   localMachine();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~localMachine() {}

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

/**************************************************************/
/*                                                            */
/*  pkcs12EnhKeyUsage                                         */
/*                                                            */
/**************************************************************/

class EXTERN pkcs12EnhKeyUsage : public ATTRIBUTE {
 public:
   pkcs12EnhKeyUsage();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~pkcs12EnhKeyUsage() {}

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

/**************************************************************/
/*                                                            */
/*  pkcs12CertDescription                                     */
/*                                                            */
/**************************************************************/

class EXTERN pkcs12CertDescription : public ATTRIBUTE {
 public:
   pkcs12CertDescription();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~pkcs12CertDescription() {}

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

/**************************************************************/
/*                                                            */
/*  pkcs12KeyIdentifier                                       */
/*                                                            */
/**************************************************************/

class EXTERN pkcs12KeyIdentifier : public ATTRIBUTE {
 public:
   pkcs12KeyIdentifier();

   virtual void* constructASN1TType
       (ASN1CTXT* pctxt);

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

   virtual void destructASN1CType
       (ASN1CType* obj);

   virtual ~pkcs12KeyIdentifier() {}

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

/**************************************************************/
/*                                                            */
/*  PKCS12BagSet                                              */
/*                                                            */
/**************************************************************/

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

 public:
   BAG_TYPE* lookupObject (ASN1TObjId _id);

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

/**************************************************************/
/*                                                            */
/*  CertTypes                                                 */
/*                                                            */
/**************************************************************/

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

 public:
   BAG_TYPE* lookupObject (ASN1TObjId _id);

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

/**************************************************************/
/*                                                            */
/*  CRLTypes                                                  */
/*                                                            */
/**************************************************************/

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

 public:
   BAG_TYPE* lookupObject (ASN1TObjId _id);

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

/**************************************************************/
/*                                                            */
/*  SecretTypes                                               */
/*                                                            */
/**************************************************************/

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

 public:
   BAG_TYPE* lookupObject (ASN1TObjId _id);

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

/**************************************************************/
/*                                                            */
/*  PKCS12AttrSet                                             */
/*                                                            */
/**************************************************************/

class EXTERN PKCS12AttrSet {
 protected:
   ATTRIBUTE* mObjectSet[7];
   const size_t mNumObjects;
   static PKCS12AttrSet* mpInstance;
   PKCS12AttrSet (ASN1CTXT *pctxt);

 public:
   ATTRIBUTE* lookupObject (ASN1TObjId _id);

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


}
#endif
