SignerSignEx2 関数

SignerSignEx2 関数は、指定したファイルに署名とタイム スタンプを設定し、複数の入れ子になった署名を許可します。

Note

この関数には、ヘッダー ファイルまたはインポート ライブラリが関連付けされません。 この関数を呼び出すには、ユーザー定義ヘッダー ファイルを作成し、 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) ファイルの場合は、0 または次の値の 1 つ以上の組み合わせにすることができます。

説明
SPC_EXC_PE_PAGE_HASHES_FLAG
0x10
PE ファイルの SIP 間接データを作成するときにページ ハッシュを除外します。 このフラグは 、SPC_INC_PE_PAGE_HASHES_FLAG フラグよりも優先されます。
SPC_EXC_PE_PAGE_HASHES_FLAGまたはSPC_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]

デジタル 署名の作成 に使用される 暗号化サービス プロバイダー (CSP) と秘密キー情報を指定するSIGNER_PROVIDER_INFO構造体へのポインター。

このパラメーターの値が NULL の場合、 pSignerCert パラメーターは 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構造体へのポインター。 証明書またはそのチェーンが渡されない場合、ファイルは何も変更されません。 タイム スタンプ機関 (TSA) を指定する URL が渡された場合、このポリシーはタイム スタンプにも適用されます。

pReserved

予約済み。 この値は 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