/***********************************************************************
 * 
 *  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 <micasa_types.h>
#include <casa_status.h>
#include "config_if.h"
#include "mech_if.h"

//===[ Type definitions ]==================================================

//===[ Inlines functions   ]===============================================

//===[ Function prototypes ]===============================================

//===[ Global variables ]==================================================

//===[ Global externals ]==================================================

extern int  KrbMechDebugLevel;
extern char *pKrbMechDebugLogFilePath;


//===[ External prototypes ]===============================================

//
// Defined in get.c
//

extern
CasaStatus SSCS_CALL
AuthTokenIf_GetAuthToken(
   IN       const void        *pIfInstance,
   IN       const char        *pContext,
   IN       const char        *pMechInfo,
   IN       const char        *pHostName,
   IN       void              *pCredStoreScope,
   INOUT    char              *pTokenBuf,
   INOUT    size_t            *pTokenBufLen);

extern
int
InitializeLibrary(void);

//
// Defined in utils.c
//

extern
CasaStatus
EncodeData(
   IN    const void *pData,
   IN    const uint32_t dataLen,
   INOUT char **ppEncodedData,
   INOUT uint32_t *pEncodedDataLen);

extern
CasaStatus
DecodeData(
   IN    const char *pEncodedData,
   IN    const uint32_t encodedDataLen, // Does not include NULL terminator
   INOUT void **ppData,
   INOUT uint32_t *pDataLen);

extern
int
dtoul(
   IN    const char *cp,
   IN    const int len);

//=========================================================================

#endif // _INTERNAL_H_