次の方法で共有


DRT_SECURITY_PROVIDER 構造体 (drt.h)

DRT_SECURITY_PROVIDER構造体は、セキュリティ プロバイダーによって実装される必要がある DRT インターフェイスを定義します。

構文

typedef struct drt_security_provider_tag {
  PVOID    pvContext;
  HRESULT( )(const PVOID pvContext) *Attach;
  VOID( )(const PVOID pvContext)    *Detach;
  HRESULT()(const PVOID pvContext, const DRT_REGISTRATION *pRegistration,PVOID pvKeyContext) * RegisterKey;
  HRESULT()(const PVOID pvContext, const DRT_DATA *pKey,PVOID pvKeyContext) * UnregisterKey;
  HRESULT( pvContext,DRT_DATA *pSecuredAddressPayload,DRT_DATA *pCertChain,DRT_DATA *pClassifier,DRT_DATA *pNonce,DRT_DATA *pSecuredPayload,BYTE *pbProtocolMajor,BYTE *pbProtocolMinor,DRT_DATA *pKey,DRT_DATA *pPayload,CERT_PUBLIC_KEY_INFO **ppPublicKey,SOCKET_ADDRESS_LIST **ppAddressList,DWORD *pdwFlags) * )(const PVOIDValidateAndUnpackPayload;
  HRESULT( PVOID pvContext,PVOID pvKeyContext,BYTE bProtocolMajor,BYTE bProtocolMinor,DWORD dwFlags, const DRT_DATA *pKey, const DRT_DATA *pPayload, const SOCKET_ADDRESS_LIST *pAddressList, const DRT_DATA *pNonce,DRT_DATA *pSecuredAddressPayload,DRT_DATA *pClassifier,DRT_DATA *pSecuredPayload,DRT_DATA *pCertChain) * )(constSecureAndPackPayload;
  void( )(const PVOID pvContext,PVOID pv)    *FreeData;
  HRESULT(onst PVOID pvContext, const DRT_DATA *pRemoteCredential,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pEncryptedBuffers,DRT_DATA *pKeyToken) * )(cEncryptData;
  HRESULT((const PVOID pvContext,DRT_DATA *pKeyToken, const PVOID pvKeyContext,DWORD dwBuffers,DRT_DATA *pData) * )DecryptData;
  HRESULT()(const PVOID pvContext,DRT_DATA *pSelfCredential) * GetSerializedCredential;
  HRESULT()(const PVOID pvContext,DRT_DATA *pRemoteCredential) * ValidateRemoteCredential;
  HRESULT(const PVOID pvContext,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pKeyIdentifier,DRT_DATA *pSignature) * )(SignData;
  HRESULT(onst PVOID pvContext,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pRemoteCredentials,DRT_DATA *pKeyIdentifier,DRT_DATA *pSignature) * )(cVerifyData;
} DRT_SECURITY_PROVIDER, *PDRT_SECURITY_PROVIDER;

メンバー

pvContext

このメンバーは、 DRT_SECURITY_PROVIDER 構造体を DrtOpen 関数に渡すときに、アプリケーションによって指定されます。

DRT は、それを不透明なポインターとして扱い、この構造体によって参照される関数に最初のパラメーターとして渡します。 アプリケーションは、セキュリティ プロバイダーの状態またはセキュリティ プロバイダー機能を実装するオブジェクトへのポインターとしてこれを使用します。

Attach

一連の DRT を使用して、セキュリティ プロバイダーの参照の数をインクリメントします。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

Detach

一連の DRT を使用して、セキュリティ プロバイダーの参照の数をデクリメントします。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

RegisterKey

セキュリティ プロバイダーにキーを登録するために呼び出されます。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pRegistration

アプリケーションによって作成され、DrtRegisterKey 関数に渡されるDRT_REGISTRATION構造体へのポインター。

pvKeyContext

アプリケーションによって作成され、 DrtRegisterKey 関数に渡されるコンテキスト データへのポインター。

UnregisterKey

セキュリティ プロバイダーでキーの登録を解除するために呼び出されます。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pKey

ペイロードが登録されているキーへのポインター。

pvKeyContext

アプリケーションによって作成され、 DrtRegisterKey に渡されるコンテキスト データへのポインター。

ValidateAndUnpackPayload

ネットワーク上で機関メッセージを受信したときに呼び出されます。 受信したデータを検証し、セキュリティで保護されたアドレス ペイロードからサービス アドレス、取り消されたフラグ、nonce をアンパックする必要があります。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pSecuredAddressPayload

サービス アドレス、取り消されたフラグ、nonce、およびセキュリティ プロバイダーに必要なその他のデータを含む、ネットワーク上で受信したペイロードへのポインター。

pCertChain

機関メッセージで受信した証明書チェーンへのポインター。

pClassifier

機関メッセージで受信した分類子へのポインター

pNonce

元の Inquire または Lookup メッセージで送信された nonce へのポインター。 この値は、セキュリティで保護されたアドレス ペイロードに埋め込まれている値と比較して、それらが同じであることを確認する必要があります。 この値は 16 バイトで固定されています。

pSecuredPayload

Authority メッセージで受信したアプリケーション データ ペイロードへのポインター。 検証後、元のデータ (暗号化解除後、署名の削除など) が pPayload として出力されます。

pbProtocolMajor

プロトコル メジャー バージョンを表すバイト配列へのポインター。 これは、1 つの DRT インスタンスが複数のセキュリティ プロバイダーをサポートしている場合に使用されているセキュリティ プロバイダーのバージョンを識別するために、すべての DRT パケットにパックされます。

pbProtocolMinor

プロトコル マイナー バージョンを表すバイト配列へのポインター。 これは、1 つの DRT インスタンスが複数のセキュリティ プロバイダーをサポートしている場合に使用されているセキュリティ プロバイダーのバージョンを識別するために、すべての DRT パケットにパックされます。

pKey

ペイロードが登録されているキーへのポインター。

pPayload

リモート アプリケーションによって指定された元のペイロードへのポインター。 pPayload.pb は、セキュリティ プロバイダーによって割り当てられます。

ppPublicKey

セキュリティで保護されたアドレス ペイロードに埋め込まれているサービス アドレスの数へのポインターへのポインター。

ppAddressList

セキュリティで保護されたアドレス ペイロードに埋め込まれているサービス アドレスへのポインターへのポインター。 pAddresses は、セキュリティ プロバイダーによって割り当てられます。

pdwFlags

現在定義されている DRT フラグは、ローカル DRT インスタンス処理のためにアンパックする必要がある取り消し済みフラグまたは削除済みフラグのみです。

メモ 現在、使用できる値は次のとおりです: DRT_PAYLOAD_REVOKED
 

SecureAndPackPayload

機関メッセージがネットワーク上で送信されようとしているときに呼び出されます。 送信前にデータをセキュリティで保護し、サービス アドレス、取り消されたフラグ、nonce、およびその他のアプリケーション データをセキュリティで保護されたアドレス ペイロードにパックする必要があります。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pvKeyContext

キーが登録されたときに DrtRegisterKey に渡されるコンテキストを格納します。

bProtocolMajor

プロトコル メジャー バージョンを表すバイト配列へのポインター。

bProtocolMinor

プロトコル マイナー バージョンを表すバイト配列へのポインター。

dwFlags

DRT 固有のフラグ。現在、取り消されたフラグまたは削除済みフラグとしてのみ定義されており、処理のためにパック、保護、および別のインスタンスに送信する必要があります。

メモ 現在、使用できる値は次のとおりです: DRT_PAYLOAD_REVOKED
 

pKey

このペイロードが登録されているキーへのポインター。

pPayload

DrtRegisterKey を呼び出すときにアプリケーションによって指定されたペイロードへのポインター。

pAddressList

セキュリティで保護されたアドレス ペイロードに配置されるサービス アドレスへのポインター。

pNonce

元の Inquire または Lookup メッセージで送信された nonce へのポインター。 この値は 16 バイトで固定されています。

pSecuredAddressPayload

サービス アドレス、取り消されたフラグ、nonce、およびセキュリティ プロバイダーに必要なその他のデータを含む、ネットワーク上で送信するペイロードへのポインター。 pSecuredAddressPayload.pb は、セキュリティ プロバイダーによって割り当てられます。

pClassifier

Authority メッセージで送信する分類子へのポインター。 pClassifier.pb はセキュリティ プロバイダーによって割り当てられます。

pSecuredPayload

Authority メッセージで受信したアプリケーション データ ペイロードへのポインター。 検証後、元のデータ (暗号化解除後、署名の削除など) が pPayload として出力されます。 pSecuredPayload.pb は、セキュリティ プロバイダーによって割り当てられます。

pCertChain

Authority メッセージで送信する証明書チェーンへのポインター。 pCertChain.pb はセキュリティ プロバイダーによって割り当てられます。

FreeData

以前にセキュリティ プロバイダー関数に割り当てられたリソースを解放するために呼び出されます。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pv

解放するデータを指定します。

EncryptData

暗号化する必要があるデータを含むメッセージを DRT が送信するときに呼び出されます。 この関数は、DRT が DRT_SECURITY_MODE によって定義された DRT_SECURE_CONFIDENTIALPAYLOAD セキュリティ モードで動作している場合にのみ呼び出 されます

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pRemoteCredential

保護されたメッセージを受信するピアの資格情報を格納します。

dwBuffers

pDataBufferspEncryptedBuffers の長さを格納します。

pDataBuffers

暗号化されていないバッファーを格納します。

pEncryptedBuffers

関数の完了時に暗号化されたコンテンツを格納します。

pKeyToken

メッセージの受信者が暗号化を解除し、保護されたフィールドの暗号化を解除するために使用できる暗号化されたセッション キーが含まれます。

DecryptData

DRT が暗号化されたデータを含むメッセージを受信したときに呼び出されます。 この関数は、DRT が DRT_SECURITY_MODE によって定義された DRT_SECURE_CONFIDENTIALPAYLOAD セキュリティ モードで動作している場合にのみ呼び出 されます

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pKeyToken

メッセージの受信者が暗号化を解除し、保護されたフィールドの暗号化を解除するために使用できる暗号化されたセッション キーが含まれます。

pvKeyContext

キーが登録されたときに DrtRegisterKey に渡されるコンテキストを格納します。

dwBuffers

pData バッファーのサイズを格納します。

pData

関数の完了時に復号化されたデータを格納します。

GetSerializedCredential

DRT がローカル ノードの承認に使用する資格情報を提供する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pSelfCredential

関数の完了時にシリアル化された資格情報を格納します。

ValidateRemoteCredential

DRT がピア ノードによって提供される資格情報を検証する必要がある場合に呼び出されます。

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

pRemoteCredential

ピア ノードによって提供されるシリアル化された資格情報を格納します。

SignData

DRT が DRT プロトコル メッセージに含めるためにデータ BLOB に署名する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

dwBuffers

pDataBuffers バッファーのサイズを格納します。

pDataBuffers

署名するデータを格納します。

pKeyIdentifier

この関数が完了すると、 には、署名の計算に使用する複数の資格情報から選択するために使用できるインデックスが含まれています。

pSignature

この関数が完了すると、 には署名データが含まれます。

VerifyData

DRT が DRT メッセージに含まれるデータ ブロックに対して計算された署名を検証する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます

pvContext

DRT_SECURITY_PROVIDERpvContext メンバーが保持する値へのポインター。

dwBuffers

pDataBuffers バッファーのサイズを格納します。

pDataBuffers

署名が計算されたデータを格納します。

pRemoteCredentials

署名の計算に使用されるリモート ノードの資格情報が含まれます。

pKeyIdentifier

pRemoteCredentials で提供される複数の資格情報から選択するために使用できるインデックスが含まれています。

pSignature

検証する署名が含まれます。

要件

   
サポートされている最小のクライアント Windows 7 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 R2 [デスクトップ アプリのみ]
Header drt.h

関連項目

DRT_SECURITY_MODE

DrtOpen

DrtRegisterKey