SignerSignEx2 函式

SignerSignEx2函式會簽署和時間戳記指定的檔案,允許多個巢狀簽章。

注意

此函式沒有相關聯的標頭檔或匯入程式庫。 若要呼叫此函式,您必須建立使用者定義的標頭檔,並使用 LoadLibraryGetProcAddress 函式動態連結至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
為 PE 檔案建立 SIP 間接資料時,排除頁面雜湊。 此旗標的優先順序高於 SPC_INC_PE_PAGE_HASHES_FLAG 旗標。
如果未指定 SPC_EXC_PE_PAGE_HASHES_FLAGSPC_INC_PE_PAGE_HASHES_FLAG 旗標,則會使用此設定使用 WintrustSetDefaultIncludePEPageHashes 函式設定的值。 此設定的預設值是在建立 PE 檔案的 SIP 間接資料時排除頁面雜湊。
此值定義于 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
建立 PE 檔案的 SIP 間接資料時,請包含頁面雜湊。
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, optional]

SIGNER_PROVIDER_INFO結構的指標,指定用來建立數位簽章的密碼編譯服務提供者 (CSP) 和私密金鑰資訊。

如果此參數的值是 NullpSignerCert 參數必須指定與 CSP 相關聯的憑證。

dwTimestampFlags [in, optional]

如果pwszHttpTimeStamp參數不是Null,則會傳遞至SignerTimeStampEx3的旗標。 這可以是下列其中一個值。

意義
SIGNER_TIMESTAMP_AUTHENTICODE
預設值。 指定 Authenticode 時間戳記。
SIGNER_TIMESTAMP_RFC3161
指定 RFC 3161 時間戳記。

 

如果 pwszHttpTimeStamp 參數為 Null,則會忽略此參數。

pszTimestampAlgorithmOid [in, optional]

要用於建立 RFC 3161 時間戳記之演算法的物件識別碼。 Authenticode 時間戳記會忽略此參數。

pwszHttpTimeStamp [in, optional]

時間戳記伺服器的 URL。

psRequest [in, optional]

新增至符號要求 之CRYPT_ATTRIBUTE 結構的陣列指標。 如果 pwszHttpTimeStamp 參數不包含有效值或為 Null,則會忽略此參數。

pSipData [in, optional]

以其他資料的形式傳遞至 SIP 函式的 32 位值。 此格式和內容是由 SIP 提供者所定義。

ppSignerCoNtext [out]

包含已簽署 BLOB 之SIGNER_CONTEXT結構的指標位址。 當您完成使用SIGNER_CONTEXT結構時,請呼叫SignerFreeSignerCoNtext函式來釋放SIGNER_CONTEXT結構。

pCryptoPolicy [in, optional]

如果有,則為 CERT_STRONG_SIGN_PARA 結構的指標,其中包含用來檢查強式簽章的參數。 如果憑證或其鏈結未通過,則不會以任何方式改變檔案。 如果傳入 URL 以指定 TSA) (時間戳記授權單位,此原則也會套用至時間戳記。

保存

保留的。 此值必須是 Null

傳回值

如果函式成功,函式會傳回S_OK。

如果函式失敗,它會傳回 指出錯誤的 HRESULT 值。 此函式所傳回的可能錯誤碼包括但不限於下列各項。 如需常見錯誤碼的清單,請參閱 一般 HRESULT 值

傳回碼 Description
E_INVALIDARG
如果您將 dwTimestampFlags 參數設定為 SIGNER_TIMESTAMP_AUTHENTICODE,則無法將 dwFlags 參數設定為 SIG_APPEND

 

規格需求

需求
最低支援的用戶端
Windows 8 [僅限傳統型應用程式]
最低支援的伺服器
Windows Server 2012 [僅限傳統型應用程式]
DLL
Mssign32.dll

另請參閱

SignerSign

SignerSignEx

SignerFreeSignerCoNtext