From 0467f7c88f31ca9c61613960d2d1337061c1bf94 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marc-Andr=C3=A9=20Moreau?= Date: Mon, 20 Feb 2012 17:04:45 -0500 Subject: [PATCH] libfreerdp-auth: stubbed more of SSPI --- include/freerdp/auth/sspi.h | 68 ++++++++++++++++++++++++++++++++++++++++++++- libfreerdp-auth/sspi.c | 60 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 127 insertions(+), 1 deletion(-) diff --git a/include/freerdp/auth/sspi.h b/include/freerdp/auth/sspi.h index 4a02a0d..39a5b91 100644 --- a/include/freerdp/auth/sspi.h +++ b/include/freerdp/auth/sspi.h @@ -124,9 +124,75 @@ struct _SECURITY_FUNCTION_TABLE }; typedef struct _SECURITY_FUNCTION_TABLE SECURITY_FUNCTION_TABLE; -SECURITY_FUNCTION_TABLE* InitSecurityInterface(void); +struct _SEC_HANDLE +{ + uint32* dwLower; + uint32* dwUpper; +}; +typedef struct _SEC_HANDLE SEC_HANDLE; + +typedef SEC_HANDLE CRED_HANDLE; +typedef SEC_HANDLE CTXT_HANDLE; + +struct _SEC_INTEGER +{ + uint32 LowPart; + sint32 HighPart; +}; +typedef struct _SEC_INTEGER SEC_INTEGER; + +typedef SEC_INTEGER SEC_TIMESTAMP; + +struct _SEC_BUFFER +{ + uint32 cbBuffer; + uint32 BufferType; + void* pvBuffer; +}; +typedef struct _SEC_BUFFER SEC_BUFFER; + +struct _SEC_BUFFER_DESC +{ + uint32 ulVersion; + uint32 cBuffers; + SEC_BUFFER* pBuffers; +}; +typedef struct _SEC_BUFFER_DESC SEC_BUFFER_DESC; + +/* Package Management */ + +FREERDP_API SECURITY_FUNCTION_TABLE* InitSecurityInterface(void); FREERDP_API SECURITY_STATUS EnumerateSecurityPackages(uint32* pcPackages, SEC_PKG_INFO** ppPackageInfo); FREERDP_API SECURITY_STATUS QuerySecurityPackageInfo(char* pszPackageName, SEC_PKG_INFO** ppPackageInfo); + +/* Credential Management */ + +SECURITY_STATUS AcquireCredentialsHandle(char* pszPrincipal, char* pszPackage, + uint32 fCredentialUse, void* pvLogonID, void* pAuthData, void* pGetKeyFn, + void* pvGetKeyArgument, CRED_HANDLE* phCredential, SEC_TIMESTAMP* ptsExpiry); + +SECURITY_STATUS FreeCredentialsHandle(CRED_HANDLE* phCredential); + +/* Context Management */ + +SECURITY_STATUS AcceptSecurityContext(CRED_HANDLE* phCredential, CTXT_HANDLE* phContext, + SEC_BUFFER_DESC* pInput, uint32 fContextReq, uint32 TargetDataRep, CTXT_HANDLE* phNewContext, + SEC_BUFFER_DESC* pOutput, uint32* pfContextAttr, SEC_TIMESTAMP* ptsTimeStamp); + FREERDP_API SECURITY_STATUS FreeContextBuffer(void* pvContextBuffer); +SECURITY_STATUS InitializeSecurityContext(CRED_HANDLE* phCredential, CTXT_HANDLE* phContext, + char* pszTargetName, uint32 fContextReq, uint32 Reserved1, uint32 TargetDataRep, + SEC_BUFFER_DESC* pInput, uint32 Reserved2, CTXT_HANDLE* phNewContext, + SEC_BUFFER_DESC* pOutput, uint32* pfContextAttr, SEC_TIMESTAMP* ptsExpiry); + +SECURITY_STATUS QueryContextAttributes(CTXT_HANDLE* phContext, uint32 ulAttribute, void* pBuffer); + +/* Message Support */ + +SECURITY_STATUS DecryptMessage(CTXT_HANDLE* phContext, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo, uint32* pfQOP); +SECURITY_STATUS EncryptMessage(CTXT_HANDLE* phContext, uint32 fQOP, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo); +SECURITY_STATUS MakeSignature(CTXT_HANDLE* phContext, uint32 fQOP, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo); +SECURITY_STATUS VerifySignature(CTXT_HANDLE* phContext, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo, uint32* pfQOP); + #endif /* FREERDP_AUTH_SSPI_H */ diff --git a/libfreerdp-auth/sspi.c b/libfreerdp-auth/sspi.c index 5b33d5a..d937994 100644 --- a/libfreerdp-auth/sspi.c +++ b/libfreerdp-auth/sspi.c @@ -21,6 +21,8 @@ #include +/* Package Management */ + SECURITY_FUNCTION_TABLE* InitSecurityInterface(void) { SECURITY_FUNCTION_TABLE* security_function_table; @@ -101,6 +103,29 @@ SECURITY_STATUS QuerySecurityPackageInfo(char* pszPackageName, SEC_PKG_INFO** pp return SEC_E_OK; } +/* Credential Management */ + +SECURITY_STATUS AcquireCredentialsHandle(char* pszPrincipal, char* pszPackage, + uint32 fCredentialUse, void* pvLogonID, void* pAuthData, void* pGetKeyFn, + void* pvGetKeyArgument, CRED_HANDLE* phCredential, SEC_TIMESTAMP* ptsExpiry) +{ + return SEC_E_OK; +} + +SECURITY_STATUS FreeCredentialsHandle(CRED_HANDLE* phCredential) +{ + return SEC_E_OK; +} + +/* Context Management */ + +SECURITY_STATUS AcceptSecurityContext(CRED_HANDLE* phCredential, CTXT_HANDLE* phContext, + SEC_BUFFER_DESC* pInput, uint32 fContextReq, uint32 TargetDataRep, CTXT_HANDLE* phNewContext, + SEC_BUFFER_DESC* pOutput, uint32* pfContextAttr, SEC_TIMESTAMP* ptsTimeStamp) +{ + return SEC_E_OK; +} + SECURITY_STATUS FreeContextBuffer(void* pvContextBuffer) { if (pvContextBuffer != NULL) @@ -108,3 +133,38 @@ SECURITY_STATUS FreeContextBuffer(void* pvContextBuffer) return SEC_E_OK; } + +SECURITY_STATUS InitializeSecurityContext(CRED_HANDLE* phCredential, CTXT_HANDLE* phContext, + char* pszTargetName, uint32 fContextReq, uint32 Reserved1, uint32 TargetDataRep, + SEC_BUFFER_DESC* pInput, uint32 Reserved2, CTXT_HANDLE* phNewContext, + SEC_BUFFER_DESC* pOutput, uint32* pfContextAttr, SEC_TIMESTAMP* ptsExpiry) +{ + return SEC_E_OK; +} + +SECURITY_STATUS QueryContextAttributes(CTXT_HANDLE* phContext, uint32 ulAttribute, void* pBuffer) +{ + return SEC_E_OK; +} + +/* Message Support */ + +SECURITY_STATUS DecryptMessage(CTXT_HANDLE* phContext, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo, uint32* pfQOP) +{ + return SEC_E_OK; +} + +SECURITY_STATUS EncryptMessage(CTXT_HANDLE* phContext, uint32 fQOP, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo) +{ + return SEC_E_OK; +} + +SECURITY_STATUS MakeSignature(CTXT_HANDLE* phContext, uint32 fQOP, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo) +{ + return SEC_E_OK; +} + +SECURITY_STATUS VerifySignature(CTXT_HANDLE* phContext, SEC_BUFFER_DESC* pMessage, uint32 MessageSeqNo, uint32* pfQOP) +{ + return SEC_E_OK; +} -- 2.7.4