//   NOTE: this is a machine generated file--editing not recommended
//
// pkcs10.h - class definitions for ASN.1 module PKCS5
//
//   This file was generated by snacc on Mon Apr 22 22:34:19 2002
//   UBC snacc by Mike Sample
//   A couple of enhancements made by IBM European Networking Center

#ifndef _pkcs10_h_
#define _pkcs10_h_


//------------------------------------------------------------------------------
// class declarations:

class CertificationRequestInfo;
class CertificationRequest;
class CertificationRequestSigned;

//------------------------------------------------------------------------------
// class definitions:

typedef enum PKCS5AnyId
{

} PKCS5AnyId;


/* INTEGER */
typedef AsnInt VersionP10;

class CertificationRequestInfo: public AsnType
{
public:
  VersionP10		version;
  Name		*subject;
  SubjectPublicKeyInfo		*subjectPublicKeyInfo;
  Attributes		attributes;

			CertificationRequestInfo();
			CertificationRequestInfo (const CertificationRequestInfo &);
  virtual		~CertificationRequestInfo();
  virtual AsnType	*Clone() const;

  virtual AsnType	*Copy() const;

  CertificationRequestInfo		&operator = (const CertificationRequestInfo &);
  AsnLen		BEncContent (BUF_TYPE b);
  void			BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);

  AsnLen		BEnc (BUF_TYPE b);
  void			BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
  void		Print (ostream &os) const;
};


class CertificationRequest: public AsnType
{
public:
  CertificationRequestInfo		*certificationRequestInfo;
  SignatureAlgorithmIdentifier		*signatureAlgorithm;
  Signature		signature;

			CertificationRequest();
			CertificationRequest (const CertificationRequest &);
  virtual		~CertificationRequest();
  virtual AsnType	*Clone() const;

  virtual AsnType	*Copy() const;

  CertificationRequest		&operator = (const CertificationRequest &);
  AsnLen		BEncContent (BUF_TYPE b);
  void			BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);

  AsnLen		BEnc (BUF_TYPE b);
  void			BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
  void		Print (ostream &os) const;
};


class CertificationRequestSigned: public AsnType
{
public:
  AsnAny		certificationRequestInfo;
  SignatureAlgorithmIdentifier		*signatureAlgorithm;
  Signature		signature;

			CertificationRequestSigned();
			CertificationRequestSigned (const CertificationRequestSigned &);
  virtual		~CertificationRequestSigned();
  virtual AsnType	*Clone() const;

  virtual AsnType	*Copy() const;

  CertificationRequestSigned		&operator = (const CertificationRequestSigned &);
  AsnLen		BEncContent (BUF_TYPE b);
  void			BDecContent (BUF_TYPE b, AsnTag tag, AsnLen elmtLen, AsnLen &bytesDecoded, ENV_TYPE env);

  AsnLen		BEnc (BUF_TYPE b);
  void			BDec (BUF_TYPE b, AsnLen &bytesDecoded, ENV_TYPE env);
  void		Print (ostream &os) const;
};


//------------------------------------------------------------------------------
// externs for value defs

//------------------------------------------------------------------------------

#endif /* conditional include of pkcs10.h */
