Поделиться через


структура 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.

Примечание В настоящее время единственное допустимое значение: DRT_PAYLOAD_REVOKED
 

SecureAndPackPayload

Вызывается, когда сообщение Authority должно быть отправлено по сети. Он отвечает за защиту данных перед их отправкой, а также за упаковку адресов службы, отозванных флагов, nonce и других данных приложения в полезные данные защищенного адреса.

pvContext

Указатель на значение, удерживаемое членом pvContextDRT_SECURITY_PROVIDER.

pvKeyContext

Содержит контекст, переданный в DrtRegisterKey при регистрации ключа.

bProtocolMajor

Указатель на массив байтов, представляющий основную версию протокола.

bProtocolMinor

Указатель на массив байтов, представляющий дополнительную версию протокола.

dwFlags

Все флаги DRT, которые в настоящее время определены только как отозванные или удаленные флаги, которые необходимо упаковать, защитить и отправить в другой экземпляр для обработки.

Примечание В настоящее время единственное допустимое значение: DRT_PAYLOAD_REVOKED
 

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

См. также раздел

DRT_SECURITY_MODE

DrtOpen

DrtRegisterKey