@@ -53,7 +53,7 @@ pub fn insert_meta(conn: &SqliteConnection, input: &PathBuf) -> Result<(Vec<u8>)
53
53
54
54
let mut bag_info = hash:: BagInfo :: new ( ) ;
55
55
bag_info. set_name ( name. clone ( ) ) ;
56
- bag_info. set_stamp ( timestamp. clone ( ) ) ;
56
+ bag_info. set_timestamp ( timestamp. clone ( ) ) ;
57
57
let bbr_nonce = HMACSHA256 :: generate_key ( ) ;
58
58
let bbr_digest =
59
59
HMACSHA256 :: create_tag ( & bag_info. write_to_bytes ( ) . unwrap ( ) , & bbr_nonce) . to_vec ( ) ;
@@ -97,24 +97,59 @@ pub fn convert(input: PathBuf) -> Result<(), Box<dyn std::error::Error>> {
97
97
. load :: < topic:: Topic > ( & conn)
98
98
. expect ( "Error loading topics" ) ;
99
99
100
- let mut hmac_key = HMACSHA256 :: clone_key_from_slice ( bbr_digest. as_slice ( ) ) ;
100
+ let mut topic_nonce = HMACSHA256 :: clone_key_from_slice ( bbr_digest. as_slice ( ) ) ;
101
101
for topic_result in topic_results {
102
- let mut topic_format = hash:: TopicFormat :: new ( ) ;
103
- topic_format. set_serialization_type ( topic_result. serialization_type . clone ( ) ) ;
104
- topic_format. set_serialization_format ( topic_result. serialization_format . clone ( ) ) ;
105
- let tag = HMACSHA256 :: create_tag ( & topic_format. write_to_bytes ( ) . unwrap ( ) , & hmac_key) ;
102
+ println ! ( "Found topic {:?}" , & topic_result. name) ;
103
+ let mut topic_info = hash:: TopicInfo :: new ( ) ;
104
+ topic_info. set_serialization_type ( topic_result. serialization_type . clone ( ) ) ;
105
+ topic_info. set_serialization_format ( topic_result. serialization_format . clone ( ) ) ;
106
+ let topic_digest = HMACSHA256 :: clone_key_from_slice (
107
+ & HMACSHA256 :: create_tag ( & topic_info. write_to_bytes ( ) . unwrap ( ) , & topic_nonce) ) ;
106
108
107
109
let topic_form = topic:: TopicForm {
108
110
id : topic_result. id ,
109
- bbr_nonce : hmac_key . get_bytes ( ) . to_vec ( ) ,
110
- bbr_digest : tag . to_vec ( ) ,
111
+ bbr_nonce : topic_nonce . get_bytes ( ) . to_vec ( ) ,
112
+ bbr_digest : topic_digest . get_bytes ( ) . to_vec ( ) ,
111
113
} ;
112
114
// topic_form.save_changes(&conn)?;
113
115
diesel:: update ( & topic_form)
114
116
. set ( & topic_form)
115
117
. execute ( & conn) ?;
116
- println ! ( "Found topic {:?}" , & topic_result. name) ;
117
- hmac_key = HMACSHA256 :: clone_key_from_slice ( & tag) ;
118
+
119
+ use crate :: schema:: messages:: dsl:: topic_id;
120
+ let message_results = messages:: table
121
+ . filter ( topic_id. eq ( topic_result. id ) )
122
+ . load :: < message:: Message > ( & conn)
123
+ . expect ( "Error loading messages" ) ;
124
+
125
+ let mut message_nonce = HMACSHA256 :: clone_key_from_slice ( & topic_digest. get_bytes ( ) ) ;
126
+ for message_result in message_results {
127
+ println ! ( "Found message {:?}" , & message_result. id) ;
128
+ let mut message_info = hash:: MessageInfo :: new ( ) ;
129
+ message_info. set_timestamp ( message_result. timestamp . clone ( ) ) ;
130
+ let message_info = message_info. write_to_bytes ( ) . unwrap ( ) ;
131
+ // message_info.append(&message_result.data);
132
+ let message_digest = HMACSHA256 :: clone_key_from_slice (
133
+ & HMACSHA256 :: create_tag (
134
+ & message_info. as_slice ( ) ,
135
+ & message_nonce) ) ;
136
+
137
+ let topic_form = topic:: TopicForm {
138
+ id : message_result. id ,
139
+ bbr_nonce : message_nonce. get_bytes ( ) . to_vec ( ) ,
140
+ bbr_digest : message_digest. get_bytes ( ) . to_vec ( ) ,
141
+ } ;
142
+ // topic_form.save_changes(&conn)?;
143
+ diesel:: update ( & topic_form)
144
+ . set ( & topic_form)
145
+ . execute ( & conn) ?;
146
+ message_nonce = HMACSHA256 :: clone_key_from_slice ( & message_digest. get_bytes ( ) ) ;
147
+ }
148
+
149
+ let mut topic_meta = hash:: TopicMeta :: new ( ) ;
150
+ topic_meta. set_name ( topic_result. name . clone ( ) ) ;
151
+ topic_nonce = HMACSHA256 :: clone_key_from_slice (
152
+ & HMACSHA256 :: create_tag ( & topic_meta. write_to_bytes ( ) . unwrap ( ) , & topic_digest) ) ;
118
153
}
119
154
120
155
println ! ( "Done" ) ;
0 commit comments