diff options
Diffstat (limited to 'src/string_helper.rs')
| -rw-r--r-- | src/string_helper.rs | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/src/string_helper.rs b/src/string_helper.rs new file mode 100644 index 0000000..e5af42b --- /dev/null +++ b/src/string_helper.rs @@ -0,0 +1,70 @@ +#[cfg(not(feature = "std"))] +use arraystring::{ArrayString, typenum::{U32, U160}}; + +#[cfg(feature = "std")] +pub(crate) type NameString = String; + +#[cfg(feature = "std")] +pub(crate) fn name_string_from_slice(s: &[u8]) -> NameString { + match String::from_utf8(s.to_vec()) { + Ok(s) => s, + Err(_) => "Unable to create string".to_string() + } +} + +#[cfg(not(feature = "std"))] +pub(crate) type NameString = ArrayString<U32>; + +#[cfg(not(feature = "std"))] +pub(crate) fn name_string_from_slice(s: &[u8]) -> NameString { + NameString::from_str_truncate(s) +} + +#[cfg(feature = "std")] +pub(crate) type MessageString = String; + +#[cfg(not(feature = "std"))] +pub(crate) type MessageString = ArrayString<U160>; + +#[cfg(feature = "std")] +pub(crate) fn message_string_from_slice(s: &[u8]) -> MessageString { + let mut split = s.split(|c| *c == 0); + + if let Some(s) = split.next() { + match String::from_utf8(s.to_vec()) { + Ok(s) => { + s.trim().to_string() + } + Err(_) => "Unable to create string".to_string() + } + } else { + "".to_string() + } +} + +#[cfg(not(feature = "std"))] +pub(crate) fn message_string_from_slice(s: &[u8]) -> MessageString { + MessageString::from_str_truncate(s) +} + +#[cfg(feature = "std")] +pub(crate) type PasswordString = String; + +// I believe that a password can only be 141 characters, +// but given it's close enough to 160, let's just round +// up so it's the same as MessageString. +#[cfg(not(feature = "std"))] +pub(crate) type PasswordString = ArrayString<U160>; + +#[cfg(feature = "std")] +pub(crate) fn password_string_from_slice(s: &[u8]) -> PasswordString { + match String::from_utf8(s.to_vec()) { + Ok(s) => s, + Err(_) => "".to_string() + } +} + +#[cfg(not(feature = "std"))] +pub(crate) fn password_string_from_slice(s: &[u8]) -> PasswordString { + PasswordString::from_str_truncate(s) +} |
