2c8668479c
to be able to deliver the client component onto distributions targeting desktops without having to deliver the server components. This commit is for the resulting client project.
438 lines
8.5 KiB
C
438 lines
8.5 KiB
C
/***********************************************************************
|
|
*
|
|
* 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 <jluciani@novell.com>
|
|
*
|
|
***********************************************************************/
|
|
|
|
#ifndef _INTERNAL_H_
|
|
#define _INTERNAL_H_
|
|
|
|
//===[ Include files ]=====================================================
|
|
|
|
#include "platform.h"
|
|
#include <expat.h>
|
|
#include <micasa_types.h>
|
|
#include <casa_status.h>
|
|
#include <casa_c_authtoken.h>
|
|
#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;
|
|
|
|
//
|
|
// Auth Cache Entry definition
|
|
//
|
|
typedef struct _AuthCacheEntry
|
|
{
|
|
int status;
|
|
DWORD creationTime;
|
|
DWORD expirationTime;
|
|
bool doesNotExpire;
|
|
char token[1];
|
|
|
|
} AuthCacheEntry, *PAuthCacheEntry;
|
|
|
|
|
|
//===[ Inlines functions ]===============================================
|
|
|
|
//===[ Function prototypes ]===============================================
|
|
|
|
//===[ Global variables ]==================================================
|
|
|
|
//===[ Global externals ]==================================================
|
|
|
|
extern int DebugLevel;
|
|
|
|
extern char clientConfigFolder[];
|
|
|
|
extern char mechConfigFolder[];
|
|
|
|
extern char pathCharString[];
|
|
|
|
|
|
//===[ External prototypes ]===============================================
|
|
|
|
//
|
|
// Functions exported by engine.c
|
|
//
|
|
|
|
extern
|
|
CasaStatus
|
|
ObtainAuthTokenInt(
|
|
IN const char *pServiceName,
|
|
IN const char *pHostName,
|
|
INOUT char *pAuthTokenBuf,
|
|
INOUT int *pAuthTokenBufLen,
|
|
IN void *pCredStoreScope);
|
|
|
|
//
|
|
// Functions exported by authmech.c
|
|
//
|
|
|
|
extern
|
|
CasaStatus
|
|
GetAuthMechToken(
|
|
IN AuthContext *pAuthContext,
|
|
IN const char *pHostName,
|
|
IN void *pCredStoreScope,
|
|
INOUT char **ppAuthMechToken);
|
|
|
|
//
|
|
// Functions exported by getpolicymsg.c
|
|
//
|
|
|
|
extern
|
|
char*
|
|
BuildGetAuthPolicyMsg(
|
|
IN const char *pServiceName,
|
|
IN const 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 const char *pServiceName,
|
|
IN const 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 char *pToken,
|
|
IN int entryLifetime,
|
|
IN void *pCredStoreScope);
|
|
|
|
extern
|
|
AuthCacheEntry*
|
|
CreateAuthTokenCacheEntry(
|
|
IN const char *pCacheKey,
|
|
IN const char *pHostName,
|
|
IN CasaStatus status,
|
|
IN char *pToken,
|
|
IN int entryLifetime,
|
|
IN void *pCredStoreScope);
|
|
|
|
extern
|
|
void
|
|
FreeAuthCacheEntry(
|
|
IN AuthCacheEntry *pEntry);
|
|
|
|
extern
|
|
AuthCacheEntry*
|
|
FindSessionTokenEntryInCache(
|
|
IN const char *pCacheKey,
|
|
IN void *pCredStoreScope);
|
|
|
|
extern
|
|
AuthCacheEntry*
|
|
FindAuthTokenEntryInCache(
|
|
IN const char *pCacheKey,
|
|
IN const char *pGroupOrHostName,
|
|
IN void *pCredStoreScope);
|
|
|
|
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
|
|
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 const char *pHostName,
|
|
IN const uint16_t hostPort);
|
|
|
|
extern
|
|
void
|
|
CloseRpcSession(
|
|
IN RpcSession *pSession);
|
|
|
|
#define SECURE_RPC_FLAG 1
|
|
#define ALLOW_INVALID_CERTS_RPC_FLAG 2
|
|
#define ALLOW_INVALID_CERTS_USER_APPROVAL_RPC_FLAG 4
|
|
|
|
extern
|
|
CasaStatus
|
|
Rpc(
|
|
IN RpcSession *pSession,
|
|
IN char *pMethod,
|
|
IN long flags,
|
|
IN char *pRequestData,
|
|
INOUT char **ppResponseData,
|
|
INOUT int *pResponseDataLen);
|
|
|
|
extern
|
|
CasaStatus
|
|
InitializeRpc(void);
|
|
|
|
//
|
|
// Functions exported by 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);
|
|
|
|
//
|
|
// Functions exported by invalidcert.c
|
|
//
|
|
|
|
extern
|
|
bool
|
|
InvalidCertsFromHostAllowed(
|
|
IN char *pHostName);
|
|
|
|
extern
|
|
void
|
|
AllowInvalidCertsFromHost(
|
|
IN char *pHostName);
|
|
|
|
#define INVALID_CERT_CA_FLAG 1
|
|
#define INVALID_CERT_CN_FLAG 2
|
|
#define INVALID_CERT_DATE_FLAG 4
|
|
|
|
extern
|
|
bool
|
|
UserApprovedCert(
|
|
IN char *pHostName,
|
|
IN char *pCertSubject,
|
|
IN char *pCertIssuer,
|
|
IN long invalidCertFlags);
|
|
|
|
|
|
//=========================================================================
|
|
|
|
#endif // _INTERNAL_H_
|
|
|