1 /*
\r * KClient 3.0 API declarations
\r * See KClient30-API.html
\r *
\r * $Header: /afs/andrew/system/cvs/src/sasl/mac/CommonKClient/mac_kclient3/Headers/KClient/KClient.h,v 1.2 2001/12/04 02:05:38 rjs3 Exp $
\r */
\r\r#ifndef __KCLIENT__
\r#define __KCLIENT__
\r\r/* Constants */
\r\renum {
\r /* No error */
\r kcNoError = 0,
\r \r /* General runtime errors */
\r kcErrNoMemory = 23000,
\r kcErrBadParam,
\r\r /* Various invalid structures */
\r kcErrInvalidSession = 23010,
\r kcErrInvalidPrincipal,
\r kcErrInvalidAddress,
\r kcErrInvalidFile,
\r\r /* Missing required settings in the session */
\r kcErrNoClientPrincipal = 23020,
\r kcErrNoServerPrincipal,
\r kcErrNoLocalAddress,
\r kcErrNoRemoteAddress,
\r kcErrNoSessionKey,
\r kcErrNoServiceKey,
\r kcErrNoChecksum,
\r \r kcErrNotLoggedIn = 23030,
\r kcErrUserCancelled,
\r kcErrIncorrectPassword,
\r \r kcErrBufferTooSmall = 23040,
\r kcErrKeyFileAccess,
\r kcErrFileNotFound,
\r kcErrInvalidPreferences,
\r kcErrChecksumMismatch,
\r \r kcFirstKerberosError = 20000,
\r kcLastKerberosError = kcFirstKerberosError + 256
\r};
\r\r#ifndef rez
\r\r#include <KerberosSupport/KerberosSupport.h>
\r#include <CredentialsCache/CredentialsCache.h>
\r#include <KerberosProfile/KerberosProfile.h>
\r#include <KerberosDES/KerberosDES.h>
\r#include <KClient/KClientTypes.h>
\r\r#if TARGET_API_MAC_OSX && TARGET_API_MAC_CARBON
\r #include <CoreServices/CoreServices.h>
\r#elif TARGET_API_MAC_OS8 || TARGET_API_MAC_CARBON
\r #include <Files.h>
\r#else
\r #error "Unknown OS"
\r#endif
\r\r#ifdef __cplusplus
\rextern "C" {
\r#endif
\r\r/* Functions */
\r\rOSStatus KClientGetVersion (
\r UInt16* outMajorVersion,
\r UInt16* outMinorVersion,
\r const char** outVersionString);
\r\r/* Initialization / destruction */
\r\rOSStatus KClientNewClientSession (
\r KClientSession* outSession);
\r \rOSStatus KClientNewServerSession (
\r KClientSession* inSession,
\r KClientPrincipal inService);
\r \rOSStatus KClientDisposeSession (
\r KClientSession inSession);
\r \r/* Accessing session properties */
\rOSStatus KClientGetClientPrincipal (
\r KClientSession inSession,
\r KClientPrincipal* outPrincipal);
\r \rOSStatus KClientSetClientPrincipal (
\r KClientSession inSession,
\r KClientPrincipal inPrincipal);
\r \rOSStatus KClientGetServerPrincipal (
\r KClientSession inSession,
\r KClientPrincipal* outPrincipal);
\r \rOSStatus KClientSetServerPrincipal (
\r KClientSession inSession,
\r KClientPrincipal inPrincipal);
\r \rOSStatus KClientGetLocalAddress (
\r KClientSession inSession,
\r KClientAddress* outLocalAddress);
\r \rOSStatus KClientSetLocalAddress (
\r KClientSession inSession,
\r const KClientAddress* inLocalAddress);
\r \rOSStatus KClientGetRemoteAddress (
\r KClientSession inSession,
\r KClientAddress* outRemoteAddress);
\r \rOSStatus KClientSetRemoteAddress (
\r KClientSession inSession,
\r const KClientAddress* inRemoteAddress);
\r \rOSStatus KClientGetSessionKey (
\r KClientSession inSession,
\r KClientKey* outKey);
\r\rOSStatus KClientGetExpirationTime (
\r KClientSession inSession,
\r UInt32* outExpiration);
\r \rOSStatus KClientSetKeyFile (
\r KClientSession inSession,
\r const KClientFile* inKeyFile);
\r \r/* Logging in and out (client) */
\r\rOSStatus KClientLogin (
\r KClientSession inSession);
\r\rOSStatus KClientPasswordLogin (
\r KClientSession inSession,
\r const char* inPassword);
\r \rOSStatus KClientKeyFileLogin (
\r KClientSession inSession);
\r\r/*OSStatus KClientKeyLogin (
\r KClientSession inSession,
\r const KClientKey* inKey);*/
\r \rOSStatus KClientLogout (
\r KClientSession inSession);
\r \r/* Accessing service keys (server) */
\r\rOSStatus KClientGetServiceKey (
\r KClientSession inSession,
\r UInt32 inVersion,
\r KClientKey* outKey);
\r \rOSStatus KClientAddServiceKey (
\r KClientSession inSession,
\r UInt32 inVersion,
\r const KClientKey* inKey);
\r \r/* Authenticating to a service (client) */
\r\rOSStatus KClientGetTicketForService (
\r KClientSession inSession,
\r UInt32 inChecksum,
\r void* outBuffer,
\r UInt32* ioBufferLength);
\r \rOSStatus KClientGetAuthenticatorForService (
\r KClientSession inSession,
\r UInt32 inChecksum,
\r const char* inApplicationVersion,
\r void* outBuffer,
\r UInt32* ioBufferLength);
\r\rOSStatus KClientVerifyEncryptedServiceReply (
\r KClientSession inSession,
\r const void* inBuffer,
\r UInt32 inBufferLength);
\r \rOSStatus KClientVerifyProtectedServiceReply (
\r KClientSession inSession,
\r const void* inBuffer,
\r UInt32 inBufferLength);
\r \r/* Authenticating a client (server) */
\r\rOSStatus KClientVerifyAuthenticator (
\r KClientSession inSession,
\r const void* inBuffer,
\r UInt32 inBufferLength);
\r \rOSStatus KClientGetEncryptedServiceReply (
\r KClientSession inSession,
\r void* outBuffer,
\r UInt32* ioBufferSize);
\r \rOSStatus KClientGetProtectedServiceReply (
\r KClientSession inSession,
\r void* outBuffer,
\r UInt32* ioBufferSize);
\r \r/* Communicating between a server and a client */
\r\rOSStatus KClientEncrypt (
\r KClientSession inSession,
\r const void* inPlainBuffer,
\r UInt32 inPlainBufferLength,
\r void* outEncryptedBuffer,
\r UInt32* ioEncryptedBufferLength);
\r\rOSStatus KClientDecrypt (
\r KClientSession inSession,
\r void* inEncryptedBuffer,
\r UInt32 inDecryptedBufferLength,
\r UInt32* outPlainOffset,
\r UInt32* outPlainLength);
\r \rOSStatus KClientProtectIntegrity (
\r KClientSession inSession,
\r const void* inPlainBuffer,
\r UInt32 inPlainBufferLength,
\r void* outProtectedBuffer,
\r UInt32* ioProtectedBufferLength);
\r\rOSStatus KClientVerifyIntegrity (
\r KClientSession inSession,
\r void* inProtectedBuffer,
\r UInt32 inProtectedBufferLength,
\r UInt32* outPlainOffset,
\r UInt32* outPlainLength);
\r \r/* Miscellaneous */
\r\rOSStatus KClientPasswordToKey (
\r KClientSession inSession,
\r const char* inPassword,
\r KClientKey* outKey);
\r \r/* Getting to other APIs */
\r\rOSStatus KClientGetCCacheReference (
\r KClientSession inSession,
\r cc_ccache_t* outCCacheReference);
\r\rOSStatus KClientGetProfileHandle (
\r KClientSession inSession,
\r profile_t* outProfileHandle);
\r\r/* Principal manipulation */
\r\rOSStatus KClientV4StringToPrincipal (
\r const char* inPrincipalString,
\r KClientPrincipal* outPrincipal);
\r \rOSStatus KClientPrincipalToV4String (
\r KClientPrincipal inPrincipal,
\r char* outPrincipalString);
\r \rOSStatus KClientPrincipalToV4Triplet (
\r KClientPrincipal inPrincipal,
\r char* outName,
\r char* outInstance,
\r char* outRealm);
\r \rOSStatus KClientDisposePrincipal (
\r KClientPrincipal inPrincipal);
\r \r#ifdef __cplusplus
\r}
\r#endif
\r\r#endif /* !rez */
\r\r#endif /* __KCLIENT__ */