Skip to content

Commit f2ed3bc

Browse files
committed
Implemented generate passphrase functionality.
1 parent 3dbf52d commit f2ed3bc

File tree

4 files changed

+51
-6
lines changed

4 files changed

+51
-6
lines changed

java/src/main/java/org/astonbitecode/rustkeylock/api/InterfaceWithRust.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,11 @@ public void delete_entry(int index) {
7272
call(m);
7373
}
7474

75+
public void generate_passphrase(JavaEntry javaEntry, int index) {
76+
Map<String, Object> m = GuiResponse.GeneratePassphrase(javaEntry, index);
77+
call(m);
78+
}
79+
7580
public void export_import(String path, int export, String password, int number) {
7681
Map<String, Object> m = GuiResponse.ExportImport(path, export, password, number);
7782
call(m);

java/src/main/java/org/astonbitecode/rustkeylock/api/stubs/GuiResponse.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,15 @@ public static Map<String, Object> ReplaceEntry(JavaEntry entry, Integer index) {
6565
return map;
6666
}
6767

68+
public static Map<String, Object> GeneratePassphrase(JavaEntry entry, Integer index) {
69+
Map<String, Object> inner = new HashMap<>();
70+
inner.put("entry", entry);
71+
inner.put("index", index);
72+
Map<String, Object> map = new HashMap<>();
73+
map.put("GeneratePassphrase", inner);
74+
return map;
75+
}
76+
6877
public static Map<String, Object> AddEntry(JavaEntry entry) {
6978
Map<String, Object> inner = new HashMap<>();
7079
inner.put("entry", entry);

java/src/main/java/org/astonbitecode/rustkeylock/fragments/ShowEntry.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,10 @@ private void prepareUiElements(View v) {
171171
TextView passTitle = (TextView) v.findViewById(R.id.passwordLabel);
172172
passTitle.append(" (tap here to reveal or hide)");
173173
passTitle.setOnTouchListener(this);
174+
} else if (edit) {
175+
TextView passTitle = (TextView) v.findViewById(R.id.passwordLabel);
176+
passTitle.append(" (tap here to generate new passphrase)");
177+
passTitle.setOnTouchListener(this);
174178
}
175179
Button eb = (Button) v.findViewById(R.id.editButton);
176180
eb.setOnClickListener(this);
@@ -255,12 +259,24 @@ private void restore(Bundle state) {
255259

256260
@Override
257261
public boolean onTouch(View view, MotionEvent motionEvent) {
258-
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && !passwordVisibleWhenNotEditing) {
259-
passwordText.setTransformationMethod(null);
260-
passwordVisibleWhenNotEditing = !passwordVisibleWhenNotEditing;
261-
} else if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && passwordVisibleWhenNotEditing) {
262-
passwordText.setTransformationMethod(PasswordTransformationMethod.getInstance());
263-
passwordVisibleWhenNotEditing = !passwordVisibleWhenNotEditing;
262+
if (!edit) {
263+
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && !passwordVisibleWhenNotEditing) {
264+
passwordText.setTransformationMethod(null);
265+
passwordVisibleWhenNotEditing = !passwordVisibleWhenNotEditing;
266+
} else if (motionEvent.getAction() == MotionEvent.ACTION_DOWN && passwordVisibleWhenNotEditing) {
267+
passwordText.setTransformationMethod(PasswordTransformationMethod.getInstance());
268+
passwordVisibleWhenNotEditing = !passwordVisibleWhenNotEditing;
269+
}
270+
} else {
271+
Log.d(TAG, "Tapped to generate a new passphrase");
272+
JavaEntry javaEntry = new JavaEntry();
273+
javaEntry.name = nameText.getText() != null ? nameText.getText().toString() : "";
274+
javaEntry.url = urlText.getText() != null ? urlText.getText().toString() : "";
275+
javaEntry.user = userText.getText() != null ? userText.getText().toString() : "";
276+
javaEntry.pass = passwordText.getText() != null ? passwordText.getText().toString() : "";
277+
javaEntry.desc = descriptionText.getText() != null ? descriptionText.getText().toString() : "";
278+
279+
InterfaceWithRust.INSTANCE.generate_passphrase(javaEntry, entryIndex);
264280
}
265281
return true;
266282
}

rust/src/japi.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ enum GuiResponse {
4949
UserOptionSelected { user_option: JavaUserOption },
5050
ExportImport { path: String, mode: usize, password: String, number: usize },
5151
Copy { data: String },
52+
GeneratePassphrase { entry: JavaEntry, index: isize },
5253
}
5354

5455
fn instance_to_gui_response(instance: Instance) -> UserSelection {
@@ -83,6 +84,20 @@ fn instance_to_gui_response(instance: Instance) -> UserSelection {
8384

8485
UserSelection::ReplaceEntry(index as usize, entry)
8586
}
87+
GuiResponse::GeneratePassphrase { entry, index } => {
88+
debug!("generate_passphrase");
89+
let entry = Entry::new(entry.name,
90+
entry.url,
91+
entry.user,
92+
entry.pass,
93+
entry.desc);
94+
let index_opt = if index < 0 {
95+
None
96+
} else {
97+
Some(index as usize)
98+
};
99+
UserSelection::GeneratePassphrase(index_opt, entry)
100+
}
86101
GuiResponse::DeleteEntry { index } => {
87102
debug!("delete_entry");
88103
UserSelection::DeleteEntry(index)

0 commit comments

Comments
 (0)