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_PROVIDER の pvContext メンバーが保持する値へのポインター。
Detach
一連の DRT を使用して、セキュリティ プロバイダーの参照の数をデクリメントします。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
RegisterKey
セキュリティ プロバイダーにキーを登録するために呼び出されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pRegistration
アプリケーションによって作成され、DrtRegisterKey 関数に渡されるDRT_REGISTRATION構造体へのポインター。
pvKeyContext
アプリケーションによって作成され、 DrtRegisterKey 関数に渡されるコンテキスト データへのポインター。
UnregisterKey
セキュリティ プロバイダーでキーの登録を解除するために呼び出されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pKey
ペイロードが登録されているキーへのポインター。
pvKeyContext
アプリケーションによって作成され、 DrtRegisterKey に渡されるコンテキスト データへのポインター。
ValidateAndUnpackPayload
ネットワーク上で機関メッセージを受信したときに呼び出されます。 受信したデータを検証し、セキュリティで保護されたアドレス ペイロードからサービス アドレス、取り消されたフラグ、nonce をアンパックする必要があります。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
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 インスタンス処理のためにアンパックする必要がある取り消し済みフラグまたは削除済みフラグのみです。
SecureAndPackPayload
機関メッセージがネットワーク上で送信されようとしているときに呼び出されます。 送信前にデータをセキュリティで保護し、サービス アドレス、取り消されたフラグ、nonce、およびその他のアプリケーション データをセキュリティで保護されたアドレス ペイロードにパックする必要があります。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pvKeyContext
キーが登録されたときに DrtRegisterKey に渡されるコンテキストを格納します。
bProtocolMajor
プロトコル メジャー バージョンを表すバイト配列へのポインター。
bProtocolMinor
プロトコル マイナー バージョンを表すバイト配列へのポインター。
dwFlags
DRT 固有のフラグ。現在、取り消されたフラグまたは削除済みフラグとしてのみ定義されており、処理のためにパック、保護、および別のインスタンスに送信する必要があります。
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_PROVIDER の pvContext メンバーが保持する値へのポインター。
pv
解放するデータを指定します。
EncryptData
暗号化する必要があるデータを含むメッセージを DRT が送信するときに呼び出されます。 この関数は、DRT が DRT_SECURITY_MODE によって定義された DRT_SECURE_CONFIDENTIALPAYLOAD セキュリティ モードで動作している場合にのみ呼び出 されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pRemoteCredential
保護されたメッセージを受信するピアの資格情報を格納します。
dwBuffers
pDataBuffers と pEncryptedBuffers の長さを格納します。
pDataBuffers
暗号化されていないバッファーを格納します。
pEncryptedBuffers
関数の完了時に暗号化されたコンテンツを格納します。
pKeyToken
メッセージの受信者が暗号化を解除し、保護されたフィールドの暗号化を解除するために使用できる暗号化されたセッション キーが含まれます。
DecryptData
DRT が暗号化されたデータを含むメッセージを受信したときに呼び出されます。 この関数は、DRT が DRT_SECURITY_MODE によって定義された DRT_SECURE_CONFIDENTIALPAYLOAD セキュリティ モードで動作している場合にのみ呼び出 されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pKeyToken
メッセージの受信者が暗号化を解除し、保護されたフィールドの暗号化を解除するために使用できる暗号化されたセッション キーが含まれます。
pvKeyContext
キーが登録されたときに DrtRegisterKey に渡されるコンテキストを格納します。
dwBuffers
pData バッファーのサイズを格納します。
pData
関数の完了時に復号化されたデータを格納します。
GetSerializedCredential
DRT がローカル ノードの承認に使用する資格情報を提供する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pSelfCredential
関数の完了時にシリアル化された資格情報を格納します。
ValidateRemoteCredential
DRT がピア ノードによって提供される資格情報を検証する必要がある場合に呼び出されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
pRemoteCredential
ピア ノードによって提供されるシリアル化された資格情報を格納します。
SignData
DRT が DRT プロトコル メッセージに含めるためにデータ BLOB に署名する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
dwBuffers
pDataBuffers バッファーのサイズを格納します。
pDataBuffers
署名するデータを格納します。
pKeyIdentifier
この関数が完了すると、 には、署名の計算に使用する複数の資格情報から選択するために使用できるインデックスが含まれています。
pSignature
この関数が完了すると、 には署名データが含まれます。
VerifyData
DRT が DRT メッセージに含まれるデータ ブロックに対して計算された署名を検証する必要がある場合に呼び出されます。 この関数は、DRT がDRT_SECURE_MEMBERSHIPで動作していて、 DRT_SECURITY_MODE によって定義されたセキュリティ モード DRT_SECURE_CONFIDENTIALPAYLOAD 場合にのみ呼び出 されます。
pvContext
DRT_SECURITY_PROVIDER の pvContext メンバーが保持する値へのポインター。
dwBuffers
pDataBuffers バッファーのサイズを格納します。
pDataBuffers
署名が計算されたデータを格納します。
pRemoteCredentials
署名の計算に使用されるリモート ノードの資格情報が含まれます。
pKeyIdentifier
pRemoteCredentials で提供される複数の資格情報から選択するために使用できるインデックスが含まれています。
pSignature
検証する署名が含まれます。
要件
サポートされている最小のクライアント | Windows 7 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 R2 [デスクトップ アプリのみ] |
Header | drt.h |