#ifndef CPP_ENROLL_PUBLIC_KEY_OBJECT_H_
#define CPP_ENROLL_PUBLIC_KEY_OBJECT_H_

#include "cppcades.h"
#include "CPPEnrollEnumerations.h"
#include "CPPEnrollObjectId.h"

using namespace ATL;

namespace CryptoPro {
namespace PKI {
namespace Enroll {

// Этот интерфейс не выставлен в webEnabled, пока только для локального использования.
// Интерфейс делаю максимально близким к CertEnroll - вдруг пригодится.
class CPPEnrollX509PublicKey
{
public:
    CPPEnrollX509PublicKey(void);
    ~CPPEnrollX509PublicKey(void);
    HRESULT InitializeFromDecodedPublicKeyInfo(CStringBlob& decodedPublicKeyInfo);
    HRESULT get_Algorithm(boost::shared_ptr<CPPEnrollObjectId>& pVal);
    HRESULT get_EncodedKey(/*EncodingType Encoding, */CStringBlob& pValue);
    // internal only
    PCERT_PUBLIC_KEY_INFO getPublicKeyInfo();
private:
    DISALLOW_COPY_AND_ASSIGN(CPPEnrollX509PublicKey);
    CStringBlob m_decodedPublicKeyInfo;
    PCERT_PUBLIC_KEY_INFO m_pInfo;
    boost::shared_ptr<CPPEnrollObjectId> m_pAlgorithm;
};

} /* namespace Enroll */
} /* namespace PKI */
} /* namespace CryptoPro */

#endif // CPP_ENROLL_PUBLIC_KEY_OBJECT_H_


