@@ -105,13 +105,13 @@ createRSACapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipie
105105 return cdoc20::header::CreateRecipientRecord (builder,
106106 cdoc20::header::Capsule::recipients_RSAPublicKeyCapsule,
107107 capsule.Union (),
108- builder.CreateString (rcpt.label ),
108+ builder.CreateString (rcpt.getLabel ({}) ),
109109 builder.CreateVector (xor_key),
110110 cdoc20::header::FMKEncryptionMethod::XOR);
111111}
112112
113113static flatbuffers::Offset<cdoc20::header::RecipientRecord>
114- createRSAServerCapsule (flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipient& rcpt, const std::string& transaction_id, const std::vector<uint8_t >& xor_key)
114+ createRSAServerCapsule (flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipient& rcpt, const std::string& transaction_id, uint64_t expiry_time, const std::vector<uint8_t >& xor_key)
115115{
116116 auto rsaKeyServer = cdoc20::recipients::CreateRsaKeyDetails (builder,
117117 builder.CreateVector (rcpt.rcpt_key ));
@@ -123,7 +123,7 @@ createRSAServerCapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc::R
123123 return cdoc20::header::CreateRecipientRecord (builder,
124124 cdoc20::header::Capsule::recipients_KeyServerCapsule,
125125 capsule.Union (),
126- builder.CreateString (rcpt.label ),
126+ builder.CreateString (rcpt.getLabel ({{ " x-expiry-time " , std::to_string (expiry_time)}}) ),
127127 builder.CreateVector (xor_key),
128128 cdoc20::header::FMKEncryptionMethod::XOR);
129129}
@@ -138,13 +138,13 @@ createECCCapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipie
138138 return cdoc20::header::CreateRecipientRecord (builder,
139139 cdoc20::header::Capsule::recipients_ECCPublicKeyCapsule,
140140 capsule.Union (),
141- builder.CreateString (rcpt.label ),
141+ builder.CreateString (rcpt.getLabel ({}) ),
142142 builder.CreateVector (xor_key),
143143 cdoc20::header::FMKEncryptionMethod::XOR);
144144}
145145
146146static flatbuffers::Offset<cdoc20::header::RecipientRecord>
147- createECCServerCapsule (flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipient& rcpt, const std::string& transaction_id, const std::vector<uint8_t >& xor_key)
147+ createECCServerCapsule (flatbuffers::FlatBufferBuilder& builder, const libcdoc::Recipient& rcpt, const std::string& transaction_id, uint64_t expiry_time, const std::vector<uint8_t >& xor_key)
148148{
149149 auto eccKeyServer = cdoc20::recipients::CreateEccKeyDetails (builder,
150150 cdoc20::recipients::EllipticCurve::secp384r1,
@@ -157,7 +157,7 @@ createECCServerCapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc::R
157157 return cdoc20::header::CreateRecipientRecord (builder,
158158 cdoc20::header::Capsule::recipients_KeyServerCapsule,
159159 capsule.Union (),
160- builder.CreateString (rcpt.label ),
160+ builder.CreateString (rcpt.getLabel ({{ " x-expiry-time " , std::to_string (expiry_time)}}) ),
161161 builder.CreateVector (xor_key),
162162 cdoc20::header::FMKEncryptionMethod::XOR);
163163}
@@ -170,7 +170,7 @@ createSymmetricKeyCapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc
170170 return cdoc20::header::CreateRecipientRecord (builder,
171171 cdoc20::header::Capsule::recipients_SymmetricKeyCapsule,
172172 capsule.Union (),
173- builder.CreateString (rcpt.label ),
173+ builder.CreateString (rcpt.getLabel ({}) ),
174174 builder.CreateVector (xor_key),
175175 cdoc20::header::FMKEncryptionMethod::XOR);
176176}
@@ -186,7 +186,7 @@ createPasswordCapsule(flatbuffers::FlatBufferBuilder& builder, const libcdoc::Re
186186 return cdoc20::header::CreateRecipientRecord (builder,
187187 cdoc20::header::Capsule::recipients_PBKDF2Capsule,
188188 capsule.Union (),
189- builder.CreateString (rcpt.label ),
189+ builder.CreateString (rcpt.getLabel ({}) ),
190190 builder.CreateVector (xor_key),
191191 cdoc20::header::FMKEncryptionMethod::XOR);
192192}
@@ -272,7 +272,7 @@ CDoc2Writer::buildHeader(std::vector<uint8_t>& header, const std::vector<libcdoc
272272 return libcdoc::CONFIGURATION_ERROR;
273273 }
274274 libcdoc::NetworkBackend::CapsuleInfo cinfo;
275- int result = network->sendKey (cinfo, send_url, rcpt.rcpt_key , key_material, " RSA" );
275+ int result = network->sendKey (cinfo, send_url, rcpt.rcpt_key , key_material, " RSA" , rcpt. expiry_ts );
276276 if (result < 0 ) {
277277 setLastError (network->getLastErrorStr (result));
278278 LOG_ERROR (" {}" , last_error);
@@ -282,7 +282,7 @@ CDoc2Writer::buildHeader(std::vector<uint8_t>& header, const std::vector<libcdoc
282282 LOG_DBG (" Keyserver Id: {}" , rcpt.server_id );
283283 LOG_DBG (" Transaction Id: {}" , cinfo.transaction_id );
284284
285- auto record = createRSAServerCapsule (builder, rcpt, cinfo.transaction_id , xor_key);
285+ auto record = createRSAServerCapsule (builder, rcpt, cinfo.transaction_id , cinfo. expiry_time , xor_key);
286286 fb_rcpts.push_back (std::move (record));
287287 } else {
288288 auto record = createRSACapsule (builder, rcpt, key_material, xor_key);
@@ -307,7 +307,7 @@ CDoc2Writer::buildHeader(std::vector<uint8_t>& header, const std::vector<libcdoc
307307 return libcdoc::CONFIGURATION_ERROR;
308308 }
309309 libcdoc::NetworkBackend::CapsuleInfo cinfo;
310- int result = network->sendKey (cinfo, send_url, rcpt.rcpt_key , key_material, " ecc_secp384r1" );
310+ int result = network->sendKey (cinfo, send_url, rcpt.rcpt_key , key_material, " ecc_secp384r1" , rcpt. expiry_ts );
311311 if (result < 0 ) {
312312 setLastError (network->getLastErrorStr (result));
313313 LOG_ERROR (" {}" , last_error);
@@ -317,15 +317,15 @@ CDoc2Writer::buildHeader(std::vector<uint8_t>& header, const std::vector<libcdoc
317317 LOG_DBG (" Keyserver Id: {}" , rcpt.server_id );
318318 LOG_DBG (" Transaction Id: {}" , cinfo.transaction_id );
319319
320- auto record = createECCServerCapsule (builder, rcpt, cinfo.transaction_id , xor_key);
320+ auto record = createECCServerCapsule (builder, rcpt, cinfo.transaction_id , cinfo. expiry_time , xor_key);
321321 fb_rcpts.push_back (std::move (record));
322322 } else {
323323 auto record = createECCCapsule (builder, rcpt, key_material, xor_key);
324324 fb_rcpts.push_back (std::move (record));
325325 }
326326 }
327327 } else if (rcpt.isSymmetric ()) {
328- std::string info_str = libcdoc::CDoc2::getSaltForExpand (rcpt.label );
328+ std::string info_str = libcdoc::CDoc2::getSaltForExpand (rcpt.getLabel ({}) );
329329 std::vector<uint8_t > kek_pm (libcdoc::CDoc2::KEY_LEN);
330330 std::vector<uint8_t > salt;
331331 int64_t result = crypto->random (salt, libcdoc::CDoc2::KEY_LEN);
0 commit comments