Класс UnixRequest
[API запроса на сертификат]

Общий интерфейс взаимодействия с УЦ (связь, получение параметров, передача запросов, ожидание и получение ответов). Подробнее...

#include <UnixRequest.h>

Полный список членов класса

Открытые типы

typedef std::map< std::string,
LONG > 
RequestMap
 получить список идентификаторов запросов

Открытые члены

virtual HRESULT SetCredential (UserCallbacks *pCallbacks, X509EnrollmentAuthFlags AuthType, X509EnrollmentCheckChainFlags CheckChainType, const BSTR strCredential, CSecurePin *sbPassword, BOOL UseLocalMachineCert=FALSE)=0
 Устанавливает расширенные параметры метода аутентификации при взаимодействии с УЦ.
virtual HRESULT GetRequestParams (BSTR strConfig, BSTR strTemplate, BSTR *pstrRDN, BSTR *pstrEKUsage, DWORD *pKeySpec, std::vector< AttrTriple > *pAttrs)
 Получить задаваемые УЦ параметры запроса на сертификат.
virtual HRESULT ListRequestsEx (BSTR strConfig, RequestMapEx &Requests, ReqType type=CA15Request)
 получить расширенный список идентификаторов запросов
virtual HRESULT GetRequest (LONG Flags, BSTR *pstrRequest)
 Получить ранее отправленный запрос.
virtual HRESULT Submit (LONG Flags, const BSTR strRequest, const BSTR strAttributes, const BSTR strConfig, LONG *pDisposition)=0
 Отправить запрос на сертификат.
virtual HRESULT RetrievePending (LONG RequestId, const BSTR strConfig, LONG *pDisposition)=0
 Получить статус запроса.
virtual HRESULT AcknowledgeInstallCert (LONG RequestId, const BSTR strConfig)
 Подтвердить установку сертификата.
virtual HRESULT GetLastStatus (LONG *pStatus)
 Получить последний код завершения, полученный при обработке текущего запроса.
virtual HRESULT GetRequestId (LONG *pRequestId)=0
 Получить идентификатор текущего запроса.
virtual HRESULT GetDispositionMessage (BSTR *pstrDispositionMessage)=0
 Получить человекочитаемое сообщение для текущего статуса обработки запроса.
virtual HRESULT GetCACertificate (LONG fExchangeCertificate, const BSTR strConfig, LONG Flags, BSTR *pstrCertificate)=0
 Получить сертификат УЦ.
virtual HRESULT GetCertificate (LONG Flags, BSTR *pstrCertificate)=0
 Получить запрошенный сертификат УЦ.
virtual HRESULT GetIssuedCertificate (const BSTR strConfig, LONG RequestId, const BSTR strSerialNumber, LONG *pDisposition)
 Получить статус запроса.
virtual HRESULT GetErrorMessageText (LONG hrMessage, LONG Flags, BSTR *pstrErrorMessageText)
 Получить сообщение об ощибке для заданного кода возврата.
virtual HRESULT RegisterUser (BSTR bstrConfig, void *pUserInfo)
 Зарегистрировать пользователя.
virtual HRESULT GetUserRegisterInfo (BSTR bstrConfig, void *pUserInfo)
 Получить данные формы регистрации пользователя.
virtual HRESULT GetUserRegisterStatus (BSTR bstrConfig, LONG *pUserRegisterId, LONG *pUserRegisterStatus)
 Получить данные формы регистрации пользователя.
virtual HRESULT GetCAProperty (const BSTR strConfig, LONG PropId, LONG PropIndex, LONG PropType, LONG Flags, VARIANT *pvarPropertyValue)=0
 Возвращает свойства УЦ.
virtual HRESULT GetCAPropertyFlags (const BSTR strConfig, LONG PropId, LONG *pPropFlags)
 Возвращает формат свойства УЦ.
virtual HRESULT GetCAPropertyDisplayName (const BSTR strConfig, LONG PropId, BSTR *pstrDisplayName)
 Возвращает отображаемое имя свойства УЦ.
virtual HRESULT GetFullResponseProperty (LONG PropId, LONG PropIndex, LONG PropType, LONG Flags, VARIANT *pvarPropertyValue)
 Возвращает данные кэша, которые были получены из УЦ.
virtual HRESULT SetCredential (LONG hWnd, X509EnrollmentAuthFlags AuthType, BSTR strCredential, BSTR strPassword)=0
 Устанавливает параметры метода аутентификации при взаимодействии с УЦ.
virtual HRESULT GetRequestIdString (BSTR *pstrRequestId)
 Получить идентификатор текущего запроса в виде строки.
virtual HRESULT GetIssuedCertificate2 (BSTR strConfig, BSTR strRequestId, BSTR strSerialNumber, LONG *pDisposition)
 Получить статус запроса.
virtual HRESULT GetRefreshPolicy (VARIANT_BOOL *pValue)
 Получить признак обновления политики выпуска сертификатов клиента.

Открытые статические члены

static UnixRequestURFactory (const char *pszCA_type_name)
 Конструктор объекта взаимодействия с УЦ.

Классы

class  UserCallbacks
 Интерфейс запросов пользователя. Подробнее...


Подробное описание

Общий интерфейс взаимодействия с УЦ (связь, получение параметров, передача запросов, ожидание и получение ответов).

Является урезанным аналогом ICertRequest из Microsoft CryptoAPI.


Определения типов

typedef std::map<std::string,LONG> UnixRequest::RequestMap

получить список идентификаторов запросов

Аргументы:
strConfig [in] URL CA
Requests [out] карта идентификаторов запросов Второй параметр - Disposition


Методы

virtual HRESULT UnixRequest::AcknowledgeInstallCert ( LONG  RequestId,
const BSTR  strConfig 
) [inline, virtual]

Подтвердить установку сертификата.

Не поддерживается в текущей версии

Подтверждает установку сертификата и (при вызове через) TokenId закрывает токен

Аргументы:
RequestId [in] Идентификатор запроса
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
Возвращает:
S_OK - в случае успеха
Заметки:
Возможные результаты подачи запроса:
  • CR_DISP_DENIED - Запрос отвергнут УЦ
  • CR_DISP_ERROR - Ошибочная подача запроса (требуется повторить)
  • CR_DISP_INCOMPLETE - Обработка запроса не завершена, получение будет возможно после завершения обработки
  • CR_DISP_ISSUED - Сертификат выдан (уже можно получать)
  • CR_DISP_ISSUED_OUT_OF_BAND - Сертификат выдан (будет выдан) непосредственно на УЦ, а не по сети
  • CR_DISP_UNDER_SUBMISSION - Сертификат находится в процессе выдачи, получение будет возможно после завершения обработки

virtual HRESULT UnixRequest::GetCACertificate ( LONG  fExchangeCertificate,
const BSTR  strConfig,
LONG  Flags,
BSTR *  pstrCertificate 
) [pure virtual]

Получить сертификат УЦ.

Аргументы:
fExchangeCertificate [in] FALSE - получить сертификат подписи сертификатов УЦ, TRUE - получить сертификат шифрования, используемый для шифрования в адрес УЦ
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
Flags [in] CR_OUT_BASE64HEADER|CR_OUT_CHAIN
pstrCertificate [out] Сертификат
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetCAProperty ( const BSTR  strConfig,
LONG  PropId,
LONG  PropIndex,
LONG  PropType,
LONG  Flags,
VARIANT *  pvarPropertyValue 
) [pure virtual]

Возвращает свойства УЦ.

Этот метод функционально идентичен методу ICertAdmin2::GetCAProperty Microsoft CryptoAPI, полное описание следует читать на msdn.microsoft.com.

Аргументы:
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
PropId [in] Ид. свойства. Поддерживаются:
  • CR_PROP_CASIGCERTCOUNT - кол-во ключей УЦ (LONG);
  • CR_PROP_CASIGCERTCHAIN - цепочка PropIndex ключа УЦ (BINARY);
  • CR_PROP_BASECRL - СОС PropIndex ключа УЦ (BINARY);
  • CR_PROP_DELTACRL - разностный СОС PropIndex ключа УЦ (BINARY);
  • CR_PROP_TEMPLATES - список шаблонов УЦ (STRING);
PropIndex [in] Начиающийся с нуля идекс свойства;
PropType [in] Тип свойства. Поддерживаются:
  • PROPTYPE_LONG;
  • PROPTYPE_BINARY;
  • PROPTYPE_STRING;
Flags [in] Требуемый Форматсвойства. Поддерживаются:
  • CV_OUT_BASE64HEADER;
  • CV_OUT_BASE64REQUESTHEADER;
  • CV_OUT_BASE64X509CRLHEADER;
pvarPropertyValue [out] Значение
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetCAPropertyDisplayName ( const BSTR  strConfig,
LONG  PropId,
BSTR *  pstrDisplayName 
) [inline, virtual]

Возвращает отображаемое имя свойства УЦ.

Не поддерживается в текущей версии

Аргументы:
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
PropId [in] Ид. свойства. Описание смотри UnixRequest::GetCAProperty и ICertAdmin2::GetCAProperty
pstrDisplayName [out] Отображаемое имя
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetCAPropertyFlags ( const BSTR  strConfig,
LONG  PropId,
LONG *  pPropFlags 
) [inline, virtual]

Возвращает формат свойства УЦ.

Не поддерживается в текущей версии

Аргументы:
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
PropId [in] Ид. свойства. Описание смотри UnixRequest::GetCAProperty и ICertAdmin2::GetCAProperty
pPropFlags [out] Формат
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetCertificate ( LONG  Flags,
BSTR *  pstrCertificate 
) [pure virtual]

Получить запрошенный сертификат УЦ.

Аргументы:
Flags [in] CR_OUT_BASE64HEADER|CR_OUT_CHAIN
pstrCertificate [out] Сертификат
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetDispositionMessage ( BSTR *  pstrDispositionMessage  )  [pure virtual]

Получить человекочитаемое сообщение для текущего статуса обработки запроса.

Аргументы:
pstrDispositionMessage [out] Сообщение
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetErrorMessageText ( LONG  hrMessage,
LONG  Flags,
BSTR *  pstrErrorMessageText 
) [inline, virtual]

Получить сообщение об ощибке для заданного кода возврата.

Не поддерживается в текущей версии

Аргументы:
hrMessage [in] Код завершения
Flags [in] Формат сообщения: Ноль (0) - только текст сообщения; CR_GEMT_HRESULT_STRING - дополнительно добавить код завершения в десятичном и шестнадцатиричном виде;
pstrErrorMessageText [out] Сообщение
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetFullResponseProperty ( LONG  PropId,
LONG  PropIndex,
LONG  PropType,
LONG  Flags,
VARIANT *  pvarPropertyValue 
) [inline, virtual]

Возвращает данные кэша, которые были получены из УЦ.

Не поддерживается в текущей версии

Аргументы:
PropId [in] Ид. свойства
PropIndex [in] Начиающийся с нуля идекс свойства
PropType [in] Тип свойства
Flags [in] Требуемый Формат свойства
pvarPropertyValue [out] Значение
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetIssuedCertificate ( const BSTR  strConfig,
LONG  RequestId,
const BSTR  strSerialNumber,
LONG *  pDisposition 
) [inline, virtual]

Получить статус запроса.

Не поддерживается в текущей версии

Предназначен для получения текущего статуса по номеру запроса или серийному номеру запрашиваемого сертификата.

Выполняет ту же работу, что и UnixRequest::RetrievePending(), с дополнительной возможностью опроса по серийному номеру сертификата.

Аргументы:
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
RequestId [in] Идентификатор запроса
strSerialNumber [in] Серийный номер сертификата, если RequestId == -1
pDisposition [out] Текущий результат подачи запроса
Возвращает:
S_OK - в случае успеха
Заметки:
Возможные результаты подачи запроса:
  • CR_DISP_DENIED - Запрос отвергнут УЦ
  • CR_DISP_ERROR - Ошибочная подача запроса (требуется повторить)
  • CR_DISP_INCOMPLETE - Обработка запроса не завершена, получение будет возможно после завершения обработки
  • CR_DISP_ISSUED - Сертификат выдан (уже можно получать)
  • CR_DISP_ISSUED_OUT_OF_BAND - Сертификат выдан (будет выдан) непосредственно на УЦ, а не по сети
  • CR_DISP_UNDER_SUBMISSION - Сертификат находится в процессе выдачи, получение будет возможно после завершения обработки

virtual HRESULT UnixRequest::GetIssuedCertificate2 ( BSTR  strConfig,
BSTR  strRequestId,
BSTR  strSerialNumber,
LONG *  pDisposition 
) [inline, virtual]

Получить статус запроса.

Не поддерживается в текущей версии

Предназначен для получения текущего статуса, по номеру запроса или серийному номеру сертифката запрашиваемого сертификата.

Выполняет туже работу, что и UnixRequest::RetrievePending(), с дополнительной возможностью опроса по серийному номеру сертификата.

Аргументы:
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
strRequestId [in] Идентификатор запроса в виде строки
strSerialNumber [in] Серийный номер сертификата, если RequestId == -1. Состоит из чётного числа шестндцатиричных цифр, при необходимости может быть добавлено не более одно лидирующего нуля
pDisposition [out] Текущий результат подачи запроса
Возвращает:
S_OK - в случае успеха
Заметки:
Возможные результаты подачи запроса:
  • CR_DISP_DENIED - Запрос отвергнут УЦ
  • CR_DISP_ERROR - Ошибочная подача запроса (требуется повторить)
  • CR_DISP_INCOMPLETE - Обработка запроса не завершена, получение будет возможно после завершения обработки
  • CR_DISP_ISSUED - Сертификат выдан (уже можно получать)
  • CR_DISP_ISSUED_OUT_OF_BAND - Сертификат выдан (будет выдан) непосредственно на УЦ, а не по сети
  • CR_DISP_UNDER_SUBMISSION - Сертификат находится в процессе выдачи, получение будет возможно после завершения обработки

virtual HRESULT UnixRequest::GetLastStatus ( LONG *  pStatus  )  [inline, virtual]

Получить последний код завершения, полученный при обработке текущего запроса.

Не поддерживается в текущей версии

GetLastStatus возвращает последний код возврата, не следует путать его с со статусом запроса.

Аргументы:
pStatus [out] Последний код возврата
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetRefreshPolicy ( VARIANT_BOOL *  pValue  )  [inline, virtual]

Получить признак обновления политики выпуска сертификатов клиента.

Не поддерживается в текущей версии

Аргументы:
pValue [out] Признак обновления
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetRequest ( LONG  Flags,
BSTR *  pstrRequest 
) [inline, virtual]

Получить ранее отправленный запрос.

Аргументы:
Flags [in] Поддерживается только CR_OUT_HTML (необходим для печати)
pstrRequest [out] Запрос
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetRequestId ( LONG *  pRequestId  )  [pure virtual]

Получить идентификатор текущего запроса.

Аргументы:
pRequestId [out] Идентификатор запроса
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetRequestIdString ( BSTR *  pstrRequestId  )  [inline, virtual]

Получить идентификатор текущего запроса в виде строки.

Не поддерживается в текущей версии

Аргументы:
pstrRequestId [out] Идентификатор запроса
Возвращает:
S_OK - в случае успеха
Заметки:
Полученная BSTR строка должна быть освобождена функцией SysFreeString()

virtual HRESULT UnixRequest::GetUserRegisterInfo ( BSTR  bstrConfig,
void *  pUserInfo 
) [inline, virtual]

Получить данные формы регистрации пользователя.

Аргументы:
bstrConfig [in] Адрес центра, например
pUserInfo [in][out] Данные о пользователе зависят от типа УЦ
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::GetUserRegisterStatus ( BSTR  bstrConfig,
LONG *  pUserRegisterId,
LONG *  pUserRegisterStatus 
) [inline, virtual]

Получить данные формы регистрации пользователя.

Аргументы:
bstrConfig [in] Адрес центра, например
pUserRegisterId [out] ID запроса на регистрацию пользователя
pUserRegisterStatus [out] Статус запроса на регистрацию пользователя В случае неуспеха в статус записываетя развернутый код ошибки Возможные варианты : CR_UNKNOWN_ERR - неизвестная ошибка CR_WRONG_PASS - указан неверный пароль CR_OLD_MARKER - просроченный маркер доступа CR_NOT_EXIST_MARKER - указан несуществующий маркер доступа CR_WRONG_MARKER_NAME - ошибка в имени маркера доступа
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::ListRequestsEx ( BSTR  strConfig,
RequestMapEx &  Requests,
ReqType  type = CA15Request 
) [inline, virtual]

получить расширенный список идентификаторов запросов

Аргументы:
strConfig [in] URL CA
Requests [out] карта идентификаторов запросов
type [in] Тип запроса Второй параметр - Disposition

virtual HRESULT UnixRequest::RegisterUser ( BSTR  bstrConfig,
void *  pUserInfo 
) [inline, virtual]

Зарегистрировать пользователя.

Аргументы:
bstrConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
pUserInfo [in] Данные о пользователе зависят от типа УЦ
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::RetrievePending ( LONG  RequestId,
const BSTR  strConfig,
LONG *  pDisposition 
) [pure virtual]

Получить статус запроса.

Не поддерживается в текущей версии

Предназначен для получения текущего статуса, если в предыдущий раз были получены статусы, либо CR_DISP_INCOMPLETE, либо CR_DISP_UNDER_SUBMISSION.

Аргументы:
RequestId [in] Идентификатор запроса
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
pDisposition [out] Текущий результат подачи запроса
Возвращает:
S_OK - в случае успеха
Заметки:
Возможные результаты подачи запроса:
  • CR_DISP_DENIED - Запрос отвергнут УЦ
  • CR_DISP_ERROR - Ошибочная подача запроса (требуется повторить)
  • CR_DISP_INCOMPLETE - Обработка запроса не завершена, получение будет возможно после завершения обработки
  • CR_DISP_ISSUED - Сертификат выдан (уже можно получать)
  • CR_DISP_ISSUED_OUT_OF_BAND - Сертификат выдан (будет выдан) непосредственно на УЦ, а не по сети
  • CR_DISP_UNDER_SUBMISSION - Сертификат находится в процессе выдачи, получение будет возможно после завершения обработки

virtual HRESULT UnixRequest::SetCredential ( LONG  hWnd,
X509EnrollmentAuthFlags  AuthType,
BSTR  strCredential,
BSTR  strPassword 
) [pure virtual]

Устанавливает параметры метода аутентификации при взаимодействии с УЦ.

Аргументы:
hWnd [in] Дескриптор окна, на Unix не используется.
AuthType [in] Тип аутентификации:
  • X509AuthAnonymous - strCredential и sbPassword должны быть NULL;
  • X509AuthCertificate - используется сертификат клиента, SHA-1 Thumbprint которого задаётся в strCredential;
  • X509AuthKerberos - не поддерживается;
  • X509AuthUsername - по имени/ид.маркера и паролю/маркеру временного доступа;
strCredential [in] имя пользователя, ид. маркера или Thumbprint клиентского сертификата (NULL, если не требуется)
strPassword [in] Пароль или маркер временного доступа (NULL, если не требуется)
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::SetCredential ( UserCallbacks pCallbacks,
X509EnrollmentAuthFlags  AuthType,
X509EnrollmentCheckChainFlags  CheckChainType,
const BSTR  strCredential,
CSecurePin sbPassword,
BOOL  UseLocalMachineCert = FALSE 
) [pure virtual]

Устанавливает расширенные параметры метода аутентификации при взаимодействии с УЦ.

Аргументы:
pCallbacks [in] Реализация зпросов к пользователю (NULL, если не требуется)
AuthType [in] Тип аутентификации:
  • X509AuthAnonymous - strCredential и sbPassword должны быть NULL;
  • X509AuthCertificate - используется сертификат клиента, SHA-1 Thumbprint которого задаётся в strCredential;
  • X509AuthKerberos - не поддерживается;
  • X509AuthUsername - по имени/ид.маркера и паролю/маркеру временного доступа;
CheckChainType [in] Метод проверки сертификата TLS сервера УЦ
strCredential [in] имя пользователя, ид. маркера (NULL, если не требуется или используется pCallbacks)
sbPassword [in/out] Пароль или маркер временного доступа (NULL, если не требуется или используется pCallbacks)
UseLocalMachineCert [in] использовать для аутентификации сертификат из хранилища локального компьютера вместо хранилища текущего пользователя (по умолчанию FALSE)
Возвращает:
S_OK - в случае успеха

virtual HRESULT UnixRequest::Submit ( LONG  Flags,
const BSTR  strRequest,
const BSTR  strAttributes,
const BSTR  strConfig,
LONG *  pDisposition 
) [pure virtual]

Отправить запрос на сертификат.

Аргументы:
Flags [in] CR_IN_BASE64HEADER|CR_IN_PKCS10
strRequest [in] Заданный запрос в заданном формате
strAttributes [in] Дополнительные неподписанные атрибуты, прикладываемые к подаваемому запросу (не путать с атрибутами самого запроса PKCS#10)
strConfig [in] Адрес центра, например "https://cpca.example.ru/UI"
pDisposition [out] Результат подачи запроса
Возвращает:
S_OK - в случае успеха
Заметки:
Возможные результаты подачи запроса:
  • CR_DISP_DENIED - Запрос отвергнут УЦ
  • CR_DISP_ERROR - Ошибочная подача запроса (требуется повторить)
  • CR_DISP_INCOMPLETE - Обработка запроса не завершена
  • CR_DISP_ISSUED - Сертификат выдан (уже можно получать)
  • CR_DISP_ISSUED_OUT_OF_BAND - Сертификат выдан (будет выдан) непосредственно на УЦ, а не по сети
  • CR_DISP_UNDER_SUBMISSION - Сертификат находится в процессе выдачи, получение будет возможно после завершения обработки

static UnixRequest* UnixRequest::URFactory ( const char *  pszCA_type_name  )  [static]

Конструктор объекта взаимодействия с УЦ.

Аргументы:
pszCA_type_name [in] Название типа УЦ:
  • "CPCA15";
  • "MSCAstd";
  • "MSCAent" (TODO: в первой версии не поддерживается);
Возвращает:
Указатель на объект в случае успеха


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