[CalendarServer-changes] [1417] PyKerberos/trunk
source_changes at macosforge.org
source_changes at macosforge.org
Fri Mar 23 08:55:41 PDT 2007
Revision: 1417
http://trac.macosforge.org/projects/calendarserver/changeset/1417
Author: cdaboo at apple.com
Date: 2007-03-23 08:55:41 -0700 (Fri, 23 Mar 2007)
Log Message:
-----------
New method to allow the server to determine its own service principal from service type and hostname.
Modified Paths:
--------------
PyKerberos/trunk/pysrc/kerberos.py
PyKerberos/trunk/src/kerberos.c
PyKerberos/trunk/src/kerberosgss.c
PyKerberos/trunk/src/kerberosgss.h
PyKerberos/trunk/test.py
Added Paths:
-----------
PyKerberos/trunk/support/
PyKerberos/trunk/support/PyKerberos.xcodeproj/
PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.mode1v3
PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.pbxuser
PyKerberos/trunk/support/PyKerberos.xcodeproj/project.pbxproj
PyKerberos/trunk/support/main.c
Modified: PyKerberos/trunk/pysrc/kerberos.py
===================================================================
--- PyKerberos/trunk/pysrc/kerberos.py 2007-03-23 15:54:35 UTC (rev 1416)
+++ PyKerberos/trunk/pysrc/kerberos.py 2007-03-23 15:55:41 UTC (rev 1417)
@@ -55,6 +55,16 @@
@return: True if authentication succeeds, False otherwise.
"""
+def getServerPrincipalDetails(service, hostname):
+ """
+ This function returns the service principal for the server given a service type
+ and hostname. Details are looked up via the /etc/keytab file.
+
+ @param service: a string containing the Kerberos service type for the server.
+ @param hostname: a string containing the hostname of the server.
+ @return: a string containing the service principal.
+ """
+
"""
GSSAPI Function Result Codes:
Modified: PyKerberos/trunk/src/kerberos.c
===================================================================
--- PyKerberos/trunk/src/kerberos.c 2007-03-23 15:54:35 UTC (rev 1416)
+++ PyKerberos/trunk/src/kerberos.c 2007-03-23 15:55:41 UTC (rev 1417)
@@ -16,7 +16,7 @@
* DRI: Cyrus Daboo, cdaboo at apple.com
**/
-#include <Python.h>
+#include <Python/Python.h>
#include "kerberosbasic.h"
#include "kerberosgss.h"
@@ -44,6 +44,27 @@
return NULL;
}
+static PyObject *getServerPrincipalDetails(PyObject *self, PyObject *args)
+{
+ const char *service;
+ const char *hostname;
+ char* result;
+
+ if (!PyArg_ParseTuple(args, "ss", &service, &hostname))
+ return NULL;
+
+ result = server_principal_details(service, hostname);
+
+ if (result != NULL)
+ {
+ PyObject* pyresult = Py_BuildValue("s", result);
+ free(result);
+ return pyresult;
+ }
+ else
+ return NULL;
+}
+
static PyObject *authGSSClientInit(PyObject *self, PyObject *args)
{
const char *service;
@@ -231,6 +252,8 @@
static PyMethodDef KerberosMethods[] = {
{"checkPassword", checkPassword, METH_VARARGS,
"Check the supplied user/password against Kerberos KDC."},
+ {"getServerPrincipalDetails", getServerPrincipalDetails, METH_VARARGS,
+ "Return the service principal for a given service and hostname."},
{"authGSSClientInit", authGSSClientInit, METH_VARARGS,
"Initialize client-side GSSAPI operations."},
{"authGSSClientClean", authGSSClientClean, METH_VARARGS,
Modified: PyKerberos/trunk/src/kerberosgss.c
===================================================================
--- PyKerberos/trunk/src/kerberosgss.c 2007-03-23 15:54:35 UTC (rev 1416)
+++ PyKerberos/trunk/src/kerberosgss.c 2007-03-23 15:55:41 UTC (rev 1417)
@@ -16,7 +16,7 @@
* DRI: Cyrus Daboo, cdaboo at apple.com
**/
-#include <Python.h>
+#include <Python/Python.h>
#include "kerberosgss.h"
#include "base64.h"
@@ -30,6 +30,76 @@
extern PyObject *GssException_class;
extern PyObject *KrbException_class;
+char* server_principal_details(const char* service, const char* hostname)
+{
+ char match[1024];
+ int match_len = 0;
+ char* result = NULL;
+
+ int code;
+ krb5_context kcontext;
+ krb5_keytab kt = NULL;
+ krb5_kt_cursor cursor = NULL;
+ krb5_keytab_entry entry;
+ char* pname = NULL;
+
+ // Generate the principal prefix we want to match
+ snprintf(match, 1024, "%s/%s@", service, hostname);
+ match_len = strlen(match);
+
+ code = krb5_init_context(&kcontext);
+ if (code)
+ {
+ PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
+ "Cannot initialize Kerberos5 context", code));
+ return NULL;
+ }
+
+ if ((code = krb5_kt_default(kcontext, &kt)))
+ {
+ PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
+ "Cannot get default keytab", code));
+ goto end;
+ }
+
+ if ((code = krb5_kt_start_seq_get(kcontext, kt, &cursor)))
+ {
+ PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
+ "Cannot get sequence cursor from keytab", code));
+ goto end;
+ }
+
+ while ((code = krb5_kt_next_entry(kcontext, kt, &entry, &cursor)) == 0)
+ {
+ if ((code = krb5_unparse_name(kcontext, entry.principal, &pname)))
+ {
+ PyErr_SetObject(KrbException_class, Py_BuildValue("((s:i))",
+ "Cannot parse principal name from keytab", code));
+ goto end;
+ }
+
+ if (strncmp(pname, match, match_len) == 0)
+ {
+ result = malloc(strlen(pname) + 1);
+ strcpy(result, pname);
+ krb5_free_unparsed_name(kcontext, pname);
+ break;
+ }
+
+ krb5_free_unparsed_name(kcontext, pname);
+ krb5_free_keytab_entry_contents(kcontext, &entry);
+ }
+
+end:
+ if (cursor)
+ krb5_kt_end_seq_get(kcontext, kt, &cursor);
+ if (kt)
+ krb5_kt_close(kcontext, kt);
+ krb5_free_context(kcontext);
+
+ return result;
+}
+
int authenticate_gss_client_init(const char* service, gss_client_state *state)
{
OM_uint32 maj_stat;
Modified: PyKerberos/trunk/src/kerberosgss.h
===================================================================
--- PyKerberos/trunk/src/kerberosgss.h 2007-03-23 15:54:35 UTC (rev 1416)
+++ PyKerberos/trunk/src/kerberosgss.h 2007-03-23 15:55:41 UTC (rev 1417)
@@ -43,6 +43,8 @@
char* response;
} gss_server_state;
+char* server_principal_details(const char* service, const char* hostname);
+
int authenticate_gss_client_init(const char* service, gss_client_state *state);
int authenticate_gss_client_clean(gss_client_state *state);
int authenticate_gss_client_step(gss_client_state *state, const char *challenge);
Added: PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.mode1v3
===================================================================
--- PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.mode1v3 (rev 0)
+++ PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.mode1v3 2007-03-23 15:55:41 UTC (rev 1417)
@@ -0,0 +1,1370 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActivePerspectiveName</key>
+ <string>Project</string>
+ <key>AllowedModules</key>
+ <array>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Name</key>
+ <string>Groups and Files Outline View</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Name</key>
+ <string>Editor</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCTaskListModule</string>
+ <key>Name</key>
+ <string>Task List</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Name</key>
+ <string>File and Smart Group Detail Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Name</key>
+ <string>Detailed Build Results Viewer</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Name</key>
+ <string>Project Batch Find Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Name</key>
+ <string>Bookmarks Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Name</key>
+ <string>Class Browser</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Name</key>
+ <string>Source Code Control Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXDebugBreakpointsModule</string>
+ <key>Name</key>
+ <string>Debug Breakpoints Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCDockableInspector</string>
+ <key>Name</key>
+ <string>Inspector</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>PBXOpenQuicklyModule</string>
+ <key>Name</key>
+ <string>Open Quickly Tool</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Name</key>
+ <string>Debugger</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>1</string>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Name</key>
+ <string>Debug Console</string>
+ </dict>
+ <dict>
+ <key>BundleLoadPath</key>
+ <string></string>
+ <key>MaxInstances</key>
+ <string>n</string>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Name</key>
+ <string>Snapshots Tool</string>
+ </dict>
+ </array>
+ <key>Description</key>
+ <string>DefaultDescriptionKey</string>
+ <key>DockingSystemVisible</key>
+ <false/>
+ <key>Extension</key>
+ <string>mode1v3</string>
+ <key>FavBarConfig</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>AFDE37F40BB41E00008C037E</string>
+ <key>XCBarModuleItemNames</key>
+ <dict/>
+ <key>XCBarModuleItems</key>
+ <array/>
+ </dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>com.apple.perspectives.project.mode1v3</string>
+ <key>MajorVersion</key>
+ <integer>32</integer>
+ <key>MinorVersion</key>
+ <integer>1</integer>
+ <key>Name</key>
+ <string>Default</string>
+ <key>Notifications</key>
+ <array/>
+ <key>OpenEditors</key>
+ <array/>
+ <key>PerspectiveWidths</key>
+ <array>
+ <integer>-1</integer>
+ <integer>-1</integer>
+ </array>
+ <key>Perspectives</key>
+ <array>
+ <dict>
+ <key>ChosenToolbarItems</key>
+ <array>
+ <string>active-target-popup</string>
+ <string>active-buildstyle-popup</string>
+ <string>action</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>buildOrClean</string>
+ <string>build-and-goOrGo</string>
+ <string>com.apple.ide.PBXToolbarStopButton</string>
+ <string>get-info</string>
+ <string>toggle-editor</string>
+ <string>NSToolbarFlexibleSpaceItem</string>
+ <string>com.apple.pbx.toolbar.searchfield</string>
+ </array>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProjectWithEditor</string>
+ <key>Identifier</key>
+ <string>perspective.project</string>
+ <key>IsVertical</key>
+ <false/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>08FB7794FE84155DC02AAC07</string>
+ <string>08FB7795FE84155DC02AAC07</string>
+ <string>AFDE38300BB41F71008C037E</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>1</integer>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 901}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <true/>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 919}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>14 208 1260 960 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>203pt</string>
+ </dict>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20306471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>main.c</string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20406471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>main.c</string>
+ <key>_historyCapacity</key>
+ <integer>0</integer>
+ <key>bookmark</key>
+ <string>AF4480DF0BB42E3C00408822</string>
+ <key>history</key>
+ <array>
+ <string>AFDE38870BB42287008C037E</string>
+ <string>AF4480AD0BB42BFD00408822</string>
+ <string>AF4480CF0BB42D1700408822</string>
+ </array>
+ <key>prevStack</key>
+ <array>
+ <string>AFDE38700BB420B1008C037E</string>
+ <string>AFDE388A0BB42287008C037E</string>
+ <string>AFDE388E0BB42287008C037E</string>
+ <string>AF4480AF0BB42BFD00408822</string>
+ <string>AF4480B00BB42BFD00408822</string>
+ </array>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {1052, 556}}</string>
+ <key>RubberWindowFrame</key>
+ <string>14 208 1260 960 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>556pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B20506471E060097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 561}, {1052, 358}}</string>
+ <key>RubberWindowFrame</key>
+ <string>14 208 1260 960 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>1052pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCModuleDock</string>
+ <string>PBXNavigatorGroup</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>AF4480B20BB42BFD00408822</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>AF4480B30BB42BFD00408822</string>
+ <string>1CE0B20306471E060097A5F4</string>
+ <string>1CE0B20506471E060097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.defaultV3</string>
+ </dict>
+ <dict>
+ <key>ControllerClassBaseName</key>
+ <string></string>
+ <key>IconName</key>
+ <string>WindowOfProject</string>
+ <key>Identifier</key>
+ <string>perspective.morph</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C37FBAC04509CD000000102</string>
+ <string>1C37FAAC04509CD000000102</string>
+ <string>1C08E77C0454961000C914BD</string>
+ <string>1C37FABC05509CD000000102</string>
+ <string>1C37FABC05539CD112110102</string>
+ <string>E2644B35053B69B200211256</string>
+ <string>1C37FABC04509CD000100104</string>
+ <string>1CC0EA4004350EF90044410B</string>
+ <string>1CC0EA4004350EF90041110B</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>yes</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>186</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>29B97314FDCFA39411CA2CEA</string>
+ <string>1C37FABC05509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {186, 337}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>1</integer>
+ <key>XCSharingToken</key>
+ <string>com.apple.Xcode.GFSharingToken</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {203, 355}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>186</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>373 269 690 397 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Morph</string>
+ <key>PreferredWidth</key>
+ <integer>300</integer>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCModuleDock</string>
+ <string>PBXSmartGroupTreeModule</string>
+ </array>
+ <key>TableOfContents</key>
+ <array>
+ <string>11E0B1FE06471DED0097A5F4</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.default.shortV3</string>
+ </dict>
+ </array>
+ <key>PerspectivesBarVisible</key>
+ <false/>
+ <key>ShelfIsVisible</key>
+ <false/>
+ <key>SourceDescription</key>
+ <string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TimeStamp</key>
+ <real>0.0</real>
+ <key>ToolbarDisplayMode</key>
+ <integer>1</integer>
+ <key>ToolbarIsVisible</key>
+ <true/>
+ <key>ToolbarSizeMode</key>
+ <integer>1</integer>
+ <key>Type</key>
+ <string>Perspectives</string>
+ <key>UpdateMessage</key>
+ <string>The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?</string>
+ <key>WindowJustification</key>
+ <integer>5</integer>
+ <key>WindowOrderList</key>
+ <array>
+ <string>AF4480DB0BB42D9C00408822</string>
+ <string>AF4480C70BB42CA000408822</string>
+ <string>AF4480CA0BB42CA000408822</string>
+ <string>AF4480B40BB42BFD00408822</string>
+ <string>AF4480B70BB42BFD00408822</string>
+ <string>AF4480B80BB42BFD00408822</string>
+ <string>AF4480BA0BB42BFD00408822</string>
+ <string>AF4480BB0BB42BFD00408822</string>
+ <string>AF4480BC0BB42BFD00408822</string>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>AFDE38090BB41EA7008C037E</string>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>AF4480BD0BB42BFD00408822</string>
+ <string>AF4480BE0BB42BFD00408822</string>
+ <string>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/PyKerberos/support/PyKerberos.xcodeproj</string>
+ </array>
+ <key>WindowString</key>
+ <string>14 208 1260 960 0 0 1920 1178 </string>
+ <key>WindowToolsV3</key>
+ <array>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.build</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <true/>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528F0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>main.c</string>
+ <key>StatusBarVisibility</key>
+ <true/>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {993, 324}}</string>
+ <key>RubberWindowFrame</key>
+ <string>506 511 993 606 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>324pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>XCMainBuildResultsModuleGUID</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Build</string>
+ <key>XCBuildResultsTrigger_Collapse</key>
+ <integer>1021</integer>
+ <key>XCBuildResultsTrigger_Open</key>
+ <integer>1011</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 329}, {993, 236}}</string>
+ <key>RubberWindowFrame</key>
+ <string>506 511 993 606 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXBuildResultsModule</string>
+ <key>Proportion</key>
+ <string>236pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>565pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Build Results</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBuildResultsModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>AFDE38090BB41EA7008C037E</string>
+ <string>AF44809A0BB428F200408822</string>
+ <string>1CD0528F0623707200166675</string>
+ <string>XCMainBuildResultsModuleGUID</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.buildV3</string>
+ <key>WindowString</key>
+ <string>506 511 993 606 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>AFDE38090BB41EA7008C037E</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debugger</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>Debugger</key>
+ <dict>
+ <key>HorizontalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {477, 385}}</string>
+ <string>{{477, 0}, {568, 385}}</string>
+ </array>
+ </dict>
+ <key>VerticalSplitView</key>
+ <dict>
+ <key>_collapsingFrameDimension</key>
+ <real>0.0</real>
+ <key>_indexOfCollapsedView</key>
+ <integer>0</integer>
+ <key>_percentageOfCollapsedView</key>
+ <real>0.0</real>
+ <key>isCollapsed</key>
+ <string>yes</string>
+ <key>sizes</key>
+ <array>
+ <string>{{0, 0}, {1045, 385}}</string>
+ <string>{{0, 385}, {1045, 371}}</string>
+ </array>
+ </dict>
+ </dict>
+ <key>LauncherConfigVersion</key>
+ <string>8</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C162984064C10D400B95A72</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debug - GLUTExamples (Underwater)</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>DebugConsoleVisible</key>
+ <string>None</string>
+ <key>DebugConsoleWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>DebugSTDIOWindowFrame</key>
+ <string>{{200, 200}, {500, 300}}</string>
+ <key>Frame</key>
+ <string>{{0, 0}, {1045, 756}}</string>
+ <key>PBXDebugSessionStackFrameViewKey</key>
+ <dict>
+ <key>DebugVariablesTableConfiguration</key>
+ <array>
+ <string>Name</string>
+ <real>187</real>
+ <string>Value</string>
+ <real>85</real>
+ <string>Summary</string>
+ <real>271</real>
+ </array>
+ <key>Frame</key>
+ <string>{{477, 0}, {568, 385}}</string>
+ <key>RubberWindowFrame</key>
+ <string>469 256 1045 797 0 0 1920 1178 </string>
+ </dict>
+ <key>RubberWindowFrame</key>
+ <string>469 256 1045 797 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugSessionModule</string>
+ <key>Proportion</key>
+ <string>756pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>756pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugSessionModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <string>AF44809B0BB428F200408822</string>
+ <string>1C162984064C10D400B95A72</string>
+ <string>AF44809C0BB428F200408822</string>
+ <string>AF44809D0BB428F200408822</string>
+ <string>AF44809E0BB428F200408822</string>
+ <string>AF44809F0BB428F200408822</string>
+ <string>AF4480A00BB428F200408822</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugV3</string>
+ <key>WindowString</key>
+ <string>469 256 1045 797 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>1CD10A99069EF8BA00B06720</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.find</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CDD528C0622207200134675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string><No Editor></string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528D0623707200166675</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {781, 167}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>781pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD0528E0623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Project Find</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{8, 0}, {773, 254}}</string>
+ <key>RubberWindowFrame</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXProjectFindModule</string>
+ <key>Proportion</key>
+ <string>50%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>428pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Project Find</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXProjectFindModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <string>1C530D58069F1CE1000CFCEE</string>
+ <string>1C530D59069F1CE1000CFCEE</string>
+ <string>1CDD528C0622207200134675</string>
+ <string>1C530D5A069F1CE1000CFCEE</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CD0528E0623707200166675</string>
+ </array>
+ <key>WindowString</key>
+ <string>62 385 781 470 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C530D57069F1CE1000CFCEE</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>MENUSEPARATOR</string>
+ </dict>
+ <dict>
+ <key>FirstTimeWindowDisplayed</key>
+ <false/>
+ <key>Identifier</key>
+ <string>windowTool.debuggerConsole</string>
+ <key>IsVertical</key>
+ <true/>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAAC065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Debugger Console</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {650, 358}}</string>
+ <key>RubberWindowFrame</key>
+ <string>35 895 650 250 0 0 1920 1178 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXDebugCLIModule</string>
+ <key>Proportion</key>
+ <string>358pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>209pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debugger Console</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXDebugCLIModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <true/>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAAD065D492600B07095</string>
+ <string>AF4480A10BB428F200408822</string>
+ <string>1C78EAAC065D492600B07095</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.consoleV3</string>
+ <key>WindowString</key>
+ <string>35 895 650 250 0 0 1920 1178 </string>
+ <key>WindowToolGUID</key>
+ <string>1C78EAAD065D492600B07095</string>
+ <key>WindowToolIsVisible</key>
+ <false/>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.snapshots</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>XCSnapshotModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Snapshots</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCSnapshotModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <string>Yes</string>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.snapshots</string>
+ <key>WindowString</key>
+ <string>315 824 300 550 0 0 1440 878 </string>
+ <key>WindowToolIsVisible</key>
+ <string>Yes</string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.scm</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB2065D492600B07095</string>
+ <key>PBXProjectModuleLabel</key>
+ <string><No Editor></string>
+ <key>PBXSplitModuleInNavigatorKey</key>
+ <dict>
+ <key>Split0</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1C78EAB3065D492600B07095</string>
+ </dict>
+ <key>SplitCount</key>
+ <string>1</string>
+ </dict>
+ <key>StatusBarVisibility</key>
+ <integer>1</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {452, 0}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>0pt</string>
+ </dict>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CD052920623707200166675</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>SCM</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ConsoleFrame</key>
+ <string>{{0, 259}, {452, 0}}</string>
+ <key>Frame</key>
+ <string>{{0, 7}, {452, 259}}</string>
+ <key>RubberWindowFrame</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ <key>TableConfiguration</key>
+ <array>
+ <string>Status</string>
+ <real>30</real>
+ <string>FileName</string>
+ <real>199</real>
+ <string>Path</string>
+ <real>197.09500122070312</real>
+ </array>
+ <key>TableFrame</key>
+ <string>{{0, 0}, {452, 250}}</string>
+ </dict>
+ <key>Module</key>
+ <string>PBXCVSModule</string>
+ <key>Proportion</key>
+ <string>262pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>266pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>SCM</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXCVSModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C78EAB4065D492600B07095</string>
+ <string>1C78EAB5065D492600B07095</string>
+ <string>1C78EAB2065D492600B07095</string>
+ <string>1CD052920623707200166675</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.scm</string>
+ <key>WindowString</key>
+ <string>743 379 452 308 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.breakpoints</string>
+ <key>IsVertical</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXBottomSmartGroupGIDs</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Files</string>
+ <key>PBXProjectStructureProvided</key>
+ <string>no</string>
+ <key>PBXSmartGroupTreeModuleColumnData</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
+ <array>
+ <real>168</real>
+ </array>
+ <key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
+ <array>
+ <string>MainColumn</string>
+ </array>
+ </dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
+ <dict>
+ <key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
+ <array>
+ <string>1C77FABC04509CD000000102</string>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
+ <array>
+ <array>
+ <integer>0</integer>
+ </array>
+ </array>
+ <key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
+ <string>{{0, 0}, {168, 350}}</string>
+ </dict>
+ <key>PBXTopSmartGroupGIDs</key>
+ <array/>
+ <key>XCIncludePerspectivesSwitch</key>
+ <integer>0</integer>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{0, 0}, {185, 368}}</string>
+ <key>GroupTreeTableConfiguration</key>
+ <array>
+ <string>MainColumn</string>
+ <real>168</real>
+ </array>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXSmartGroupTreeModule</string>
+ <key>Proportion</key>
+ <string>185pt</string>
+ </dict>
+ <dict>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA1AED706398EBD00589147</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Detail</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{{190, 0}, {554, 368}}</string>
+ <key>RubberWindowFrame</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>XCDetailModule</string>
+ <key>Proportion</key>
+ <string>554pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>368pt</string>
+ </dict>
+ </array>
+ <key>MajorVersion</key>
+ <integer>3</integer>
+ <key>MinorVersion</key>
+ <integer>0</integer>
+ <key>Name</key>
+ <string>Breakpoints</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXSmartGroupTreeModule</string>
+ <string>XCDetailModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <string>1CDDB66907F98D9800BB5817</string>
+ <string>1CE0B1FE06471DED0097A5F4</string>
+ <string>1CA1AED706398EBD00589147</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.breakpointsV3</string>
+ <key>WindowString</key>
+ <string>315 424 744 409 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1CDDB66807F98D9800BB5817</string>
+ <key>WindowToolIsVisible</key>
+ <integer>1</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.debugAnimator</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXNavigatorGroup</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Debug Visualizer</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXNavigatorGroup</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>1</integer>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.debugAnimatorV3</string>
+ <key>WindowString</key>
+ <string>100 100 700 500 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.bookmarks</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>Module</key>
+ <string>PBXBookmarksModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Bookmarks</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXBookmarksModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>WindowString</key>
+ <string>538 42 401 187 0 0 1280 1002 </string>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.classBrowser</string>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>ContentConfiguration</key>
+ <dict>
+ <key>OptionsSetName</key>
+ <string>Hierarchy, all classes</string>
+ <key>PBXProjectModuleGUID</key>
+ <string>1CA6456E063B45B4001379D8</string>
+ <key>PBXProjectModuleLabel</key>
+ <string>Class Browser - NSObject</string>
+ </dict>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>ClassesFrame</key>
+ <string>{{0, 0}, {374, 96}}</string>
+ <key>ClassesTreeTableConfiguration</key>
+ <array>
+ <string>PBXClassNameColumnIdentifier</string>
+ <real>208</real>
+ <string>PBXClassBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>Frame</key>
+ <string>{{0, 0}, {630, 331}}</string>
+ <key>MembersFrame</key>
+ <string>{{0, 105}, {374, 395}}</string>
+ <key>MembersTreeTableConfiguration</key>
+ <array>
+ <string>PBXMemberTypeIconColumnIdentifier</string>
+ <real>22</real>
+ <string>PBXMemberNameColumnIdentifier</string>
+ <real>216</real>
+ <string>PBXMemberTypeColumnIdentifier</string>
+ <real>97</real>
+ <string>PBXMemberBookColumnIdentifier</string>
+ <real>22</real>
+ </array>
+ <key>PBXModuleWindowStatusBarHidden2</key>
+ <integer>1</integer>
+ <key>RubberWindowFrame</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ </dict>
+ <key>Module</key>
+ <string>PBXClassBrowserModule</string>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>332pt</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Class Browser</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>PBXClassBrowserModule</string>
+ </array>
+ <key>StatusbarIsVisible</key>
+ <integer>0</integer>
+ <key>TableOfContents</key>
+ <array>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <string>1C0AD2B0069F1E9B00FABCE6</string>
+ <string>1CA6456E063B45B4001379D8</string>
+ </array>
+ <key>ToolbarConfiguration</key>
+ <string>xcode.toolbar.config.classbrowser</string>
+ <key>WindowString</key>
+ <string>385 179 630 352 0 0 1440 878 </string>
+ <key>WindowToolGUID</key>
+ <string>1C0AD2AF069F1E9B00FABCE6</string>
+ <key>WindowToolIsVisible</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Identifier</key>
+ <string>windowTool.refactoring</string>
+ <key>IncludeInToolsMenu</key>
+ <integer>0</integer>
+ <key>Layout</key>
+ <array>
+ <dict>
+ <key>Dock</key>
+ <array>
+ <dict>
+ <key>BecomeActive</key>
+ <integer>1</integer>
+ <key>GeometryConfiguration</key>
+ <dict>
+ <key>Frame</key>
+ <string>{0, 0}, {500, 335}</string>
+ <key>RubberWindowFrame</key>
+ <string>{0, 0}, {500, 335}</string>
+ </dict>
+ <key>Module</key>
+ <string>XCRefactoringModule</string>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Proportion</key>
+ <string>100%</string>
+ </dict>
+ </array>
+ <key>Name</key>
+ <string>Refactoring</string>
+ <key>ServiceClasses</key>
+ <array>
+ <string>XCRefactoringModule</string>
+ </array>
+ <key>WindowString</key>
+ <string>200 200 500 356 0 0 1920 1200 </string>
+ </dict>
+ </array>
+</dict>
+</plist>
Added: PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.pbxuser
===================================================================
--- PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.pbxuser (rev 0)
+++ PyKerberos/trunk/support/PyKerberos.xcodeproj/cyrusdaboo.pbxuser 2007-03-23 15:55:41 UTC (rev 1417)
@@ -0,0 +1,323 @@
+// !$*UTF8*$!
+{
+ 08FB7793FE84155DC02AAC07 /* Project object */ = {
+ activeArchitecture = i386;
+ activeBuildConfigurationName = Debug;
+ activeExecutable = AFDE37EE0BB41DF9008C037E /* PyKerberos */;
+ activeTarget = 8DD76F620486A84900D96B5E /* PyKerberos */;
+ addToTargets = (
+ 8DD76F620486A84900D96B5E /* PyKerberos */,
+ );
+ breakpoints = (
+ AF4480A50BB4292300408822 /* kerberosbasic.c:35 */,
+ AF4480C10BB42C1E00408822 /* kerberosbasic.c:92 */,
+ AF4480CD0BB42CFF00408822 /* main.c:18 */,
+ AF4480D80BB42D6100408822 /* kerberosgss.c:253 */,
+ );
+ codeSenseManager = AFDE37F60BB41E00008C037E /* Code sense */;
+ executables = (
+ AFDE37EE0BB41DF9008C037E /* PyKerberos */,
+ );
+ perUserDictionary = {
+ PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
+ PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
+ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
+ PBXFileTableDataSourceColumnWidthsKey = (
+ 20,
+ 813,
+ 20,
+ 48,
+ 43,
+ 43,
+ 20,
+ );
+ PBXFileTableDataSourceColumnsKey = (
+ PBXFileDataSource_FiletypeID,
+ PBXFileDataSource_Filename_ColumnID,
+ PBXFileDataSource_Built_ColumnID,
+ PBXFileDataSource_ObjectSize_ColumnID,
+ PBXFileDataSource_Errors_ColumnID,
+ PBXFileDataSource_Warnings_ColumnID,
+ PBXFileDataSource_Target_ColumnID,
+ );
+ };
+ PBXPerProjectTemplateStateSaveDate = 196357790;
+ PBXWorkspaceStateSaveDate = 196357790;
+ };
+ perUserProjectItems = {
+ AF4480AD0BB42BFD00408822 = AF4480AD0BB42BFD00408822 /* PBXTextBookmark */;
+ AF4480AF0BB42BFD00408822 = AF4480AF0BB42BFD00408822 /* PBXTextBookmark */;
+ AF4480B00BB42BFD00408822 = AF4480B00BB42BFD00408822 /* PBXTextBookmark */;
+ AF4480CF0BB42D1700408822 = AF4480CF0BB42D1700408822 /* PBXTextBookmark */;
+ AF4480DF0BB42E3C00408822 = AF4480DF0BB42E3C00408822 /* PBXTextBookmark */;
+ AFDE38700BB420B1008C037E = AFDE38700BB420B1008C037E /* PBXTextBookmark */;
+ AFDE38870BB42287008C037E = AFDE38870BB42287008C037E /* PBXTextBookmark */;
+ AFDE388A0BB42287008C037E = AFDE388A0BB42287008C037E /* PBXTextBookmark */;
+ AFDE388E0BB42287008C037E = AFDE388E0BB42287008C037E /* PBXTextBookmark */;
+ };
+ sourceControlManager = AFDE37F50BB41E00008C037E /* Source Control */;
+ userBuildSettings = {
+ };
+ };
+ 08FB7796FE84155DC02AAC07 /* main.c */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {984, 322}}";
+ sepNavSelRange = "{420, 0}";
+ sepNavVisRect = "{{0, 0}, {984, 308}}";
+ sepNavWindowFrame = "{{485, -20}, {1395, 1160}}";
+ };
+ };
+ 8DD76F620486A84900D96B5E /* PyKerberos */ = {
+ activeExec = 0;
+ executables = (
+ AFDE37EE0BB41DF9008C037E /* PyKerberos */,
+ );
+ };
+ AF4480A50BB4292300408822 /* kerberosbasic.c:35 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */;
+ functionName = "authenticate_user_krb5pwd(const char *user, const char *pswd, const char *service, const char *default_realm)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 35;
+ location = kerberosbasic.ob;
+ modificationTime = 196358061.544823;
+ state = 1;
+ };
+ AF4480AD0BB42BFD00408822 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = AFDE37FC0BB41E1D008C037E /* kerberosgss.c */;
+ name = "kerberosgss.c: 47";
+ rLen = 0;
+ rLoc = 1285;
+ rType = 0;
+ vrLen = 930;
+ vrLoc = 867;
+ };
+ AF4480AF0BB42BFD00408822 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 08FB7796FE84155DC02AAC07 /* main.c */;
+ name = "main.c: 4";
+ rLen = 0;
+ rLoc = 45;
+ rType = 0;
+ vrLen = 405;
+ vrLoc = 0;
+ };
+ AF4480B00BB42BFD00408822 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = AFDE37FC0BB41E1D008C037E /* kerberosgss.c */;
+ name = "kerberosgss.c: 47";
+ rLen = 0;
+ rLoc = 1285;
+ rType = 0;
+ vrLen = 930;
+ vrLoc = 867;
+ };
+ AF4480C10BB42C1E00408822 /* kerberosbasic.c:92 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */;
+ functionName = "authenticate_user_krb5pwd(const char *user, const char *pswd, const char *service, const char *default_realm)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 92;
+ location = kerberosbasic.ob;
+ modificationTime = 196358061.544839;
+ state = 1;
+ };
+ AF4480CD0BB42CFF00408822 /* main.c:18 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = 08FB7796FE84155DC02AAC07 /* main.c */;
+ functionName = "main (int argc, char * const argv[])";
+ hitCount = 1;
+ ignoreCount = 0;
+ lineNumber = 18;
+ location = main.ob;
+ modificationTime = 196358037.390216;
+ state = 1;
+ };
+ AF4480CF0BB42D1700408822 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ comments = "error: syntax error before 'gss_server_state'";
+ fRef = 08FB7796FE84155DC02AAC07 /* main.c */;
+ rLen = 1;
+ rLoc = 17;
+ rType = 1;
+ };
+ AF4480D80BB42D6100408822 /* kerberosgss.c:253 */ = {
+ isa = PBXFileBreakpoint;
+ actions = (
+ );
+ breakpointStyle = 0;
+ continueAfterActions = 0;
+ countType = 0;
+ delayBeforeContinue = 0;
+ fileReference = AFDE37FC0BB41E1D008C037E /* kerberosgss.c */;
+ functionName = "authenticate_gss_server_init(const char* service, gss_server_state *state)";
+ hitCount = 0;
+ ignoreCount = 0;
+ lineNumber = 253;
+ location = kerberosgss.ob;
+ modificationTime = 196358037.343018;
+ state = 1;
+ };
+ AF4480DF0BB42E3C00408822 /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 08FB7796FE84155DC02AAC07 /* main.c */;
+ name = "main.c: 18";
+ rLen = 0;
+ rLoc = 511;
+ rType = 0;
+ vrLen = 584;
+ vrLoc = 0;
+ };
+ AFDE37EE0BB41DF9008C037E /* PyKerberos */ = {
+ isa = PBXExecutable;
+ activeArgIndex = 2147483647;
+ activeArgIndices = (
+ );
+ argumentStrings = (
+ );
+ autoAttachOnCrash = 1;
+ breakpointsEnabled = 1;
+ configStateDict = {
+ };
+ customDataFormattersEnabled = 1;
+ debuggerPlugin = GDBDebugging;
+ disassemblyDisplayState = 0;
+ dylibVariantSuffix = "";
+ enableDebugStr = 1;
+ environmentEntries = (
+ );
+ executableSystemSymbolLevel = 0;
+ executableUserSymbolLevel = 0;
+ libgmallocEnabled = 0;
+ name = PyKerberos;
+ savedGlobals = {
+ };
+ sourceDirectories = (
+ );
+ variableFormatDictionary = {
+ };
+ };
+ AFDE37F50BB41E00008C037E /* Source Control */ = {
+ isa = PBXSourceControlManager;
+ fallbackIsa = XCSourceControlManager;
+ isSCMEnabled = 0;
+ scmConfiguration = {
+ };
+ };
+ AFDE37F60BB41E00008C037E /* Code sense */ = {
+ isa = PBXCodeSenseManager;
+ indexTemplatePath = "";
+ };
+ AFDE37F80BB41E1D008C037E /* base64.c */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {991, 1316}}";
+ sepNavSelRange = "{0, 0}";
+ sepNavVisRect = "{{0, 437}, {991, 524}}";
+ };
+ };
+ AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {984, 2142}}";
+ sepNavSelRange = "{1171, 0}";
+ sepNavVisRect = "{{0, 325}, {984, 316}}";
+ };
+ };
+ AFDE37FB0BB41E1D008C037E /* kerberosbasic.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1336, 1031}}";
+ sepNavSelRange = "{824, 115}";
+ sepNavVisRect = "{{0, 0}, {1336, 1031}}";
+ sepNavWindowFrame = "{{15, 13}, {1395, 1160}}";
+ };
+ };
+ AFDE37FC0BB41E1D008C037E /* kerberosgss.c */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {984, 4550}}";
+ sepNavSelRange = "{7491, 0}";
+ sepNavVisRect = "{{0, 2485}, {984, 308}}";
+ };
+ };
+ AFDE37FD0BB41E1D008C037E /* kerberosgss.h */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {1336, 1031}}";
+ sepNavSelRange = "{1553, 140}";
+ sepNavVisRect = "{{0, 0}, {1336, 1031}}";
+ sepNavWindowFrame = "{{15, 13}, {1395, 1160}}";
+ };
+ };
+ AFDE383A0BB41FFA008C037E /* kerberos.c */ = {
+ uiCtxt = {
+ sepNavIntBoundsRect = "{{0, 0}, {932, 2282}}";
+ sepNavSelRange = "{690, 0}";
+ sepNavVisRect = "{{0, 0}, {932, 292}}";
+ };
+ };
+ AFDE38700BB420B1008C037E /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = 08FB7796FE84155DC02AAC07 /* main.c */;
+ name = "main.cpp: 9";
+ rLen = 0;
+ rLoc = 155;
+ rType = 0;
+ vrLen = 249;
+ vrLoc = 0;
+ };
+ AFDE38720BB420B1008C037E /* iostream */ = {
+ isa = PBXFileReference;
+ lastKnownFileType = sourcecode.cpp.h;
+ name = iostream;
+ path = "/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/iostream";
+ sourceTree = "<absolute>";
+ };
+ AFDE38870BB42287008C037E /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = AFDE38720BB420B1008C037E /* iostream */;
+ name = "iostream: 76";
+ rLen = 0;
+ rLoc = 2873;
+ rType = 0;
+ vrLen = 1307;
+ vrLoc = 1651;
+ };
+ AFDE388A0BB42287008C037E /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = AFDE38720BB420B1008C037E /* iostream */;
+ name = "iostream: 76";
+ rLen = 0;
+ rLoc = 2873;
+ rType = 0;
+ vrLen = 1307;
+ vrLoc = 1651;
+ };
+ AFDE388E0BB42287008C037E /* PBXTextBookmark */ = {
+ isa = PBXTextBookmark;
+ fRef = AFDE37FC0BB41E1D008C037E /* kerberosgss.c */;
+ name = "kerberosgss.c: 47";
+ rLen = 0;
+ rLoc = 1290;
+ rType = 0;
+ vrLen = 1144;
+ vrLoc = 1097;
+ };
+}
Added: PyKerberos/trunk/support/PyKerberos.xcodeproj/project.pbxproj
===================================================================
--- PyKerberos/trunk/support/PyKerberos.xcodeproj/project.pbxproj (rev 0)
+++ PyKerberos/trunk/support/PyKerberos.xcodeproj/project.pbxproj 2007-03-23 15:55:41 UTC (rev 1417)
@@ -0,0 +1,245 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 42;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ 8DD76F650486A84900D96B5E /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* main.c */; settings = {ATTRIBUTES = (); }; };
+ 8DD76F6A0486A84900D96B5E /* PyKerberos.1 in CopyFiles */ = {isa = PBXBuildFile; fileRef = C6859E8B029090EE04C91782 /* PyKerberos.1 */; };
+ AFDE37FE0BB41E1D008C037E /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDE37F80BB41E1D008C037E /* base64.c */; };
+ AFDE37FF0BB41E1D008C037E /* kerberosbasic.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */; };
+ AFDE38000BB41E1D008C037E /* kerberosgss.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDE37FC0BB41E1D008C037E /* kerberosgss.c */; };
+ AFDE380C0BB41EB7008C037E /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFDE380B0BB41EB7008C037E /* Python.framework */; };
+ AFDE38340BB41FCE008C037E /* Kerberos.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AFDE38330BB41FCE008C037E /* Kerberos.framework */; };
+ AFDE383B0BB41FFA008C037E /* kerberos.c in Sources */ = {isa = PBXBuildFile; fileRef = AFDE383A0BB41FFA008C037E /* kerberos.c */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXCopyFilesBuildPhase section */
+ 8DD76F690486A84900D96B5E /* CopyFiles */ = {
+ isa = PBXCopyFilesBuildPhase;
+ buildActionMask = 8;
+ dstPath = /usr/share/man/man1/;
+ dstSubfolderSpec = 0;
+ files = (
+ 8DD76F6A0486A84900D96B5E /* PyKerberos.1 in CopyFiles */,
+ );
+ runOnlyForDeploymentPostprocessing = 1;
+ };
+/* End PBXCopyFilesBuildPhase section */
+
+/* Begin PBXFileReference section */
+ 08FB7796FE84155DC02AAC07 /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
+ 8DD76F6C0486A84900D96B5E /* PyKerberos */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PyKerberos; sourceTree = BUILT_PRODUCTS_DIR; };
+ AFDE37F80BB41E1D008C037E /* base64.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = base64.c; path = ../src/base64.c; sourceTree = SOURCE_ROOT; };
+ AFDE37F90BB41E1D008C037E /* base64.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = base64.h; path = ../src/base64.h; sourceTree = SOURCE_ROOT; };
+ AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = kerberosbasic.c; path = ../src/kerberosbasic.c; sourceTree = SOURCE_ROOT; };
+ AFDE37FB0BB41E1D008C037E /* kerberosbasic.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = kerberosbasic.h; path = ../src/kerberosbasic.h; sourceTree = SOURCE_ROOT; };
+ AFDE37FC0BB41E1D008C037E /* kerberosgss.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = kerberosgss.c; path = ../src/kerberosgss.c; sourceTree = SOURCE_ROOT; };
+ AFDE37FD0BB41E1D008C037E /* kerberosgss.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = kerberosgss.h; path = ../src/kerberosgss.h; sourceTree = SOURCE_ROOT; };
+ AFDE380B0BB41EB7008C037E /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = "<absolute>"; };
+ AFDE38330BB41FCE008C037E /* Kerberos.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Kerberos.framework; path = /System/Library/Frameworks/Kerberos.framework; sourceTree = "<absolute>"; };
+ AFDE383A0BB41FFA008C037E /* kerberos.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; name = kerberos.c; path = ../src/kerberos.c; sourceTree = SOURCE_ROOT; };
+ C6859E8B029090EE04C91782 /* PyKerberos.1 */ = {isa = PBXFileReference; lastKnownFileType = text.man; path = PyKerberos.1; sourceTree = "<group>"; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ 8DD76F660486A84900D96B5E /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ AFDE380C0BB41EB7008C037E /* Python.framework in Frameworks */,
+ AFDE38340BB41FCE008C037E /* Kerberos.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ 08FB7794FE84155DC02AAC07 /* PyKerberos */ = {
+ isa = PBXGroup;
+ children = (
+ 08FB7795FE84155DC02AAC07 /* Source */,
+ AFDE38300BB41F71008C037E /* Frameworks */,
+ C6859E8C029090F304C91782 /* Documentation */,
+ 1AB674ADFE9D54B511CA2CBB /* Products */,
+ );
+ name = PyKerberos;
+ sourceTree = "<group>";
+ };
+ 08FB7795FE84155DC02AAC07 /* Source */ = {
+ isa = PBXGroup;
+ children = (
+ AFDE383A0BB41FFA008C037E /* kerberos.c */,
+ AFDE37F80BB41E1D008C037E /* base64.c */,
+ AFDE37F90BB41E1D008C037E /* base64.h */,
+ AFDE37FA0BB41E1D008C037E /* kerberosbasic.c */,
+ AFDE37FB0BB41E1D008C037E /* kerberosbasic.h */,
+ AFDE37FC0BB41E1D008C037E /* kerberosgss.c */,
+ AFDE37FD0BB41E1D008C037E /* kerberosgss.h */,
+ 08FB7796FE84155DC02AAC07 /* main.c */,
+ );
+ name = Source;
+ sourceTree = "<group>";
+ };
+ 1AB674ADFE9D54B511CA2CBB /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ 8DD76F6C0486A84900D96B5E /* PyKerberos */,
+ );
+ name = Products;
+ sourceTree = "<group>";
+ };
+ AFDE38300BB41F71008C037E /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ AFDE38330BB41FCE008C037E /* Kerberos.framework */,
+ AFDE380B0BB41EB7008C037E /* Python.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "<group>";
+ };
+ C6859E8C029090F304C91782 /* Documentation */ = {
+ isa = PBXGroup;
+ children = (
+ C6859E8B029090EE04C91782 /* PyKerberos.1 */,
+ );
+ name = Documentation;
+ sourceTree = "<group>";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXNativeTarget section */
+ 8DD76F620486A84900D96B5E /* PyKerberos */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "PyKerberos" */;
+ buildPhases = (
+ 8DD76F640486A84900D96B5E /* Sources */,
+ 8DD76F660486A84900D96B5E /* Frameworks */,
+ 8DD76F690486A84900D96B5E /* CopyFiles */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = PyKerberos;
+ productInstallPath = "$(HOME)/bin";
+ productName = PyKerberos;
+ productReference = 8DD76F6C0486A84900D96B5E /* PyKerberos */;
+ productType = "com.apple.product-type.tool";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ 08FB7793FE84155DC02AAC07 /* Project object */ = {
+ isa = PBXProject;
+ buildConfigurationList = 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "PyKerberos" */;
+ compatibilityVersion = "Xcode 3.0";
+ hasScannedForEncodings = 1;
+ mainGroup = 08FB7794FE84155DC02AAC07 /* PyKerberos */;
+ projectDirPath = "";
+ projectRoot = "";
+ shouldCheckCompatibility = 1;
+ targets = (
+ 8DD76F620486A84900D96B5E /* PyKerberos */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXSourcesBuildPhase section */
+ 8DD76F640486A84900D96B5E /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ 8DD76F650486A84900D96B5E /* main.c in Sources */,
+ AFDE37FE0BB41E1D008C037E /* base64.c in Sources */,
+ AFDE37FF0BB41E1D008C037E /* kerberosbasic.c in Sources */,
+ AFDE38000BB41E1D008C037E /* kerberosgss.c in Sources */,
+ AFDE383B0BB41FFA008C037E /* kerberos.c in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ 1DEB923208733DC60010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ COPY_PHASE_STRIP = NO;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_ENABLE_FIX_AND_CONTINUE = YES;
+ GCC_MODEL_TUNING = G5;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "_GLIBCXX_DEBUG=1",
+ "_GLIBCXX_DEBUG_PEDANTIC=1",
+ );
+ INSTALL_PATH = /usr/local/bin;
+ PRODUCT_NAME = PyKerberos;
+ ZERO_LINK = YES;
+ };
+ name = Debug;
+ };
+ 1DEB923308733DC60010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ARCHS = (
+ ppc,
+ i386,
+ );
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ GCC_MODEL_TUNING = G5;
+ INSTALL_PATH = /usr/local/bin;
+ PRODUCT_NAME = PyKerberos;
+ };
+ name = Release;
+ };
+ 1DEB923608733DC60010E9CD /* Debug */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
+ };
+ name = Debug;
+ };
+ 1DEB923708733DC60010E9CD /* Release */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ GCC_WARN_ABOUT_RETURN_TYPE = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ HEADER_SEARCH_PATHS = "";
+ PREBINDING = NO;
+ SDKROOT = /Developer/SDKs/MacOSX10.5.sdk;
+ USER_HEADER_SEARCH_PATHS = ..src;
+ };
+ name = Release;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ 1DEB923108733DC60010E9CD /* Build configuration list for PBXNativeTarget "PyKerberos" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB923208733DC60010E9CD /* Debug */,
+ 1DEB923308733DC60010E9CD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+ 1DEB923508733DC60010E9CD /* Build configuration list for PBXProject "PyKerberos" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ 1DEB923608733DC60010E9CD /* Debug */,
+ 1DEB923708733DC60010E9CD /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
+}
Added: PyKerberos/trunk/support/main.c
===================================================================
--- PyKerberos/trunk/support/main.c (rev 0)
+++ PyKerberos/trunk/support/main.c 2007-03-23 15:55:41 UTC (rev 1417)
@@ -0,0 +1,22 @@
+
+#include "kerberosgss.h"
+
+#include "stdio.h"
+
+int main (int argc, char * const argv[]) {
+
+ int code = 0;
+ char* service = 0L;
+ gss_server_state state;
+
+ service = server_principal_details("http", "caldav.corp.apple.com");
+
+ //printf("Got service principal: %s\n", result);
+
+ //code = authenticate_user_krb5pwd("x", "x", "http/caldav.corp.apple.com at CALDAV.CORP.APPLE.COM", "CALDAV.CORP.APPLE.COM");
+
+ code = authenticate_gss_server_init("http at CALDAV.CORP.APPLE.COM", &state);
+ code = authenticate_gss_server_clean(&state);
+
+ return 0;
+}
Modified: PyKerberos/trunk/test.py
===================================================================
--- PyKerberos/trunk/test.py 2007-03-23 15:54:35 UTC (rev 1416)
+++ PyKerberos/trunk/test.py 2007-03-23 15:55:41 UTC (rev 1417)
@@ -26,9 +26,9 @@
# Extract arguments
user = ""
pswd = ""
- service = "http at caldav.apple.com"
- host = "localhost"
- realm ="APPLECONNECT.APPLE.COM"
+ service = "http at CALDAV.CORP.APPLE.COM"
+ host = "caldav.corp.apple.com"
+ realm ="CALDAV.CORP.APPLE.COM"
port = 8008
ssl = False
@@ -48,6 +48,10 @@
elif option == "-r":
realm = value
+ # Get service principal
+ print "\n*** Running Service Principal test"
+ testServicePrincipal("http", "caldav.corp.apple.com");
+
# Run tests
if (len(user) != 0) and (len(pswd) != 0):
print "\n*** Running basic test"
@@ -63,6 +67,14 @@
print "\n*** Done\n"
+def testServicePrincipal(service, hostname):
+ try:
+ result = kerberos.getServerPrincipalDetails(service, hostname)
+ except kerberos.KrbError, e:
+ print "Kerberos service principal for %s/%s failed: %s" % (service, hostname, e[0])
+ else:
+ print "Kerberos service principal for %s/%s succeeded: %s" % (service, hostname, result)
+
def testCheckpassword(user, pswd, service, realm):
try:
kerberos.checkPassword(user, pswd, service, realm)
@@ -80,12 +92,12 @@
else:
return "Error"
- rc, vc = kerberos.authGSSClientInit(service);
+ rc, vc = kerberos.authGSSClientInit("http/caldav.corp.apple.com at CALDAV.CORP.APPLE.COM");
print "Status for authGSSClientInit = %s" % statusText(rc);
if rc != 1:
return
- rs, vs = kerberos.authGSSServerInit(service);
+ rs, vs = kerberos.authGSSServerInit("http at CALDAV.CORP.APPLE.COM");
print "Status for authGSSServerInit = %s" % statusText(rs);
if rs != 1:
return
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070323/9038e976/attachment.html
More information about the calendarserver-changes
mailing list