@@ -230,21 +230,16 @@ inline void append_f64_le(std::vector<uint8_t>& out, double v) {
230230}
231231} // anon
232232
233- // TODO: we need a better name.
233+ // TODO: find better name?
234234std::vector<uint8_t > EncryptTypedListValues (
235- const std::vector< TypedListValues> & elements,
235+ const TypedListValues& elements,
236236 const std::vector<uint8_t >& key) {
237237 std::vector<EncryptedValue> encrypted_elements;
238- if (elements.empty ()) {
239- return ConcatenateEncryptedValues (encrypted_elements);
240- }
241238
242- // Determine the concrete vector/element type from the first entry
243- std::visit ([&](const auto & first_vec) {
244- typedef std::decay_t <decltype (first_vec)> VecT;
239+ std::visit ([&](const auto & vec) {
240+ typedef std::decay_t <decltype (vec)> VecT;
245241 typedef typename VecT::value_type ElemT;
246242
247- // Serializer for a single element
248243 auto serialize = [&](const ElemT& elem) -> std::vector<uint8_t > {
249244 std::vector<uint8_t > serialized;
250245 if constexpr (std::is_same<ElemT, int32_t >::value) {
@@ -269,20 +264,12 @@ std::vector<uint8_t> EncryptTypedListValues(
269264 return serialized;
270265 };
271266
272- // Process all entries, assuming homogeneous type across elements
273- for (size_t i = 0 ; i < elements.size (); ++i) {
274- const TypedListValues& v = elements[i];
275- if (!std::holds_alternative<VecT>(v)) {
276- throw std::runtime_error (" EncryptTypedListValues: heterogeneous TypedListValues not supported" );
277- }
278- const VecT& vec = std::get<VecT>(v);
279- for (size_t j = 0 ; j < vec.size (); ++j) {
280- const ElemT& elem = vec[j];
281- std::vector<uint8_t > bytes = serialize (elem);
282- encrypted_elements.push_back (EncryptValue (bytes, key));
283- }
267+ for (size_t i = 0 ; i < vec.size (); ++i) {
268+ const ElemT& elem = vec[i];
269+ std::vector<uint8_t > bytes = serialize (elem);
270+ encrypted_elements.push_back (EncryptValue (bytes, key));
284271 }
285- }, elements. front () );
272+ }, elements);
286273
287274 return ConcatenateEncryptedValues (encrypted_elements);
288275}
@@ -433,7 +420,7 @@ TypedListValues DecryptTypedListValues(
433420}
434421
435422std::vector<uint8_t > EncryptTypedListValuesWithLevelBytes (
436- const std::vector< TypedListValues> & elements,
423+ const TypedListValues& elements,
437424 const std::vector<uint8_t >& level_bytes,
438425 const std::vector<uint8_t >& key) {
439426
@@ -463,7 +450,5 @@ std::pair<TypedListValues, std::vector<uint8_t> > DecryptTypedListValuesWithLeve
463450 TypedListValues values = DecryptTypedListValues (encrypted_values_blob, datatype, key);
464451 return std::make_pair (values, level_bytes);
465452}
466-
467-
468453
469454} // namespace dbps::value_encryption_utils
0 commit comments