UnixRequest.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 _UNIXREQUEST_H
00038 #define _UNIXREQUEST_H
00039 
00040 #include<stdarg.h>
00041 
00042 #ifdef _WIN32
00043 #   include "Certsrv.h"
00044 #endif//_WIN32
00045 #ifdef UNIX
00046 #   include "CSP_WinCrypt.h"
00047 #ifndef VARIANT
00048 #   define VARIANT void*
00049 #endif//VARIANT
00050 #endif // UNIX
00051 
00052 #include "SecureBuffer.h"
00053 //#include "UnixEnroll.h"
00054 #include "BSTR.h"
00055 #include <vector>
00056 #include <string>
00057 #include "reader/support.h"
00058 #include <map>
00059 
00060 #ifndef _WIN32
00061     typedef unsigned short VARIANT_BOOL;
00062 #endif//_WIN32
00063 
00064 //========= CertSrv.h ===========
00065 
00066 // TODO:X Есть вероятность конфликта MonoTouch и пр. вероятно нужно 
00067 // внести всё в namespace ru::CryptoPro
00068 
00069 #define PROPTYPE_LONG        0x00000001 // Signed long
00070 #define PROPTYPE_DATE        0x00000002 // Date+Time
00071 #define PROPTYPE_BINARY      0x00000003 // Binary data
00072 #define PROPTYPE_STRING      0x00000004 // Unicode String
00073 #define PROPTYPE_MASK        0x000000ff
00074 
00075 //========= CertCli.h ===========
00076 
00077 
00078 #define CR_IN_BASE64HEADER      ( 0 )
00079 #define CR_IN_BASE64    ( 0x1 )
00080 //#define       CR_IN_BINARY    ( 0x2 )
00081 //#define       CR_IN_ENCODEANY ( 0xff )
00082 #define CR_IN_ENCODEMASK        ( 0xff )
00083 //#define       CR_IN_FORMATANY ( 0 )
00084 #define CR_IN_PKCS10    ( 0x100 )
00085 //#define       CR_IN_KEYGEN    ( 0x200 )
00086 //#define       CR_IN_PKCS7     ( 0x300 )
00087 //#define       CR_IN_CMC       ( 0x400 )
00088 #define CR_IN_FORMATMASK        ( 0xff00 )
00089 //#define       CR_IN_RPC       ( 0x20000 )
00090 //#define       CR_IN_FULLRESPONSE      ( 0x40000 )
00091 //#define       CR_IN_CRLS      ( 0x80000 )
00092 //#define       CR_IN_MACHINE   ( 0x100000 )
00093 //#define       CR_IN_ROBO      ( 0x200000 )
00094 //#define       CR_IN_CLIENTIDNONE      ( 0x400000 )
00095 //#define       CR_IN_CONNECTONLY       ( 0x800000 )
00096 //#define       CR_IN_CLIENTFLAGSMASK   ( ( ( ( ( CR_IN_ENCODEMASK | CR_IN_RPC )  | CR_IN_MACHINE )  | CR_IN_CLIENTIDNONE )  | CR_IN_CONNECTONLY )  )
00097 
00098 #define CR_DISP_INCOMPLETE      ( 0 )
00099 #define CR_DISP_ERROR   ( 0x1 )
00100 #define CR_DISP_DENIED  ( 0x2 )
00101 #define CR_DISP_ISSUED  ( 0x3 )
00102 #define CR_DISP_ISSUED_OUT_OF_BAND      ( 0x4 )
00103 #define CR_DISP_UNDER_SUBMISSION        ( 0x5 )
00104 #define CR_DISP_REVOKED ( 0x6 )
00105 
00106 #define CR_OUT_BASE64HEADER     ( 0 )
00107 #define CR_OUT_BASE64   ( 0x1 )
00108 #define CR_OUT_BINARY   ( 0x2 )
00109 #define CR_OUT_BASE64REQUESTHEADER      ( 0x3 )
00110 //#define       CR_OUT_HEX      ( 0x4 )
00111 //#define       CR_OUT_HEXASCII ( 0x5 )
00112 #define CR_OUT_BASE64X509CRLHEADER      ( 0x9 )
00113 //#define       CR_OUT_HEXADDR  ( 0xa )
00114 //#define       CR_OUT_HEXASCIIADDR     ( 0xb )
00115 //#define       CR_OUT_HEXRAW   ( 0xc )
00116 #define CR_OUT_ENCODEMASK       ( 0xff )
00117 #define CR_OUT_CHAIN    ( 0x100 )
00118 #define CR_OUT_CRLS     ( 0x200 )
00119 //#define       CR_OUT_NOCRLF   ( 0x40000000 )
00120 //#define       CR_OUT_NOCR     ( 0x80000000 )
00121 #define CR_UNKNOWN_ERR ( -1 )
00122 #define CR_WRONG_PASS ( -2 )
00123 #define CR_OLD_MARKER ( -3 )
00124 #define CR_NOT_EXIST_MARKER ( -4 )
00125 #define CR_WRONG_MARKER_NAME ( -5 )
00126 
00127 #define CR_PROP_NONE               0  // Invalid
00128 //#define CR_PROP_FILEVERSION        1  // String
00129 //#define CR_PROP_PRODUCTVERSION     2  // String
00130 //#define CR_PROP_EXITCOUNT          3  // Long
00131 //
00133 //#define CR_PROP_EXITDESCRIPTION    4  // String, Indexed
00134 //
00135 //#define CR_PROP_POLICYDESCRIPTION  5  // String
00136 //#define CR_PROP_CANAME             6  // String
00137 //#define CR_PROP_SANITIZEDCANAME    7  // String
00138 //#define CR_PROP_SHAREDFOLDER       8  // String
00139 //#define CR_PROP_PARENTCA           9  // String
00140 //#define CR_PROP_CATYPE            10  // Long
00141 #define CR_PROP_CASIGCERTCOUNT    11  // Long
00142 
00143 // CR_PROP_CASIGCERTCOUNT Elements:
00144 #define CR_PROP_CASIGCERT         12  // Binary, Indexed
00145 
00146 // CR_PROP_CASIGCERTCOUNT Elements:
00147 #define CR_PROP_CASIGCERTCHAIN    13  // Binary, Indexed
00148 
00149 //#define CR_PROP_CAXCHGCERTCOUNT   14  // Long
00150 //
00152 //#define CR_PROP_CAXCHGCERT        15  // Binary, Indexed
00153 //
00155 //#define CR_PROP_CAXCHGCERTCHAIN   16  // Binary, Indexed
00156 
00157 // CR_PROP_CASIGCERTCOUNT Elements:
00158 // Fetch only if CR_PROP_CRLSTATE[i] == CA_DISP_VALID
00159 // May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID
00160 #define CR_PROP_BASECRL           17  // Binary, Indexed
00161 
00162 // CR_PROP_CASIGCERTCOUNT Elements:
00163 // Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID
00164 // May also be available if CR_PROP_CRLSTATE[i] == CA_DISP_INVALID
00165 #define CR_PROP_DELTACRL          18  // Binary, Indexed
00166 
00168 //#define CR_PROP_CACERTSTATE       19  // Long, Indexed
00169 
00170 // CR_PROP_CASIGCERTCOUNT Elements:
00171 #define CR_PROP_CRLSTATE          20  // Long, Indexed
00172 
00173 //#define CR_PROP_CAPROPIDMAX       21  // Long
00174 //#define CR_PROP_DNSNAME           22  // String
00175 //#define CR_PROP_ROLESEPARATIONENABLED 23 // Long
00176 //#define CR_PROP_KRACERTUSEDCOUNT  24  // Long
00177 //#define CR_PROP_KRACERTCOUNT      25  // Long
00178 
00180 //#define CR_PROP_KRACERT           26  // Binary, Indexed
00181 
00183 //#define CR_PROP_KRACERTSTATE      27  // Long, Indexed
00184 
00185 //#define CR_PROP_ADVANCEDSERVER    28  // Long
00186 #define CR_PROP_TEMPLATES         29  // String
00187 
00190 //#define CR_PROP_BASECRLPUBLISHSTATUS 30  // Long, Indexed
00191 //
00193 // Fetch only if Delta CRLs enabled && CR_PROP_CRLSTATE[i] == CA_DISP_VALID
00194 //#define CR_PROP_DELTACRLPUBLISHSTATUS 31  // Long, Indexed
00195 
00196 // CR_PROP_CASIGCERTCOUNT Elements:
00197 #define CR_PROP_CASIGCERTCRLCHAIN 32  // Binary, Indexed
00198 
00200 //#define CR_PROP_CAXCHGCERTCRLCHAIN 33 // Binary, Indexed
00201 //
00203 //#define CR_PROP_CACERTSTATUSCODE  34  // Long, Indexed
00204 //
00206 //#define CR_PROP_CAFORWARDCROSSCERT 35  // Binary, Indexed
00207 //
00209 //#define CR_PROP_CABACKWARDCROSSCERT 36  // Binary, Indexed
00210 //
00212 //#define CR_PROP_CAFORWARDCROSSCERTSTATE 37  // Long, Indexed
00213 //
00215 //#define CR_PROP_CABACKWARDCROSSCERTSTATE 38  // Long, Indexed
00216 //
00218 //#define CR_PROP_CACERTVERSION       39  // Long, Indexed
00219 //#define CR_PROP_SANITIZEDCASHORTNAME 40  // String
00220 //
00222 //#define CR_PROP_CERTCDPURLS 41  // String, Indexed
00223 //
00225 //#define CR_PROP_CERTAIAURLS 42  // String, Indexed
00226 //
00228 //#define CR_PROP_CERTAIAOCSPURLS 43  // String, Indexed
00229 //
00231 //#define CR_PROP_LOCALENAME 44  // String
00232 
00233 #define CR_PROP_TEMPLATES_CA20 300 // String
00234 
00235 //========= CertView.h ===========
00236 
00237 
00238 #define CV_OUT_BASE64HEADER     ( 0 )
00239 #define CV_OUT_BASE64   ( 0x1 )
00240 //#define CV_OUT_BINARY   ( 0x2 )
00241 #define CV_OUT_BASE64REQUESTHEADER      ( 0x3 )
00242 //#define CV_OUT_HEX      ( 0x4 )
00243 //#define CV_OUT_HEXASCII ( 0x5 )
00244 #define CV_OUT_BASE64X509CRLHEADER      ( 0x9 )
00245 //#define CV_OUT_HEXADDR  ( 0xa )
00246 //#define CV_OUT_HEXASCIIADDR     ( 0xb )
00247 //#define CV_OUT_HEXRAW   ( 0xc )
00248 //#define CV_OUT_ENCODEMASK       ( 0xff )
00249 //#define CV_OUT_NOCRLF   ( 0x40000000 )
00250 //#define CV_OUT_NOCR     ( 0x80000000 )
00251 
00252 
00253 //========= UnixRequest.h ===========
00254 
00255 #define CR_OUT_HTML     ( 0xc3 )
00256 
00257 
00258 //========= CertCli.h ===========
00259 
00263 #ifndef _WIN32
00264 typedef 
00265 enum X509EnrollmentAuthFlags
00266     {
00267                 X509AuthNone            = 0,    
00268                 X509AuthAnonymous       = 1,    
00269                 X509AuthKerberos        = 2,    
00270                 X509AuthUsername        = 4,    
00271                 X509AuthCertificate     = 8             
00272     }   X509EnrollmentAuthFlags;
00273 #endif//_WIN32
00274 
00275 //========= UnixRequest.h ===========
00276 
00282 typedef 
00283 enum X509EnrollmentCheckChainFlags
00284     {
00285                 X509CC_None             = 0,            
00286                 X509CC_TLS              = 1,            
00287                 X509CC_NoHostNameCheck= 2,      
00289                 X509CC_NoCheck = 4      
00291     }   X509EnrollmentCheckChainFlags;
00292 
00301 class UnixRequest
00302 {
00303 public:     
00304 
00314     static UnixRequest *URFactory(const char *pszCA_type_name);
00315 
00321     class UserCallbacks
00322     {
00323     public:
00339         virtual bool askCredentialCAThumbprint( 
00340                     const BSTR prompt,
00341                     BSTR *strCredentialCAThumbprint){
00342             UNUSED(prompt);
00343             UNUSED(strCredentialCAThumbprint);
00344             return false;       // По умолчанию - отказ
00345         }
00346 
00360         virtual bool showForCheckCAThumbprint( 
00361                     const BSTR prompt,
00362                     const BSTR strCAThumbprint){
00363             UNUSED(prompt);
00364             UNUSED(strCAThumbprint);
00365             return false;       // По умолчанию - отказ
00366         }
00367 
00379         virtual bool askPassword( 
00380                     const BSTR prompt,
00381                     CSecurePin &password){
00382             UNUSED(prompt);
00383             UNUSED(password);
00384             return false;       // По умолчанию - отказ
00385         }
00386 
00390         virtual UserCallbacks* clone() const=0;
00391 
00395         virtual ~UserCallbacks() {}
00396     };
00397 
00398     virtual ~UnixRequest() {}
00399 
00427     virtual HRESULT SetCredential(
00428         /* [in] */ UserCallbacks *pCallbacks,
00429         /* [in] */ X509EnrollmentAuthFlags AuthType,
00430         /* [in] */ X509EnrollmentCheckChainFlags CheckChainType,
00431         /* [in] */ const BSTR strCredential,
00432         /* [in][out] */ CSecurePin *sbPassword,
00433         /* [in] */ BOOL UseLocalMachineCert = FALSE) = 0;
00434 
00435     class AttrTriple 
00436     {
00437         public:
00438             LONG Flags;
00439             BSTR Name;
00440             BSTR Value;
00441 
00442             AttrTriple():Flags(0),Name(0),Value(0) { };
00443             ~AttrTriple()
00444             {
00445                 if (Name)
00446                     SysFreeString(Name);
00447                 if (Value)
00448                     SysFreeString(Value);
00449             };
00450     };
00451 
00452     class RequestInfoEx
00453     {
00454             bool has_items;
00455         public:
00456             LONG Disposition;
00457             std::string sent_date;
00458             std::string approval_date;
00459             std::string comment;
00460             std::string PKCS;
00461             RequestInfoEx():has_items(false),Disposition(-1),
00462                 sent_date(),approval_date(),comment(),PKCS()
00463             {
00464             };
00465             RequestInfoEx(
00466                 LONG Disposition_,
00467                 const std::string & sent_date_,
00468                 const std::string & approval_date_,
00469                 const std::string & comment_,
00470                 const std::string & PKCS_
00471             ): has_items(true),
00472                Disposition(Disposition_),
00473                sent_date(sent_date_),
00474                approval_date(approval_date_),
00475                comment(comment_),
00476                PKCS(PKCS_)
00477             {
00478             };
00479             bool empty()
00480             {
00481                 return !has_items;
00482             };
00483     };
00484 
00485     typedef enum 
00486     {
00487         CA15None=0,
00488         CA15Cert=1,
00489         CA15Request=2,
00490         CA15Revoke=3
00491     } ReqType;
00492 
00493     typedef std::map<std::string,RequestInfoEx> RequestMapEx;
00494 
00514     virtual HRESULT GetRequestParams( 
00515         /* [in] */ BSTR strConfig,
00516         /* [in] */ BSTR strTemplate,
00517         /* [retval][out] */ BSTR *pstrRDN,
00518         /* [retval][out] */ BSTR *pstrEKUsage,
00519         /* [retval][out] */ DWORD *pKeySpec,
00520         /* [retval] */ std::vector<AttrTriple> *pAttrs
00521         ){
00522             UNUSED(strConfig);
00523             UNUSED(strTemplate);
00524             UNUSED(pstrRDN);
00525             UNUSED(pstrEKUsage);
00526             UNUSED(pKeySpec);
00527             UNUSED(pAttrs);
00528             return E_NOTIMPL; /* Реализуем только для CPCA15Request */
00529     }
00530 
00536     typedef std::map<std::string,LONG> RequestMap;
00537 
00538     virtual HRESULT ListRequests(
00539         /* [in] */ BSTR strConfig,
00540         /* [out] */ RequestMap &Requests 
00541     ) {
00542         UNUSED(strConfig);
00543         UNUSED(Requests);
00544         return E_NOTIMPL;
00545     }
00553     virtual HRESULT ListRequestsEx(
00554                 BSTR strConfig,
00555             RequestMapEx & Requests,
00556                 ReqType type = CA15Request
00557         ) {
00558         UNUSED(strConfig);
00559         UNUSED(Requests);
00560         UNUSED(type);
00561         return E_NOTIMPL;
00562     }
00563 
00576     virtual HRESULT GetRequest( 
00577         /* [in] */ LONG Flags, /* CR_OUT_HTML */
00578         /* [retval][out] */ BSTR *pstrRequest){
00579             UNUSED(Flags);
00580             UNUSED(pstrRequest);
00581             return E_NOTIMPL; /* Реализуем только для CPCA15Request */
00582     }
00583 
00584 public:     
00585 
00613     virtual HRESULT Submit( 
00614         /* [in] */ LONG Flags, /* CR_IN_BASE64HEADER, CR_IN_PKCS10 */
00615         /* [in] */ const BSTR strRequest,
00616         /* [in] */ const BSTR strAttributes,
00617         /* [in] */ const BSTR strConfig,
00618         /* [retval][out] */ LONG *pDisposition) = 0;
00619 
00651     virtual HRESULT RetrievePending( 
00652         /* [in] */ LONG RequestId,
00653         /* [in] */ const BSTR strConfig,
00654         /* [retval][out] */ LONG *pDisposition) = 0;
00655 
00683     virtual HRESULT AcknowledgeInstallCert( 
00684         /* [in] */ LONG RequestId,
00685         /* [in] */ const BSTR strConfig
00686         )
00687     {
00688         UNUSED(RequestId);
00689         UNUSED(strConfig);
00690         return E_NOTIMPL;
00691     }
00692 
00693 
00694 
00708     virtual HRESULT GetLastStatus( 
00709         /* [retval][out] */ LONG *pStatus) {
00710         UNUSED(pStatus);
00711         return E_NOTIMPL; /* Вообще не нужно реализовывать */
00712     }
00713 
00721     virtual HRESULT GetRequestId( 
00722         /* [retval][out] */ LONG *pRequestId) = 0;
00723 
00735     virtual HRESULT GetDispositionMessage( 
00736         /* [retval][out] */ BSTR *pstrDispositionMessage) = 0;
00737 
00755     virtual HRESULT GetCACertificate( 
00756         /* [in] */ LONG fExchangeCertificate, /* не поддерживаем */
00757         /* [in] */ const BSTR strConfig,
00758         /* [in] */ LONG Flags, /* CR_OUT_BASE64HEADER, CR_OUT_CHAIN */
00759         /* [retval][out] */ BSTR *pstrCertificate) = 0;
00760 
00772     virtual HRESULT GetCertificate( 
00773         /* [in] */ LONG Flags, /* CR_OUT_HTML, CR_OUT_BASE64HEADER, CR_OUT_CHAIN */
00774         /* [retval][out] */ BSTR *pstrCertificate) = 0;
00775 
00776 public:     
00777 
00813     virtual HRESULT GetIssuedCertificate( 
00814         /* [in] */ const BSTR strConfig,
00815         /* [in] */ LONG RequestId,
00816         /* [in] */ const BSTR strSerialNumber,
00817         /* [retval][out] */ LONG *pDisposition){
00818         UNUSED(strConfig);
00819         UNUSED(RequestId);
00820         UNUSED(strSerialNumber);
00821         UNUSED(pDisposition);
00822         return E_NOTIMPL; /* Вообще не нужно реализовывать */
00823     }
00824 
00843     virtual HRESULT GetErrorMessageText( 
00844         /* [in] */ LONG hrMessage,
00845         /* [in] */ LONG Flags,
00846         /* [retval][out] */ BSTR *pstrErrorMessageText){
00847         UNUSED(hrMessage);
00848         UNUSED(Flags);
00849         UNUSED(pstrErrorMessageText);
00850         return E_NOTIMPL; /* Вообще не нужно реализовывать */
00851     }
00861     virtual HRESULT RegisterUser( 
00862         /* [in] */ BSTR bstrConfig,
00863         /* [in] */ void * pUserInfo
00864         )
00865     {
00866         UNUSED(bstrConfig);
00867         UNUSED(pUserInfo);
00868         return E_NOTIMPL; /* Реализуем для CPCA1.5 */
00869     }
00879     virtual HRESULT GetUserRegisterInfo( 
00880         /* [in] */ BSTR bstrConfig,
00881         /* [in] */ void * pUserInfo
00882         )
00883     {
00884         UNUSED(bstrConfig);
00885         UNUSED(pUserInfo);
00886         return E_NOTIMPL; /* Реализуем для CPCA1.5 */
00887     }
00888 
00904     virtual HRESULT GetUserRegisterStatus( 
00905         /* [in] */ BSTR bstrConfig,
00906         /* [in] */ LONG * pUserRegisterId,
00907         /* [in] */ LONG * pUserRegisterStatus
00908         )
00909     {
00910         UNUSED(bstrConfig);
00911         UNUSED(pUserRegisterId);
00912         UNUSED(pUserRegisterStatus);
00913         return E_NOTIMPL; /* Реализуем для CPCA1.5 */
00914     }
00915 
00916 
00948     virtual HRESULT GetCAProperty( 
00949         /* [in] */ const BSTR strConfig,
00950         /* [in] */ LONG PropId, /* CR_PROP_BASECRL, CR_PROP_DELTACRL, CR_PROP_TEMPLATES */
00951         /* [in] */ LONG PropIndex, 
00952         /* [in] */ LONG PropType, /* PROPTYPE_BINARY, PROPTYPE_STRING */
00953         /* [in] */ LONG Flags, /* CV_OUT_BASE64HEADER, CV_OUT_BASE64REQUESTHEADER, CV_OUT_BASE64X509CRLHEADER */
00954         /* [retval][out] */ VARIANT *pvarPropertyValue) = 0;
00955 
00969     virtual HRESULT GetCAPropertyFlags( 
00970         /* [in] */ const BSTR strConfig,
00971         /* [in] */ LONG PropId,
00972         /* [retval][out] */ LONG *pPropFlags){
00973         UNUSED(strConfig);
00974         UNUSED(PropId);
00975         UNUSED(pPropFlags);
00976         return E_NOTIMPL; /* Вообще не нужно реализовывать */
00977     }
00978 
00992     virtual HRESULT GetCAPropertyDisplayName( 
00993         /* [in] */ const BSTR strConfig,
00994         /* [in] */ LONG PropId,
00995         /* [retval][out] */ BSTR *pstrDisplayName){
00996         UNUSED(strConfig);
00997         UNUSED(PropId);
00998         UNUSED(pstrDisplayName);
00999         return E_NOTIMPL; /* Вообще не нужно реализовывать */
01000     }
01001 
01018     virtual HRESULT GetFullResponseProperty( 
01019         /* [in] */ LONG PropId,
01020         /* [in] */ LONG PropIndex,
01021         /* [in] */ LONG PropType,
01022         /* [in] */ LONG Flags,
01023         /* [retval][out] */ VARIANT *pvarPropertyValue){
01024         UNUSED(PropId);
01025         UNUSED(PropIndex);
01026         UNUSED(PropType);
01027         UNUSED(Flags);
01028         UNUSED(pvarPropertyValue);
01029         return E_NOTIMPL; /* Вообще не нужно реализовывать */
01030     }
01031 
01032 public:     
01033 
01055     virtual HRESULT SetCredential( 
01056         /* [in] */ LONG hWnd,
01057         /* [in] */ X509EnrollmentAuthFlags AuthType,
01058         /* [in] */ BSTR strCredential,
01059         /* [in] */ BSTR strPassword) = 0;
01072     virtual HRESULT GetRequestIdString( 
01073         /* [retval][out] */ BSTR *pstrRequestId){
01074         UNUSED(pstrRequestId);
01075         return E_NOTIMPL; /* Вообще не нужно реализовывать */
01076     }
01077 
01117     virtual HRESULT GetIssuedCertificate2( 
01118         /* [in] */ BSTR strConfig,
01119         /* [in] */ BSTR strRequestId,
01120         /* [in] */ BSTR strSerialNumber,
01121         /* [retval][out] */ LONG *pDisposition){
01122         UNUSED(strConfig);
01123         UNUSED(strRequestId);
01124         UNUSED(strSerialNumber);
01125         UNUSED(pDisposition);
01126         return E_NOTIMPL; /* Вообще не нужно реализовывать */
01127     }
01128 
01139     virtual HRESULT GetRefreshPolicy( 
01140         /* [retval][out] */ VARIANT_BOOL *pValue){
01141         UNUSED(pValue);
01142         return E_NOTIMPL; /* Вообще не нужно реализовывать */
01143     }
01144 
01145 };
01146 #endif /* _UNIXEREQUEST_H */

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