CASA/CASA-auth-token/non-java/client/internal.h
Juan Carlos Luciani c99e319a3a Made modifications to switch the client to communicate with ATSs over SSL. Still need to make changes to the linux rpc.c to have all of the necessary changes completed.
Also made a fix to allow credential store scoping all the way into the authentication mechanisms.
2006-11-02 03:49:16 +00:00

437 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 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_