Implement structured iPhone entry viewer
This commit is contained in:
@@ -17,6 +17,10 @@ use crate::{
|
||||
pub struct EntryFieldId(u64);
|
||||
|
||||
impl EntryFieldId {
|
||||
pub fn from_value(value: u64) -> Self {
|
||||
Self(value)
|
||||
}
|
||||
|
||||
pub fn value(self) -> u64 {
|
||||
self.0
|
||||
}
|
||||
@@ -629,7 +633,11 @@ fn classify(index: usize, line: &[u8]) -> EntryFieldMetadata {
|
||||
if index == 0 {
|
||||
return EntryFieldMetadata {
|
||||
kind: EntryFieldKind::Password,
|
||||
sensitivity: EntrySensitivity::Sensitive,
|
||||
sensitivity: if line.is_empty() {
|
||||
EntrySensitivity::Empty
|
||||
} else {
|
||||
EntrySensitivity::Sensitive
|
||||
},
|
||||
name: Some("password".to_owned()),
|
||||
otp: None,
|
||||
diagnostic: (!line.is_ascii() && std::str::from_utf8(line).is_err())
|
||||
@@ -663,7 +671,7 @@ fn classify(index: usize, line: &[u8]) -> EntryFieldMetadata {
|
||||
let kind = semantic_field_kind(name);
|
||||
return EntryFieldMetadata {
|
||||
kind,
|
||||
sensitivity: field_sensitivity(name, kind),
|
||||
sensitivity: EntrySensitivity::Ordinary,
|
||||
name: Some(name.to_owned()),
|
||||
otp: None,
|
||||
diagnostic: std::str::from_utf8(&line[value_start..])
|
||||
@@ -674,7 +682,7 @@ fn classify(index: usize, line: &[u8]) -> EntryFieldMetadata {
|
||||
}
|
||||
EntryFieldMetadata {
|
||||
kind: EntryFieldKind::Note,
|
||||
sensitivity: EntrySensitivity::Sensitive,
|
||||
sensitivity: EntrySensitivity::Ordinary,
|
||||
name: None,
|
||||
otp: None,
|
||||
diagnostic: std::str::from_utf8(line)
|
||||
@@ -693,19 +701,6 @@ fn semantic_field_kind(name: &str) -> EntryFieldKind {
|
||||
}
|
||||
}
|
||||
|
||||
fn field_sensitivity(name: &str, kind: EntryFieldKind) -> EntrySensitivity {
|
||||
if matches!(
|
||||
kind,
|
||||
EntryFieldKind::Username | EntryFieldKind::Email | EntryFieldKind::Url
|
||||
) {
|
||||
return EntrySensitivity::Ordinary;
|
||||
}
|
||||
match name.to_ascii_lowercase().as_str() {
|
||||
"title" | "site" | "host" | "autotype_enabled" | "icon" => EntrySensitivity::Ordinary,
|
||||
_ => EntrySensitivity::Sensitive,
|
||||
}
|
||||
}
|
||||
|
||||
fn display_key(field: &EntryField) -> (u8, String) {
|
||||
let metadata = field.metadata();
|
||||
let name = metadata.name().unwrap_or_default().to_lowercase();
|
||||
|
||||
Reference in New Issue
Block a user