#ifndef _pkcs8_h_
#define _pkcs8_h_
class PrivateKeyInfo;
class EncryptedPrivateKeyInfo;
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;
};
#endif