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


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

class PrivateKeyInfo;
class EncryptedPrivateKeyInfo;

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

/* OCTET STRING */
typedef AsnOcts PrivateKey;

class PrivateKeyInfo: public AsnType
{
public:
  AsnInt		version;
  AlgorithmIdentifier		*privateKeyAlgorithm;
  PrivateKey		privateKey;
  Attributes		*attributes;

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

  virtual AsnType	*Copy() const;

  PrivateKeyInfo		&operator = (const PrivateKeyInfo &);
  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 EncryptedPrivateKeyInfo: public AsnType
{
public:
  AlgorithmIdentifier		*encryptionAlgorithm;
  EncryptedKey		encryptedKey;

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

  virtual AsnType	*Copy() const;

  EncryptedPrivateKeyInfo		&operator = (const EncryptedPrivateKeyInfo &);
  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 pkcs8.h */
