Skip to content

Commit 70ec162

Browse files
committed
Serializable Messages
1 parent b2996d5 commit 70ec162

3 files changed

Lines changed: 31 additions & 31 deletions

File tree

src/ids/identity_manager.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const REFRESH_MIN: Duration = Duration::from_secs(60);
2828
use deku::{DekuContainerWrite, DekuUpdate};
2929

3030
#[repr(C)]
31-
#[derive(Clone)]
31+
#[derive(Clone, Serialize, Deserialize)]
3232
pub enum MessageTarget {
3333
Token(Vec<u8>),
3434
Uuid(String),

src/ids/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::{fmt::Debug, ops::{Deref, DerefMut}};
33
use openssl::{bn::{BigNum, BigNumContext}, ec::{EcGroup, EcKey, EcPoint}, hash::MessageDigest, nid::Nid, pkey::{HasPublic, PKey, Private, Public}, sign::{Signer, Verifier}};
44
use plist::Value;
55
use rasn::{types::Integer, AsnType, Decode, Encode};
6-
use serde::{de::DeserializeOwned, Deserialize};
6+
use serde::{Deserialize, Serialize, de::DeserializeOwned};
77
use crate::{util::{bin_deserialize_opt_vec, encode_hex, plist_to_bin, ungzip}, PushError};
88
use num_bigint::{BigInt, Sign};
99

@@ -89,7 +89,7 @@ pub struct IDSRecvMessage {
8989
pub topic: &'static str,
9090
}
9191

92-
#[derive(Clone)]
92+
#[derive(Clone, Serialize, Deserialize)]
9393
pub struct CertifiedContext {
9494
pub version: u32,
9595
pub receipt: Vec<u8>,

src/imessage/messages.rs

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ const ZERO_NONCE: [u8; 16] = [
2727
];
2828
// conversation data, used to uniquely identify a conversation from a message
2929
#[repr(C)]
30-
#[derive(Clone)]
30+
#[derive(Clone, Serialize, Deserialize)]
3131
pub struct ConversationData {
3232
pub participants: Vec<String>,
3333
pub cv_name: Option<String>,
@@ -41,7 +41,7 @@ impl ConversationData {
4141
}
4242
}
4343

44-
#[derive(Clone, Copy, Default)]
44+
#[derive(Clone, Copy, Default, Serialize, Deserialize)]
4545
pub struct TextFlags {
4646
pub bold: bool,
4747
pub italic: bool,
@@ -91,7 +91,7 @@ impl TextFlags {
9191
}
9292
}
9393

94-
#[derive(Clone, Copy)]
94+
#[derive(Clone, Copy, Serialize, Deserialize)]
9595
pub enum TextEffect {
9696
Big = 5,
9797
Small = 11,
@@ -121,7 +121,7 @@ impl TryFrom<u32> for TextEffect {
121121
}
122122
}
123123

124-
#[derive(Clone, Copy)]
124+
#[derive(Clone, Copy, Serialize, Deserialize)]
125125
pub enum TextFormat {
126126
Flags(TextFlags),
127127
Effect(TextEffect),
@@ -158,7 +158,7 @@ impl Default for TextFormat {
158158
}
159159

160160
#[repr(C)]
161-
#[derive(Clone)]
161+
#[derive(Clone, Serialize, Deserialize)]
162162
pub enum MessagePart {
163163
Text(String, TextFormat),
164164
Attachment(Attachment),
@@ -167,15 +167,15 @@ pub enum MessagePart {
167167
}
168168

169169
#[repr(C)]
170-
#[derive(Clone)]
170+
#[derive(Clone, Serialize, Deserialize)]
171171
pub struct IndexedMessagePart {
172172
pub part: MessagePart,
173173
pub idx: Option<usize>,
174174
pub ext: Option<PartExtension>,
175175
}
176176

177177
#[repr(C)]
178-
#[derive(Clone)]
178+
#[derive(Clone, Serialize, Deserialize)]
179179
pub struct MessageParts(pub Vec<IndexedMessagePart>);
180180

181181
impl MessageParts {
@@ -599,7 +599,7 @@ impl MessageParts {
599599
}
600600

601601
#[repr(C)]
602-
#[derive(PartialEq, Clone)]
602+
#[derive(PartialEq, Clone, Serialize, Deserialize)]
603603
pub enum MessageType {
604604
IMessage,
605605
SMS {
@@ -735,15 +735,15 @@ impl Balloon {
735735
}
736736
}
737737

738-
#[derive(Clone)]
738+
#[derive(Clone, Serialize, Deserialize)]
739739
pub struct ScheduleMode {
740740
pub ms: u64,
741741
pub schedule: bool,
742742
}
743743

744744
// a "normal" imessage, containing multiple parts and text
745745
#[repr(C)]
746-
#[derive(Clone)]
746+
#[derive(Clone, Serialize, Deserialize)]
747747
pub struct NormalMessage {
748748
pub parts: MessageParts,
749749
pub effect: Option<String>,
@@ -759,7 +759,7 @@ pub struct NormalMessage {
759759
}
760760

761761
#[repr(C)]
762-
#[derive(Clone)]
762+
#[derive(Clone, Serialize, Deserialize)]
763763
pub struct LinkMeta {
764764
pub data: LPLinkMetadata,
765765
pub attachments: Vec<Vec<u8>>,
@@ -788,20 +788,20 @@ impl NormalMessage {
788788
}
789789

790790
#[repr(C)]
791-
#[derive(Clone)]
791+
#[derive(Clone, Serialize, Deserialize)]
792792
pub struct RenameMessage {
793793
pub new_name: String
794794
}
795795

796796
#[repr(C)]
797-
#[derive(Clone)]
797+
#[derive(Clone, Serialize, Deserialize)]
798798
pub struct ChangeParticipantMessage {
799799
pub new_participants: Vec<String>,
800800
pub group_version: u64
801801
}
802802

803803
#[repr(C)]
804-
#[derive(Clone)]
804+
#[derive(Clone, Serialize, Deserialize)]
805805
pub enum Reaction {
806806
Heart,
807807
Like,
@@ -904,7 +904,7 @@ impl PartExtension {
904904
}
905905

906906
#[repr(C)]
907-
#[derive(Clone)]
907+
#[derive(Clone, Serialize, Deserialize)]
908908
pub enum ReactMessageType {
909909
React {
910910
reaction: Reaction,
@@ -1008,7 +1008,7 @@ impl ReactMessageType {
10081008
}
10091009

10101010
#[repr(C)]
1011-
#[derive(Clone)]
1011+
#[derive(Clone, Serialize, Deserialize)]
10121012
pub struct ReactMessage {
10131013
pub to_uuid: String,
10141014
pub to_part: Option<u64>,
@@ -1018,7 +1018,7 @@ pub struct ReactMessage {
10181018
}
10191019

10201020
#[repr(C)]
1021-
#[derive(Clone)]
1021+
#[derive(Clone, Serialize, Deserialize)]
10221022
pub struct ErrorMessage {
10231023
pub for_uuid: String,
10241024
pub status: u64,
@@ -1045,14 +1045,14 @@ impl ReactMessage {
10451045
}
10461046

10471047
#[repr(C)]
1048-
#[derive(Clone)]
1048+
#[derive(Clone, Serialize, Deserialize)]
10491049
pub struct UnsendMessage {
10501050
pub tuuid: String,
10511051
pub edit_part: u64,
10521052
}
10531053

10541054
#[repr(C)]
1055-
#[derive(Clone)]
1055+
#[derive(Clone, Serialize, Deserialize)]
10561056
pub struct EditMessage {
10571057
pub tuuid: String,
10581058
pub edit_part: u64,
@@ -1444,39 +1444,39 @@ impl Attachment {
14441444

14451445
// file should be 570x570 png
14461446
#[repr(C)]
1447-
#[derive(Clone)]
1447+
#[derive(Clone, Serialize, Deserialize)]
14481448
pub struct IconChangeMessage {
14491449
pub file: Option<MMCSFile>,
14501450
pub group_version: u64,
14511451
}
14521452

14531453
#[repr(C)]
1454-
#[derive(Clone)]
1454+
#[derive(Clone, Serialize, Deserialize)]
14551455
pub struct UpdateExtensionMessage {
14561456
pub for_uuid: String,
14571457
pub ext: PartExtension,
14581458
}
14591459

1460-
#[derive(Clone)]
1460+
#[derive(Clone, Serialize, Deserialize)]
14611461
pub enum DeleteTarget {
14621462
Chat(OperatedChat),
14631463
Messages(Vec<String>)
14641464
}
14651465

1466-
#[derive(Clone)]
1466+
#[derive(Clone, Serialize, Deserialize)]
14671467
pub struct MoveToRecycleBinMessage {
14681468
pub target: DeleteTarget,
14691469
pub recoverable_delete_date: u64,
14701470
}
14711471

1472-
#[derive(Clone)]
1472+
#[derive(Clone, Serialize, Deserialize)]
14731473
pub struct PermanentDeleteMessage {
14741474
pub target: DeleteTarget,
14751475
pub is_scheduled: bool,
14761476
}
14771477

14781478

1479-
#[derive(Clone)]
1479+
#[derive(Clone, Serialize, Deserialize)]
14801480
pub struct UpdateProfileMessage {
14811481
pub profile: Option<ShareProfileMessage>,
14821482
pub share_contacts: bool,
@@ -1587,14 +1587,14 @@ impl SetTranscriptBackgroundMessage {
15871587
}
15881588
}
15891589

1590-
#[derive(Clone)]
1590+
#[derive(Clone, Serialize, Deserialize)]
15911591
pub struct TypingApp {
15921592
pub bundle_id: String,
15931593
pub icon: Vec<u8>,
15941594
}
15951595

15961596
#[repr(C)]
1597-
#[derive(Clone)]
1597+
#[derive(Clone, Serialize, Deserialize)]
15981598
pub enum Message {
15991599
Message(NormalMessage),
16001600
RenameMessage(RenameMessage),
@@ -1903,7 +1903,7 @@ impl From<MMCSFile> for RawMMCSBalloon {
19031903

19041904
// a message that can be sent to other iMessage users
19051905
#[repr(C)]
1906-
#[derive(Clone)]
1906+
#[derive(Clone, Serialize, Deserialize)]
19071907
pub struct MessageInst {
19081908
pub id: String,
19091909
pub sender: Option<String>,

0 commit comments

Comments
 (0)