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
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
Detach
遞減具有一組DRT的安全性提供者參考計數。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
RegisterKey
呼叫 以向安全性提供者註冊金鑰。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pRegistration
應用程式所建立之 DRT_REGISTRATION 結構的指標,並傳遞至 DrtRegisterKey 函式。
pvKeyContext
應用程式所建立之內容數據的指標,並傳遞至 DrtRegisterKey 函式。
UnregisterKey
呼叫 以取消註冊安全性提供者的密鑰。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pKey
註冊承載之索引鍵的指標。
pvKeyContext
應用程式所建立之內容數據的指標,並傳遞至 DrtRegisterKey。
ValidateAndUnpackPayload
在網路收到授權單位訊息時呼叫。 它負責驗證收到的數據,以及解除封裝服務地址、撤銷旗標,以及從安全地址承載解除包裝。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pSecuredAddressPayload
包含服務地址、撤銷旗標、Nonce,以及安全性提供者所需任何其他數據的連線所接收承載的指標。
pCertChain
授權單位訊息中收到的憑證鏈結指標。
pClassifier
授權單位訊息中所接收分類器的指標
pNonce
在原始 查詢 或 查閱 訊息中傳送之 nonce 的指標。 此值必須與內嵌在安全位址承載中的值進行比較,以確保它們相同。 此值固定為16個字節。
pSecuredPayload
授權單位訊息中所接收之應用程式數據承載的指標。 驗證之後,原始資料(解密后、移除簽章等)會輸出為 pPayload。
pbProtocolMajor
表示通訊協定主要版本的位元組陣列指標。 這會封裝在每個DRT封包中,以識別單一DRT實例支援多個安全性提供者時所使用的安全性提供者版本。
pbProtocolMinor
表示通訊協定次要版本的位元組數位指標。 這會封裝在每個DRT封包中,以識別單一DRT實例支援多個安全性提供者時所使用的安全性提供者版本。
pKey
註冊承載之索引鍵的指標。
pPayload
遠端應用程式所指定之原始承載的指標。 pPayload.pb 是由安全性提供者所配置。
ppPublicKey
指向內嵌在安全地址承載中之服務位址數目的指標。
ppAddressList
指向內嵌在安全地址承載中的服務位址指標。 pAddresses 是由安全性提供者所配置。
pdwFlags
目前定義的任何DRT旗標,只是為了撤銷或刪除的旗標,需要解除封裝才能處理本機DRT實例。
SecureAndPackPayload
當即將在網路傳送授權單位訊息時呼叫。 它負責在傳送數據之前保護數據,以及將服務地址、撤銷旗標、nonce 和其他應用程式數據封裝到安全地址承載中。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pvKeyContext
包含登錄金鑰時傳入 DrtRegisterKey 的內容。
bProtocolMajor
表示通訊協定主要版本的位元組陣列指標。
bProtocolMinor
表示通訊協定次要版本的位元組數位指標。
dwFlags
任何DRT特定旗標,目前只定義為需要封裝、保護及傳送至另一個實例進行處理的撤銷或刪除旗標。
pKey
登錄此承載之索引鍵的指標。
pPayload
呼叫 DrtRegisterKey時,應用程式所指定的承載指標。
pAddressList
放在安全地址承載中之服務位址的指標。
pNonce
在原始 查詢 或 查閱 訊息中傳送之 nonce 的指標。 此值固定為16個字節。
pSecuredAddressPayload
要透過網路傳送之承載的指標,其中包含安全性提供者所需的服務地址、撤銷旗標、Nonce 和其他數據。 pSecuredAddressPayload.pb 是由安全性提供者所配置。
pClassifier
在 Authority 訊息中傳送之分類器的指標。 pClassifier.pb 是由安全性提供者所配置。
pSecuredPayload
授權單位訊息中所接收之應用程式數據承載的指標。 驗證之後,原始資料(解密后、移除簽章等)會輸出為 pPayload。 pSecuredPayload.pb 是由安全性提供者所配置。
pCertChain
在 Authority 訊息中傳送之憑證鏈結的指標。 pCertChain.pb 是由安全性提供者所配置。
FreeData
呼叫 以釋放先前配置給安全性提供者函式的資源。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
光伏
指定要釋放的數據。
EncryptData
當DRT傳送包含必須加密之資料的訊息時呼叫。 只有在DRT以 DRT_SECURITY_MODE所定義的 DRT_SECURE_CONFIDENTIALPAYLOAD 安全性模式運作時,才會呼叫此函式。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pRemoteCredential
包含將接收受保護訊息之對等的認證。
dwBuffers
包含 pDataBuffers 和 pEncryptedBuffers的長度。
pDataBuffers
包含未加密的緩衝區。
pEncryptedBuffers
在函式完成時包含加密的內容。
pKeyToken
包含可由郵件收件者解密並用來解密受保護字段的加密會話密鑰。
DecryptData
當DRT收到包含加密資料的訊息時呼叫。 只有在DRT以 DRT_SECURITY_MODE所定義的 DRT_SECURE_CONFIDENTIALPAYLOAD 安全性模式運作時,才會呼叫此函式。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pKeyToken
包含可由郵件收件者解密並用來解密受保護字段的加密會話密鑰。
pvKeyContext
包含登錄金鑰時傳入 DrtRegisterKey 的內容。
dwBuffers
包含 pData 緩衝區的大小。
pData
在函式完成時包含解密的數據。
GetSerializedCredential
當DRT必須提供用來授權本機節點的認證時呼叫。 只有在DRT在 DRT_SECURE_MEMBERSHIP 中運作,並 DRT_SECURE_CONFIDENTIALPAYLOADDRT_SECURITY_MODE所定義的安全性模式時,才會呼叫此函式。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pSelfCredential
包含函式完成時的串行化認證。
ValidateRemoteCredential
當DRT必須驗證對等節點所提供的認證時呼叫。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
pRemoteCredential
包含對等節點所提供的串行化認證。
SignData
當DRT必須簽署數據 Blob 以納入DRT通訊協定訊息時呼叫。 只有在DRT在 DRT_SECURE_MEMBERSHIP 中運作,並 DRT_SECURE_CONFIDENTIALPAYLOADDRT_SECURITY_MODE所定義的安全性模式時,才會呼叫此函式。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
dwBuffers
包含 pDataBuffers 緩衝區的大小。
pDataBuffers
包含要簽署的數據。
pKeyIdentifier
完成此函式時,包含索引,可用來從多個認證中選取,以用於計算簽章。
pSignature
完成此函式時,會包含簽章數據。
VerifyData
當DRT必須驗證透過DRT訊息中包含的數據區塊計算的簽章時呼叫。 只有在DRT在 DRT_SECURE_MEMBERSHIP 中運作,並 DRT_SECURE_CONFIDENTIALPAYLOADDRT_SECURITY_MODE所定義的安全性模式時,才會呼叫此函式。
pvContext
pvContext 成員 DRT_SECURITY_PROVIDER所保留值的指標。
dwBuffers
包含 pDataBuffers 緩衝區的大小。
pDataBuffers
包含用來計算簽章的數據。
pRemoteCredentials
包含用來計算簽章之遠程節點的認證。
pKeyIdentifier
包含索引,可用來從 pRemoteCredentials中提供的多個認證中選取。
pSignature
包含要驗證的簽章。
要求
| 要求 | 價值 |
|---|---|
| 最低支援的用戶端 | Windows 7 Professional [僅限傳統型應用程式] |
| 支援的最低伺服器 | Windows Server 2008 R2 [僅限傳統型應用程式] |
| 標頭 | drt.h |