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
이 멤버는 drtOpen 함수에 DRT_SECURITY_PROVIDER 구조를 전달할 때 애플리케이션에 의해 지정됩니다.
DRT는 이를 불투명 포인터로 처리하고 이 구조체에서 참조하는 함수에 첫 번째 매개 변수로 전달합니다. 애플리케이션은 이를 보안 공급자 상태에 대한 포인터 또는 보안 공급자 기능을 구현하는 개체에 대한 포인터로 사용합니다.
Attach
DRT 집합을 사용하여 보안 공급자에 대한 참조 수를 증분합니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
Detach
DRT 집합을 사용하여 보안 공급자에 대한 참조 수를 감소합니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
RegisterKey
보안 공급자에 키를 등록하기 위해 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pRegistration
애플리케이션에서 만들고 DrtRegisterKey 함수에 전달된 DRT_REGISTRATION 구조체에 대한 포인터입니다.
pvKeyContext
애플리케이션에서 만들고 DrtRegisterKey 함수에 전달된 컨텍스트 데이터에 대한 포인터입니다.
UnregisterKey
보안 공급자를 사용하여 키를 등록 취소하기 위해 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pKey
페이로드가 등록된 키에 대한 포인터입니다.
pvKeyContext
애플리케이션에서 만들고 DrtRegisterKey에 전달된 컨텍스트 데이터에 대한 포인터입니다.
ValidateAndUnpackPayload
통신에서 기관 메시지가 수신될 때 호출됩니다. 수신된 데이터의 유효성을 검사하고 보안 주소 페이로드에서 서비스 주소, 해지된 플래그 및 nonce의 압축을 풉니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pSecuredAddressPayload
서비스 주소, 해지된 플래그, nonce 및 보안 공급자가 요구하는 기타 데이터를 포함하는 유선에서 수신된 페이로드에 대한 포인터입니다.
pCertChain
기관 메시지에서 받은 인증서 체인에 대한 포인터입니다.
pClassifier
기관 메시지에서 받은 분류자 포인터
pNonce
원래 Inquire 또는 조회 메시지에서 전송된 nonce에 대한 포인터입니다. 이 값은 보안 주소 페이로드에 포함된 값과 비교하여 동일한지 확인해야 합니다. 이 값은 16바이트로 고정됩니다.
pSecuredPayload
기관 메시지에서 받은 애플리케이션 데이터 페이로드에 대한 포인터입니다. 유효성 검사 후 원래 데이터(암호 해독 후, 서명 제거 등)는 pPayload로 출력됩니다.
pbProtocolMajor
프로토콜 주 버전을 나타내는 바이트 배열에 대한 포인터입니다. 단일 DRT instance 여러 보안 공급자를 지원하는 경우 사용 중인 보안 공급자의 버전을 식별하기 위해 모든 DRT 패킷에 압축됩니다.
pbProtocolMinor
프로토콜 부 버전을 나타내는 바이트 배열에 대한 포인터입니다. 단일 DRT instance 여러 보안 공급자를 지원하는 경우 사용 중인 보안 공급자의 버전을 식별하기 위해 모든 DRT 패킷에 압축됩니다.
pKey
페이로드가 등록된 키에 대한 포인터입니다.
pPayload
원격 애플리케이션에서 지정한 원래 페이로드에 대한 포인터입니다. pPayload.pb 는 보안 공급자에 의해 할당됩니다.
ppPublicKey
보안 주소 페이로드에 포함된 서비스 주소 수에 대한 포인터입니다.
ppAddressList
보안 주소 페이로드에 포함된 서비스 주소에 대한 포인터에 대한 포인터입니다. pAddresses 는 보안 공급자에 의해 할당됩니다.
pdwFlags
현재 로컬 DRT instance 처리를 위해 압축을 풀어야 하는 해지 또는 삭제된 플래그로만 정의된 DRT 플래그입니다.
SecureAndPackPayload
통신을 통해 기관 메시지를 보내려고 할 때 호출됩니다. 전송되기 전에 데이터를 보호하고 서비스 주소, 해지된 플래그, nonce 및 기타 애플리케이션 데이터를 보안 주소 페이로드에 압축할 책임이 있습니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pvKeyContext
키가 등록되었을 때 DrtRegisterKey 에 전달된 컨텍스트를 포함합니다.
bProtocolMajor
프로토콜 주 버전을 나타내는 바이트 배열에 대한 포인터입니다.
bProtocolMinor
프로토콜 부 버전을 나타내는 바이트 배열에 대한 포인터입니다.
dwFlags
현재 패킹, 보안 및 처리를 위해 다른 instance 전송해야 하는 해지 또는 삭제된 플래그로만 정의된 DRT 특정 플래그입니다.
pKey
이 페이로드가 등록된 키에 대한 포인터입니다.
pPayload
DrtRegisterKey를 호출할 때 애플리케이션에서 지정한 페이로드에 대한 포인터입니다.
pAddressList
보안 주소 페이로드에 배치되는 서비스 주소에 대한 포인터입니다.
pNonce
원래 Inquire 또는 조회 메시지에서 전송된 nonce에 대한 포인터입니다. 이 값은 16바이트로 고정됩니다.
pSecuredAddressPayload
서비스 주소, 해지된 플래그, nonce 및 보안 공급자가 요구하는 기타 데이터를 포함하는 유선으로 보낼 페이로드에 대한 포인터입니다. pSecuredAddressPayload.pb 는 보안 공급자에 의해 할당됩니다.
pClassifier
기관 메시지에서 보낼 분류자를 가리키는 포인터입니다. pClassifier.pb 는 보안 공급자에 의해 할당됩니다.
pSecuredPayload
기관 메시지에서 받은 애플리케이션 데이터 페이로드에 대한 포인터입니다. 유효성 검사 후 원래 데이터(암호 해독 후, 서명 제거 등)는 pPayload로 출력됩니다. pSecuredPayload.pb 는 보안 공급자에 의해 할당됩니다.
pCertChain
기관 메시지에서 보낼 인증서 체인에 대한 포인터입니다. pCertChain.pb 는 보안 공급자에 의해 할당됩니다.
FreeData
이전에 보안 공급자 함수에 할당된 리소스를 해제하기 위해 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pv
해제할 데이터를 지정합니다.
EncryptData
DRT가 암호화해야 하는 데이터가 포함된 메시지를 보낼 때 호출됩니다. 이 함수는 DRT가 DRT_SECURITY_MODE 정의된 DRT_SECURE_CONFIDENTIALPAYLOAD 보안 모드에서 작동하는 경우에만 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pRemoteCredential
보호된 메시지를 받을 피어의 자격 증명을 포함합니다.
dwBuffers
pDataBuffers 및 pEncryptedBuffers의 길이를 포함합니다.
pDataBuffers
암호화되지 않은 버퍼를 포함합니다.
pEncryptedBuffers
함수가 완료될 때 암호화된 콘텐츠를 포함합니다.
pKeyToken
메시지 수신자가 암호를 해독하고 보호된 필드의 암호를 해독하는 데 사용할 수 있는 암호화된 세션 키를 포함합니다.
DecryptData
DRT가 암호화된 데이터가 포함된 메시지를 수신할 때 호출됩니다. 이 함수는 DRT가 DRT_SECURITY_MODE 정의된 DRT_SECURE_CONFIDENTIALPAYLOAD 보안 모드에서 작동하는 경우에만 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pKeyToken
메시지 수신자가 암호를 해독하고 보호된 필드의 암호를 해독하는 데 사용할 수 있는 암호화된 세션 키를 포함합니다.
pvKeyContext
키가 등록되었을 때 DrtRegisterKey 에 전달된 컨텍스트를 포함합니다.
dwBuffers
pData 버퍼의 크기를 포함합니다.
pData
함수가 완료될 때 해독된 데이터를 포함합니다.
GetSerializedCredential
DRT가 로컬 노드에 권한을 부여하는 데 사용되는 자격 증명을 제공해야 하는 경우 호출됩니다. 이 함수는 DRT가 DRT_SECURITY_MODE 정의된 DRT_SECURE_MEMBERSHIP 및 DRT_SECURE_CONFIDENTIALPAYLOAD 보안 모드에서 작동하는 경우에만 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pSelfCredential
함수가 완료될 때 직렬화된 자격 증명을 포함합니다.
ValidateRemoteCredential
DRT가 피어 노드에서 제공하는 자격 증명의 유효성을 검사해야 하는 경우 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
pRemoteCredential
피어 노드에서 제공하는 직렬화된 자격 증명을 포함합니다.
SignData
DRT가 DRT 프로토콜 메시지에 포함하기 위해 데이터 Blob에 서명해야 하는 경우 호출됩니다. 이 함수는 DRT가 DRT_SECURITY_MODE 정의된 DRT_SECURE_MEMBERSHIP 및 DRT_SECURE_CONFIDENTIALPAYLOAD 보안 모드에서 작동하는 경우에만 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
dwBuffers
pDataBuffers 버퍼의 크기를 포함합니다.
pDataBuffers
서명할 데이터를 포함합니다.
pKeyIdentifier
이 함수가 완료되면 서명을 계산하는 데 사용할 여러 자격 증명 중에서 선택하는 데 사용할 수 있는 인덱스가 포함됩니다.
pSignature
이 함수가 완료되면 서명 데이터가 포함됩니다.
VerifyData
DRT가 DRT 메시지에 포함된 데이터 블록에 대해 계산된 서명을 확인해야 하는 경우 호출됩니다. 이 함수는 DRT가 DRT_SECURITY_MODE 정의된 DRT_SECURE_MEMBERSHIP 및 DRT_SECURE_CONFIDENTIALPAYLOAD 보안 모드에서 작동하는 경우에만 호출됩니다.
pvContext
DRT_SECURITY_PROVIDERpvContext 멤버가 보유한 값에 대한 포인터입니다.
dwBuffers
pDataBuffers 버퍼의 크기를 포함합니다.
pDataBuffers
서명이 계산된 데이터를 포함합니다.
pRemoteCredentials
서명을 계산하는 데 사용되는 원격 노드의 자격 증명을 포함합니다.
pKeyIdentifier
pRemoteCredentials에 제공된 여러 자격 증명 중에서 선택하는 데 사용할 수 있는 인덱스를 포함합니다.
pSignature
확인할 서명을 포함합니다.
요구 사항
지원되는 최소 클라이언트 | Windows 7 Professional [데스크톱 앱만 해당] |
지원되는 최소 서버 | Windows Server 2008 R2 [데스크톱 앱만 해당] |
머리글 | drt.h |