Skip to content

Commit 8f4e521

Browse files
authored
[PM-12423] Migrate Cipher Decryption to Use SDK (#209)
## 🎟️ Tracking https://bitwarden.atlassian.net/browse/PM-12423 <!-- Paste the link to the Jira or GitHub issue or otherwise describe / point to where this change is coming from. --> ## 📔 Objective Exposes cipher decryption so it can be used by the client. <!-- Describe what the purpose of this PR is, for example what bug you're fixing or new feature you're adding. --> ## ⏰ Reminders before review - Contributor guidelines followed - All formatters and local linters executed and passed - Written new unit and / or integration tests where applicable - Protected functional changes with optionality (feature flags) - Used internationalization (i18n) for all UI strings - CI builds passed - Communicated to DevOps any deployment requirements - Updated any necessary documentation (Confluence, contributing docs) or informed the documentation team ## 🦮 Reviewer guidelines <!-- Suggested interactions but feel free to use (or not) as you desire! --> - 👍 (`:+1:`) or similar for great changes - 📝 (`:memo:`) or ℹ️ (`:information_source:`) for notes or general info - ❓ (`:question:`) for questions - 🤔 (`:thinking:`) or 💭 (`:thought_balloon:`) for more open inquiry that's not quite a confirmed issue and could potentially benefit from discussion - 🎨 (`:art:`) for suggestions / improvements - ❌ (`:x:`) or ⚠️ (`:warning:`) for more significant problems or concerns needing attention - 🌱 (`:seedling:`) or ♻️ (`:recycle:`) for future improvements or indications of technical debt - ⛏ (`:pick:`) for minor or nitpick changes
1 parent 5cb4eb0 commit 8f4e521

File tree

14 files changed

+150
-0
lines changed

14 files changed

+150
-0
lines changed

crates/bitwarden-vault/src/cipher/attachment.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,16 @@ use bitwarden_crypto::{
44
};
55
use schemars::JsonSchema;
66
use serde::{Deserialize, Serialize};
7+
#[cfg(feature = "wasm")]
8+
use tsify_next::Tsify;
79

810
use super::Cipher;
911
use crate::VaultParseError;
1012

1113
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
1214
#[serde(rename_all = "camelCase", deny_unknown_fields)]
1315
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
16+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
1417
pub struct Attachment {
1518
pub id: Option<String>,
1619
pub url: Option<String>,
@@ -24,6 +27,7 @@ pub struct Attachment {
2427
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
2528
#[serde(rename_all = "camelCase", deny_unknown_fields)]
2629
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
30+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
2731
pub struct AttachmentView {
2832
pub id: Option<String>,
2933
pub url: Option<String>,

crates/bitwarden-vault/src/cipher/card.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ use bitwarden_core::key_management::{KeyIds, SymmetricKeyId};
33
use bitwarden_crypto::{CryptoError, Decryptable, EncString, Encryptable, KeyStoreContext};
44
use schemars::JsonSchema;
55
use serde::{Deserialize, Serialize};
6+
#[cfg(feature = "wasm")]
7+
use tsify_next::Tsify;
68

79
use crate::VaultParseError;
810

911
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
1012
#[serde(rename_all = "camelCase", deny_unknown_fields)]
1113
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
14+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
1215
pub struct Card {
1316
pub cardholder_name: Option<EncString>,
1417
pub exp_month: Option<EncString>,
@@ -21,6 +24,7 @@ pub struct Card {
2124
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
2225
#[serde(rename_all = "camelCase", deny_unknown_fields)]
2326
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
27+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
2428
pub struct CardView {
2529
pub cardholder_name: Option<String>,
2630
pub exp_month: Option<String>,

crates/bitwarden-vault/src/cipher/cipher.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,11 @@ use schemars::JsonSchema;
1111
use serde::{Deserialize, Serialize};
1212
use serde_repr::{Deserialize_repr, Serialize_repr};
1313
use thiserror::Error;
14+
#[cfg(feature = "wasm")]
15+
use tsify_next::Tsify;
1416
use uuid::Uuid;
17+
#[cfg(feature = "wasm")]
18+
use wasm_bindgen::prelude::wasm_bindgen;
1519

1620
use super::{
1721
attachment, card,
@@ -41,6 +45,7 @@ pub enum CipherError {
4145
#[derive(Clone, Copy, Serialize_repr, Deserialize_repr, Debug, JsonSchema, PartialEq)]
4246
#[repr(u8)]
4347
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
48+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
4449
pub enum CipherType {
4550
Login = 1,
4651
SecureNote = 2,
@@ -52,6 +57,7 @@ pub enum CipherType {
5257
#[derive(Clone, Copy, Serialize_repr, Deserialize_repr, Debug, JsonSchema, PartialEq)]
5358
#[repr(u8)]
5459
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
60+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
5561
pub enum CipherRepromptType {
5662
None = 0,
5763
Password = 1,
@@ -60,6 +66,7 @@ pub enum CipherRepromptType {
6066
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
6167
#[serde(rename_all = "camelCase", deny_unknown_fields)]
6268
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
69+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
6370
pub struct Cipher {
6471
pub id: Option<Uuid>,
6572
pub organization_id: Option<Uuid>,
@@ -100,6 +107,7 @@ pub struct Cipher {
100107
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
101108
#[serde(rename_all = "camelCase", deny_unknown_fields)]
102109
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
110+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
103111
pub struct CipherView {
104112
pub id: Option<Uuid>,
105113
pub organization_id: Option<Uuid>,
@@ -139,6 +147,7 @@ pub struct CipherView {
139147
#[derive(Serialize, Deserialize, Debug, JsonSchema, PartialEq)]
140148
#[serde(rename_all = "camelCase", deny_unknown_fields)]
141149
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
150+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
142151
pub enum CipherListViewType {
143152
Login(LoginListView),
144153
SecureNote,
@@ -150,6 +159,7 @@ pub enum CipherListViewType {
150159
#[derive(Serialize, Deserialize, Debug, JsonSchema, PartialEq)]
151160
#[serde(rename_all = "camelCase", deny_unknown_fields)]
152161
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
162+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
153163
pub struct CipherListView {
154164
pub id: Option<Uuid>,
155165
pub organization_id: Option<Uuid>,

crates/bitwarden-vault/src/cipher/cipher_permissions.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
use schemars::JsonSchema;
22
use serde::{Deserialize, Serialize};
3+
#[cfg(feature = "wasm")]
4+
use tsify_next::Tsify;
35

46
#[derive(Serialize, Copy, Deserialize, Debug, JsonSchema, Clone, PartialEq)]
57
#[serde(rename_all = "camelCase", deny_unknown_fields)]
68
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
9+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
710
pub struct CipherPermissions {
811
pub delete: bool,
912
pub restore: bool,

crates/bitwarden-vault/src/cipher/field.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,18 @@ use bitwarden_crypto::{CryptoError, Decryptable, EncString, Encryptable, KeyStor
77
use schemars::JsonSchema;
88
use serde::{Deserialize, Serialize};
99
use serde_repr::{Deserialize_repr, Serialize_repr};
10+
#[cfg(feature = "wasm")]
11+
use tsify_next::Tsify;
12+
#[cfg(feature = "wasm")]
13+
use wasm_bindgen::prelude::wasm_bindgen;
1014

1115
use super::linked_id::LinkedIdType;
1216
use crate::VaultParseError;
1317

1418
#[derive(Clone, Copy, Serialize_repr, Deserialize_repr, Debug, JsonSchema)]
1519
#[repr(u8)]
1620
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
21+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
1722
pub enum FieldType {
1823
Text = 0,
1924
Hidden = 1,
@@ -24,6 +29,7 @@ pub enum FieldType {
2429
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
2530
#[serde(rename_all = "camelCase", deny_unknown_fields)]
2631
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
32+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
2733
pub struct Field {
2834
name: Option<EncString>,
2935
value: Option<EncString>,
@@ -35,6 +41,7 @@ pub struct Field {
3541
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
3642
#[serde(rename_all = "camelCase", deny_unknown_fields)]
3743
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
44+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
3845
pub struct FieldView {
3946
pub name: Option<String>,
4047
pub value: Option<String>,

crates/bitwarden-vault/src/cipher/identity.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ use bitwarden_core::key_management::{KeyIds, SymmetricKeyId};
33
use bitwarden_crypto::{CryptoError, Decryptable, EncString, Encryptable, KeyStoreContext};
44
use schemars::JsonSchema;
55
use serde::{Deserialize, Serialize};
6+
#[cfg(feature = "wasm")]
7+
use tsify_next::Tsify;
68

79
use crate::VaultParseError;
810

911
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
1012
#[serde(rename_all = "camelCase", deny_unknown_fields)]
1113
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
14+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
1215
pub struct Identity {
1316
pub title: Option<EncString>,
1417
pub first_name: Option<EncString>,
@@ -33,6 +36,7 @@ pub struct Identity {
3336
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
3437
#[serde(rename_all = "camelCase", deny_unknown_fields)]
3538
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
39+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
3640
pub struct IdentityView {
3741
pub title: Option<String>,
3842
pub first_name: Option<String>,

crates/bitwarden-vault/src/cipher/linked_id.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,14 @@ use bitwarden_core::MissingFieldError;
22
use schemars::JsonSchema;
33
use serde::{Deserialize, Serialize};
44
use serde_repr::{Deserialize_repr, Serialize_repr};
5+
#[cfg(feature = "wasm")]
6+
use tsify_next::Tsify;
7+
#[cfg(feature = "wasm")]
8+
use wasm_bindgen::prelude::wasm_bindgen;
59

610
#[derive(Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Debug, JsonSchema)]
711
#[serde(untagged)]
12+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
813
pub enum LinkedIdType {
914
Login(LoginLinkedIdType),
1015
Card(CardLinkedIdType),
@@ -40,13 +45,15 @@ impl From<LinkedIdType> for u32 {
4045

4146
#[derive(Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr, Debug, JsonSchema)]
4247
#[repr(u16)]
48+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
4349
pub enum LoginLinkedIdType {
4450
Username = 100,
4551
Password = 101,
4652
}
4753

4854
#[derive(Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr, Debug, JsonSchema)]
4955
#[repr(u16)]
56+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
5057
pub enum CardLinkedIdType {
5158
CardholderName = 300,
5259
ExpMonth = 301,
@@ -58,6 +65,7 @@ pub enum CardLinkedIdType {
5865

5966
#[derive(Clone, Copy, PartialEq, Eq, Serialize_repr, Deserialize_repr, Debug, JsonSchema)]
6067
#[repr(u16)]
68+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
6169
pub enum IdentityLinkedIdType {
6270
Title = 400,
6371
MiddleName = 401,

crates/bitwarden-vault/src/cipher/local_data.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@ use bitwarden_core::key_management::{KeyIds, SymmetricKeyId};
22
use bitwarden_crypto::{CryptoError, Decryptable, Encryptable, KeyStoreContext};
33
use schemars::JsonSchema;
44
use serde::{Deserialize, Serialize};
5+
#[cfg(feature = "wasm")]
6+
use tsify_next::Tsify;
57

68
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
79
#[serde(rename_all = "camelCase", deny_unknown_fields)]
810
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
11+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
912
pub struct LocalData {
1013
last_used_date: Option<u32>,
1114
last_launched: Option<u32>,
@@ -14,6 +17,7 @@ pub struct LocalData {
1417
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
1518
#[serde(rename_all = "camelCase", deny_unknown_fields)]
1619
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
20+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
1721
pub struct LocalDataView {
1822
last_used_date: Option<u32>,
1923
last_launched: Option<u32>,

crates/bitwarden-vault/src/cipher/login.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@ use chrono::{DateTime, Utc};
99
use schemars::JsonSchema;
1010
use serde::{Deserialize, Serialize};
1111
use serde_repr::{Deserialize_repr, Serialize_repr};
12+
#[cfg(feature = "wasm")]
13+
use tsify_next::Tsify;
14+
#[cfg(feature = "wasm")]
15+
use wasm_bindgen::prelude::wasm_bindgen;
1216

1317
use crate::VaultParseError;
1418

1519
#[derive(Clone, Copy, Serialize_repr, Deserialize_repr, Debug, JsonSchema, PartialEq)]
1620
#[repr(u8)]
1721
#[serde(rename_all = "camelCase", deny_unknown_fields)]
1822
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
23+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
1924
pub enum UriMatchType {
2025
Domain = 0,
2126
Host = 1,
@@ -28,6 +33,7 @@ pub enum UriMatchType {
2833
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
2934
#[serde(rename_all = "camelCase", deny_unknown_fields)]
3035
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
36+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
3137
pub struct LoginUri {
3238
pub uri: Option<EncString>,
3339
pub r#match: Option<UriMatchType>,
@@ -37,6 +43,7 @@ pub struct LoginUri {
3743
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone, PartialEq)]
3844
#[serde(rename_all = "camelCase", deny_unknown_fields)]
3945
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
46+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
4047
pub struct LoginUriView {
4148
pub uri: Option<String>,
4249
pub r#match: Option<UriMatchType>,
@@ -74,6 +81,7 @@ impl LoginUriView {
7481
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
7582
#[serde(rename_all = "camelCase", deny_unknown_fields)]
7683
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
84+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
7785
pub struct Fido2Credential {
7886
pub credential_id: EncString,
7987
pub key_type: EncString,
@@ -93,6 +101,7 @@ pub struct Fido2Credential {
93101
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone, PartialEq)]
94102
#[serde(rename_all = "camelCase", deny_unknown_fields)]
95103
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
104+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
96105
pub struct Fido2CredentialListView {
97106
pub credential_id: String,
98107
pub rp_id: String,
@@ -104,6 +113,7 @@ pub struct Fido2CredentialListView {
104113
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
105114
#[serde(rename_all = "camelCase", deny_unknown_fields)]
106115
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
116+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
107117
pub struct Fido2CredentialView {
108118
pub credential_id: String,
109119
pub key_type: String,
@@ -148,6 +158,7 @@ pub struct Fido2CredentialFullView {
148158
#[derive(Serialize, Deserialize, Debug, Clone)]
149159
#[serde(rename_all = "camelCase", deny_unknown_fields)]
150160
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
161+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
151162
pub struct Fido2CredentialNewView {
152163
pub credential_id: String,
153164
pub key_type: String,
@@ -259,6 +270,7 @@ impl Decryptable<KeyIds, SymmetricKeyId, Fido2CredentialFullView> for Fido2Crede
259270
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
260271
#[serde(rename_all = "camelCase", deny_unknown_fields)]
261272
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
273+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
262274
pub struct Login {
263275
pub username: Option<EncString>,
264276
pub password: Option<EncString>,
@@ -274,6 +286,7 @@ pub struct Login {
274286
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone)]
275287
#[serde(rename_all = "camelCase", deny_unknown_fields)]
276288
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
289+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
277290
pub struct LoginView {
278291
pub username: Option<String>,
279292
pub password: Option<String>,
@@ -290,6 +303,7 @@ pub struct LoginView {
290303
#[derive(Serialize, Deserialize, Debug, JsonSchema, Clone, PartialEq)]
291304
#[serde(rename_all = "camelCase", deny_unknown_fields)]
292305
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
306+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
293307
pub struct LoginListView {
294308
pub fido2_credentials: Option<Vec<Fido2CredentialListView>>,
295309
pub has_fido2: bool,

crates/bitwarden-vault/src/cipher/secure_note.rs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,33 @@ use bitwarden_crypto::{CryptoError, Decryptable, Encryptable, KeyStoreContext};
77
use schemars::JsonSchema;
88
use serde::{Deserialize, Serialize};
99
use serde_repr::{Deserialize_repr, Serialize_repr};
10+
#[cfg(feature = "wasm")]
11+
use tsify_next::Tsify;
12+
#[cfg(feature = "wasm")]
13+
use wasm_bindgen::prelude::wasm_bindgen;
1014

1115
use crate::VaultParseError;
1216

1317
#[derive(Clone, Copy, Serialize_repr, Deserialize_repr, Debug, JsonSchema)]
1418
#[repr(u8)]
1519
#[cfg_attr(feature = "uniffi", derive(uniffi::Enum))]
20+
#[cfg_attr(feature = "wasm", wasm_bindgen)]
1621
pub enum SecureNoteType {
1722
Generic = 0,
1823
}
1924

2025
#[derive(Clone, Serialize, Deserialize, Debug, JsonSchema)]
2126
#[serde(rename_all = "camelCase", deny_unknown_fields)]
2227
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
28+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
2329
pub struct SecureNote {
2430
r#type: SecureNoteType,
2531
}
2632

2733
#[derive(Clone, Serialize, Deserialize, Debug, JsonSchema)]
2834
#[serde(rename_all = "camelCase", deny_unknown_fields)]
2935
#[cfg_attr(feature = "uniffi", derive(uniffi::Record))]
36+
#[cfg_attr(feature = "wasm", derive(Tsify), tsify(into_wasm_abi, from_wasm_abi))]
3037
pub struct SecureNoteView {
3138
pub r#type: SecureNoteType,
3239
}

0 commit comments

Comments
 (0)