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

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "asn1XerCppTypes.h"
#include "rtTable.h"
#include "PKIX1Explicit88.h"
namespace asn1data {

/**************************************************************/
/*                                                            */
/*  SubjectSignTool                                           */
/*                                                            */
/**************************************************************/

typedef ASN1UTF8String ASN1T_SubjectSignTool;

class EXTERN ASN1C_SubjectSignTool :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_SubjectSignTool& msgData;
public:
   ASN1C_SubjectSignTool (ASN1T_SubjectSignTool& data);
   ASN1C_SubjectSignTool (
      ASN1MessageBufferIF& msgBuf, ASN1T_SubjectSignTool& data);
   ASN1C_SubjectSignTool (ASN1C_SubjectSignTool& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_SubjectSignTool& getCopy (ASN1T_SubjectSignTool* pDstData = 0);
   ASN1T_SubjectSignTool* newCopy ();

   inline ASN1C_SubjectSignTool& operator= (ASN1C_SubjectSignTool& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
} ;

EXTERN int asn1E_SubjectSignTool (ASN1CTXT* pctxt,
   ASN1T_SubjectSignTool *pvalue, ASN1TagType tagging);

EXTERN int asn1D_SubjectSignTool (ASN1CTXT* pctxt,
   ASN1T_SubjectSignTool *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_SubjectSignTool
  (ASN1CTXT* pctxt, ASN1T_SubjectSignTool value,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_SubjectSignTool (ASN1CTXT *pctxt, ASN1T_SubjectSignTool* pSrcValue, ASN1T_SubjectSignTool* pDstValue);

EXTERN void asn1Free_SubjectSignTool (ASN1CTXT *pctxt, ASN1T_SubjectSignTool* pvalue);

/**************************************************************/
/*                                                            */
/*  IdentificationKind                                        */
/*                                                            */
/**************************************************************/

struct EXTERN IdentificationKind {
   enum Root {
      personal = 0,
      remote_cert = 1,
      remote_passport = 2,
      remote_system = 3
   } ;
} ;

typedef ASN1UINT ASN1T_IdentificationKind;

class EXTERN ASN1C_IdentificationKind :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_IdentificationKind& msgData;
public:
   ASN1C_IdentificationKind (ASN1T_IdentificationKind& data);
   ASN1C_IdentificationKind (
      ASN1MessageBufferIF& msgBuf, ASN1T_IdentificationKind& data);
   ASN1C_IdentificationKind (ASN1C_IdentificationKind& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_IdentificationKind& getCopy (ASN1T_IdentificationKind* pDstData = 0);
   ASN1T_IdentificationKind* newCopy ();

   inline ASN1C_IdentificationKind& operator= (ASN1C_IdentificationKind& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }
   static int parseNamedValue (ASN1CTXT* pctxt, ASN1UINT* value);
} ;

EXTERN int asn1E_IdentificationKind (ASN1CTXT* pctxt,
   ASN1T_IdentificationKind *pvalue, ASN1TagType tagging);

EXTERN int asn1D_IdentificationKind (ASN1CTXT* pctxt,
   ASN1T_IdentificationKind *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_IdentificationKind
  (ASN1CTXT* pctxt, ASN1T_IdentificationKind value,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_IdentificationKind (ASN1CTXT *pctxt, ASN1T_IdentificationKind* pSrcValue, ASN1T_IdentificationKind* pDstValue);

/**************************************************************/
/*                                                            */
/*  OGRN                                                      */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_OGRN_utf8String               1
#define T_OGRN_numericString            2
#define T_OGRN_printableString          3
#define T_OGRN_teletexString            4
#define T_OGRN_ia5String                5
#define T_OGRN_universalString          6
#define T_OGRN_bmpString                7

class EXTERN ASN1C_OGRN;

typedef struct EXTERN ASN1T_OGRN : public ASN1TPDU {
   int t;
   union {
      /* t = 1 */
      ASN1UTF8String utf8String;
      /* t = 2 */
      ASN1NumericString numericString;
      /* t = 3 */
      ASN1PrintableString printableString;
      /* t = 4 */
      ASN1T61String teletexString;
      /* t = 5 */
      ASN1IA5String ia5String;
      /* t = 6 */
      ASN1UniversalString universalString;
      /* t = 7 */
      ASN1BMPString bmpString;
   } u;
   ASN1T_OGRN () {}
   ASN1T_OGRN (ASN1C_OGRN& srcData);
   ~ASN1T_OGRN ();
} ASN1T_OGRN;

class EXTERN ASN1C_OGRN :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_OGRN& msgData;
   struct ElementID {
      enum {
         _unknown, utf8String, numericString, printableString, teletexString,
         ia5String, universalString, bmpString
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
public:
   ASN1C_OGRN (ASN1T_OGRN& data);
   ASN1C_OGRN (
      ASN1MessageBufferIF& msgBuf, ASN1T_OGRN& data);
   ASN1C_OGRN (ASN1C_OGRN& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_OGRN& getCopy (ASN1T_OGRN* pDstData = 0);
   ASN1T_OGRN* newCopy ();

   inline ASN1C_OGRN& operator= (ASN1C_OGRN& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_OGRN (ASN1CTXT* pctxt,
   ASN1T_OGRN *pvalue, ASN1TagType tagging);

EXTERN int asn1D_OGRN (ASN1CTXT* pctxt,
   ASN1T_OGRN *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_OGRN
  (ASN1CTXT* pctxt, ASN1T_OGRN* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_OGRN (ASN1CTXT *pctxt, ASN1T_OGRN* pSrcValue, ASN1T_OGRN* pDstValue);

EXTERN void asn1Free_OGRN (ASN1CTXT *pctxt, ASN1T_OGRN* pvalue);

/**************************************************************/
/*                                                            */
/*  OGRNIP                                                    */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_OGRNIP_utf8String             1
#define T_OGRNIP_numericString          2
#define T_OGRNIP_printableString        3
#define T_OGRNIP_teletexString          4
#define T_OGRNIP_ia5String              5
#define T_OGRNIP_universalString        6
#define T_OGRNIP_bmpString              7

class EXTERN ASN1C_OGRNIP;

typedef struct EXTERN ASN1T_OGRNIP : public ASN1TPDU {
   int t;
   union {
      /* t = 1 */
      ASN1UTF8String utf8String;
      /* t = 2 */
      ASN1NumericString numericString;
      /* t = 3 */
      ASN1PrintableString printableString;
      /* t = 4 */
      ASN1T61String teletexString;
      /* t = 5 */
      ASN1IA5String ia5String;
      /* t = 6 */
      ASN1UniversalString universalString;
      /* t = 7 */
      ASN1BMPString bmpString;
   } u;
   ASN1T_OGRNIP () {}
   ASN1T_OGRNIP (ASN1C_OGRNIP& srcData);
   ~ASN1T_OGRNIP ();
} ASN1T_OGRNIP;

class EXTERN ASN1C_OGRNIP :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_OGRNIP& msgData;
   struct ElementID {
      enum {
         _unknown, utf8String, numericString, printableString, teletexString,
         ia5String, universalString, bmpString
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
public:
   ASN1C_OGRNIP (ASN1T_OGRNIP& data);
   ASN1C_OGRNIP (
      ASN1MessageBufferIF& msgBuf, ASN1T_OGRNIP& data);
   ASN1C_OGRNIP (ASN1C_OGRNIP& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_OGRNIP& getCopy (ASN1T_OGRNIP* pDstData = 0);
   ASN1T_OGRNIP* newCopy ();

   inline ASN1C_OGRNIP& operator= (ASN1C_OGRNIP& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_OGRNIP (ASN1CTXT* pctxt,
   ASN1T_OGRNIP *pvalue, ASN1TagType tagging);

EXTERN int asn1D_OGRNIP (ASN1CTXT* pctxt,
   ASN1T_OGRNIP *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_OGRNIP
  (ASN1CTXT* pctxt, ASN1T_OGRNIP* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_OGRNIP (ASN1CTXT *pctxt, ASN1T_OGRNIP* pSrcValue, ASN1T_OGRNIP* pDstValue);

EXTERN void asn1Free_OGRNIP (ASN1CTXT *pctxt, ASN1T_OGRNIP* pvalue);

/**************************************************************/
/*                                                            */
/*  SNILS                                                     */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_SNILS_utf8String              1
#define T_SNILS_numericString           2
#define T_SNILS_printableString         3
#define T_SNILS_teletexString           4
#define T_SNILS_ia5String               5
#define T_SNILS_universalString         6
#define T_SNILS_bmpString               7

class EXTERN ASN1C_SNILS;

typedef struct EXTERN ASN1T_SNILS : public ASN1TPDU {
   int t;
   union {
      /* t = 1 */
      ASN1UTF8String utf8String;
      /* t = 2 */
      ASN1NumericString numericString;
      /* t = 3 */
      ASN1PrintableString printableString;
      /* t = 4 */
      ASN1T61String teletexString;
      /* t = 5 */
      ASN1IA5String ia5String;
      /* t = 6 */
      ASN1UniversalString universalString;
      /* t = 7 */
      ASN1BMPString bmpString;
   } u;
   ASN1T_SNILS () {}
   ASN1T_SNILS (ASN1C_SNILS& srcData);
   ~ASN1T_SNILS ();
} ASN1T_SNILS;

class EXTERN ASN1C_SNILS :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_SNILS& msgData;
   struct ElementID {
      enum {
         _unknown, utf8String, numericString, printableString, teletexString,
         ia5String, universalString, bmpString
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
public:
   ASN1C_SNILS (ASN1T_SNILS& data);
   ASN1C_SNILS (
      ASN1MessageBufferIF& msgBuf, ASN1T_SNILS& data);
   ASN1C_SNILS (ASN1C_SNILS& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_SNILS& getCopy (ASN1T_SNILS* pDstData = 0);
   ASN1T_SNILS* newCopy ();

   inline ASN1C_SNILS& operator= (ASN1C_SNILS& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_SNILS (ASN1CTXT* pctxt,
   ASN1T_SNILS *pvalue, ASN1TagType tagging);

EXTERN int asn1D_SNILS (ASN1CTXT* pctxt,
   ASN1T_SNILS *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_SNILS
  (ASN1CTXT* pctxt, ASN1T_SNILS* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_SNILS (ASN1CTXT *pctxt, ASN1T_SNILS* pSrcValue, ASN1T_SNILS* pDstValue);

EXTERN void asn1Free_SNILS (ASN1CTXT *pctxt, ASN1T_SNILS* pvalue);

/**************************************************************/
/*                                                            */
/*  INNLE                                                     */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_INNLE_utf8String              1
#define T_INNLE_numericString           2
#define T_INNLE_printableString         3
#define T_INNLE_teletexString           4
#define T_INNLE_ia5String               5
#define T_INNLE_universalString         6
#define T_INNLE_bmpString               7

class EXTERN ASN1C_INNLE;

typedef struct EXTERN ASN1T_INNLE : public ASN1TPDU {
   int t;
   union {
      /* t = 1 */
      ASN1UTF8String utf8String;
      /* t = 2 */
      ASN1NumericString numericString;
      /* t = 3 */
      ASN1PrintableString printableString;
      /* t = 4 */
      ASN1T61String teletexString;
      /* t = 5 */
      ASN1IA5String ia5String;
      /* t = 6 */
      ASN1UniversalString universalString;
      /* t = 7 */
      ASN1BMPString bmpString;
   } u;
   ASN1T_INNLE () {}
   ASN1T_INNLE (ASN1C_INNLE& srcData);
   ~ASN1T_INNLE ();
} ASN1T_INNLE;

class EXTERN ASN1C_INNLE :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_INNLE& msgData;
   struct ElementID {
      enum {
         _unknown, utf8String, numericString, printableString, teletexString,
         ia5String, universalString, bmpString
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
public:
   ASN1C_INNLE (ASN1T_INNLE& data);
   ASN1C_INNLE (
      ASN1MessageBufferIF& msgBuf, ASN1T_INNLE& data);
   ASN1C_INNLE (ASN1C_INNLE& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_INNLE& getCopy (ASN1T_INNLE* pDstData = 0);
   ASN1T_INNLE* newCopy ();

   inline ASN1C_INNLE& operator= (ASN1C_INNLE& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_INNLE (ASN1CTXT* pctxt,
   ASN1T_INNLE *pvalue, ASN1TagType tagging);

EXTERN int asn1D_INNLE (ASN1CTXT* pctxt,
   ASN1T_INNLE *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_INNLE
  (ASN1CTXT* pctxt, ASN1T_INNLE* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_INNLE (ASN1CTXT *pctxt, ASN1T_INNLE* pSrcValue, ASN1T_INNLE* pDstValue);

EXTERN void asn1Free_INNLE (ASN1CTXT *pctxt, ASN1T_INNLE* pvalue);

/**************************************************************/
/*                                                            */
/*  INN                                                       */
/*                                                            */
/**************************************************************/

/* Choice tag constants */

#define T_INN_utf8String                1
#define T_INN_numericString             2
#define T_INN_printableString           3
#define T_INN_teletexString             4
#define T_INN_ia5String                 5
#define T_INN_universalString           6
#define T_INN_bmpString                 7

class EXTERN ASN1C_INN;

typedef struct EXTERN ASN1T_INN : public ASN1TPDU {
   int t;
   union {
      /* t = 1 */
      ASN1UTF8String utf8String;
      /* t = 2 */
      ASN1NumericString numericString;
      /* t = 3 */
      ASN1PrintableString printableString;
      /* t = 4 */
      ASN1T61String teletexString;
      /* t = 5 */
      ASN1IA5String ia5String;
      /* t = 6 */
      ASN1UniversalString universalString;
      /* t = 7 */
      ASN1BMPString bmpString;
   } u;
   ASN1T_INN () {}
   ASN1T_INN (ASN1C_INN& srcData);
   ~ASN1T_INN ();
} ASN1T_INN;

class EXTERN ASN1C_INN :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_INN& msgData;
   struct ElementID {
      enum {
         _unknown, utf8String, numericString, printableString, teletexString,
         ia5String, universalString, bmpString
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
public:
   ASN1C_INN (ASN1T_INN& data);
   ASN1C_INN (
      ASN1MessageBufferIF& msgBuf, ASN1T_INN& data);
   ASN1C_INN (ASN1C_INN& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_INN& getCopy (ASN1T_INN* pDstData = 0);
   ASN1T_INN* newCopy ();

   inline ASN1C_INN& operator= (ASN1C_INN& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_INN (ASN1CTXT* pctxt,
   ASN1T_INN *pvalue, ASN1TagType tagging);

EXTERN int asn1D_INN (ASN1CTXT* pctxt,
   ASN1T_INN *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_INN
  (ASN1CTXT* pctxt, ASN1T_INN* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_INN (ASN1CTXT *pctxt, ASN1T_INN* pSrcValue, ASN1T_INN* pDstValue);

EXTERN void asn1Free_INN (ASN1CTXT *pctxt, ASN1T_INN* pvalue);

/**************************************************************/
/*                                                            */
/*  IssuerSignTool                                            */
/*                                                            */
/**************************************************************/

class EXTERN ASN1C_IssuerSignTool;

typedef struct EXTERN ASN1T_IssuerSignTool : public ASN1TPDU {
   ASN1UTF8String signTool;
   ASN1UTF8String cATool;
   ASN1UTF8String signToolCert;
   ASN1UTF8String cAToolCert;
   ASN1T_IssuerSignTool ();
   ASN1T_IssuerSignTool (ASN1C_IssuerSignTool& srcData);
   ~ASN1T_IssuerSignTool ();
} ASN1T_IssuerSignTool;

class EXTERN ASN1C_IssuerSignTool :
   public ASN1CType, public ASN1XERSAXDecodeHandler
{
protected:
   ASN1T_IssuerSignTool& msgData;
   struct ElementID {
      enum {
         _unknown, signTool, cATool, signToolCert, cAToolCert
      } ;
   } ;
   int getElementID 
      (const XMLCHAR* const uri, const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   ASN1MemBuf mCurrElemValue;
   int mReqElemCnt;
public:
   ASN1C_IssuerSignTool (ASN1T_IssuerSignTool& data);
   ASN1C_IssuerSignTool (
      ASN1MessageBufferIF& msgBuf, ASN1T_IssuerSignTool& data);
   ASN1C_IssuerSignTool (ASN1C_IssuerSignTool& original);

   // standard encode/decode methods (defined in ASN1CType base class):
   // int Encode ();
   // int Decode ();

   // stream encode/decode methods:
   int EncodeTo (ASN1MessageBufferIF& msgBuf);
   int DecodeFrom (ASN1MessageBufferIF& msgBuf);

   ASN1T_IssuerSignTool& getCopy (ASN1T_IssuerSignTool* pDstData = 0);
   ASN1T_IssuerSignTool* newCopy ();

   inline ASN1C_IssuerSignTool& operator= (ASN1C_IssuerSignTool& srcData) {
      srcData.getCopy (&msgData);
      return *this;
   }

   // SAX ContentHandler interface

   virtual void startElement 
      (const XMLCHAR* const uri, 
       const XMLCHAR* const localname, 
       const XMLCHAR* const qname, 
       const XMLCHAR* const* attrs);

   virtual void characters 
      (const XMLCHAR* const chars,
       const unsigned int length);

   virtual void endElement
      (const XMLCHAR* const uri,
       const XMLCHAR* const localname,
       const XMLCHAR* const qname);

   virtual void init (int level = 0);
} ;

EXTERN int asn1E_IssuerSignTool (ASN1CTXT* pctxt,
   ASN1T_IssuerSignTool *pvalue, ASN1TagType tagging);

EXTERN int asn1D_IssuerSignTool (ASN1CTXT* pctxt,
   ASN1T_IssuerSignTool *pvalue, ASN1TagType tagging, int length);

EXTERN int asn1XE_IssuerSignTool
  (ASN1CTXT* pctxt, ASN1T_IssuerSignTool* pvalue,
   ASN1ConstCharPtr elemName, ASN1ConstCharPtr attributes);

EXTERN void asn1Copy_IssuerSignTool (ASN1CTXT *pctxt, ASN1T_IssuerSignTool* pSrcValue, ASN1T_IssuerSignTool* pDstValue);

EXTERN void asn1Free_IssuerSignTool (ASN1CTXT *pctxt, ASN1T_IssuerSignTool* pvalue);

/* Value definitions */

extern EXTERN ASN1OBJID id_ogrn_attribute;
#define ASN1V_ub_ogrn_length 32768
extern EXTERN ASN1OBJID id_ogrnip_attribute;
#define ASN1V_ub_ogrnip_length 32768
extern EXTERN ASN1OBJID id_snils_attribute;
#define ASN1V_ub_snils_length 32768
extern EXTERN ASN1OBJID id_innle_attribute;
#define ASN1V_ub_innle_length 32768
extern EXTERN ASN1OBJID id_inn_attribute;
#define ASN1V_ub_inn_length 32768
extern EXTERN ASN1OBJID id_sign_tool_class_KC1;
extern EXTERN ASN1OBJID id_sign_tool_class_KC2;
extern EXTERN ASN1OBJID id_sign_tool_class_KC3;
extern EXTERN ASN1OBJID id_sign_tool_class_KB1;
extern EXTERN ASN1OBJID id_sign_tool_class_KB2;
extern EXTERN ASN1OBJID id_sign_tool_class_KA1;
extern EXTERN ASN1OBJID id_subjectSignTool_extension;
extern EXTERN ASN1OBJID id_issuerSignTool_extension;
extern EXTERN ASN1OBJID id_identificationKind_extension;

}
#endif
