//   NOTE: this is a machine generated file--editing not recommended
//
// pkcs7.h - class definitions for ASN.1 module PKCS7
//
//   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 _pkcs7_h_
#define _pkcs7_h_


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

class EncryptedDataInt;
class EncryptedContentInfo1;
class EncryptedData1;

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

/* INTEGER { edVer0 (0) }  */
class EncryptedDataInt: public AsnInt
{
public:
			EncryptedDataInt(): AsnInt() {}
			EncryptedDataInt (int i): AsnInt (i) {}
  enum
  {
    edVer0 = 0
  };
};


/* OBJECT IDENTIFIER */
typedef AsnOid ContentType1;

/* OCTET STRING */
typedef AsnOcts EncryptedContent1;

/* AlgorithmIdentifier */
typedef AlgorithmIdentifier ContentEncryptionAlgorithmIdentifier1;

class EncryptedContentInfo1: public AsnType
{
public:
  ContentType1		contentType;
  ContentEncryptionAlgorithmIdentifier1		*contentEncryptionAlgorithm;
  EncryptedContent1		*encryptedContent;

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

  virtual AsnType	*Copy() const;

  EncryptedContentInfo1		&operator = (const EncryptedContentInfo1 &);
  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 EncryptedData1: public AsnType
{
public:
  EncryptedDataInt		version;
  EncryptedContentInfo1		*encryptedContentInfo;

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

  virtual AsnType	*Copy() const;

  EncryptedData1		&operator = (const EncryptedData1 &);
  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

#define pkcs_7_arc 1, 2, 840, 113549, 1, 7
#define pkcs_7     AsnOid(pkcs_7_arc)
#define dataPkcs7_arc 1, 2, 840, 113549, 1, 7, 1
#define dataPkcs7     AsnOid(dataPkcs7_arc)
#define signedData_arc 1, 2, 840, 113549, 1, 7, 2
#define signedData     AsnOid(signedData_arc)
#define envelopedData_arc 1, 2, 840, 113549, 1, 7, 3
#define envelopedData     AsnOid(envelopedData_arc)
#define signedAndEnvelopedData_arc 1, 2, 840, 113549, 1, 7, 4
#define signedAndEnvelopedData     AsnOid(signedAndEnvelopedData_arc)
#define digestedData_arc 1, 2, 840, 113549, 1, 7, 5
#define digestedData     AsnOid(digestedData_arc)
#define encryptedData_arc 1, 2, 840, 113549, 1, 7, 6
#define encryptedData     AsnOid(encryptedData_arc)
//------------------------------------------------------------------------------

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