bitwarden_crypto/
uniffi_support.rs1use std::{num::NonZeroU32, str::FromStr};
2
3use crate::{CryptoError, EncString, SignedPublicKey, UnsignedSharedKey};
4
5uniffi::custom_type!(NonZeroU32, u32, {
6 remote,
7 try_lift: |val| {
8 NonZeroU32::new(val).ok_or(CryptoError::ZeroNumber.into())
9 },
10 lower: |obj| obj.get(),
11});
12
13uniffi::custom_type!(EncString, String, {
14 try_lift: |val| {
15 EncString::from_str(&val).map_err(|e: CryptoError| e.into())
16 },
17 lower: |obj| obj.to_string(),
18});
19
20uniffi::custom_type!(UnsignedSharedKey, String, {
21 try_lift: |val| {
22 UnsignedSharedKey::from_str(&val).map_err(|e: CryptoError| e.into())
23 },
24 lower: |obj| obj.to_string(),
25});
26
27uniffi::custom_type!(SignedPublicKey, String, {
28 try_lift: |val| {
29 val.parse().map_err(|e| {
30 CryptoError::EncodingError(e).into()
31 })
32 },
33 lower: |obj| obj.into(),
34});