11use super :: { encrypt_partition_key, SealError , Sealed , Unsealed , MAX_TERMS_PER_INDEX } ;
22use crate :: {
33 encrypted_table:: { TableAttribute , TableEntry } ,
4+ traits:: PrimaryKeyParts ,
45 Searchable ,
56} ;
67use cipherstash_client:: {
@@ -54,22 +55,28 @@ impl<T> Sealer<T> {
5455 self ,
5556 cipher : & Encryption < C > ,
5657 term_length : usize , // TODO: SealError
57- ) -> Result < ( String , Vec < Sealed > ) , SealError >
58+ ) -> Result < ( PrimaryKeyParts , Vec < Sealed > ) , SealError >
5859 where
5960 C : Credentials < Token = ViturToken > ,
6061 T : Searchable ,
6162 {
6263 let mut pk = self . inner . partition_key ( ) ;
64+ let mut sk = self . inner . sort_key ( ) ;
6365
6466 if T :: is_partition_key_encrypted ( ) {
65- // FIXME
66- pk = encrypt_partition_key ( & self . inner . partition_key ( ) , cipher) . unwrap ( ) ;
67+ pk = encrypt_partition_key ( & pk, cipher) ?;
6768 }
6869
69- let sk = self . inner . sort_key ( ) ;
70+ if T :: is_sort_key_encrypted ( ) {
71+ sk = encrypt_partition_key ( & sk, cipher) ?;
72+ }
7073
71- let mut table_entry =
72- TableEntry :: new_with_attributes ( pk. clone ( ) , sk, None , self . unsealed . unprotected ( ) ) ;
74+ let mut table_entry = TableEntry :: new_with_attributes (
75+ pk. clone ( ) ,
76+ sk. clone ( ) ,
77+ None ,
78+ self . unsealed . unprotected ( ) ,
79+ ) ;
7380
7481 let protected = T :: protected_attributes ( )
7582 . iter ( )
@@ -91,8 +98,6 @@ impl<T> Sealer<T> {
9198 }
9299 } ) ;
93100
94- let sort_key = self . inner . sort_key ( ) ;
95-
96101 let protected_indexes = T :: protected_indexes ( ) ;
97102 let terms: Vec < ( & & str , Vec < u8 > ) > = protected_indexes
98103 . iter ( )
@@ -135,13 +140,13 @@ impl<T> Sealer<T> {
135140 . clone ( )
136141 . set_term ( hex:: encode ( term) )
137142 // TODO: HMAC the sort key, too (users#index_name#pk)
138- . set_sk ( format ! ( "{}#{}#{}" , & sort_key , index_name, i) ) ,
143+ . set_sk ( format ! ( "{}#{}#{}" , & sk , index_name, i) ) ,
139144 )
140145 } )
141146 . chain ( once ( Sealed ( table_entry. clone ( ) ) ) )
142147 . collect ( ) ;
143148
144- Ok ( ( pk , table_entries) )
149+ Ok ( ( PrimaryKeyParts { pk , sk } , table_entries) )
145150 }
146151
147152 #[ allow( dead_code) ]
0 commit comments