diff --git a/src/fileutils.cpp b/src/fileutils.cpp
index 2ae1eee521487ec7b6c50f1281da4adc98c8476a..53a13ea4d1826b00e76a11861206ce5efe165650 100644
--- a/src/fileutils.cpp
+++ b/src/fileutils.cpp
@@ -378,7 +378,7 @@ loadFile(const std::string& path, const std::string& default_dir)
 
 void
 saveFile(const std::string& path,
-        const std::vector<uint8_t>& data,
+        const uint8_t* data, size_t data_size,
         mode_t UNUSED mode)
 {
     std::ofstream file = fileutils::ofstream(path, std::ios::trunc | std::ios::binary);
@@ -386,7 +386,7 @@ saveFile(const std::string& path,
         JAMI_ERR("Could not write data to %s", path.c_str());
         return;
     }
-    file.write((char*)data.data(), data.size());
+    file.write((char*)data, data_size);
 #ifndef _WIN32
     if (chmod(path.c_str(), mode) < 0)
         JAMI_WARN("fileutils::saveFile(): chmod() failed on '%s', %s", path.c_str(), strerror(errno));
diff --git a/src/fileutils.h b/src/fileutils.h
index 9fe5e82666f1f37746061ad35e73cc42b6f23b4e..9468b9f507978615f20a8d82362ed3555a72de11 100644
--- a/src/fileutils.h
+++ b/src/fileutils.h
@@ -108,7 +108,10 @@ namespace jami { namespace fileutils {
      * If path is relative, it is appended to default_dir.
      */
     std::vector<uint8_t> loadFile(const std::string& path, const std::string& default_dir = {});
-    void saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode=0644);
+    void saveFile(const std::string& path, const uint8_t* data, size_t data_size, mode_t mode=0644);
+    inline void saveFile(const std::string& path, const std::vector<uint8_t>& data, mode_t mode=0644) {
+        saveFile(path, data.data(), data.size(), mode);
+    }
 
     std::vector<uint8_t> readArchive(const std::string& path, const std::string& password = {});
     void writeArchive(const std::string& data, const std::string& path, const std::string& password = {});