From 643658e21439a817a8ff86b907425e356a613317 Mon Sep 17 00:00:00 2001 From: Raul Metsma Date: Fri, 12 Dec 2025 14:49:51 +0200 Subject: [PATCH] Fix workflow order with CDoc1 Signed-off-by: Raul Metsma --- cdoc/CDoc1Writer.cpp | 13 ++++++------- cdoc/CDoc1Writer.h | 1 + cdoc/Utils.cpp | 6 ++---- cdoc/Utils.h | 2 +- 4 files changed, 10 insertions(+), 12 deletions(-) diff --git a/cdoc/CDoc1Writer.cpp b/cdoc/CDoc1Writer.cpp index 63fb9ac5..ed7c3430 100644 --- a/cdoc/CDoc1Writer.cpp +++ b/cdoc/CDoc1Writer.cpp @@ -56,7 +56,6 @@ struct CDoc1Writer::Private final: public XMLWriter std::string documentFormat = "ENCDOC-XML|1.1"; std::string &lastError; std::vector files; - std::vector rcpts; int64_t writeEncryptionProperties(bool use_ddoc); int64_t writeKeyInfo(bool use_ddoc, const std::vector &rcpts, const Crypto::Key& transportKey); @@ -233,7 +232,7 @@ CDoc1Writer::encrypt(libcdoc::MultiDataSource& src, const std::vectorrcpts = keys; + rcpts = keys; Crypto::Key transportKey = Crypto::generateKey(d->method); int n_components = src.getNumComponents(); bool use_ddoc = (n_components > 1) || (n_components == libcdoc::NOT_IMPLEMENTED); @@ -272,7 +271,7 @@ CDoc1Writer::encrypt(libcdoc::MultiDataSource& src, const std::vector(*dst, last_error); return libcdoc::OK; @@ -281,9 +280,9 @@ CDoc1Writer::beginEncryption() libcdoc::result_t CDoc1Writer::addRecipient(const libcdoc::Recipient& rcpt) { - if(!d) + if(d) return WORKFLOW_ERROR; - d->rcpts.push_back(rcpt); + rcpts.push_back(rcpt); return libcdoc::OK; } @@ -309,12 +308,12 @@ CDoc1Writer::writeData(const uint8_t *src, size_t size) libcdoc::result_t CDoc1Writer::finishEncryption() { - if(!d || d->rcpts.empty() || d->files.empty()) + if(!d || rcpts.empty() || d->files.empty()) return WORKFLOW_ERROR; bool use_ddoc = d->files.size() > 1; libcdoc::Crypto::Key transportKey = libcdoc::Crypto::generateKey(d->method); - RET_ERROR(d->writeKeyInfo(use_ddoc, d->rcpts, transportKey)); + RET_ERROR(d->writeKeyInfo(use_ddoc, rcpts, transportKey)); RET_ERROR(d->writeElement(Private::DENC, "CipherData", [&] { return d->writeBase64Element(Private::DENC, "CipherValue", [&](DataConsumer &dst) -> int64_t { EncryptionConsumer enc(dst, d->method, transportKey); diff --git a/cdoc/CDoc1Writer.h b/cdoc/CDoc1Writer.h index 9ba0ba9d..e5cf62c3 100644 --- a/cdoc/CDoc1Writer.h +++ b/cdoc/CDoc1Writer.h @@ -38,6 +38,7 @@ class CDoc1Writer final: public libcdoc::CDocWriter private: CDOC_DISABLE_COPY(CDoc1Writer) + std::vector rcpts; struct Private; std::unique_ptr d; }; diff --git a/cdoc/Utils.cpp b/cdoc/Utils.cpp index 7c1862e3..886035cb 100644 --- a/cdoc/Utils.cpp +++ b/cdoc/Utils.cpp @@ -23,8 +23,6 @@ #include "json/jwt.h" #include "json/picojson/picojson.h" -#define OPENSSL_SUPPRESS_DEPRECATED - #include #include @@ -60,9 +58,9 @@ getTime() #endif double -timeFromISO(std::string_view iso) +timeFromISO(const std::string& iso) { - std::istringstream in{std::string(iso.data(), iso.size())}; + std::istringstream in{iso}; std::tm t = {}; in >> std::get_time(&t, "%Y-%m-%dT%TZ"); return timegm(&t); diff --git a/cdoc/Utils.h b/cdoc/Utils.h index 72562351..a0283894 100644 --- a/cdoc/Utils.h +++ b/cdoc/Utils.h @@ -83,7 +83,7 @@ std::vector JsonToStringArray(std::string_view json); // Get time in seconds since the Epoch double getTime(); -double timeFromISO(std::string_view iso); +double timeFromISO(const std::string& iso); std::string timeToISO(double time); bool isValidUtf8 (std::string str);