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

#include <stdio.h>
#include <stdlib.h>
#include "asn1BerCppTypes.h"
#include "rtTable.h"
#include "PKIX1Explicit88.h"
#include "CryptographicMessageSyntax.h"
#include "PKCS-8.h"
namespace asn1data {

/**************************************************************/
/*                                                            */
/*  _friendlyName_Type                                        */
/*                                                            */
/**************************************************************/

typedef ASN1BMPString ASN1T__friendlyName_Type;

class EXTERN ASN1C__friendlyName_Type :
   public ASN1CType
{
protected:
   ASN1T__friendlyName_Type& msgData;
public:
   ASN1C__friendlyName_Type (ASN1T__friendlyName_Type& data);
   ASN1C__friendlyName_Type (
      ASN1MessageBufferIF& msgBuf, ASN1T__friendlyName_Type& data);
   ASN1C__friendlyName_Type (ASN1C__friendlyName_Type& 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__friendlyName_Type& getCopy (ASN1T__friendlyName_Type* pDstData = 0);
   ASN1T__friendlyName_Type* newCopy ();

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

EXTERN int asn1E__friendlyName_Type (ASN1CTXT* pctxt,
   ASN1T__friendlyName_Type *pvalue, ASN1TagType tagging);

EXTERN int asn1D__friendlyName_Type (ASN1CTXT* pctxt,
   ASN1T__friendlyName_Type *pvalue, ASN1TagType tagging, int length);

EXTERN void asn1Copy__friendlyName_Type (ASN1CTXT *pctxt, ASN1T__friendlyName_Type* pSrcValue, ASN1T__friendlyName_Type* pDstValue);

/**************************************************************/
/*                                                            */
/*  _localKeyId_Type                                          */
/*                                                            */
/**************************************************************/

typedef ASN1TDynOctStr ASN1T__localKeyId_Type;

class EXTERN ASN1C__localKeyId_Type :
   public ASN1CType
{
protected:
   ASN1T__localKeyId_Type& msgData;
public:
   ASN1C__localKeyId_Type (ASN1T__localKeyId_Type& data);
   ASN1C__localKeyId_Type (
      ASN1MessageBufferIF& msgBuf, ASN1T__localKeyId_Type& data);
   ASN1C__localKeyId_Type (ASN1C__localKeyId_Type& 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__localKeyId_Type& getCopy (ASN1T__localKeyId_Type* pDstData = 0);
   ASN1T__localKeyId_Type* newCopy ();

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

EXTERN int asn1E__localKeyId_Type (ASN1CTXT* pctxt,
   ASN1T__localKeyId_Type *pvalue, ASN1TagType tagging);

EXTERN int asn1D__localKeyId_Type (ASN1CTXT* pctxt,
   ASN1T__localKeyId_Type *pvalue, ASN1TagType tagging, int length);

EXTERN void asn1Copy__localKeyId_Type (ASN1CTXT *pctxt, ASN1T__localKeyId_Type* pSrcValue, ASN1T__localKeyId_Type* pDstValue);

EXTERN void asn1Free__localKeyId_Type (ASN1CTXT *pctxt, ASN1T__localKeyId_Type* pvalue);

/* Value definitions */

#define ASN1V_pkcs_9_ub_pkcs9String 255
#define ASN1V_pkcs_9_ub_emailAddress ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_unstructuredName ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_unstructuredAddress ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_challengePassword ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_friendlyName ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_signingDescription ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_match ASN1V_pkcs_9_ub_pkcs9String
#define ASN1V_pkcs_9_ub_pseudonym ASN1V_ub_name
#define ASN1V_pkcs_9_ub_placeOfBirth ASN1V_ub_name
extern EXTERN ASN1OBJID pkcs_9_mo;
extern EXTERN ASN1OBJID pkcs_9_oc;
extern EXTERN ASN1OBJID pkcs_9_at;
extern EXTERN ASN1OBJID pkcs_9_sx;
extern EXTERN ASN1OBJID pkcs_9_mr;
extern EXTERN ASN1OBJID pkcs_9_oc_pkcsEntity;
extern EXTERN ASN1OBJID pkcs_9_oc_naturalPerson;
extern EXTERN ASN1OBJID pkcs_9_at_emailAddress;
extern EXTERN ASN1OBJID pkcs_9_at_unstructuredName;
extern EXTERN ASN1OBJID pkcs_9_at_contentType;
extern EXTERN ASN1OBJID pkcs_9_at_messageDigest;
extern EXTERN ASN1OBJID pkcs_9_at_signingTime;
extern EXTERN ASN1OBJID pkcs_9_at_counterSignature;
extern EXTERN ASN1OBJID pkcs_9_at_challengePassword;
extern EXTERN ASN1OBJID pkcs_9_at_unstructuredAddress;
extern EXTERN ASN1OBJID pkcs_9_at_extendedCertificateAttributes;
extern EXTERN ASN1OBJID pkcs_9_at_signingDescription;
extern EXTERN ASN1OBJID pkcs_9_at_smimeCapabilities;
extern EXTERN ASN1OBJID pkcs_9_at_friendlyName;
extern EXTERN ASN1OBJID pkcs_9_at_localKeyId;
extern EXTERN ASN1OBJID pkcs_9_at_userPKCS12;
extern EXTERN ASN1OBJID pkcs_9_at_pkcs15Token;
extern EXTERN ASN1OBJID pkcs_9_at_encryptedPrivateKeyInfo;
extern EXTERN ASN1OBJID pkcs_9_at_randomNonce;
extern EXTERN ASN1OBJID pkcs_9_at_sequenceNumber;
extern EXTERN ASN1OBJID pkcs_9_at_pkcs7PDU;
extern EXTERN ASN1OBJID ietf_at;
extern EXTERN ASN1OBJID pkcs_9_at_dateOfBirth;
extern EXTERN ASN1OBJID pkcs_9_at_placeOfBirth;
extern EXTERN ASN1OBJID pkcs_9_at_gender;
extern EXTERN ASN1OBJID pkcs_9_at_countryOfCitizenship;
extern EXTERN ASN1OBJID pkcs_9_at_countryOfResidence;
extern EXTERN ASN1OBJID pkcs_9_sx_pkcs9String;
extern EXTERN ASN1OBJID pkcs_9_sx_signingTime;
extern EXTERN ASN1OBJID pkcs_9_mr_caseIgnoreMatch;
extern EXTERN ASN1OBJID pkcs_9_mr_signingTimeMatch;
extern EXTERN ASN1OBJID smime;
extern EXTERN ASN1OBJID certTypes;
extern EXTERN ASN1OBJID crlTypes;

}
#endif
