async partial void AuthenticateClicked(NSButton sender) { //_cancel = swAutoCancel.State == NSCellStateValue.On ? new CancellationTokenSource(TimeSpan.FromSeconds(10)) : new CancellationTokenSource(); //lblStatus.StringValue = ""; //var result = await Plugin.Fingerprint.CrossFingerprint.Current.AuthenticateAsync("Prove you have fingers!", _cancel.Token); //SetResult(result); var secObject = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.TouchIDCurrentSet); if (secObject == null) { string message = "Sec object broken"; lblStatus.StringValue += message; } var securityRecord = new SecRecord(SecKind.Key) { Service = "test", ValueData = new NSString("Secret Data").Encode(NSStringEncoding.UTF8), AccessControl = secObject }; DispatchQueue.MainQueue.DispatchAsync(() => { SecStatusCode status = SecKeyChain.Add(securityRecord); lblStatus.StringValue = status.ToString(); }); }
public override Task <bool> AddSecureDataAsync(string key, string value) { var secObject = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.TouchIDCurrentSet); if (secObject == null) { //todo:handle error } var securityRecord = new SecRecord(SecKind.Key) { Service = key, ValueData = new NSString(value).Encode(NSStringEncoding.UTF8), AccessControl = secObject }; TaskCompletionSource <bool> response = new TaskCompletionSource <bool>(); DispatchQueue.MainQueue.DispatchAsync(() => { SecStatusCode status = SecKeyChain.Add(securityRecord); if (status == SecStatusCode.Success) { response.TrySetResult(true); } else { throw new Exception(status.ToString()); } }); return(response.Task); }
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); }); }
public void FromObject_INativeObject() { // https://bugzilla.xamarin.com/show_bug.cgi?id=8458 using (CGPath p = CGPath.FromRect(new RectangleF(1, 2, 3, 4))) { Assert.IsNotNull(NSObject.FromObject(p), "CGPath"); } using (CGColor c = new CGColor(CGColorSpace.CreateDeviceRGB(), new nfloat [] { 0.1f, 0.2f, 0.3f, 1.0f })) { Assert.IsNotNull(NSObject.FromObject(c), "CGColor"); } if (TestRuntime.CheckSystemAndSDKVersion(8, 0)) { using (var sac = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly)) { Assert.IsNotNull(NSObject.FromObject(sac), "SecAccessControl"); } } }
public static void AddCredentials() { Console.WriteLine ("Attempting to Add Credentials"); var token = AppCache.Instance.Ticket.refresh_token; var secObject = new SecAccessControl (SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.UserPresence); var securityRecord = new SecRecord (SecKind.GenericPassword) { Service = "TextShield", ValueData = new NSString (token).Encode (NSStringEncoding.UTF8), UseNoAuthenticationUI = true, AccessControl = secObject }; DispatchQueue.MainQueue.DispatchAsync (() => { SecStatusCode status = SecKeyChain.Add (securityRecord); Console.WriteLine("Credential Add Status: " + status.ToString()); }); }
public bool SetPassword(string password, string serviceName, string account, bool enableTouchId = false) { var record = new SecRecord(SecKind.GenericPassword) { Service = serviceName, Account = account }; var updateCode = SecKeyChain.Remove(record); SecRecord newRecord = null; if (updateCode == SecStatusCode.Success || updateCode == SecStatusCode.ItemNotFound) { if (IsIos8 && enableTouchId) { var secObject = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.UserPresence); newRecord = new SecRecord(SecKind.GenericPassword) { Service = serviceName, Account = account, ValueData = password != null?NSData.FromString(password, NSStringEncoding.UTF8) : null, UseNoAuthenticationUI = true, AccessControl = secObject }; } else { newRecord = new SecRecord(SecKind.GenericPassword) { Service = serviceName, Account = account, ValueData = password != null?NSData.FromString(password, NSStringEncoding.UTF8) : null }; } updateCode = SecKeyChain.Add(newRecord); } return(updateCode == SecStatusCode.Success); }
protected override Task <SecureValueResult> NativeSetSecureValue(SetSecureValueRequestConfiguration setSecureValueRequestConfig, CancellationToken cancellationToken) { #if __MAC__ return(Task.FromResult(new SecureValueResult { Status = FingerprintAuthenticationResultStatus.NotAvailable, ErrorMessage = "Not implemented for the current platform." })); #else var key = setSecureValueRequestConfig.Key.ToLower(); var serviceId = setSecureValueRequestConfig.ServiceId.ToLower(); var secureAccessControl = new SecAccessControl( SecAccessible.WhenPasscodeSetThisDeviceOnly, SecAccessControlCreateFlags.UserPresence); if (secureAccessControl == null) { return(Task.FromResult(new SecureValueResult { Status = FingerprintAuthenticationResultStatus.UnknownError, ErrorMessage = "Unable to create secure access control object." })); } var statusCode = SecKeyChain.Add(new SecRecord(SecKind.GenericPassword) { Service = serviceId, Label = serviceId, Account = key, Generic = NSData.FromString(setSecureValueRequestConfig.Value, NSStringEncoding.UTF8), UseNoAuthenticationUI = true, AccessControl = secureAccessControl }); return(Task.FromResult(new SecureValueResult { Status = FingerprintAuthenticationResultStatus.Succeeded, })); #endif }
static bool AddItem(Epitech.Intra.SharedApp.Security.Credit credit) { var secObject = new SecAccessControl(SecAccessible.AfterFirstUnlockThisDeviceOnly); if (secObject == null) { return(false); } var securityRecord = new SecRecord(SecKind.GenericPassword) { Service = "com.Epitech.uIntra", ValueData = new NSString(credit.Login + "|" + credit.Password).Encode(NSStringEncoding.UTF8), UseNoAuthenticationUI = true, AccessControl = secObject, }; SecStatusCode status = SecKeyChain.Add(securityRecord); return(status == SecStatusCode.Success); }
public void FromObject_INativeObject() { // https://bugzilla.xamarin.com/show_bug.cgi?id=8458 using (CGPath p = CGPath.FromRect(new RectangleF(1, 2, 3, 4))) { Assert.IsNotNull(NSObject.FromObject(p), "CGPath"); } using (CGColor c = new CGColor(CGColorSpace.CreateDeviceRGB(), new nfloat [] { 0.1f, 0.2f, 0.3f, 1.0f })) { Assert.IsNotNull(NSObject.FromObject(c), "CGColor"); } var hasSecAccessControl = TestRuntime.CheckXcodeVersion(6, 0); #if __MACOS__ if (!TestRuntime.CheckSystemVersion(PlatformName.MacOSX, 10, 10)) { hasSecAccessControl = false; } #endif if (hasSecAccessControl) { using (var sac = new SecAccessControl(SecAccessible.WhenPasscodeSetThisDeviceOnly)) { Assert.IsNotNull(NSObject.FromObject(sac), "SecAccessControl"); } } }
private 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).DataUsingEncoding (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); }); }
internal KeyChain(SecAccessControl control) { this.accessible = control.Accessible; this.control = control; }
internal KeyChain(SecAccessControl control) { _accessible = control.Accessible; _control = control; }