From f5631e5ee6ead9cccef3ac0e9d3b6189661fae0f Mon Sep 17 00:00:00 2001 From: Gavin Black Date: Fri, 20 Dec 2013 15:16:06 -0500 Subject: [PATCH] Client api --- .../sso-client-api.xcodeproj/project.pbxproj | 249 ++++++++++++++ .../contents.xcworkspacedata | 7 + .../UserInterfaceState.xcuserstate | Bin 0 -> 51912 bytes .../xcdebugger/Breakpoints.xcbkptlist | 20 ++ .../xcschemes/sso-client-api.xcscheme | 59 ++++ .../xcschemes/xcschememanagement.plist | 22 ++ .../sso-client-api/sso-client-api-Prefix.pch | 7 + client-api/sso-client-api/ssoClient.h | 18 + client-api/sso-client-api/ssoClient.m | 73 ++++ .../project.pbxproj | 319 ++++++++++++++++++ .../simple-sso-client/AppDelegate.h | 15 + .../simple-sso-client/AppDelegate.m | 46 +++ .../simple-sso-client/Default-568h@2x.png | Bin 0 -> 18594 bytes .../simple-sso-client/Default.png | Bin 0 -> 6540 bytes .../simple-sso-client/Default@2x.png | Bin 0 -> 16107 bytes .../simple-sso-client/ViewController.h | 13 + .../simple-sso-client/ViewController.m | 29 ++ .../en.lproj/InfoPlist.strings | 2 + .../en.lproj/MainStoryboard_iPad.storyboard | 26 ++ .../en.lproj/MainStoryboard_iPhone.storyboard | 26 ++ .../simple-sso-client/main.m | 18 + .../simple-sso-client-Info.plist | 49 +++ .../simple-sso-client-Prefix.pch | 14 + 23 files changed, 1012 insertions(+) create mode 100644 client-api/sso-client-api.xcodeproj/project.pbxproj create mode 100644 client-api/sso-client-api.xcodeproj/project.xcworkspace/contents.xcworkspacedata create mode 100644 client-api/sso-client-api.xcodeproj/project.xcworkspace/xcuserdata/gblack.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist create mode 100644 client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/sso-client-api.xcscheme create mode 100644 client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/xcschememanagement.plist create mode 100644 client-api/sso-client-api/sso-client-api-Prefix.pch create mode 100644 client-api/sso-client-api/ssoClient.h create mode 100644 client-api/sso-client-api/ssoClient.m create mode 100644 example-clients/simple-sso-client/simple-sso-client.xcodeproj/project.pbxproj create mode 100644 example-clients/simple-sso-client/simple-sso-client/AppDelegate.h create mode 100644 example-clients/simple-sso-client/simple-sso-client/AppDelegate.m create mode 100644 example-clients/simple-sso-client/simple-sso-client/Default-568h@2x.png create mode 100644 example-clients/simple-sso-client/simple-sso-client/Default.png create mode 100644 example-clients/simple-sso-client/simple-sso-client/Default@2x.png create mode 100644 example-clients/simple-sso-client/simple-sso-client/ViewController.h create mode 100644 example-clients/simple-sso-client/simple-sso-client/ViewController.m create mode 100644 example-clients/simple-sso-client/simple-sso-client/en.lproj/InfoPlist.strings create mode 100644 example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPad.storyboard create mode 100644 example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPhone.storyboard create mode 100644 example-clients/simple-sso-client/simple-sso-client/main.m create mode 100644 example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Info.plist create mode 100644 example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Prefix.pch diff --git a/client-api/sso-client-api.xcodeproj/project.pbxproj b/client-api/sso-client-api.xcodeproj/project.pbxproj new file mode 100644 index 0000000..dd7c047 --- /dev/null +++ b/client-api/sso-client-api.xcodeproj/project.pbxproj @@ -0,0 +1,249 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3E7551DC1860C0B0008930B8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E7551DB1860C0B0008930B8 /* Foundation.framework */; }; + 3E7551E11860C0B0008930B8 /* ssoClient.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = 3E7551E01860C0B0008930B8 /* ssoClient.h */; }; + 3E7551E31860C0B0008930B8 /* ssoClient.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E7551E21860C0B0008930B8 /* ssoClient.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 3E7551D61860C0B0008930B8 /* CopyFiles */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "include/${PRODUCT_NAME}"; + dstSubfolderSpec = 16; + files = ( + 3E7551E11860C0B0008930B8 /* ssoClient.h in CopyFiles */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 3E7551D81860C0B0008930B8 /* libsso-client-api.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libsso-client-api.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E7551DB1860C0B0008930B8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 3E7551DF1860C0B0008930B8 /* sso-client-api-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "sso-client-api-Prefix.pch"; sourceTree = ""; }; + 3E7551E01860C0B0008930B8 /* ssoClient.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ssoClient.h; sourceTree = ""; }; + 3E7551E21860C0B0008930B8 /* ssoClient.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ssoClient.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3E7551D51860C0B0008930B8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E7551DC1860C0B0008930B8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3E7551CF1860C0B0008930B8 = { + isa = PBXGroup; + children = ( + 3E7551DD1860C0B0008930B8 /* sso-client-api */, + 3E7551DA1860C0B0008930B8 /* Frameworks */, + 3E7551D91860C0B0008930B8 /* Products */, + ); + sourceTree = ""; + }; + 3E7551D91860C0B0008930B8 /* Products */ = { + isa = PBXGroup; + children = ( + 3E7551D81860C0B0008930B8 /* libsso-client-api.a */, + ); + name = Products; + sourceTree = ""; + }; + 3E7551DA1860C0B0008930B8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3E7551DB1860C0B0008930B8 /* Foundation.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3E7551DD1860C0B0008930B8 /* sso-client-api */ = { + isa = PBXGroup; + children = ( + 3E7551E01860C0B0008930B8 /* ssoClient.h */, + 3E7551E21860C0B0008930B8 /* ssoClient.m */, + 3E7551DE1860C0B0008930B8 /* Supporting Files */, + ); + path = "sso-client-api"; + sourceTree = ""; + }; + 3E7551DE1860C0B0008930B8 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3E7551DF1860C0B0008930B8 /* sso-client-api-Prefix.pch */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3E7551D71860C0B0008930B8 /* sso-client-api */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E7551E61860C0B0008930B8 /* Build configuration list for PBXNativeTarget "sso-client-api" */; + buildPhases = ( + 3E7551D41860C0B0008930B8 /* Sources */, + 3E7551D51860C0B0008930B8 /* Frameworks */, + 3E7551D61860C0B0008930B8 /* CopyFiles */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "sso-client-api"; + productName = "sso-client-api"; + productReference = 3E7551D81860C0B0008930B8 /* libsso-client-api.a */; + productType = "com.apple.product-type.library.static"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3E7551D01860C0B0008930B8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = "Black, Gavin S."; + }; + buildConfigurationList = 3E7551D31860C0B0008930B8 /* Build configuration list for PBXProject "sso-client-api" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3E7551CF1860C0B0008930B8; + productRefGroup = 3E7551D91860C0B0008930B8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3E7551D71860C0B0008930B8 /* sso-client-api */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXSourcesBuildPhase section */ + 3E7551D41860C0B0008930B8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E7551E31860C0B0008930B8 /* ssoClient.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin XCBuildConfiguration section */ + 3E7551E41860C0B0008930B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + 3E7551E51860C0B0008930B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3E7551E71860C0B0008930B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/sso_client_api.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "sso-client-api/sso-client-api-Prefix.pch"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Debug; + }; + 3E7551E81860C0B0008930B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DSTROOT = /tmp/sso_client_api.dst; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "sso-client-api/sso-client-api-Prefix.pch"; + OTHER_LDFLAGS = "-ObjC"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3E7551D31860C0B0008930B8 /* Build configuration list for PBXProject "sso-client-api" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E7551E41860C0B0008930B8 /* Debug */, + 3E7551E51860C0B0008930B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3E7551E61860C0B0008930B8 /* Build configuration list for PBXNativeTarget "sso-client-api" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E7551E71860C0B0008930B8 /* Debug */, + 3E7551E81860C0B0008930B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3E7551D01860C0B0008930B8 /* Project object */; +} diff --git a/client-api/sso-client-api.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/client-api/sso-client-api.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3d81db1 --- /dev/null +++ b/client-api/sso-client-api.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/client-api/sso-client-api.xcodeproj/project.xcworkspace/xcuserdata/gblack.xcuserdatad/UserInterfaceState.xcuserstate b/client-api/sso-client-api.xcodeproj/project.xcworkspace/xcuserdata/gblack.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..728479f858dee2056c8e5a632ab9eaf273193c63 GIT binary patch literal 51912 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 MTIWCf|FT#93u)EJu>b%7 literal 0 HcmV?d00001 diff --git a/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist new file mode 100644 index 0000000..9f2a8cb --- /dev/null +++ b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist @@ -0,0 +1,20 @@ + + + + + + + diff --git a/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/sso-client-api.xcscheme b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/sso-client-api.xcscheme new file mode 100644 index 0000000..fe138c2 --- /dev/null +++ b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/sso-client-api.xcscheme @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/xcschememanagement.plist b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..94e7cc7 --- /dev/null +++ b/client-api/sso-client-api.xcodeproj/xcuserdata/gblack.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,22 @@ + + + + + SchemeUserState + + sso-client-api.xcscheme + + orderHint + 0 + + + SuppressBuildableAutocreation + + 3E7551D71860C0B0008930B8 + + primary + + + + + diff --git a/client-api/sso-client-api/sso-client-api-Prefix.pch b/client-api/sso-client-api/sso-client-api-Prefix.pch new file mode 100644 index 0000000..93c7363 --- /dev/null +++ b/client-api/sso-client-api/sso-client-api-Prefix.pch @@ -0,0 +1,7 @@ +// +// Prefix header for all source files of the 'sso-client-api' target in the 'sso-client-api' project +// + +#ifdef __OBJC__ + #import +#endif diff --git a/client-api/sso-client-api/ssoClient.h b/client-api/sso-client-api/ssoClient.h new file mode 100644 index 0000000..4c924fd --- /dev/null +++ b/client-api/sso-client-api/ssoClient.h @@ -0,0 +1,18 @@ +// +// sso_client_api.h +// sso-client-api +// +// Created by Black, Gavin S. on 12/17/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import + +@interface ssoClient : NSObject + ++ (void) logout; ++ (NSString*) fetchHash : (NSString*) callbackURI; ++ (NSString* ) fetchAndMergeHash : (NSString *) callbackURI : (NSString *) additionalHash; + + +@end diff --git a/client-api/sso-client-api/ssoClient.m b/client-api/sso-client-api/ssoClient.m new file mode 100644 index 0000000..6f57637 --- /dev/null +++ b/client-api/sso-client-api/ssoClient.m @@ -0,0 +1,73 @@ +// +// sso_client_api.m +// sso-client-api +// +// Created by Black, Gavin S. on 12/17/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import "ssoClient.h" +#import + + +@implementation ssoClient + +static NSString *uuid; + ++ (void) logout { + UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"iMAS_SSO" create:NO]; + appPasteBoard.persistent = NO; + [appPasteBoard setString:@""]; +} + ++ (NSString*) fetchHash : (NSString*) callbackURI { + if(uuid == nil) uuid = [[NSUUID UUID] UUIDString]; + NSString* pbName = [NSString stringWithFormat:@"%@%@", @"iMAS", [[NSUUID UUID] UUIDString]]; + + // Test if the relevant iMAS pasteboard exists, if not open up SSO app + //UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:pbName create:NO]; + UIPasteboard *appPasteBoard = [UIPasteboard pasteboardWithName:@"iMAS_SSO" create:NO]; + + if(appPasteBoard != nil) { + NSString* ps =[appPasteBoard string]; + if([ps length] >= 1) return ps; + } + + NSString* ssoURI = [NSString stringWithFormat:@"iMASSO://%@/%@", pbName, callbackURI]; + [[UIApplication sharedApplication] openURL:[NSURL URLWithString:ssoURI]]; + exit(0); + return @""; +} + ++ (NSString* ) fetchAndMergeHash : (NSString *) callbackURI : (NSString *) additionalHash { + NSString* requestedHash = [ssoClient fetchHash:callbackURI]; + + NSData *data = [requestedHash dataUsingEncoding:NSUTF8StringEncoding]; + char *dataBytes = (char *) [data bytes]; + char *keyData = (char *) [[additionalHash dataUsingEncoding:NSUTF8StringEncoding] bytes]; + + char *dataPtr = dataBytes; + int dataIndex = 0; + + char *keyPtr = keyData; + int keyIndex = 0; + + int max = [data length]; + if( [data length] < [additionalHash length]) max = [additionalHash length]; + + for (int x = 0; x < max; x++) + { + *dataPtr = *dataPtr++ ^ *keyPtr++; + + // Roll over + if (++keyIndex == [additionalHash length]) + keyIndex = 0, keyPtr = keyData; + if (++dataIndex == [data length]) + dataIndex = 0, dataPtr = dataBytes; + } + + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; +} + + +@end diff --git a/example-clients/simple-sso-client/simple-sso-client.xcodeproj/project.pbxproj b/example-clients/simple-sso-client/simple-sso-client.xcodeproj/project.pbxproj new file mode 100644 index 0000000..cd8d6e4 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client.xcodeproj/project.pbxproj @@ -0,0 +1,319 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 3E7552A71861B99D008930B8 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E7552A61861B99D008930B8 /* UIKit.framework */; }; + 3E7552A91861B99D008930B8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E7552A81861B99D008930B8 /* Foundation.framework */; }; + 3E7552AB1861B99D008930B8 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3E7552AA1861B99D008930B8 /* CoreGraphics.framework */; }; + 3E7552B11861B99D008930B8 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552AF1861B99D008930B8 /* InfoPlist.strings */; }; + 3E7552B31861B99D008930B8 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E7552B21861B99D008930B8 /* main.m */; }; + 3E7552B71861B99D008930B8 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E7552B61861B99D008930B8 /* AppDelegate.m */; }; + 3E7552B91861B99D008930B8 /* Default.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552B81861B99D008930B8 /* Default.png */; }; + 3E7552BB1861B99D008930B8 /* Default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552BA1861B99D008930B8 /* Default@2x.png */; }; + 3E7552BD1861B99D008930B8 /* Default-568h@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552BC1861B99D008930B8 /* Default-568h@2x.png */; }; + 3E7552C01861B99D008930B8 /* MainStoryboard_iPhone.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552BE1861B99D008930B8 /* MainStoryboard_iPhone.storyboard */; }; + 3E7552C31861B99D008930B8 /* MainStoryboard_iPad.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3E7552C11861B99D008930B8 /* MainStoryboard_iPad.storyboard */; }; + 3E7552C61861B99D008930B8 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E7552C51861B99D008930B8 /* ViewController.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXFileReference section */ + 3E7552A31861B99D008930B8 /* simple-sso-client.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "simple-sso-client.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 3E7552A61861B99D008930B8 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; }; + 3E7552A81861B99D008930B8 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; + 3E7552AA1861B99D008930B8 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; }; + 3E7552AE1861B99D008930B8 /* simple-sso-client-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "simple-sso-client-Info.plist"; sourceTree = ""; }; + 3E7552B01861B99D008930B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; + 3E7552B21861B99D008930B8 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + 3E7552B41861B99D008930B8 /* simple-sso-client-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "simple-sso-client-Prefix.pch"; sourceTree = ""; }; + 3E7552B51861B99D008930B8 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + 3E7552B61861B99D008930B8 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + 3E7552B81861B99D008930B8 /* Default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Default.png; sourceTree = ""; }; + 3E7552BA1861B99D008930B8 /* Default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default@2x.png"; sourceTree = ""; }; + 3E7552BC1861B99D008930B8 /* Default-568h@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "Default-568h@2x.png"; sourceTree = ""; }; + 3E7552BF1861B99D008930B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPhone.storyboard; sourceTree = ""; }; + 3E7552C21861B99D008930B8 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = en; path = en.lproj/MainStoryboard_iPad.storyboard; sourceTree = ""; }; + 3E7552C41861B99D008930B8 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + 3E7552C51861B99D008930B8 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 3E7552A01861B99D008930B8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E7552A71861B99D008930B8 /* UIKit.framework in Frameworks */, + 3E7552A91861B99D008930B8 /* Foundation.framework in Frameworks */, + 3E7552AB1861B99D008930B8 /* CoreGraphics.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3E75529A1861B99D008930B8 = { + isa = PBXGroup; + children = ( + 3E7552AC1861B99D008930B8 /* simple-sso-client */, + 3E7552A51861B99D008930B8 /* Frameworks */, + 3E7552A41861B99D008930B8 /* Products */, + ); + sourceTree = ""; + }; + 3E7552A41861B99D008930B8 /* Products */ = { + isa = PBXGroup; + children = ( + 3E7552A31861B99D008930B8 /* simple-sso-client.app */, + ); + name = Products; + sourceTree = ""; + }; + 3E7552A51861B99D008930B8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3E7552A61861B99D008930B8 /* UIKit.framework */, + 3E7552A81861B99D008930B8 /* Foundation.framework */, + 3E7552AA1861B99D008930B8 /* CoreGraphics.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; + 3E7552AC1861B99D008930B8 /* simple-sso-client */ = { + isa = PBXGroup; + children = ( + 3E7552B51861B99D008930B8 /* AppDelegate.h */, + 3E7552B61861B99D008930B8 /* AppDelegate.m */, + 3E7552BE1861B99D008930B8 /* MainStoryboard_iPhone.storyboard */, + 3E7552C11861B99D008930B8 /* MainStoryboard_iPad.storyboard */, + 3E7552C41861B99D008930B8 /* ViewController.h */, + 3E7552C51861B99D008930B8 /* ViewController.m */, + 3E7552AD1861B99D008930B8 /* Supporting Files */, + ); + path = "simple-sso-client"; + sourceTree = ""; + }; + 3E7552AD1861B99D008930B8 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 3E7552AE1861B99D008930B8 /* simple-sso-client-Info.plist */, + 3E7552AF1861B99D008930B8 /* InfoPlist.strings */, + 3E7552B21861B99D008930B8 /* main.m */, + 3E7552B41861B99D008930B8 /* simple-sso-client-Prefix.pch */, + 3E7552B81861B99D008930B8 /* Default.png */, + 3E7552BA1861B99D008930B8 /* Default@2x.png */, + 3E7552BC1861B99D008930B8 /* Default-568h@2x.png */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 3E7552A21861B99D008930B8 /* simple-sso-client */ = { + isa = PBXNativeTarget; + buildConfigurationList = 3E7552C91861B99D008930B8 /* Build configuration list for PBXNativeTarget "simple-sso-client" */; + buildPhases = ( + 3E75529F1861B99D008930B8 /* Sources */, + 3E7552A01861B99D008930B8 /* Frameworks */, + 3E7552A11861B99D008930B8 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "simple-sso-client"; + productName = "simple-sso-client"; + productReference = 3E7552A31861B99D008930B8 /* simple-sso-client.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 3E75529B1861B99D008930B8 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0460; + ORGANIZATIONNAME = "Black, Gavin S."; + }; + buildConfigurationList = 3E75529E1861B99D008930B8 /* Build configuration list for PBXProject "simple-sso-client" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = 3E75529A1861B99D008930B8; + productRefGroup = 3E7552A41861B99D008930B8 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 3E7552A21861B99D008930B8 /* simple-sso-client */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 3E7552A11861B99D008930B8 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E7552B11861B99D008930B8 /* InfoPlist.strings in Resources */, + 3E7552B91861B99D008930B8 /* Default.png in Resources */, + 3E7552BB1861B99D008930B8 /* Default@2x.png in Resources */, + 3E7552BD1861B99D008930B8 /* Default-568h@2x.png in Resources */, + 3E7552C01861B99D008930B8 /* MainStoryboard_iPhone.storyboard in Resources */, + 3E7552C31861B99D008930B8 /* MainStoryboard_iPad.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 3E75529F1861B99D008930B8 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3E7552B31861B99D008930B8 /* main.m in Sources */, + 3E7552B71861B99D008930B8 /* AppDelegate.m in Sources */, + 3E7552C61861B99D008930B8 /* ViewController.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 3E7552AF1861B99D008930B8 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 3E7552B01861B99D008930B8 /* en */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 3E7552BE1861B99D008930B8 /* MainStoryboard_iPhone.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3E7552BF1861B99D008930B8 /* en */, + ); + name = MainStoryboard_iPhone.storyboard; + sourceTree = ""; + }; + 3E7552C11861B99D008930B8 /* MainStoryboard_iPad.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 3E7552C21861B99D008930B8 /* en */, + ); + name = MainStoryboard_iPad.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 3E7552C71861B99D008930B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 3E7552C81861B99D008930B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 6.1; + OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1"; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 3E7552CA1861B99D008930B8 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "simple-sso-client/simple-sso-client-Prefix.pch"; + INFOPLIST_FILE = "simple-sso-client/simple-sso-client-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Debug; + }; + 3E7552CB1861B99D008930B8 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "simple-sso-client/simple-sso-client-Prefix.pch"; + INFOPLIST_FILE = "simple-sso-client/simple-sso-client-Info.plist"; + PRODUCT_NAME = "$(TARGET_NAME)"; + WRAPPER_EXTENSION = app; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 3E75529E1861B99D008930B8 /* Build configuration list for PBXProject "simple-sso-client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E7552C71861B99D008930B8 /* Debug */, + 3E7552C81861B99D008930B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3E7552C91861B99D008930B8 /* Build configuration list for PBXNativeTarget "simple-sso-client" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3E7552CA1861B99D008930B8 /* Debug */, + 3E7552CB1861B99D008930B8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + }; +/* End XCConfigurationList section */ + }; + rootObject = 3E75529B1861B99D008930B8 /* Project object */; +} diff --git a/example-clients/simple-sso-client/simple-sso-client/AppDelegate.h b/example-clients/simple-sso-client/simple-sso-client/AppDelegate.h new file mode 100644 index 0000000..b33100c --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/AppDelegate.h @@ -0,0 +1,15 @@ +// +// AppDelegate.h +// simple-sso-client +// +// Created by Black, Gavin S. on 12/18/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + +@end diff --git a/example-clients/simple-sso-client/simple-sso-client/AppDelegate.m b/example-clients/simple-sso-client/simple-sso-client/AppDelegate.m new file mode 100644 index 0000000..2528660 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/AppDelegate.m @@ -0,0 +1,46 @@ +// +// AppDelegate.m +// simple-sso-client +// +// Created by Black, Gavin S. on 12/18/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import "AppDelegate.h" + +@implementation AppDelegate + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions +{ + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application +{ + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application +{ + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application +{ + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application +{ + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application +{ + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git a/example-clients/simple-sso-client/simple-sso-client/Default-568h@2x.png b/example-clients/simple-sso-client/simple-sso-client/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0891b7aabfcf3422423b109c8beed2bab838c607 GIT binary patch literal 18594 zcmeI4X;f257Jx&9fS`ixvS;&$x8J@slQFSel)6zJN=?13FB7H(lQjRkSy8x_-S~tvu2gzn1oS+dLcF#eqtq$ z%tf9TTvX?`)R@}3uBI;jzS-=ZR-Td&MHaS&;!0?Ni*#$#`n*~CcQK)Q9vAQ~TUpnI!j)a2biYK^R)M~A5wUDZhx?ULMX z3x1P&qt=trOY6P2U67L=m=U?F|5#Uj(eCueNTZaHs_ceWiHeET+j+tp3Jt9g(ekqP z2WOvfR{qV+9r+o4J5?qK>7;;^+I7tGv-i)es$X_D=EoKF+S?zsyj^oRFElP}c}JT< zd8SUs-?O?}2YD#ngKbnHgzHBcboxK_2r9l(?eNCl-pEzkJm}fY?WC*jnS?VBE4EpY zO$fEejz6fU;W2Kl>JeQBZBl-%Irg`obSlg*@4QB;Dd1H7^Oi5wvt4d{RZ!8Og?^aE z)k0$1g+V3fd(gdQ3d&q2q-FL*uy#}|bc^=VhFsl0jBgUGJ+-s3U8MK9A!YJJMxpci z5hJ%|{DwV48fZn0{n5l$N_KcSb#NKE4plB`9I6Zt=Z!~-zw0{9tg$L&Ju1F0X)Cy8 zKF;(&lJ>x)Jw(=;p~sF(Sd9VWGwFE2rnyS9!f^DZ8+aCLq zQ};>lcJ1GDLqjm6Hd>|Eabno@P`~Bn(~6^aD_#yoEH(a?Nm1S<;S+hSxI5d16^<1lEM3NPFi zkqPrpL)+ zgnseFikg`gJVBha1&7C4;O6>h=dt~`ND+;Zd?W(4v2JIb7Pt>Td42%M-Ju-XAH#Pns762L}K3 zDhvsRqN0Ni(1UrishD2YvV?4*h2iFj$+&N||Fn$4n|^NSU+o?~jq`0jVQt8T9l{7b zXiwwODFh2V!Q6sqP9S>WH$oOf$N~=d0-bqTlD61!=`&0eAP-F>XN?*|gtOXX{ zQVTWyYo4ZK0GAw!GHf|pz9`D;-bbb*5LBX*{bnz|+)$@&P9|ORM2o?95{;ejvo&r- zq8cBhTN6nn)7~W>54U)%-F_-b?YKdfk5I8MHcuzBD5)!;yv#Z&R&^y=@=>VTIMy#r zX&U<=BsPkdqcMe<_}2+>H%XKyrr5ZR8_KVe>ZqYN z^=^~TFD};;rHJ$U;{~w^hYojl4hRI@SH$^K{YEo=sg)WY87r!*7blQK&qnpDo0`Vn zkl)9u9g=mCh&ZCJS(L4yN3k0kQ zuvg$h2KEEk51T+O0JQ+r0`R>g{jvqM0Mr6d3qUOZwE!?PI7HY@CE|dr sfw?Q;rAv?G4&^^8-z_>&sWXMxvD*gPOU4CBe-*@OtE+wfmVJNyHv)PfH~;_u literal 0 HcmV?d00001 diff --git a/example-clients/simple-sso-client/simple-sso-client/Default.png b/example-clients/simple-sso-client/simple-sso-client/Default.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8ca6f693f96d511e9113c0eb59eec552354e42 GIT binary patch literal 6540 zcmeAS@N?(olHy`uVBq!ia0y~yU~~ZD2OMlbkt;o0To@QwR5G2N13aCb6#|O#(=u~X z85k@CTSM>X-wqM6>&y>YB4)1;;ojbLbbV-W^iFB1wa3^zCog^LCAReC4K0-?R_2{6 zrP*)4+_uWUy3w5N52M3PW_}MFMP9a~>YLvVZ1D_k*IMQ2QT^fwzoOb(*3gH$%aYWC zkHmcab=va2<#X%jakpJ;<1@F;k__#bwtC&%^D0v(FBh9K&$sK+<}2RJS609D)17$w ztdQP8(eLM8Ka}m_IQ@3wyMKP)l=oM4-?`YS_*P?4V_ORLPxsj&7Ju#kH;>6^Kp?T7~ zl+q?{UOOqV==?+d{=)5s|M~T1mwtH@+Z^$G&eEO9JNP^AX@3jZ*J*!!>lc|1-W%fA z@AOQpXZ_Lt>rxFXrGp*zLPiW@uo_c7C{As>j zWeX)wi+LTp_)@KYZCX{j;H?|1yXT4DnlS(Fr8gyP5|uaX_gLvaW0ScZdnG7o+u{T6 zFI-%d{ls*WuCDa5UJ@|RXv&ejZe}*BMkiWY51&pnRPw(hlykSzvj6e%mYz-GdvzBD zF10?szF_~!jS=?2HyQuPCvARXAe}C}WP|yQ*>5~~=*Nxq8+HHW1~FMDRCP^TcacKuk$ z(U#REVv)D!PhJ*ecH-ELFUrfyV&*)Z)>UCOuS?yd^L@Afk>ihynYPc{^CRwu+JHX+#$@YsC4c|l0tGigsn@jy) zXD($Ouk>H+V(Mr6NQT0S9BFM~V6nkj;1OBOz`zY;a|<&v%$g$sEJPk;hD4M^`1)8S z=jZArrsOB3>Q&?x097+E*i={nnYpPYi3%0DIeEoa6}C!X6;?ntNLXJ<0j#7X+g2&U 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 literal 0 HcmV?d00001 diff --git a/example-clients/simple-sso-client/simple-sso-client/ViewController.h b/example-clients/simple-sso-client/simple-sso-client/ViewController.h new file mode 100644 index 0000000..432ee96 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/ViewController.h @@ -0,0 +1,13 @@ +// +// ViewController.h +// simple-sso-client +// +// Created by Black, Gavin S. on 12/18/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + +@end diff --git a/example-clients/simple-sso-client/simple-sso-client/ViewController.m b/example-clients/simple-sso-client/simple-sso-client/ViewController.m new file mode 100644 index 0000000..f8cfc48 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/ViewController.m @@ -0,0 +1,29 @@ +// +// ViewController.m +// simple-sso-client +// +// Created by Black, Gavin S. on 12/18/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad +{ + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git a/example-clients/simple-sso-client/simple-sso-client/en.lproj/InfoPlist.strings b/example-clients/simple-sso-client/simple-sso-client/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..477b28f --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/en.lproj/InfoPlist.strings @@ -0,0 +1,2 @@ +/* Localized versions of Info.plist keys */ + diff --git a/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPad.storyboard b/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPad.storyboard new file mode 100644 index 0000000..9fbe23e --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPad.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPhone.storyboard b/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPhone.storyboard new file mode 100644 index 0000000..c9acc6d --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/en.lproj/MainStoryboard_iPhone.storyboard @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/example-clients/simple-sso-client/simple-sso-client/main.m b/example-clients/simple-sso-client/simple-sso-client/main.m new file mode 100644 index 0000000..1994d4f --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/main.m @@ -0,0 +1,18 @@ +// +// main.m +// simple-sso-client +// +// Created by Black, Gavin S. on 12/18/13. +// Copyright (c) 2013 Black, Gavin S. All rights reserved. +// + +#import + +#import "AppDelegate.h" + +int main(int argc, char *argv[]) +{ + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git a/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Info.plist b/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Info.plist new file mode 100644 index 0000000..a691b92 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Info.plist @@ -0,0 +1,49 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleDisplayName + ${PRODUCT_NAME} + CFBundleExecutable + ${EXECUTABLE_NAME} + CFBundleIdentifier + mitre.${PRODUCT_NAME:rfc1034identifier} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + UIMainStoryboardFile + MainStoryboard_iPhone + UIMainStoryboardFile~ipad + MainStoryboard_iPad + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git a/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Prefix.pch b/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Prefix.pch new file mode 100644 index 0000000..d10a260 --- /dev/null +++ b/example-clients/simple-sso-client/simple-sso-client/simple-sso-client-Prefix.pch @@ -0,0 +1,14 @@ +// +// Prefix header for all source files of the 'simple-sso-client' target in the 'simple-sso-client' project +// + +#import + +#ifndef __IPHONE_5_0 +#warning "This project uses features only available in iOS SDK 5.0 and later." +#endif + +#ifdef __OBJC__ + #import + #import +#endif