次の方法で共有


IXpsSignatureManager::Sign メソッド (xpsdigitalsignature.h)

署名オプションで指定された XPS パッケージの内容に署名し、結果のデジタル署名を返します。

構文

HRESULT Sign(
  [in]          IXpsSigningOptions *signOptions,
  [in]          const CERT_CONTEXT *x509Certificate,
  [out, retval] IXpsSignature      **signature
);

パラメーター

[in] signOptions

署名オプションを含む IXpsSigningOptions インターフェイスへのポインター。

  

IXpsSigningOptions インターフェイスの SignatureMethod プロパティと DigestMethod プロパティは、そのインターフェイスへのポインターを signOptions パラメーターで使用する前に初期化する必要があります。

 

[in] x509Certificate

署名に使用する X.509 証明書を含む CERT_CONTEXT 構造体へのポインター。

[out, retval] signature

新しいデジタル署名を含む IXpsSignature インターフェイスへのポインター。

成功した場合、このメソッドは署名パーツを作成し、それをパッケージに追加し、 シグネチャ ではそのシグネチャ パーツのインターフェイスへのポインターを返します。

戻り値

このメソッドは HRESULT を返します。 使用可能な値には、次の表に含まれる値が含まれますが、これらに限定されません。 この表に記載されていない戻り値については、「 XPS デジタル署名 API エラーXPS ドキュメント エラー」を参照してください。

リターン コード 説明
S_OK
メソッドが成功しました。
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
マークアップ互換性要素が想定されていないことを指定した XPS_SIGN_FLAGS 値。ただし、マークアップ互換性要素が見つかりました。
XPS_E_NO_CUSTOM_OBJECTS
signOptions は、認識されたインターフェイスの実装を指していません。 XPS ドキュメント API インターフェイスのカスタム実装はサポートされていません。
XPS_E_PACKAGE_NOT_OPENED
署名マネージャーで XPS パッケージがまだ開かれていない。

注釈

新しいシグネチャを追加しても、 LoadPackageFile メソッドまたは LoadPackageStream メソッドを呼び出して読み取られた元のファイルまたはストリームは上書きされません。 署名は、パッケージが保存されるまで XPS パッケージのメモリ内コピーに追加されます (SavePackageToFile メソッドまたは SavePackageToStream メソッドを呼び出します)。

新しいシグネチャにマークアップ互換性要素を含むパーツが含まれている場合、既定では、このメソッドは XPS_E_MARKUP_COMPATIBILITY_ELEMENTS というエラーで失敗します。 この動作をオーバーライドするには、IXpsSigningOptions::SetFlags を呼び出します。これにより、signOptions パラメーターによって参照される IXpsSigningOptions インターフェイスでXPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY フラグが設定されます。

このメソッドが戻り値のリストにない HRESULT 値を返す場合は、署名マネージャーを解放して再作成する必要があります。

このメソッドは、新しい署名が既存の署名を中断した場合でも成功します。

要件

要件
サポートされている最小のクライアント Windows 7 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー xpsdigitalsignature.h

こちらもご覧ください

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML Paper Specification

XPS Digital Signature API エラー

XPS ドキュメント エラー