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
指向在原始 “查询 ”或“ 查找 ”消息中发送的 nonce 的指针。 此值必须与安全地址有效负载中嵌入的值进行比较,以确保它们相同。 此值固定为 16 个字节。
pSecuredPayload
指向 Authority 消息中收到的应用程序数据有效负载的指针。 验证后,原始数据在解密、删除签名等之后 (。) 输出为 pPayload。
pbProtocolMajor
指向表示协议主版本的字节数组的指针。 这打包在每个 DRT 数据包中,以标识在单个 DRT 实例支持多个安全提供程序时使用的安全提供程序的版本。
pbProtocolMinor
指向表示协议次要版本的字节数组的指针。 这打包在每个 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
指向在原始 “查询 ”或“ 查找 ”消息中发送的 nonce 的指针。 此值固定为 16 个字节。
pSecuredAddressPayload
指向要在线发送的有效负载的指针,该网络包含服务地址、吊销标志、nonce 和安全提供程序所需的其他数据。 pSecuredAddressPayload.pb 由安全提供程序分配。
pClassifier
指向在颁发机构消息中发送的分类器的指针。 pClassifier.pb 由安全提供程序分配。
pSecuredPayload
指向 Authority 消息中收到的应用程序数据有效负载的指针。 验证后,原始数据在解密、删除签名等之后 (。) 输出为 pPayload。 pSecuredPayload.pb 由安全提供程序分配。
pCertChain
指向在颁发机构消息中发送的证书链的指针。 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_SECURITY_MODE 定义的DRT_SECURE_MEMBERSHIP和DRT_SECURE_CONFIDENTIALPAYLOAD安全模式中运行时,才会调用此函数。
pvContext
指向DRT_SECURITY_PROVIDER的 pvContext 成员持有的值的指针。
pSelfCredential
包含函数完成后的序列化凭据。
ValidateRemoteCredential
当 DRT 必须验证对等节点提供的凭据时调用。
pvContext
指向DRT_SECURITY_PROVIDER的 pvContext 成员持有的值的指针。
pRemoteCredential
包含对等节点提供的序列化凭据。
SignData
当 DRT 必须对要包含在 DRT 协议消息中的数据 Blob 进行签名时调用。 仅当 DRT 在 DRT_SECURITY_MODE 定义的DRT_SECURE_MEMBERSHIP和DRT_SECURE_CONFIDENTIALPAYLOAD安全模式中运行时,才会调用此函数。
pvContext
指向DRT_SECURITY_PROVIDER的 pvContext 成员持有的值的指针。
dwBuffers
包含 pDataBuffers 缓冲区的大小。
pDataBuffers
包含要签名的数据。
pKeyIdentifier
完成此函数后,包含一个索引,可用于从多个凭据中进行选择,以用于计算签名。
pSignature
完成此函数后,包含签名数据。
VerifyData
当 DRT 必须验证通过 DRT 消息中包含的数据块计算的签名时调用。 仅当 DRT 在 DRT_SECURITY_MODE 定义的DRT_SECURE_MEMBERSHIP和DRT_SECURE_CONFIDENTIALPAYLOAD安全模式中运行时,才会调用此函数。
pvContext
指向DRT_SECURITY_PROVIDER的 pvContext 成员持有的值的指针。
dwBuffers
包含 pDataBuffers 缓冲区的大小。
pDataBuffers
包含计算签名时所基于的数据。
pRemoteCredentials
包含用于计算签名的远程节点的凭据。
pKeyIdentifier
包含可用于从 pRemoteCredentials 中提供的多个凭据中进行选择的索引。
pSignature
包含要验证的签名。
要求
最低受支持的客户端 | Windows 7 专业版 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
标头 | drt.h |