/*********************************************************************** * * Copyright (C) 2006 Novell, Inc. All Rights Reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; version 2.1 * of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Library Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, Novell, Inc. * * To contact Novell about this file by physical or electronic mail, * you may find current contact information at www.novell.com. * * Author: Juan Carlos Luciani * ***********************************************************************/ #ifndef _INTERNAL_H_ #define _INTERNAL_H_ //===[ Include files ]===================================================== #include "platform.h" #include #include #include #include #include "list_entry.h" #include "config_if.h" #include "mech_if.h" #include "proto.h" //===[ Type definitions ]================================================== // // Authentication Context structure // typedef struct _AuthContext { LIST_ENTRY listEntry; char *pContext; int contextLen; char *pMechanism; int mechanismLen; char *pMechInfo; int mechInfoLen; } AuthContext, *PAuthContext; // // Authentication Policy structure // typedef struct _AuthPolicy { LIST_ENTRY authContextListHead; } AuthPolicy, *PAuthPolicy; // // Get Authentication Policy Response structure // typedef struct _GetAuthPolicyResp { char *pPolicy; int policyLen; } GetAuthPolicyResp, *PGetAuthPolicyResp; // // Get Authentication Token Response structure // typedef struct _GetAuthTokenResp { char *pToken; int tokenLen; int tokenLifetime; } GetAuthTokenResp, *PGetAuthTokenResp; // // Authenticate Response structure // typedef struct _AuthenticateResp { char *pToken; int tokenLen; int tokenLifetime; } AuthenticateResp, *PAuthenticateResp; //===[ Inlines functions ]=============================================== //===[ Function prototypes ]=============================================== //===[ Global variables ]================================================== //===[ Global externals ]================================================== extern int DebugLevel; extern char mechConfigFolder[]; extern char pathCharString[]; //===[ External prototypes ]=============================================== // // Functions exported by engine.c // extern int Initialize(void); extern int InitializeLibrary(void); // // Functions exported by authmech.c // extern CasaStatus GetAuthMechToken( IN AuthContext *pAuthContext, INOUT char **ppAuthMechToken); // // Functions exported by getpolicymsg.c // extern char* BuildGetAuthPolicyMsg( IN char *pServiceName, IN char *pHostName); extern CasaStatus CreateGetAuthPolicyResp( IN char *pRespMsg, IN int respLen, INOUT GetAuthPolicyResp **ppGetAuthPolicyResp); extern void RelGetAuthPolicyResp( IN GetAuthPolicyResp *pGetAuthPolicyResp); // // Functions exported by authpolicy.c // extern CasaStatus CreateAuthPolicy( IN char *pEncodedData, IN int encodedDataLen, INOUT AuthPolicy **ppAuthPolicy); extern void RelAuthPolicy( IN AuthPolicy *pAuthPolicy); // // Functions exported by authmsg.c // extern char* BuildAuthenticateMsg( IN AuthContext *pAuthContext, IN char *pAuthMechToken); extern CasaStatus CreateAuthenticateResp( IN char *pRespMsg, IN int respLen, INOUT AuthenticateResp **ppAuthenticateResp); extern void RelAuthenticateResp( IN AuthenticateResp *pAuthenticateResp); // // Functions exported by gettokenmsg.c // extern char* BuildGetAuthTokenMsg( IN char *pServiceName, IN char *pHostName, IN char *pSessionToken); extern CasaStatus CreateGetAuthTokenResp( IN char *pRespMsg, IN int respLen, INOUT GetAuthTokenResp **ppGetAuthTokenResp); extern void RelGetAuthTokenResp( IN GetAuthTokenResp *pGetAuthTokenResp); // // Functions exported by cache.c // extern AuthCacheEntry* CreateSessionTokenCacheEntry( IN const char *pCacheKey, IN CasaStatus status, IN unsigned char *pToken, IN int entryLifetime ); extern AuthCacheEntry* CreateAuthTokenCacheEntry( IN const char *pCacheKey, IN const char *pHostName, IN CasaStatus status, IN unsigned char *pToken, IN int entryLifetime ); extern void FreeAuthCacheEntry( IN AuthCacheEntry *pEntry); extern AuthCacheEntry* FindSessionTokenEntryInCache( IN const char *pCacheKey); extern AuthCacheEntry* FindAuthTokenEntryInCache( IN const char *pCacheKey, IN const char *pGroupOrHostName); extern CasaStatus InitializeAuthCache(void); // // Functions exported by config.c // extern CasaStatus GetConfigInterface( IN const char *pConfigFolder, IN const char *pConfigName, INOUT ConfigIf **ppConfigIf); // // Functions exported by platform.c // extern CasaStatus CreateUserMutex( HANDLE *phMutex ); extern void AcquireUserMutex( HANDLE hMutex ); extern void ReleaseUserMutex( HANDLE hMutex ); extern void DestroyUserMutex( HANDLE hMutex ); extern CasaStatus CreateInitializationMutex(void); extern void AcquireInitializationMutex(void); extern void ReleaseInitializationMutex(void); extern LIB_HANDLE OpenLibrary( IN char *pFileName); extern void CloseLibrary( IN LIB_HANDLE libHandle); extern void* GetFunctionPtr( IN LIB_HANDLE libHandle, IN char *pFunctionName); extern char* NormalizeHostName( IN const char *pHostName); extern CasaStatus InitializeHostNameNormalization(void); // // Functions exported by rpc.c // extern RpcSession* OpenRpcSession( IN char *pHostName); extern void CloseRpcSession( IN RpcSession *pSession); extern CasaStatus Rpc( IN RpcSession *pSession, IN char *pMethod, IN bool secure, IN char *pRequestData, INOUT char **ppResponseData, INOUT int *pResponseDataLen); // // Defined in utils.c // extern CasaStatus EncodeData( IN const void *pData, IN const int32_t dataLen, INOUT char **ppEncodedData, INOUT int32_t *pEncodedDataLen); extern CasaStatus DecodeData( IN const char *pEncodedData, IN const int32_t encodedDataLen, // Does not include NULL terminator INOUT void **ppData, INOUT int32_t *pDataLen); extern int dtoul( IN const char *cp, IN const int len); //========================================================================= #endif // _INTERNAL_H_