Функция SignerSignEx2

Функция SignerSignEx2 подписывает указанный файл и метки времени, позволяя использовать несколько вложенных подписей.

Примечание

У этой функции нет связанного файла заголовка или библиотеки импорта. Чтобы вызвать эту функцию, необходимо создать определяемый пользователем файл заголовка и использовать функции LoadLibrary и GetProcAddress для динамического связывания с Mssign32.dll.

 

Синтаксис

HRESULT WINAPI SignerSignEx2(
  _In_       DWORD                  dwFlags,
  _In_       SIGNER_SUBJECT_INFO    *pSubjectInfo,
  _In_       SIGNER_CERT            *pSignerCert,
  _In_       SIGNER_SIGNATURE_INFO  *pSignatureInfo,
  _In_opt_   SIGNER_PROVIDER_INFO   *pProviderInfo,
  _In_opt_   DWORD                  dwTimestampFlags,
  _In_opt_   PCSTR                  pszTimestampAlgorithmOid,
  _In_opt_   PCWSTR                 pwszHttpTimeStamp,
  _In_opt_   PCRYPT_ATTRIBUTES      psRequest,
  _In_opt_   PVOID                  pSipData,
  _Out_      SIGNER_CONTEXT         **ppSignerContext,
  _In_opt_   PCERT_STRONG_SIGN_PARA pCryptoPolicy,
  _Reserved_ PVOID                  pReserved
);

Параметры

dwFlags [in]

Изменяет поведение этой функции.

Если подписанный файл является переносимым исполняемым файлом (PE), это может быть ноль или сочетание одного или нескольких из следующих значений.

Значение Значение
SPC_EXC_PE_PAGE_HASHES_FLAG
0x10
Исключите хэши страниц при создании косвенных данных SIP для PE-файла. Этот флаг имеет приоритет над флагом SPC_INC_PE_PAGE_HASHES_FLAG .
Если ни SPC_EXC_PE_PAGE_HASHES_FLAG , ни флаг SPC_INC_PE_PAGE_HASHES_FLAG не указан, для этого параметра используется значение, заданное с помощью функции WintrustSetDefaultIncludePEPageHashes . Этот параметр по умолчанию исключает хэши страниц при создании косвенных данных SIP для pe-файлов.
Это значение определяется в файле заголовка Mssip.h.
Windows Server 2003 и Windows XP: Это значение не поддерживается.
SPC_INC_PE_IMPORT_ADDR_TABLE_FLAG
0x20
Это значение не поддерживается.
SPC_INC_PE_DEBUG_INFO_FLAG
0x40
Это значение не поддерживается.
SPC_INC_PE_RESOURCES_FLAG
0x80
Это значение не поддерживается.
SPC_INC_PE_PAGE_HASHES_FLAG
0x100
Включите хэши страниц при создании косвенных данных SIP для PE-файла.
Windows Server 2003 и Windows XP: Это значение не поддерживается.
Это значение определяется в файле заголовка Mssip.h.
SIG_APPEND
0x1000
Подпись будет вложена. Если этот флаг установлен до добавления любой подписи, созданная подпись будет добавлена в качестве внешней подписи. Если этот флаг не задан, созданная подпись заменяет внешнюю подпись, удаляя все внутренние подписи.

 

pSubjectInfo [in]

Указатель на структуру SIGNER_SUBJECT_INFO , указывающую предмет для знака.

pSignerCert [in]

Указатель на структуру SIGNER_CERT , указывающую сертификат, используемый для создания цифровой подписи.

pSignatureInfo [in]

Указатель на структуру SIGNER_SIGNATURE_INFO , содержащую сведения о цифровой подписи.

pProviderInfo [in, необязательный]

Указатель на структуру SIGNER_PROVIDER_INFO , которая указывает поставщик служб шифрования (CSP) и сведения о закрытом ключе, используемые для создания цифровой подписи.

Если значение этого параметра равно NULL, параметр pSignerCert должен указывать сертификат, связанный с CSP.

dwTimestampFlags [in, необязательный]

Флаги, которые будут передаваться в SignerTimeStampEx3 , если параметр pwszHttpTimeStamp не равен NULL. Это может быть одно из следующих значений.

Значение Значение
SIGNER_TIMESTAMP_AUTHENTICODE
Значение по умолчанию. Указывает метку времени Authenticode.
SIGNER_TIMESTAMP_RFC3161
Указывает метку времени RFC 3161.

 

Этот параметр игнорируется, если параметр pwszHttpTimeStamp имеет значение NULL.

pszTimestampAlgorithmOid [in, необязательный]

Идентификатор объекта алгоритма, используемого для создания метки времени RFC 3161. Этот параметр игнорируется для меток времени Authenticode.

pwszHttpTimeStamp [in, optional]

URL-адрес сервера меток времени.

psRequest [in, необязательный]

Указатель на массив CRYPT_ATTRIBUTE структур, добавляемых в запрос подписи. Этот параметр игнорируется, если параметр pwszHttpTimeStamp не содержит допустимого значения или имеет значение NULL.

pSipData [в, необязательно]

32-разрядное значение, которое передается в качестве дополнительных данных в функции SIP. Формат и содержимое определяется поставщиком SIP.

ppSignerContext [out]

Адрес указателя на структуру SIGNER_CONTEXT , содержащую подписанный большой двоичный объект. Завершив использование структуры SIGNER_CONTEXT , освободите структуру SIGNER_CONTEXT , вызвав функцию SignerFreeSignerContext .

pCryptoPolicy [in, необязательный]

При наличии указатель на структуру CERT_STRONG_SIGN_PARA, содержащую параметры, используемые для проверка для строгих сигнатур. Если сертификат или его цепочка не передаются, файл не изменяется никаким образом. Если url-адрес передается для указания центра метки времени (TSA), эта политика также применяется к метке времени.

Сохранились

Зарезервировано. Это значение должно иметь значение NULL.

Возвращаемое значение

Если функция завершается успешно, функция возвращает S_OK.

Если функция завершается сбоем, она возвращает значение HRESULT , указывающее на ошибку. Возможные коды ошибок, возвращаемые этой функцией, включают, помимо прочего, следующие. Список распространенных кодов ошибок см. в разделе Общие значения HRESULT.

Код возврата Описание
E_INVALIDARG
Если для параметра dwTimestampFlags задано значение SIGNER_TIMESTAMP_AUTHENTICODE, параметру dwFlags нельзя задать значение SIG_APPEND.

 

Требования

Требование Значение
Минимальная версия клиента
Windows 8 [только классические приложения]
Минимальная версия сервера
Windows Server 2012 [только классические приложения]
DLL
Mssign32.dll

См. также раздел

SignerSign

SignerSignEx

SignerFreeSignerContext