Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Процесс кодирования является обратным декодированию структуры CERT_INFO, описанному в Decoding a CERT_INFO Structure. Например, следующая процедура добавит кодированный элемент "издатель" в структуру CERT_INFO. См. также иллюстрацию, следующую за процедурой.
Добавление закодированного издателя в структуру CERT_INFO
- Создайте строку, содержащую используемое имя издателя.
- Создайте массив структур CERT_RDN_ATTR, которые будут инициализированы, чтобы содержать правильные сведения о строке имени издателя, созданной только что.
- Создайте массив структур CERT_RDN, один из которых содержит информацию о массиве структур CERT_RDN_ATTR, который недавно инициализирован.
- Создайте структуру CERT_NAME_INFO с указателем на массив только что созданных структур CERT_RDN.
- Вызовите CryptEncodeObject, чтобы получить размер закодированного BLOB, передавая адрес только что созданной структуры CERT_NAME_INFO.
- Выделите память для выходного закодированного BLOB.
- Снова вызовите CryptEncodeObject, передавая ему ту же информацию, но теперь передайте адрес только что выделенной памяти.
- Установите член Issuer.cbData структуры CERT_INFO в размер, возвращённый на шаге 5, а член Issuer.pbData на адрес, полученный на шаге 6. Теперь закодированный BLOB эмитента находится там.
Чтобы инициализировать и закодировать некоторые сведения о расширении сертификата, используйте следующую процедуру. См. также иллюстрацию, следующую за процедурой.
Добавление закодированных сведений о расширении в структуру CERT_INFO
- Создайте и инициализируйте структуру сведений о расширении. В этом примере это структура CERT_BASIC_CONSTRAINTS_INFO.
- Вызовите CryptEncodeObject, передав адрес только что созданной структуры, чтобы получить размер кодированного BLOB.
- Выделите память для выходного закодированного BLOB.
- Снова вызовите CryptEncodeObject, передав те же сведения, но теперь укажите адрес выделенной памяти.
- Создайте массив структур CERT_EXTENSION.
- Инициализировать одну из структур CERT_EXTENSION таким образом, чтобы pszObjId была правильной строкой для данных, содержащихся в value, и чтобы value содержала зашифрованный BLOB-объект данных, полученный в результате вызова функции CryptEncodeObject.
- Инициализировать элемент rgExtension структуры CERT_INFO так, чтобы он указывал на массив структур CERT_EXTENSION.