private void InitializeSignatureAlgorithm()
		{
			//_signatureAlgorithmView = new NSTableView ();
			foreach(NSTableColumn column in SignAlgorithmTableView.TableColumns())
			{
				SignAlgorithmTableView.RemoveColumn (column);
			}
			SignAlgorithmTableView.Delegate = new TableDelegate ();
			//this.LstSignatureAlgorithm.AddSubview (_signatureAlgorithmView);
			var listView = new SignatureAlgorithmDataSource { Entries = RelyingPartyDto.SignatureAlgorithms };
			var columnNames = new List<ColumnOptions> {
				new ColumnOptions{ Id = "MaxKeySize", DisplayName = "Max Key Size", DisplayOrder = 1, Width = 80 },
				new ColumnOptions{ Id = "MinKeySize", DisplayName = "Min Key Size", DisplayOrder = 2, Width = 80 },
				new ColumnOptions{ Id = "Priority", DisplayName = "Priority", DisplayOrder = 3, Width = 80 }
			};
			var columns = ListViewHelper.ToNSTableColumns (columnNames);
			foreach (var column in columns) {
				SignAlgorithmTableView.AddColumn (column);
			}
			SignAlgorithmTableView.DataSource = listView;
			SignAlgorithmTableView.ReloadData ();
		}
		public void OnRemoveSignatureAlgorithm (object sender, EventArgs e)
		{
			if (RelyingPartyDto.SignatureAlgorithms!= null && RelyingPartyDto.SignatureAlgorithms.Count > 0) {
				if (SignAlgorithmTableView.SelectedRows != null && SignAlgorithmTableView.SelectedRows.Count > 0) {
					foreach (var row in SignAlgorithmTableView.SelectedRows) {
						if (row >= 0 && (int)row < RelyingPartyDto.SignatureAlgorithms.Count)
							RelyingPartyDto.SignatureAlgorithms.RemoveAt ((int)row);
					}
					var datasource = new SignatureAlgorithmDataSource { Entries = RelyingPartyDto.SignatureAlgorithms };
					SignAlgorithmTableView.DataSource = datasource;
					SignAlgorithmTableView.ReloadData ();
				}
			}
		}
		public void OnAddSignatureAlgorithm (object sender, EventArgs e)
		{	
			NSApplication.SharedApplication.StopModal ();
			var form = new AddNewSignatureAlgorithmController ();
			NSApplication.SharedApplication.RunModalForWindow (form.Window);
			if (form.SignatureAlgorithmDto != null) {
				RelyingPartyDto.SignatureAlgorithms.Add (form.SignatureAlgorithmDto);
				var datasource = new SignatureAlgorithmDataSource { Entries = RelyingPartyDto.SignatureAlgorithms };
				SignAlgorithmTableView.DataSource = datasource;
				SignAlgorithmTableView.ReloadData ();
			}
		}
		public void OnSignatureAlgorithmUpdate (object sender, EventArgs e)
		{
			if(SignAlgorithmTableView.SelectedRows != null && (int)SignAlgorithmTableView.SelectedRows.Count > 0)
			{
				var row = (int)SignAlgorithmTableView.SelectedRows.FirstIndex;
				var dto = RelyingPartyDto.SignatureAlgorithms [row];
				NSApplication.SharedApplication.StopModal ();
				var form = new AddNewSignatureAlgorithmController (){SignatureAlgorithmDto = dto};
				NSApplication.SharedApplication.RunModalForWindow (form.Window);
				if (form.IsUpdated != null) {
					RelyingPartyDto.SignatureAlgorithms.RemoveAt (row);
					RelyingPartyDto.SignatureAlgorithms.Add (form.SignatureAlgorithmDto);
					var datasource = new SignatureAlgorithmDataSource { Entries = RelyingPartyDto.SignatureAlgorithms };
					SignAlgorithmTableView.DataSource = datasource;
					SignAlgorithmTableView.ReloadData ();
				}
			}
		}