public override void ViewDidLoad () { base.ViewDidLoad (); if (_introduction) { View.AddSubview(_home.GetIntroductionProgressView(1)); RegistrationExplanation.Hidden = false; TopMenu.Hidden = true; BottomMenu.BackgroundColor = null; DarkBackground.BackgroundColor = null; ToevoegenButton.SetImage (UIImage.FromFile ("IcBottom-Opslaan-Wit.png"), UIControlState.Normal); ToevoegenButton.SetTitleColor (UIColor.White, UIControlState.Normal); } ActivityIndicator.Hidden = true; GeenSites.Hidden = true; CancelButton.TouchUpInside += async (o, e) => { this.View.RemoveFromSuperview(); }; ToevoegenButton.TouchUpInside += async(o, e) => { if (DataLayer.Instance.GetLocalBoxesSync ().Count > 0) { try { var localBox = DataLayer.Instance.GetSelectedOrDefaultBox (); foreach (Site site in _tableSource.selectedItems) { LocalBox box = new LocalBox(); box.BackColor = localBox.BackColor; box.BaseUrl = site.Url; box.DatumTijdTokenExpiratie = localBox.DatumTijdTokenExpiratie; box.LogoUrl = localBox.LogoUrl; box.Name = site.Name; box.OriginalServerCertificate = null; box.PassPhrase = null; box.PrivateKey = null; box.PublicKey = null; box.User = localBox.User; DataLayer.Instance.AddOrUpdateLocalBox(box); } _home.InitialiseMenu(); this.View.RemoveFromSuperview(); }catch (Exception ex){ Insights.Report(ex); } } }; }
public Task <bool> ValidatePassPhrase(LocalBox localBox, string passPhrase) { return(Task.Run(() => { try { var result = CryptoHelper.ValidatePassPhrase(localBox.PrivateKey, passPhrase); localBox.PassPhrase = passPhrase; DataLayer.Instance.AddOrUpdateLocalBox(localBox); return result; } catch (Exception ex) { Insights.Report(ex); return false; } })); }
public override View OnCreateView (LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) { Dialog.SetTitle("Sites toevoegen"); View view = layoutInflater.Inflate (Resource.Layout.fragment_add_site, viewGroup, false); sitesAdapter = new SitesAdapter (Activity, sites); var siteListView = view.FindViewById<ListView> (Resource.Id.sitelist); siteListView.Adapter = sitesAdapter; siteListView.ChoiceMode = ChoiceMode.Multiple; Button buttonBack = view.FindViewById<Button> (Resource.Id.toevoegen); buttonBack.Click += delegate { var localBox = DataLayer.Instance.GetSelectedOrDefaultBox (); for (var i = 0; i < sites.Count; i++) { if (siteListView.CheckedItemPositions.Get(i)) { Site site = sites[i]; LocalBox box = new LocalBox(); box.BackColor = localBox.BackColor; box.BaseUrl = site.Url; box.DatumTijdTokenExpiratie = localBox.DatumTijdTokenExpiratie; box.LogoUrl = localBox.LogoUrl; box.Name = site.Name; box.OriginalServerCertificate = null; box.PassPhrase = null; box.PrivateKey = null; box.PublicKey = null; box.User = localBox.User; DataLayer.Instance.AddOrUpdateLocalBox(box); } } var activity = (HomeActivity) Activity; activity.ShowToast("Sites toegevoegd..."); activity.menuFragment.UpdateLocalBoxes(); activity.HideAddSitesDialog(); }; return view; }
private List <AesKeyPost> AddKeys(string path, List <Identity> usersToShareWith, List <Identity> toAdd) { List <AesKeyPost> result = new List <AesKeyPost> (); try { LocalBox box = DataLayer.Instance.GetSelectedOrDefaultBox(); var explorer = new RemoteExplorer(box); var node = DataLayer.Instance.GetFolder(path).Result; if (node.HasCryptoKeys) { foreach (var identity in toAdd) { var user = explorer.GetUser(identity.Username); if (!string.IsNullOrEmpty(user.PublicKey)) { byte[] pkey = Convert.FromBase64String(user.PublicKey); result.Add(new AesKeyPost() { User = identity.Username, Key = Convert.ToBase64String(CryptoHelper.EncryptPgp(node.Key, pkey)), IV = Convert.ToBase64String(CryptoHelper.EncryptPgp(node.IV, pkey)) }); } else { var u = identity; usersToShareWith.RemoveAll(e => e.Id.Equals(u.Id)); } } } return(result); } catch (Exception ex) { Insights.Report(ex); return(result); } }
public int AddOrUpdateLocalBox(LocalBox box) { int a = -1; if ((from l in this.Table <LocalBox>() where l.Id == box.Id select l).Count() == 0) { Transaction(() => { Insert(box); a = box.Id; }); } else { Update(box); a = box.Id; } return(a); }
public int AddOrUpdateLocalBox(LocalBox box) { return database.AddOrUpdateLocalBox(box); }
public Task<bool> Authenticate (LocalBox localBox) { return Task.Run (() => { //bool result = false; try { var explorer = new RemoteExplorer (localBox); //result = explorer.Authorize (password); //if (result) { DataLayer.Instance.AddOrUpdateLocalBox (localBox); SetKeys (localBox); //} else { //Login failure so delete local box // DataLayer.Instance.DeleteLocalBox (localBox.Id); //} return true; } catch (Exception ex){ Insights.Report(ex); DataLayer.Instance.DeleteLocalBox (localBox.Id); return false; } }); }
public SslValidator (LocalBox localBox) { this.localBox = localBox; LoadRootCertificate (); }
public static bool RenewCertificateForLocalBox (LocalBox localBox) { //Temporarly accept all certificates to succeed ServicePointManager.ServerCertificateValidationCallback = (p1, p2, p3, p4) => true; //Current certificate var serverCertificateBytes = CertificateHelper.BytesOfServerCertificate; //Renewed Certificate GetCertificateFromUrl (localBox.BaseUrl); var newServerCertificateBytes = CertificateHelper.BytesOfServerCertificate; if (newServerCertificateBytes != null) { if (newServerCertificateBytes.SequenceEqual (serverCertificateBytes)) { //Compare byte arrays of certificates localBox.OriginalServerCertificate = newServerCertificateBytes; DataLayer.Instance.AddOrUpdateLocalBox (localBox); return true; } else { return false; } } else { return false; } }
private void ShowPassphraseForExistingKey(LocalBox localBox, Action onCompletion, bool repeat = false) { string message = string.Empty; if (repeat) { message = "Verkeerde passphrase opgegeven, probeer het opnieuw"; } else { message = "Bij deze Pleiobox is al een sleutel aanwezig, geef de passphrase op van deze sleutel"; } UIAlertView createPassPhrase = new UIAlertView("Passphrase", message, null, "Annuleer", "Ok"); createPassPhrase.AlertViewStyle = UIAlertViewStyle.SecureTextInput; createPassPhrase.GetTextField(0).Placeholder = "Passphrase"; createPassPhrase.Clicked += async (object s, UIButtonEventArgs args) => { if(args.ButtonIndex == 0) { DataLayer.Instance.DeleteLocalBox(localBox.Id); if(onCompletion != null) { onCompletion(); } }else if(args.ButtonIndex == 1) { if(!await BusinessLayer.Instance.ValidatePassPhrase(localBox ,createPassPhrase.GetTextField(0).Text)) { ShowPassphraseForExistingKey(localBox, onCompletion, true); } else { if(onCompletion != null) { onCompletion(); } } } }; createPassPhrase.Show(); }
private void CreateNewKeyPair(LocalBox localBox, Action onCompletion, bool repeat = false) { string message = repeat ? "De opgegeven passphrases komen niet overeen, probeer het nog eens" : "U moet een passphrase instellen voordat u deze Pleiobox kunt gebruiken"; UIAlertView createPassPhrase = new UIAlertView("Passphrase", message, null, "Annuleer", "Ok"); createPassPhrase.AlertViewStyle = UIAlertViewStyle.LoginAndPasswordInput; var firstField = createPassPhrase.GetTextField(0); var secondField = createPassPhrase.GetTextField(1); firstField.Placeholder = "Passphrase"; secondField.Placeholder = "Bevestig Passphrase"; firstField.AutocorrectionType = UITextAutocorrectionType.No; firstField.SecureTextEntry = true; createPassPhrase.ShouldEnableFirstOtherButton = (av)=> { return av.GetTextField(0).Text.Length > 0 && av.GetTextField(0).Text.Equals(av.GetTextField(1).Text); }; createPassPhrase.Clicked += async (object s, UIButtonEventArgs args) => { if (args.ButtonIndex == 0) { DataLayer.Instance.DeleteLocalBox (localBox.Id); if (onCompletion != null) { onCompletion (); } } else if (args.ButtonIndex == 1) { if (firstField.Text.Equals (secondField.Text)) { DialogHelper.ShowBlockingProgressDialog ("Beveiliging", "Bezig met het creëren van sleutels. Dit kan enige tijd in beslag nemen."); bool result = await BusinessLayer.Instance.SetPublicAndPrivateKey (localBox, firstField.Text); if (!result) { DataLayer.Instance.DeleteLocalBox (localBox.Id); DialogHelper.ShowErrorDialog ("Fout", string.Format ("Er is een fout opgetreden bij het toevoegen van de Pleiobox {0}. De Pleiobox is niet toegevoegd", localBox.Name)); } if (onCompletion != null) { onCompletion (); } DialogHelper.HideBlockingProgressDialog (); } else { CreateNewKeyPair (localBox, onCompletion, true); } DialogHelper.HideProgressDialog (); } }; createPassPhrase.Show(); }
public Task<bool> SetPublicAndPrivateKey (LocalBox localBox, string passPhrase) { return Task.Run (() => { try { byte[] publicKey; byte[] privateKey; CryptoHelper.GenerateKeyPair (localBox.User, passPhrase, out publicKey, out privateKey); var explorer = new RemoteExplorer (localBox); var result = explorer.UpdateUser (new UserPost () { PublicKey = Convert.ToBase64String (publicKey), PrivateKey = Convert.ToBase64String (privateKey) }); if (result) { localBox.PublicKey = publicKey; localBox.PrivateKey = privateKey; localBox.PassPhrase = passPhrase; DataLayer.Instance.AddOrUpdateLocalBox (localBox); } return result; } catch (Exception ex){ Insights.Report(ex); return false; } }); }
public void ValidateKeyPresence(LocalBox localBox, Action onCompletion) { if (localBox.HasCryptoKeys) { if (!localBox.HasPassPhrase) { ShowPassphraseForExistingKey(localBox, onCompletion); } } else { CreateNewKeyPair(localBox, onCompletion); } }
//Register new LocalBox part 4 public void EnterPassphrase (LocalBox localBox) { LayoutInflater factory = LayoutInflateHelper.GetLayoutInflater (homeActivity); View viewNewPhrase = factory.Inflate (Resource.Layout.dialog_enter_passphrase, null); EditText editEnterPassphrase = (EditText)viewNewPhrase.FindViewById<EditText> (Resource.Id.editText_dialog_enter_passphrase); var dialogBuilder = new AlertDialog.Builder (homeActivity); dialogBuilder.SetTitle ("Passphrase"); dialogBuilder.SetView (viewNewPhrase); dialogBuilder.SetPositiveButton ("OK", (EventHandler<DialogClickEventArgs>)null); dialogBuilder.SetNegativeButton (Resource.String.cancel, (EventHandler<DialogClickEventArgs>)null); var dialog = dialogBuilder.Create (); dialog.Show (); var buttonCancel = dialog.GetButton ((int)DialogButtonType.Negative); var buttonAddPassphrase = dialog.GetButton ((int)DialogButtonType.Positive); buttonAddPassphrase.Click += async (sender, args) => { string passphrase = editEnterPassphrase.Text; if (String.IsNullOrEmpty (passphrase)) { homeActivity.ShowToast("Passphrase is niet ingevuld"); } else { try { homeActivity.ShowProgressDialog ("Uw passphrase controleren. Een ogenblik geduld a.u.b."); bool correctPassphraseEntered = await BusinessLayer.Instance.ValidatePassPhrase (localBox, passphrase); homeActivity.HideProgressDialog(); if (!correctPassphraseEntered) { homeActivity.ShowToast("Passphrase onjuist. Probeer het a.u.b. opnieuw"); } else { dialog.Dismiss (); homeActivity.ShowToast("Passphrase geaccepteerd en Pleiobox succesvol geregistreerd"); homeActivity.menuFragment.UpdateLocalBoxes (); SplashActivity.intentData = null; } } catch (Exception ex){ Insights.Report(ex); homeActivity.HideProgressDialog (); homeActivity.ShowToast("Passphrase verifieren mislukt. Probeer het a.u.b. opnieuw"); } } }; buttonCancel.Click += (sender, args) => { DataLayer.Instance.DeleteLocalBox (localBox.Id); homeActivity.menuFragment.UpdateLocalBoxes (); dialog.Dismiss (); }; }
private void SetKeys (LocalBox localBox) { var explorer = new RemoteExplorer (localBox); var user = explorer.GetUser (); if (user != null && !(string.IsNullOrEmpty (user.PrivateKey) || string.IsNullOrEmpty (user.PublicKey))) { localBox.PrivateKey = Convert.FromBase64String (user.PrivateKey); localBox.PublicKey = Convert.FromBase64String (user.PublicKey); } DataLayer.Instance.AddOrUpdateLocalBox (localBox); }
//Register new LocalBox part 4 public void SetUpPassphrase (LocalBox localBox) { LayoutInflater factory = LayoutInflateHelper.GetLayoutInflater (homeActivity); View viewNewPhrase = factory.Inflate (Resource.Layout.dialog_new_passphrase, null); EditText editNewPassphrase = (EditText)viewNewPhrase.FindViewById<EditText> (Resource.Id.editText_dialog_new_passphrase); EditText editNewPassphraseVerify = (EditText)viewNewPhrase.FindViewById<EditText> (Resource.Id.editText_dialog_new_passphrase_verify); var dialogBuilder = new AlertDialog.Builder (homeActivity); dialogBuilder.SetTitle ("Passphrase"); dialogBuilder.SetView (viewNewPhrase); dialogBuilder.SetPositiveButton ("OK", (EventHandler<DialogClickEventArgs>)null); dialogBuilder.SetNegativeButton (Resource.String.cancel, (EventHandler<DialogClickEventArgs>)null); var dialog = dialogBuilder.Create (); dialog.Show (); var buttonCancel = dialog.GetButton ((int)DialogButtonType.Negative); var buttonAddPassphrase = dialog.GetButton ((int)DialogButtonType.Positive); buttonAddPassphrase.Click += async (sender, args) => { string passphraseOne = editNewPassphrase.Text; string passphraseTwo = editNewPassphraseVerify.Text; if (String.IsNullOrEmpty (passphraseOne)) { homeActivity.ShowToast("Passphrase is niet ingevuld"); } else if (String.IsNullOrEmpty (passphraseTwo)) { homeActivity.ShowToast("U dient uw ingevoerde passphrase te verifieren"); } else { if (!passphraseOne.Equals (passphraseTwo)) { homeActivity.ShowToast("De ingevoerde passphrases komen niet overeen. Corrigeer dit a.u.b."); } else { try { homeActivity.ShowProgressDialog ("Passphrase aanmaken. Dit kan enige tijd in beslag nemen. Een ogenblik geduld a.u.b."); bool newPassphraseSucceeded = await BusinessLayer.Instance.SetPublicAndPrivateKey (localBox, passphraseOne); homeActivity.HideProgressDialog(); if (!newPassphraseSucceeded) { homeActivity.ShowToast("Passphrase instellen mislukt. Probeer het a.u.b. opnieuw"); } else { dialog.Dismiss (); homeActivity.ShowToast("LocalBox succesvol geregistreerd"); homeActivity.menuFragment.UpdateLocalBoxes (); SplashActivity.intentData = null; } } catch (Exception ex){ Insights.Report(ex); homeActivity.HideProgressDialog (); homeActivity.ShowToast("Passphrase instellen mislukt. Probeer het a.u.b. opnieuw"); } } } }; buttonCancel.Click += (sender, args) => { DataLayer.Instance.DeleteLocalBox (localBox.Id); homeActivity.menuFragment.UpdateLocalBoxes (); dialog.Dismiss (); }; }
//Register new LocalBox part 3 public async void AddLocalBox(LocalBox lbToAdd) { bool result = false; homeActivity.ShowProgressDialog ("LocalBox laden..."); result = await BusinessLayer.Instance.Authenticate (lbToAdd); homeActivity.HideProgressDialog (); }
public SslValidator(LocalBox localBox) { this.localBox = localBox; LoadRootCertificate(); }
public int AddOrUpdateLocalBox(LocalBox box) { return(database.AddOrUpdateLocalBox(box)); }
public Task<bool> ValidatePassPhrase (LocalBox localBox, string passPhrase) { return Task.Run (() => { try { var result = CryptoHelper.ValidatePassPhrase (localBox.PrivateKey, passPhrase); localBox.PassPhrase = passPhrase; DataLayer.Instance.AddOrUpdateLocalBox (localBox); return result; } catch (Exception ex){ Insights.Report(ex); return false; } }); }