private void Load() { List <int> combinedKeys = new List <int>(); combinedKeys.AddRange(Keys); foreach (int groupItemId in Groups) { bool found = false; foreach (Container.GroupItem containerGroupItem in Settings.ContainerInner.Groups) { if (groupItemId == containerGroupItem.Id) { found = true; combinedKeys.AddRange(containerGroupItem.Keys); break; } } if (!found) { throw new Exception(string.Format("group with id {0} not found in container", groupItemId)); } } if (combinedKeys.Count == 0) { throw new Exception("no keys/groups selected"); } List <CmdKeyItem> keys = new List <CmdKeyItem>(); foreach (int keyId in combinedKeys) { bool found = false; foreach (KeyItem containerKeyItem in Settings.ContainerInner.Keys) { if (keyId == containerKeyItem.Id) { found = true; CmdKeyItem cmdKeyItem = new CmdKeyItem(); cmdKeyItem.UseActiveKeyset = containerKeyItem.ActiveKeyset; cmdKeyItem.KeysetId = containerKeyItem.KeysetId; cmdKeyItem.Sln = containerKeyItem.Sln; if (containerKeyItem.KeyTypeAuto) { if (cmdKeyItem.Sln >= 0 && cmdKeyItem.Sln <= 61439) { cmdKeyItem.IsKek = false; } else if (cmdKeyItem.Sln >= 61440 && cmdKeyItem.Sln <= 65535) { cmdKeyItem.IsKek = true; } else { throw new Exception(string.Format("invalid Sln and KeyTypeAuto set: {0}", cmdKeyItem.Sln)); } } else if (containerKeyItem.KeyTypeTek) { cmdKeyItem.IsKek = false; } else if (containerKeyItem.KeyTypeKek) { cmdKeyItem.IsKek = true; } else { throw new Exception("KeyTypeAuto, KeyTypeTek, and KeyTypeKek all false"); } cmdKeyItem.KeyId = containerKeyItem.KeyId; cmdKeyItem.AlgorithmId = containerKeyItem.AlgorithmId; cmdKeyItem.Key = Utility.ByteStringToByteList(containerKeyItem.Key); keys.Add(cmdKeyItem); break; } } if (!found) { throw new Exception(string.Format("key with id {0} not found in container", keyId)); } } Interact.Keyload(Settings.SelectedDevice, keys); }
private void Erase_Button_Click(object sender, RoutedEventArgs e) { int keysetId = 0; int sln = 0; bool useActiveKeyset = cbActiveKeyset.IsChecked == true; if (useActiveKeyset) { keysetId = 2; // to pass validation, will not get used } else { try { keysetId = Convert.ToInt32(txtKeysetIdHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing Keyset ID", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } try { sln = Convert.ToInt32(txtSlnHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing SLN", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } bool keysetValidateResult = FieldValidator.IsValidKeysetId(keysetId); if (!keysetValidateResult) { MessageBox.Show("Keyset ID invalid - valid range 1 to 255 (dec), 0x01 to 0xFF (hex)", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } bool slnValidateResult = FieldValidator.IsValidSln(sln); if (!slnValidateResult) { MessageBox.Show("SLN invalid - valid range 0 to 65535 (dec), 0x0000 to 0xFFFF (hex)", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } List <CmdKeyItem> keys = new List <CmdKeyItem>(); CmdKeyItem keyItem = new CmdKeyItem(); keyItem.UseActiveKeyset = useActiveKeyset; keyItem.KeysetId = keysetId; keyItem.Sln = sln; keyItem.IsKek = IsKek; keys.Add(keyItem); try { Interact.EraseKey(Settings.Port, keys); } catch (Exception ex) { MessageBox.Show(string.Format("Error -- {0}", ex.Message), "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show("Key Erased Successfully", "Information", MessageBoxButton.OK, MessageBoxImage.Information); }
private void Load_Button_Click(object sender, RoutedEventArgs e) { int keysetId = 0; int sln = 0; int keyId = 0; int algId = 0; List <byte> key = new List <byte>(); bool useActiveKeyset = cbActiveKeyset.IsChecked == true; if (useActiveKeyset) { keysetId = 2; // to pass validation, will not get used } else { try { keysetId = Convert.ToInt32(txtKeysetIdHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing Keyset ID", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } try { sln = Convert.ToInt32(txtSlnHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing SLN", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { keyId = Convert.ToInt32(txtKeyIdHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing Key ID", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { algId = Convert.ToInt32(txtAlgoHex.Text, 16); } catch (Exception) { MessageBox.Show("Error Parsing Algorithm ID", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { key = Utility.ByteStringToByteList(GetKey()); } catch (Exception) { MessageBox.Show("Error Parsing Key", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } Tuple <ValidateResult, string> validateResult = FieldValidator.KeyloadValidate(keysetId, sln, IsKek, keyId, algId, key); if (validateResult.Item1 == ValidateResult.Warning) { if (MessageBox.Show(string.Format("{1}{0}{0}Continue?", Environment.NewLine, validateResult.Item2), "Warning", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.No) { return; } } else if (validateResult.Item1 == ValidateResult.Error) { MessageBox.Show(validateResult.Item2, "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } List <CmdKeyItem> keys = new List <CmdKeyItem>(); CmdKeyItem keyItem = new CmdKeyItem(); keyItem.UseActiveKeyset = useActiveKeyset; keyItem.KeysetId = keysetId; keyItem.Sln = sln; keyItem.IsKek = IsKek; keyItem.KeyId = keyId; keyItem.AlgorithmId = algId; keyItem.Key = key; keys.Add(keyItem); try { Interact.Keyload(Settings.SelectedDevice, keys); } catch (Exception ex) { MessageBox.Show(string.Format("Error -- {0}", ex.Message), "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } MessageBox.Show("Key Loaded Successfully", "Information", MessageBoxButton.OK, MessageBoxImage.Information); }