CPCA15Request.h

00001 /* [Windows 1251]
00002  * [Use `iconv -f WINDOWS-1251', if needed]
00003  */
00004 /*
00005  * Copyright(C) 2005-2011
00006  *
00007  * Этот файл содержит информацию, являющуюся
00008  * собственностью компании Крипто-Про.
00009  *
00010  * Любая часть этого файла не может быть скопирована,
00011  * исправлена, переведена на другие языки,
00012  * локализована или модифицирована любым способом,
00013  * откомпилирована, передана по сети с или на
00014  * любую компьютерную систему без предварительного
00015  * заключения соглашения с компанией Крипто-Про.
00016  *
00017  * This is proprietary information of
00018  * Crypto-Pro company.
00019  *
00020  * Any part of this file can not be copied, 
00021  * corrected, translated into other languages,
00022  * localized or modified by any means,
00023  * compiled, transferred over a network from or to
00024  * any computer system without preliminary
00025  * agreement with Crypto-Pro company
00026  */
00027 
00037 #ifndef __CPCA15_REQUEST_H__
00038 #define __CPCA15_REQUEST_H__
00039 #include "UnixRequestImpl.h"
00040 #include "CPCA15UserInfo.h"
00041 
00066 class CPCA15Request: public UnixRequestImpl
00067 {
00068 protected:
00069     std::string RequestId;
00070     std::string CertHTMLId;
00071     std::string strCertificate;
00072     std::string strSerial;
00073     HCERTSTORE hUserStore;
00074     PCCERT_CONTEXT pUserCert;
00075     BOOL fNeedFreeProv;
00076     DWORD dwCertKeySpec;
00077     HCRYPTPROV hUserProv;
00078     BSTR bstrCertHTML;
00079     BSTR bstrRequestHTML;
00080 
00081 public:
00082     CPCA15Request():RequestId("-1"),
00083                      CertHTMLId("-1"),
00084                      strCertificate(),
00085                      strSerial(),
00086                      hUserStore(0),
00087                      pUserCert(0),
00088                      fNeedFreeProv(FALSE),
00089                      dwCertKeySpec(0),
00090                      hUserProv(0),
00091                      bstrCertHTML(0),
00092                      bstrRequestHTML(0)
00093     {
00094         
00095     };
00096     virtual HRESULT SetCredential( 
00097         /* [in] */ UserCallbacks *pCallbacks,
00098         /* [in] */ X509EnrollmentAuthFlags AuthType,
00099         /* [in] */ X509EnrollmentCheckChainFlags CheckChainType,
00100             /* [in] */ const BSTR strCredential,
00101         /* [in][out] */ CSecurePin *sbPassword,
00102         /* [in] */ BOOL UseLocalMachineCert);
00103 
00104     virtual HRESULT SetCredential( 
00105         /* [in] */ LONG hWnd,
00106         /* [in] */ X509EnrollmentAuthFlags anAuthType,
00107         /* [in] */ BSTR strCredential,
00108         /* [in] */ BSTR strPassword)
00109     {
00110         return UnixRequestImpl::SetCredential(hWnd,anAuthType,strCredential,strPassword);
00111     };  
00112 
00113     virtual HRESULT GetRequestParams(
00114         /* [in] */ BSTR strConfig,
00115         /* [in] */ BSTR strTemplate,
00116         /* [retval][out] */ BSTR *pstrRDN,
00117         /* [retval][out] */ BSTR *pstrEKUsage,
00118         /* [retval][out] */ DWORD *pKeySpec,
00119         /* [retval] */ std::vector<AttrTriple> *pAttrs
00120         );
00121 
00122     virtual HRESULT Submit( 
00123         /* [in] */ LONG Flags, /* CR_IN_BASE64HEADER, CR_IN_PKCS10 */
00124         /* [in] */ const BSTR strRequest,
00125         /* [in] */ const BSTR strAttributes,
00126         /* [in] */ const BSTR strConfig,
00127         /* [retval][out] */ LONG *pDisposition);
00128 
00129     virtual HRESULT ListRequests(   
00130                     BSTR strConfig,
00131                     RequestMap & Request
00132                     );
00133 
00134     virtual HRESULT ListRequestsEx(BSTR strConfig,
00135                       RequestMapEx & rMap,
00136                       ReqType type = CA15Request);
00137 
00138     virtual HRESULT GetRequestId(
00139               LONG* pRequestId
00140               );
00141 
00142     virtual HRESULT GetCertificate(
00143        LONG Flags,
00144        BSTR* pstrCertificate
00145     );
00146 
00147     virtual HRESULT GetRequest(
00148        LONG Flags,
00149        BSTR* pstrRequest
00150     );
00151 
00152     virtual HRESULT GetCACertificate( 
00153         /* [in] */ LONG fExchangeCertificate, /* не поддерживаем */
00154         /* [in] */ const BSTR strConfig,
00155         /* [in] */ LONG Flags, /* CR_OUT_BASE64HEADER, CR_OUT_CHAIN */
00156         /* [retval][out] */ BSTR *pstrCertificate) ;
00157 
00158 #if 0    
00159     virtual HRESULT GetDispositionMessage( 
00160         /* [retval][out] */ BSTR *pstrDispositionMessage);
00161 #endif  
00162 
00163     virtual HRESULT RetrievePending( 
00164         /* [in] */ LONG RequestId,
00165         /* [in] */ const BSTR strConfig,
00166         /* [retval][out] */ LONG *pDisposition);
00167 
00168     virtual HRESULT GetCAProperty( 
00169         /* [in] */ const BSTR strConfig,
00170         /* [in] */ LONG PropId, /* CR_PROP_BASECRL, CR_PROP_DELTACRL, CR_PROP_TEMPLATES */
00171         /* [in] */ LONG PropIndex, 
00172         /* [in] */ LONG PropType, /* PROPTYPE_BINARY, PROPTYPE_STRING */
00173         /* [in] */ LONG Flags, /* CV_OUT_BASE64HEADER, CV_OUT_BASE64REQUESTHEADER, CV_OUT_BASE64X509CRLHEADER */
00174         /* [retval][out] */ VARIANT *pvarPropertyValue);
00175 
00176     virtual HRESULT AcknowledgeInstallCert( 
00177         /* [in] */ LONG RequestId,
00178         /* [in] */ const BSTR strConfig
00179         );
00180 
00181     virtual HRESULT RegisterUser( 
00182         /* [in] */ BSTR bstrConfig,
00183         /* [in] */ void * pUserInfo
00184         );
00185 
00186     virtual HRESULT GetUserRegisterInfo( 
00187         /* [in] */ BSTR bstrConfig,
00188         /* [in] */ void * pUserInfo
00189         );
00190 
00191     virtual HRESULT GetUserRegisterStatus( 
00192         /* [in] */ BSTR bstrConfig,
00193         /* [in] */ LONG * pUserRegisterId,
00194         /* [in] */ LONG * pUserReqisterStatus
00195         );
00196     
00197     virtual ~CPCA15Request()
00198     {
00199         if (fNeedFreeProv && hUserProv)
00200             CryptReleaseContext(hUserProv,0);
00201         if (pUserCert)
00202             CertFreeCertificateContext(pUserCert);
00203         if (hUserStore)
00204             CertCloseStore(hUserStore,0);
00205         if (bstrCertHTML)
00206             SysFreeString(bstrCertHTML);
00207         if (bstrRequestHTML)
00208             SysFreeString(bstrRequestHTML);
00209     };
00210 
00211 protected:
00212     virtual HRESULT CA15GetEnrollParams(const std::string & UIURL,
00213         std::vector<std::string> &templates, 
00214         std::vector<std::string> &EKUs, 
00215         std::vector<std::string> &keySpecs, 
00216         std::string & strDN);
00217         
00218     virtual HRESULT GetTokenStr(std::string & strToken);
00219     virtual HRESULT CredPreValidate()
00220     {
00221         if (AuthType != X509AuthUsername && AuthType != X509AuthCertificate)
00222             return NTE_PERM;
00223         if ((CheckChainType & ~X509CC_NoHostNameCheck) != X509CC_TLS)
00224             return NTE_PERM;
00225         return S_OK;
00226     };
00227     
00228     virtual HRESULT RetrieveIssued( /* [in] */ const BSTR strConfig);
00229     virtual HRESULT PKCS10ToRequestId(BSTR bstrConfig, const std::string & PKCS10);
00230     virtual HRESULT MakePKCS7x2(BSTR Source,BSTR * Dest);
00231     virtual PCCERT_CONTEXT GetCertContext(HCERTSTORE hStore);
00232 
00233     virtual HRESULT encodeRequestToPKCS7(std::vector<BYTE>& Request);
00234     virtual HRESULT decodeRequestFromPKCS7(std::vector<BYTE>& Request);
00235 
00236     virtual HRESULT GetPubKeyFromPKCS7(const std::string & strPKCS7, 
00237         PCERT_REQUEST_INFO * pReqInfo, LONG Disp);
00238     virtual HRESULT GetRequestIdFromPKCS7(BSTR bstrConfig,
00239         BSTR bstrRequest);
00240 
00241     virtual HRESULT GetHTML(BSTR bstrConfig, bool get_cert, 
00242         const std::string & PKCS = "");
00243 
00244     virtual HRESULT ListRequestsAllEx(BSTR strConfig,
00245                       RequestMapEx & rCertMap,
00246                       RequestMapEx & rRequestMap,
00247                       RequestMapEx & rRevokedMap
00248                       );
00249     virtual void ClearCertificateData(void);
00250 };
00251 #endif
00252 

Документация по КриптоПро CAPILite. Последние изменения: Tue Sep 8 15:22:54 2020. Создано системой  doxygen 1.4.5-20051109