From 426fdd6ee5856e57dcfb0c9b659ae2a44363e47b Mon Sep 17 00:00:00 2001 From: olegoid Date: Mon, 8 Sep 2014 22:06:42 +0400 Subject: [PATCH] [KeychainTouchID] Add unified version of sample --- ios8/KeychainTouchID/KeychainTouchID.sln | 32 ++++ .../KeychainTouchID/AppDelegate.cs | 46 +++++ .../BasicTestViewController.cs | 79 ++++++++ .../KeychainTouchID/Entitlements.plist | 6 + .../KeychainTouchID/Info.plist | 34 ++++ .../KeychainStoryboard.storyboard | 178 ++++++++++++++++++ .../KeychainTestsViewController.cs | 124 ++++++++++++ .../KeychainTestsViewController.designer.cs | 42 +++++ .../KeychainTouchID/KeychainTouchID.csproj | 143 ++++++++++++++ .../LocalAuthenticationTestsViewController.cs | 65 +++++++ ...henticationTestsViewController.designer.cs | 42 +++++ ios8/KeychainTouchID/KeychainTouchID/Main.cs | 20 ++ .../AppIcons.appiconset/Contents.json | 92 +++++++++ .../CoreAuthenticationKeychain-120.png | Bin 0 -> 19858 bytes .../CoreAuthenticationKeychain-29-1.png | Bin 0 -> 2562 bytes .../CoreAuthenticationKeychain-58-1.png | Bin 0 -> 7587 bytes .../CoreAuthenticationKeychain-76.png | Bin 0 -> 11572 bytes .../CoreAuthenticationKeychain-80-1.png | Bin 0 -> 11410 bytes .../LaunchImage.launchimage/Contents.json | 140 ++++++++++++++ .../Default-568h@2x.png | Bin 0 -> 62146 bytes .../LaunchImage.launchimage/Default.png | Bin 0 -> 13894 bytes .../LaunchImage.launchimage/Default@2x.png | Bin 0 -> 38364 bytes .../KeychainTouchID/Resources/auth@2x.png | Bin 0 -> 3496 bytes .../KeychainTouchID/Resources/keychain@2x.png | Bin 0 -> 1418 bytes .../SecStatusCodeExtensions.cs | 33 ++++ ios8/KeychainTouchID/KeychainTouchID/Test.cs | 17 ++ ios8/KeychainTouchID/KeychainTouchID/Text.cs | 49 +++++ .../Contents/Info.plist | 20 ++ .../Contents/Resources/DWARF/KeychainTouchID | Bin 0 -> 16820470 bytes ios8/KeychainTouchID/Metadata.xml | 10 + ios8/KeychainTouchID/README.md | 20 ++ ios8/KeychainTouchID/Screenshots/1.PNG | Bin 0 -> 87755 bytes ios8/KeychainTouchID/Screenshots/2.PNG | Bin 0 -> 93160 bytes 33 files changed, 1192 insertions(+) create mode 100644 ios8/KeychainTouchID/KeychainTouchID.sln create mode 100644 ios8/KeychainTouchID/KeychainTouchID/AppDelegate.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/BasicTestViewController.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Entitlements.plist create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Info.plist create mode 100644 ios8/KeychainTouchID/KeychainTouchID/KeychainStoryboard.storyboard create mode 100644 ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.designer.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/KeychainTouchID.csproj create mode 100644 ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.designer.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Main.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/Contents.json create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-120.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-29-1.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-58-1.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-76.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-80-1.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Default.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Default@2x.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/auth@2x.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Resources/keychain@2x.png create mode 100644 ios8/KeychainTouchID/KeychainTouchID/SecStatusCodeExtensions.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Test.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/Text.cs create mode 100644 ios8/KeychainTouchID/KeychainTouchID/bin/iPhone/Debug/KeychainTouchID.app.dSYM/Contents/Info.plist create mode 100644 ios8/KeychainTouchID/KeychainTouchID/bin/iPhone/Debug/KeychainTouchID.app.dSYM/Contents/Resources/DWARF/KeychainTouchID create mode 100644 ios8/KeychainTouchID/Metadata.xml create mode 100644 ios8/KeychainTouchID/README.md create mode 100644 ios8/KeychainTouchID/Screenshots/1.PNG create mode 100644 ios8/KeychainTouchID/Screenshots/2.PNG diff --git a/ios8/KeychainTouchID/KeychainTouchID.sln b/ios8/KeychainTouchID/KeychainTouchID.sln new file mode 100644 index 00000000..cecd6f3c --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID.sln @@ -0,0 +1,32 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2012 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "KeychainTouchID", "KeychainTouchID\KeychainTouchID.csproj", "{859CE049-3F52-49BA-AC58-0F2DF4CFDACF}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|iPhoneSimulator = Debug|iPhoneSimulator + Release|iPhoneSimulator = Release|iPhoneSimulator + Debug|iPhone = Debug|iPhone + Release|iPhone = Release|iPhone + Ad-Hoc|iPhone = Ad-Hoc|iPhone + AppStore|iPhone = AppStore|iPhone + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Ad-Hoc|iPhone.ActiveCfg = Ad-Hoc|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Ad-Hoc|iPhone.Build.0 = Ad-Hoc|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.AppStore|iPhone.ActiveCfg = AppStore|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.AppStore|iPhone.Build.0 = AppStore|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Debug|iPhone.ActiveCfg = Debug|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Debug|iPhone.Build.0 = Debug|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Release|iPhone.ActiveCfg = Release|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Release|iPhone.Build.0 = Release|iPhone + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator + EndGlobalSection + GlobalSection(MonoDevelopProperties) = preSolution + StartupItem = KeychainTouchID\KeychainTouchID.csproj + EndGlobalSection +EndGlobal diff --git a/ios8/KeychainTouchID/KeychainTouchID/AppDelegate.cs b/ios8/KeychainTouchID/KeychainTouchID/AppDelegate.cs new file mode 100644 index 00000000..f113da1b --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/AppDelegate.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace KeychainTouchID +{ + // The UIApplicationDelegate for the application. This class is responsible for launching the + // User Interface of the application, as well as listening (and optionally responding) to + // application events from iOS. + [Register ("AppDelegate")] + public partial class AppDelegate : UIApplicationDelegate + { + // class-level declarations + public override UIWindow Window { + get; + set; + } + + // This method is invoked when the application is about to move from active to inactive state. + // OpenGL applications should use this method to pause. + public override void OnResignActivation (UIApplication application) + { + } + + // This method should be used to release shared resources and it should store the application state. + // If your application supports background exection this method is called instead of WillTerminate + // when the user quits. + public override void DidEnterBackground (UIApplication application) + { + } + + // This method is called as part of the transiton from background to active state. + public override void WillEnterForeground (UIApplication application) + { + } + + // This method is called when the application is about to terminate. Save data, if needed. + public override void WillTerminate (UIApplication application) + { + } + } +} + diff --git a/ios8/KeychainTouchID/KeychainTouchID/BasicTestViewController.cs b/ios8/KeychainTouchID/KeychainTouchID/BasicTestViewController.cs new file mode 100644 index 00000000..0c7302fa --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/BasicTestViewController.cs @@ -0,0 +1,79 @@ +using System; +using System.Collections.Generic; +using CoreFoundation; +using Foundation; +using UIKit; + +namespace KeychainTouchID +{ + [Register ("BasicTestViewController")] + public class BasicTestViewController : UIViewController, IUITableViewDelegate, IUITableViewDataSource + { + public List Tests { get; set; } + + public BasicTestViewController (IntPtr handle) : base (handle) + { + } + + public void PrintResult (UITextView textView, string message) + { + DispatchQueue.MainQueue.DispatchAsync (() => { + textView.Text = string.Format ("{0}\n{1}", textView.Text, message); + textView.ScrollRangeToVisible (new NSRange (0, textView.Text.Length)); + }); + } + + [Export ("numberOfSectionsInTableView:")] + public int NumberOfSections (UITableView tableView) + { + return 1; + } + + [Export ("tableView:numberOfRowsInSection:")] + public nint RowsInSection (UITableView tableview, nint section) + { + return (nint)Tests.Count; + } + + [Export ("tableView:titleForHeaderInSection:")] + public string TitleForHeader (UITableView tableView, int section) + { + return Text.SELECT_TEST; + } + + [Export ("tableView:didSelectRowAtIndexPath:")] + public void RowSelected (UITableView tableView, NSIndexPath indexPath) + { + var test = GetTestForIndexPath (indexPath); + + if (test.Method != null) + test.Method (); + + tableView.DeselectRow (indexPath, true); + } + + [Export ("tableView:cellForRowAtIndexPath:")] + public UITableViewCell GetCell (UITableView tableView, NSIndexPath indexPath) + { + string cellIdentifier = Text.TEST_CELL; + + var cell = tableView.DequeueReusableCell (cellIdentifier); + cell = cell ?? new UITableViewCell (UITableViewCellStyle.Subtitle, cellIdentifier); + + var test = GetTestForIndexPath (indexPath); + cell.TextLabel.Text = test.Name; + cell.DetailTextLabel.Text = test.Details; + + return cell; + } + + Test GetTestForIndexPath (NSIndexPath indexPath) + { + if (indexPath.Section > 0 || indexPath.Row >= Tests.Count) + return null; + + return Tests [indexPath.Row]; + } + } +} + diff --git a/ios8/KeychainTouchID/KeychainTouchID/Entitlements.plist b/ios8/KeychainTouchID/KeychainTouchID/Entitlements.plist new file mode 100644 index 00000000..9ae59937 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/Entitlements.plist @@ -0,0 +1,6 @@ + + + + + + diff --git a/ios8/KeychainTouchID/KeychainTouchID/Info.plist b/ios8/KeychainTouchID/KeychainTouchID/Info.plist new file mode 100644 index 00000000..e210ace2 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/Info.plist @@ -0,0 +1,34 @@ + + + + + CFBundleDisplayName + KeychainTouchID + CFBundleShortVersionString + 1.0 + CFBundleVersion + 1.0 + LSRequiresIPhoneOS + + MinimumOSVersion + 8.0 + UIDeviceFamily + + 1 + + UIMainStoryboardFile + KeychainStoryboard + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + + XSAppIconAssets + Resources/Images.xcassets/AppIcons.appiconset + XSLaunchImageAssets + Resources/Images.xcassets/LaunchImage.launchimage + + diff --git a/ios8/KeychainTouchID/KeychainTouchID/KeychainStoryboard.storyboard b/ios8/KeychainTouchID/KeychainTouchID/KeychainStoryboard.storyboard new file mode 100644 index 00000000..c7d91911 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/KeychainStoryboard.storyboard @@ -0,0 +1,178 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.cs b/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.cs new file mode 100644 index 00000000..970d861b --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using CoreFoundation; +using Foundation; +using ObjCRuntime; +using Security; +using UIKit; +using System.Text; + +namespace KeychainTouchID +{ + public partial class KeychainTestsViewController : BasicTestViewController + { + public KeychainTestsViewController (IntPtr handle) : base (handle) + { + } + + public override void ViewDidLoad () + { + base.ViewDidLoad (); + + Tests = new List { + new Test { Name = Text.ADD_ITEM, Details = Text.ADD_SEC_ITEM, Method = AddItemAsync }, + new Test { Name = Text.QUERY_FOR_ITEM, Details = Text.COPY_SEC_ITEM, Method = CopyMatchingAsync }, + new Test { Name = Text.UPDATE_ITEM, Details = Text.UPDATE_SEC_ITEM, Method = UpdateItemAsync }, + new Test { Name = Text.DELETE_ITEM, Details = Text.DELETE_SEC_ITEM, Method = DeleteItemAsync } + }; + + tableView.WeakDataSource = this; + tableView.WeakDelegate = this; + } + + public override void ViewWillAppear (bool animated) + { + base.ViewWillAppear (animated); + textView.ScrollRangeToVisible (new NSRange (0, textView.Text.Length)); + } + + public override void ViewDidLayoutSubviews () + { + var height = (nfloat)Math.Min (View.Bounds.Size.Height, tableView.ContentSize.Height); + dynamicViewHeight.Constant = height; + View.LayoutIfNeeded (); + } + + void AddItemAsync () + { + var secObject = new SecAccessControl (SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.UserPresence); + + if (secObject == null) { + string message = Text.CANT_CREATE_SEC_OBJ; + Console.WriteLine (message); + textView.Text += string.Format (Text.SEC_ITEM_ADD_CAN_CREATE_OBJECT, message); + } + + var securityRecord = new SecRecord (SecKind.GenericPassword) { + Service = Text.SERVICE_NAME, + ValueData = new NSString (Text.SECRET_PASSWORD_TEXT).Encode (NSStringEncoding.UTF8), + UseNoAuthenticationUI = true, + AccessControl = secObject + }; + + DispatchQueue.MainQueue.DispatchAsync (() => { + SecStatusCode status = SecKeyChain.Add (securityRecord); + + var message = string.Format (Text.SEC_ITEM_ADD_STATUS, status.GetDescription ()); + PrintResult (textView, message); + }); + } + + void CopyMatchingAsync () + { + var securityRecord = new SecRecord (SecKind.GenericPassword) { + Service = Text.SERVICE_NAME, + UseOperationPrompt = Text.AUTHENTICATE_TO_ACCESS_SERVICE_PASSWORD + }; + + DispatchQueue.MainQueue.DispatchAsync (() => { + SecStatusCode status; + NSData resultData = SecKeyChain.QueryAsData (securityRecord, false, out status); + + var result = resultData != null ? new NSString (resultData, NSStringEncoding.UTF8) : Text.USER_CANCELED_ACTION; + + var sb = new StringBuilder (); + sb.AppendFormat (Text.SEC_ITEM_COPY_MATCHING_STATUS, status.GetDescription ()); + sb.AppendFormat (Text.RESULT, result); + PrintResult (textView, sb.ToString ()); + }); + } + + void UpdateItemAsync () + { + var securityRecord = new SecRecord (SecKind.GenericPassword) { + Service = Text.SERVICE_NAME, + UseOperationPrompt = Text.AUTH_TO_UPDATE + }; + + var recordUpdates = new SecRecord (SecKind.Identity) { + ValueData = new NSString (Text.UPDATED_SECRET_PASSWORD_TEXT).Encode (NSStringEncoding.UTF8), + }; + + DispatchQueue.MainQueue.DispatchAsync (() => { + var status = SecKeyChain.Update (securityRecord, recordUpdates); + + var message = string.Format (Text.SEC_ITEM_UPDATE_STATUS, status.GetDescription ()); + PrintResult (textView, message); + }); + } + + void DeleteItemAsync () + { + var securityRecord = new SecRecord (SecKind.GenericPassword) { + Service = Text.SERVICE_NAME + }; + + DispatchQueue.MainQueue.DispatchAsync (() => { + var status = SecKeyChain.Remove (securityRecord); + + var message = string.Format (Text.SEC_ITEM_DELETE_STATUS, status.GetDescription ()); + PrintResult (textView, message); + }); + } + } +} diff --git a/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.designer.cs b/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.designer.cs new file mode 100644 index 00000000..dd1d1c41 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/KeychainTestsViewController.designer.cs @@ -0,0 +1,42 @@ +// WARNING +// +// This file has been generated automatically by Xamarin Studio to store outlets and +// actions made in the UI designer. If it is removed, they will be lost. +// Manual changes to this file may not be handled correctly. +// +using Foundation; +using System.CodeDom.Compiler; + +namespace KeychainTouchID +{ + [Register ("KeychainTestsViewController")] + partial class KeychainTestsViewController + { + [Outlet] + UIKit.NSLayoutConstraint dynamicViewHeight { get; set; } + + [Outlet] + UIKit.UITableView tableView { get; set; } + + [Outlet] + UIKit.UITextView textView { get; set; } + + void ReleaseDesignerOutlets () + { + if (tableView != null) { + tableView.Dispose (); + tableView = null; + } + + if (textView != null) { + textView.Dispose (); + textView = null; + } + + if (dynamicViewHeight != null) { + dynamicViewHeight.Dispose (); + dynamicViewHeight = null; + } + } + } +} diff --git a/ios8/KeychainTouchID/KeychainTouchID/KeychainTouchID.csproj b/ios8/KeychainTouchID/KeychainTouchID/KeychainTouchID.csproj new file mode 100644 index 00000000..10ec4fcb --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/KeychainTouchID.csproj @@ -0,0 +1,143 @@ + + + + Debug + iPhoneSimulator + {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} + {859CE049-3F52-49BA-AC58-0F2DF4CFDACF} + Exe + KeychainTouchID + Resources + KeychainTouchID + + + true + full + false + bin\iPhoneSimulator\Debug + DEBUG; + prompt + 4 + false + None + Entitlements.plist + true + + + x86_64 + + + full + true + bin\iPhoneSimulator\Release + prompt + 4 + None + false + Entitlements.plist + + + x86_64 + + + true + full + false + bin\iPhone\Debug + DEBUG; + prompt + 4 + false + Entitlements.plist + true + iPhone Developer + + + ARMv7, ARMv7s, ARM64 + + + full + true + bin\iPhone\Release + prompt + 4 + Entitlements.plist + false + iPhone Developer + + + ARMv7, ARMv7s, ARM64 + + + full + true + bin\iPhone\Ad-Hoc + prompt + 4 + false + Entitlements.plist + true + Automatic:AdHoc + iPhone Distribution + + + full + true + bin\iPhone\AppStore + prompt + 4 + iPhone Distribution + Entitlements.plist + false + Automatic:AppStore + + + + + + + + + + + + + + + + + + KeychainTestsViewController.cs + + + + LocalAuthenticationTestsViewController.cs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.cs b/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.cs new file mode 100644 index 00000000..1aab513b --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using Foundation; +using LocalAuthentication; +using UIKit; + +namespace KeychainTouchID +{ + public partial class LocalAuthenticationTestsViewController : BasicTestViewController + { + public LocalAuthenticationTestsViewController (IntPtr handle) : base (handle) + { + } + + public override void ViewDidLoad () + { + base.ViewDidLoad (); + + Tests = new List { + new Test { Name = Text.TOUCH_ID_PREFLIGHT, Details = Text.USING_CAN_EVALUATE_POLICY, Method = CanEvaluatePolicy }, + new Test { Name = Text.TOUCH_ID, Details = Text.USING_EVALUATE_POLICY, Method = EvaluatePolicy } + }; + + tableView.WeakDataSource = this; + tableView.WeakDelegate = this; + } + + public override void ViewWillAppear (bool animated) + { + base.ViewWillAppear (animated); + + textView.ScrollRangeToVisible (new NSRange (0, textView.Text.Length)); + } + + public override void ViewDidLayoutSubviews () + { + var height = (nfloat)Math.Min (View.Bounds.Size.Height, tableView.ContentSize.Height); + dynamicViewHeight.Constant = height; + View.LayoutIfNeeded (); + } + + void CanEvaluatePolicy () + { + var context = new LAContext (); + string message = string.Empty; + NSError error; + bool success = context.CanEvaluatePolicy (LAPolicy.DeviceOwnerAuthenticationWithBiometrics, out error); + message = success ? Text.TOUCH_ID_IS_AVAILABLE : Text.TOUCH_ID_IS_NOT_AVAILABLE; + + PrintResult (textView, message); + } + + void EvaluatePolicy () + { + var context = new LAContext (); + context.EvaluatePolicy (LAPolicy.DeviceOwnerAuthenticationWithBiometrics, Text.UNLOCK_ACCESS_TO_LOCKED_FATURE, HandleLAContextReplyHandler); + } + + void HandleLAContextReplyHandler (bool success, NSError error) + { + string message = success ? Text.EVALUATE_POLICY_SUCCESS : string.Format (Text.EVALUATE_POLICY_WITH_ERROR, error.LocalizedDescription); + PrintResult (textView, message); + } + } +} diff --git a/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.designer.cs b/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.designer.cs new file mode 100644 index 00000000..066a8cc5 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/LocalAuthenticationTestsViewController.designer.cs @@ -0,0 +1,42 @@ +// WARNING +// +// This file has been generated automatically by Xamarin Studio to store outlets and +// actions made in the UI designer. If it is removed, they will be lost. +// Manual changes to this file may not be handled correctly. +// +using Foundation; +using System.CodeDom.Compiler; + +namespace KeychainTouchID +{ + [Register ("LocalAuthenticationTestsViewController")] + partial class LocalAuthenticationTestsViewController + { + [Outlet] + UIKit.NSLayoutConstraint dynamicViewHeight { get; set; } + + [Outlet] + UIKit.UITableView tableView { get; set; } + + [Outlet] + UIKit.UITextView textView { get; set; } + + void ReleaseDesignerOutlets () + { + if (tableView != null) { + tableView.Dispose (); + tableView = null; + } + + if (textView != null) { + textView.Dispose (); + textView = null; + } + + if (dynamicViewHeight != null) { + dynamicViewHeight.Dispose (); + dynamicViewHeight = null; + } + } + } +} diff --git a/ios8/KeychainTouchID/KeychainTouchID/Main.cs b/ios8/KeychainTouchID/KeychainTouchID/Main.cs new file mode 100644 index 00000000..77dc196d --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/Main.cs @@ -0,0 +1,20 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +using Foundation; +using UIKit; + +namespace KeychainTouchID +{ + public class Application + { + // This is the main entry point of the application. + static void Main (string[] args) + { + // if you want to use a different Application Delegate class from "AppDelegate" + // you can specify it here. + UIApplication.Main (args, null, "AppDelegate"); + } + } +} diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/Contents.json b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/Contents.json new file mode 100644 index 00000000..e69f5312 --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/Contents.json @@ -0,0 +1,92 @@ +{ + "images": [ + { + "filename": "CoreAuthenticationKeychain-29-1.png", + "size": "29x29", + "scale": "1x", + "idiom": "iphone" + }, + { + "filename": "CoreAuthenticationKeychain-58-1.png", + "size": "29x29", + "scale": "2x", + "idiom": "iphone" + }, + { + "filename": "CoreAuthenticationKeychain-80-1.png", + "size": "40x40", + "scale": "2x", + "idiom": "iphone" + }, + { + "size": "57x57", + "scale": "1x", + "idiom": "iphone" + }, + { + "size": "57x57", + "scale": "2x", + "idiom": "iphone" + }, + { + "filename": "CoreAuthenticationKeychain-120.png", + "size": "60x60", + "scale": "2x", + "idiom": "iphone" + }, + { + "size": "29x29", + "scale": "1x", + "idiom": "ipad" + }, + { + "size": "29x29", + "scale": "2x", + "idiom": "ipad" + }, + { + "size": "40x40", + "scale": "1x", + "idiom": "ipad" + }, + { + "size": "40x40", + "scale": "2x", + "idiom": "ipad" + }, + { + "size": "50x50", + "scale": "1x", + "idiom": "ipad" + }, + { + "size": "50x50", + "scale": "2x", + "idiom": "ipad" + }, + { + "size": "72x72", + "scale": "1x", + "idiom": "ipad" + }, + { + "size": "72x72", + "scale": "2x", + "idiom": "ipad" + }, + { + "size": "76x76", + "scale": "1x", + "idiom": "ipad" + }, + { + "size": "76x76", + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-120.png b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-120.png new file mode 100644 index 0000000000000000000000000000000000000000..9f724df129dd2a138b5ea0759dc5afd98151a4b3 GIT binary patch literal 19858 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 JPDHLkV1g*$^fUkf literal 0 HcmV?d00001 diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-29-1.png b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-29-1.png new file mode 100644 index 0000000000000000000000000000000000000000..b68ab2569e7b248c794dd202ac0097bf12177d7c GIT binary patch literal 2562 zcmV+d3jOtoP)E?|eV= zyze~6i&h+;%ivcm#uy-k0000nBm)AOF%}Q#mwO0|vR`nB1D(PsCVs|Xutk-CZ& zIUd+Q)|jh7yl9X^-hndb*LjWJ^BGZy-O>;J;ppt2rA{?W_dJ&M)R0kWvIitzGE&++4SPRo zdOK4_IBj#`zC^_F!gY5}FZQ0Q;6+WhT2w8mY%OW6@K!c_?|7=G>ccjL=1@7;H-=c}TPb9ag! z>}voDW{669P7t}Dd?=1HfuP_4020mF%39}{KY!k`^NqE6FU4C>f}hIde;key3Rm@y zxjWtczK*7vp7Mv^Ua;G?=i>J7-miPBp!n|6U}0jRmxlenC?%YOP2Nolc5_!E&UNkH z=Fc|FelJGxj~tFs07e1k+ZH(;+BDO~)6dyfFWlN+*IQ9q*eST7Q zQvMRSHt+C_1%MHmTy8yn@%^ez2Cd#kUb=l_a7*=T@|?-b6AxS{p3f0EYKLdJ?om?;mlPDVX3P1W(~k`L`XYBsxPO9PZyyf;lwn!IAzvrMGIaIVSDg5M z$CoZ&_Ze?!=wk1{h3_{Ue6r!)>esU(9N}L%^@2Gk<<7LA*SU%ZE>M_u&x~NiUz}^4 z*vT*h4k*BFw*0n}on?cwvX=xJ+K&5|W-mMXm&IG>bAlMp2qtaaRnF7R`#;)w`n9?Z zhgStDP}iKPkEMzPh2AP(7d%k2!@YXe3xX2|qOTTh*%Ot*$+8^o$h8+ldIv9G%1xRU zt?W8w7;nz)rj!ClF~do`1^H=MU)A-k)uORA%)Ra51pok{kf;4{^@o@L{>`%^ccdsaA9kFtzZkxtoTWFtm#qVryos>E& zdg;n}oMFnQ=UitENxZ=d$!p&}*BX1$%IGz$L{p*{xgELa+b;UDv z4-Srm5LGBrtP=~rJh64*uBD~0x8~#D3Y2+Mcza?XIPA|%nmE$cb+)e{_deb3rd=&o zT?(xX)Y#(G2|_R&u=0dzDP~NdgbHPiB}vaL+^AP+Opa)Hq`BncXA0`}#yhmhQk=%3 zA%G3MNLxjLlgLvZfUT;&#p@HMS>nk;ccQP?3Jx5bB@dHjwmIpk(`l`=nEi|+Gtx= zyd*jpaseX@C}F@c%%F9sZOoaPlH;{i2NK3-6x_uRxex**axxGkh!n>NVZ1cvC~*fFsyFM6G=_+*NKpADO`PBlNA#!rs`~r9y>OMq z5ln#)3Je&0cx1EVZwJ?A7EM|l>FjUnS(?A%#IDCbt>iIRjl&@|3CVVm7m~W$+l}#R z5um}_SE{zhw8-_w=H+`g0ceff^K-AuSNjg;Bh;R z4vjszy!N1Fz~4XbSp7j1ibmmj2FECaYeg90dc1w0<2B}zZ+DQXNt0bFtHaRRQ9JIo zteJ(Mmlf-`EZg?M#eufKJyY**2!uxldCD$?qJcD*-y?AfKC`mroaKx9(s}P3dPB$9 z|NAp~lSml_01D9V?J;gH-WXOyWlWpB-$D1xI8H(|MxP*afOo>TaVV1 zaO)PY*ZZ&}GDg#Pmu}1H_I3eK2EcCgW)whRS z*B-%MIXt2LVx_IP{FAKIgk*tHVv#WswtrVF-0Fvc3jR9oSN&xWLckbfqm$=o3jEsj YUy^90ji+BZy#N3J07*qoM6N<$f=ngMaR2}S literal 0 HcmV?d00001 diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-58-1.png b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-58-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2168eb23ca77156204fcf959b2e3d79211268188 GIT binary patch literal 7587 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򽯌pf}4 zF;TpZ>A+j7{}dkByZO&cx>p1pMk)?hcz>+g{ayQN*X(?4wQSoD425AOBX8Zl`1+3O zs>#;;{28rGLJq}xJdgyx>1639l6|RxN;nPzk<=VA(3wueJdTwnWiUMBH1~Msq|#t% zgE1oQRDQfI1%dbWaK;qWxGKW7Bl;+nCME>j!8{SM5=}5|4l@lUD_=?twoDj6It9)Z z-OqyEj1gok%9x@;dPDsx6fEgnS#`>_HiJwHU>qnavso)aM1}~QgEBIQt;aM$Qi1{j##OG6;{c`!<_$t|tIUce z;YgcwMI{#SF&3AgL;~O(%RxxEsNlp> zPyU>Jy{!{3EI1_@bcJ&5%%BZbVnbGrZ` z0eg5&rfC2XrWPJMaO+tQ=58XPH+BGU%|Oi_oaP|iuJ z91Kv2!=z#29AE%bI7k9aLIvXvR}~Pk;nM{GI0L|NvNi&oDZH|5bWDI^QX=b%1eE&O zrtiUIpZ}WIuG>Hg+he87^A*)?0RR~(NJl_%`-izn;XqmvZn(gSfuw{K5ehW60`mZ#M?JTht^w2P%^)ILHxj3{Jp`5c}*b$frQX=RRUBiH_p{9OqZu;Q7TS7=zQ>DI7}x zx%q&i0^yh6CnF>G6MptOVoz+Tz6pE&dK!h8nKVKH>4Ql{cS00c0`SCA?F%!1<7a%2Ltt|>k0r4Qf(?eblXM80 z3et53Dd5CYkPZN!50C;fo@7!26v`MTs4St-VPYr|z##}<6e2=M4NzX7FpX3aJHxv( zA*5cW4?=T$0Jj@ZczVs? zj_r&9lsvb#g&oIk$_ zJ#(iP9T(5^WM)B%fk%2@4HE&=tEU@vrK9cV-+$T_gQZtwjX9{P`p9IwH_QdEs_<7t zy{a#Vx;hYPjHHPOndGX4WhJ{?+H7tUCc3H=Na+}zz08Q2m|J|bPQp>boy~!SWAO7` zlcP+E02IZD`_rd;hB!PHxtUwBo7LWWRVwHVx7DAs=we9u={VXKaj8R{`##p+~?a>3Mt~tg_pybwF>kNuPJG1Ug4FIQu z&258;wD*CDw-{gyWLaiQq_xfi9eKXYOsMMMN_F$KR@8RmAz}H=}c##@(~7X3%}m~2Zc;>2ge?70Dx^Id-@`= zP(d))^yxt_C6lSQ^WgrwzqX3b9CuZ=^S4!U>NpGYks%NvP9Om zjy@~Jy?#Wxn)Y<{_J?Xp%MkQrdMK4VxNh_I8m0lwdp5S2{hhm?`{?)25~$#miYZC> zd@zRk`VBLkQ&C(AO>_B}*Za4&cxQenBOk%+Vif>heEH6oNJxw-pJV`l)zy(orQ%p5u6<3DreG> z8Zl@=)r(oBQ-E{|YxgYKW=5TB&Yph3ke*YRL5Xs=-e!WR zG{Y4@Rvq}RVpGp17jyIR`Tl|dRn-d# zczGa}7$pHL+w=a|RR>oeZCip%qOUzJ#}Ai9999k;Pzfi62bcf4b?4gGe}B*7g(qga z1M<{k&ocpH;i0ZwJG%CrdwShzR8mx10iwNcZhl)KhpE3j^XL6fUiYf3cbDz~2TmPx zs-^e>s^Dl`-ndLJQbIT;uda}BrGNdNb-qX}rA{6_jldWf;eBDrxgTdeshG(fOMDVW zzK(q332XsiRp-sj;JC6>`wT{hKs2=5Og^_>DOg#~hv<%Nxi|?%EK$T>a z>qw{DAhTQPk8XQu^WyXJ5zvl5Za%?wtY>yD>Lx~IRXJ4yUUwju1_#@p-2LJV0fOSB z4bk0!W&4)@)v(P6i4nq9GW+GW4L_0~{;yK$D*kmco)M!=ai}ud-+Lhc+Y9HlCzGk- zG&7Eg$utI4UFh!iFKT{i!BAiF&)~paFaIo1$g^JC8*jf_ zs+9Hdz68+`88>H>Z>l}=k4dmkvlSr;SphEwW65_pXLAmnk~V=p)V%6AEAHfQl@0%% z4G%s4JD%J4_W(VdjUO%y(0}l85TgIkb1z?Zpa0P9{||TTz002ovPDHLk FV1iaB)j|LO literal 0 HcmV?d00001 diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-76.png b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/AppIcons.appiconset/CoreAuthenticationKeychain-76.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f0f7d97d9d10ac16c7a8fef495495505bd030d GIT binary patch literal 11572 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

q4pKhmAx3U?$Wdmg#XTkWB6qq1W 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 literal 0 HcmV?d00001 diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json new file mode 100644 index 00000000..8d5b3b4f --- /dev/null +++ b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Contents.json @@ -0,0 +1,140 @@ +{ + "images": [ + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "filename": "Default@2x.png", + "size": "640x960", + "scale": "2x", + "idiom": "iphone" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "filename": "Default-568h@2x.png", + "size": "640x1136", + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "1x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "portrait", + "extent": "full-screen", + "size": "1536x2048", + "scale": "2x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "1x", + "idiom": "ipad" + }, + { + "minimum-system-version": "7.0", + "orientation": "landscape", + "extent": "full-screen", + "size": "2048x1536", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "filename": "Default.png", + "size": "320x480", + "scale": "1x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "filename": "Default@2x.png", + "size": "640x960", + "scale": "2x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "filename": "Default-568h@2x.png", + "size": "640x1136", + "subtype": "retina4", + "scale": "2x", + "idiom": "iphone" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "768x1024", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "full-screen", + "size": "1536x2048", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "to-status-bar", + "size": "768x1004", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "portrait", + "extent": "to-status-bar", + "size": "1536x2008", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "size": "1024x768", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "full-screen", + "size": "2048x1536", + "scale": "2x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "to-status-bar", + "size": "1024x748", + "scale": "1x", + "idiom": "ipad" + }, + { + "orientation": "landscape", + "extent": "to-status-bar", + "size": "2048x1496", + "scale": "2x", + "idiom": "ipad" + } + ], + "info": { + "version": 1, + "author": "xcode" + } +} \ No newline at end of file diff --git a/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png b/ios8/KeychainTouchID/KeychainTouchID/Resources/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3a34926de30f8068d8aff9fb46c04a3f8b8379e5 GIT binary patch literal 62146 zcmbrmWn5HWv_A|Zh=59oh_sY6(jg&=Gzcg?fHczGF(ybi0}>L_-9s95cZYO$=d)+< zckliD-#%}60h}{u_Fj9f^^JA>Unxr6!Fh;-hK6=WM*4*c8XCkG4GqKg)=lsm_mBnf zQyfj^#k1G0=~-1cE7IFg6$LpAkZR@u}UnYF$2>L23`g?&^GPWAaEU zX}9qb_3Rln-733WtL~~jFYDH|X!JT0p0*;!f!w0@MFT%(3}NeGw8rMfpU#)+kEwQ3 z2G6pTYeJgi@@Y|j2S3nZh8c>jdBQG6hk;M^{6f)A4Psa5{@uWlVf(F9P)9ts6vAa~ zXf!L|CkdnH;JGvwzBn2>2EKR$4lKUHrak}SEIqq);OijUP3uKQ*kiTr_vgnm{@RLn1tk5Z_t z-_b&_JBTM5dUg4`J`6X8LrzCWM>_97ULmSav&86656x~;-4O{5w7vBwHl54LqbPcM zu1-2t^?cn3uP=D*dDSlSi+SU_$E^`F%>F+$`!nR9V6O?B{8YO7**Ao>zr_fz?W3om zq0vuiwVkWGP$@BwD1GW5H%z3L z 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 z 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