Exemple #1
0
        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());
			});
		}
Exemple #6
0
        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
        }
Exemple #8
0
        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);
        }
Exemple #9
0
        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);
			});
		}
Exemple #11
0
 internal KeyChain(SecAccessControl control)
 {
     this.accessible = control.Accessible;
     this.control    = control;
 }
 internal KeyChain(SecAccessControl control)
 {
     _accessible = control.Accessible;
     _control    = control;
 }