структура 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
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
Detach
Уменьшает количество ссылок для поставщика безопасности с помощью набора DRT.
pvContext
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
RegisterKey
Вызывается для регистрации ключа в поставщике безопасности.
pvContext
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
pRegistration
Указатель на структуру DRT_REGISTRATION , созданную приложением и переданную в функцию DrtRegisterKey .
pvKeyContext
Указатель на данные контекста, созданные приложением и передаваемые в функцию DrtRegisterKey .
UnregisterKey
Вызывается для отмены регистрации ключа у поставщика безопасности.
pvContext
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
Pkey
Указатель на ключ, для которого зарегистрированы полезные данные.
pvKeyContext
Указатель на данные контекста, созданные приложением и передаваемые в DrtRegisterKey.
ValidateAndUnpackPayload
Вызывается при получении сообщения центра по сети. Он отвечает за проверку полученных данных и распаковку адресов служб, флага отзыва и nonce из полезных данных защищенного адреса.
pvContext
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
pSecuredAddressPayload
Указатель на полезные данные, полученные по сети, которая содержит адреса службы, отозванный флаг, nonce и любые другие данные, необходимые поставщику безопасности.
pCertChain
Указатель на цепочку сертификатов, полученную в сообщении центра сертификации.
pClassifier
Указатель на классификатор, полученный в сообщении центра
pNonce
Указатель на nonce, отправленный в исходном сообщении Inquire или Lookup . Это значение необходимо сравнить со значением, внедренным в полезные данные защищенного адреса, чтобы убедиться, что они совпадают. Это значение фиксировано в 16 байтах.
pSecuredPayload
Указатель на полезные данные приложения, полученные в сообщении Authority. После проверки исходные данные (после расшифровки, удаления подписи и т. д.) выводятся как pPayload.
pbProtocolMajor
Указатель на массив байтов, представляющий основную версию протокола. Он упаковывается в каждый пакет DRT, чтобы определить версию поставщика безопасности, используемой, когда один экземпляр DRT поддерживает несколько поставщиков безопасности.
pbProtocolMinor
Указатель на массив байтов, представляющий дополнительную версию протокола. Он упаковывается в каждый пакет DRT, чтобы определить версию поставщика безопасности, используемой, когда один экземпляр DRT поддерживает несколько поставщиков безопасности.
Pkey
Указатель на ключ, для которого зарегистрированы полезные данные.
pPayload
Указатель на исходные полезные данные, заданные удаленным приложением. pPayload.pb выделяется поставщиком безопасности.
ppPublicKey
Указатель на указатель на количество адресов служб, внедренных в полезные данные защищенного адреса.
ppAddressList
Указатель на указатель на адреса служб, внедренные в полезные данные защищенного адреса. pAddresses выделяется поставщиком безопасности.
pdwFlags
Все флаги DRT, которые в настоящее время определены только как отозванные или удаленные флаги, которые необходимо распаковать для обработки локального экземпляра DRT.
SecureAndPackPayload
Вызывается, когда сообщение Authority должно быть отправлено по сети. Он отвечает за защиту данных перед их отправкой, а также за упаковку адресов службы, отозванных флагов, nonce и других данных приложения в полезные данные защищенного адреса.
pvContext
Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.
pvKeyContext
Содержит контекст, переданный в DrtRegisterKey при регистрации ключа.
bProtocolMajor
Указатель на массив байтов, представляющий основную версию протокола.
bProtocolMinor
Указатель на массив байтов, представляющий дополнительную версию протокола.
dwFlags
Все флаги DRT, которые в настоящее время определены только как отозванные или удаленные флаги, которые необходимо упаковать, защитить и отправить в другой экземпляр для обработки.
Pkey
Указатель на ключ, в котором зарегистрированы эти полезные данные.
pPayload
Указатель на полезные данные, указанные приложением при вызове DrtRegisterKey.
pAddressList
Указатель на адреса служб, помещенные в полезные данные защищенного адреса.
pNonce
Указатель на nonce, отправленный в исходном сообщении Inquire или Lookup . Это значение фиксировано в 16 байтах.
pSecuredAddressPayload
Указатель на полезные данные для отправки по сети, которая содержит адреса службы, отозванный флаг, nonce и другие данные, необходимые поставщику безопасности. pSecuredAddressPayload.pb выделяется поставщиком безопасности.
pClassifier
Указатель на классификатор для отправки в сообщении Authority. pClassifier.pb выделяется поставщиком безопасности.
pSecuredPayload
Указатель на полезные данные приложения, полученные в сообщении Authority. После проверки исходные данные (после расшифровки, удаления подписи и т. д.) выводятся как pPayload. pSecuredPayload.pb выделяется поставщиком безопасности.
pCertChain
Указатель на цепочку сертификатов, отправляемую в сообщении Authority. pCertChain.pb выделяется поставщиком безопасности.
FreeData
Вызывается для освобождения ресурсов, ранее выделенных для функции поставщика безопасности.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
pv
Указывает, какие данные следует освободить.
EncryptData
Вызывается, когда DRT отправляет сообщение, содержащее данные, которые необходимо зашифровать. Эта функция вызывается только в том случае, если DRT работает в режиме безопасности DRT_SECURE_CONFIDENTIALPAYLOAD , определенном DRT_SECURITY_MODE.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
pRemoteCredential
Содержит учетные данные однорангового узла, который получит защищенное сообщение.
DwBuffers
Содержит длину pDataBuffers и pEncryptedBuffers.
pDataBuffers
Содержит незашифрованный буфер.
pEncryptedBuffers
Содержит зашифрованное содержимое после завершения функции.
pKeyToken
Содержит зашифрованный ключ сеанса, который может быть расшифрован получателем сообщения и использован для расшифровки защищенных полей.
DecryptData
Вызывается, когда DRT получает сообщение, содержащее зашифрованные данные. Эта функция вызывается только в том случае, если DRT работает в режиме безопасности DRT_SECURE_CONFIDENTIALPAYLOAD , определенном DRT_SECURITY_MODE.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
pKeyToken
Содержит зашифрованный ключ сеанса, который может быть расшифрован получателем сообщения и использован для расшифровки защищенных полей.
pvKeyContext
Содержит контекст, передаваемый в DrtRegisterKey при регистрации ключа.
DwBuffers
Содержит размер буфера pData .
pData
Содержит расшифрованные данные после завершения функции.
GetSerializedCredential
Вызывается, когда DRT должен предоставить учетные данные, используемые для авторизации локального узла. Эта функция вызывается только в том случае, если DRT работает в режимах безопасности DRT_SECURE_MEMBERSHIP и DRT_SECURE_CONFIDENTIALPAYLOAD , определенных DRT_SECURITY_MODE.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
pSelfCredential
Содержит сериализованные учетные данные после завершения функции.
ValidateRemoteCredential
Вызывается, когда DRT должен проверить учетные данные, предоставленные одноранговым узлом.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
pRemoteCredential
Содержит сериализованные учетные данные, предоставляемые одноранговым узлом.
SignData
Вызывается, когда DRT должен подписать большой двоичный объект данных для включения в сообщение протокола DRT. Эта функция вызывается только в том случае, если DRT работает в режимах безопасности DRT_SECURE_MEMBERSHIP и DRT_SECURE_CONFIDENTIALPAYLOAD , определенных DRT_SECURITY_MODE.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
DwBuffers
Содержит размер буфера pDataBuffers .
pDataBuffers
Содержит данные для подписи.
pKeyIdentifier
После завершения этой функции содержит индекс, который можно использовать для выбора из нескольких учетных данных для использования при вычислении подписи.
pSignature
По завершении этой функции содержит данные сигнатуры.
VerifyData
Вызывается, когда DRT должен проверить сигнатуру, вычисленную по блоку данных, включенных в сообщение DRT. Эта функция вызывается только в том случае, если DRT работает в режимах безопасности DRT_SECURE_MEMBERSHIP и DRT_SECURE_CONFIDENTIALPAYLOAD , определенных DRT_SECURITY_MODE.
pvContext
Указатель на значение, удерживаемое элементом pvContextDRT_SECURITY_PROVIDER.
DwBuffers
Содержит размер буфера pDataBuffers .
pDataBuffers
Содержит данные, по которым вычисляется сигнатура.
pRemoteCredentials
Содержит учетные данные удаленного узла, используемого для вычисления подписи.
pKeyIdentifier
Содержит индекс, который можно использовать для выбора из нескольких учетных данных, предоставленных в pRemoteCredentials.
pSignature
Содержит проверяемую подпись.
Требования
Минимальная версия клиента | Windows 7 Профессиональная [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Верхняя часть | drt.h |