import cyrus-sasl-2.1.23
[cyrus-sasl.git] / mac / CommonKClient / mac_kclient3 / Headers / KClient / KClient.h
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__ */