summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/fpdfapi/edit/cpdf_creator.cpp8
-rw-r--r--core/fpdfapi/edit/cpdf_encryptor.cpp6
-rw-r--r--core/fpdfapi/edit/cpdf_flateencoder.h6
-rw-r--r--core/fpdfapi/parser/cpdf_crypto_handler.cpp20
-rw-r--r--core/fpdfapi/parser/cpdf_crypto_handler.h7
5 files changed, 21 insertions, 26 deletions
diff --git a/core/fpdfapi/edit/cpdf_creator.cpp b/core/fpdfapi/edit/cpdf_creator.cpp
index 8a9eb5493e..5e3f9ee592 100644
--- a/core/fpdfapi/edit/cpdf_creator.cpp
+++ b/core/fpdfapi/edit/cpdf_creator.cpp
@@ -21,6 +21,7 @@
#include "core/fpdfapi/parser/fpdf_parser_utility.h"
#include "core/fxcrt/fx_extension.h"
#include "core/fxcrt/fx_random.h"
+#include "third_party/base/span.h"
namespace {
@@ -164,8 +165,7 @@ bool CPDF_Creator::WriteStream(const CPDF_Object* pStream,
uint32_t objnum,
CPDF_CryptoHandler* pCrypto) {
CPDF_FlateEncoder encoder(pStream->AsStream(), pStream != m_pMetadata);
- CPDF_Encryptor encryptor(
- pCrypto, objnum, pdfium::make_span(encoder.GetData(), encoder.GetSize()));
+ CPDF_Encryptor encryptor(pCrypto, objnum, encoder.GetSpan());
if (static_cast<uint32_t>(encoder.GetDict()->GetIntegerFor("Length")) !=
encryptor.GetSpan().size()) {
encoder.CloneDict();
@@ -238,9 +238,7 @@ bool CPDF_Creator::WriteDirectObj(uint32_t objnum,
}
case CPDF_Object::STREAM: {
CPDF_FlateEncoder encoder(pObj->AsStream(), true);
- CPDF_Encryptor encryptor(
- GetCryptoHandler(), objnum,
- pdfium::make_span(encoder.GetData(), encoder.GetSize()));
+ CPDF_Encryptor encryptor(GetCryptoHandler(), objnum, encoder.GetSpan());
if (static_cast<uint32_t>(encoder.GetDict()->GetIntegerFor("Length")) !=
encryptor.GetSpan().size()) {
encoder.CloneDict();
diff --git a/core/fpdfapi/edit/cpdf_encryptor.cpp b/core/fpdfapi/edit/cpdf_encryptor.cpp
index fd969b8b2c..61976186d2 100644
--- a/core/fpdfapi/edit/cpdf_encryptor.cpp
+++ b/core/fpdfapi/edit/cpdf_encryptor.cpp
@@ -18,11 +18,9 @@ CPDF_Encryptor::CPDF_Encryptor(CPDF_CryptoHandler* pHandler,
return;
}
- uint32_t buf_size =
- pHandler->EncryptGetSize(objnum, 0, src_data.data(), src_data.size());
+ uint32_t buf_size = pHandler->EncryptGetSize(objnum, 0, src_data);
m_NewBuf.resize(buf_size);
- pHandler->EncryptContent(objnum, 0, src_data.data(), src_data.size(),
- m_NewBuf.data(),
+ pHandler->EncryptContent(objnum, 0, src_data, m_NewBuf.data(),
buf_size); // Updates |buf_size| with actual.
m_NewBuf.resize(buf_size);
m_Span = m_NewBuf;
diff --git a/core/fpdfapi/edit/cpdf_flateencoder.h b/core/fpdfapi/edit/cpdf_flateencoder.h
index b69b54d93b..05633f6814 100644
--- a/core/fpdfapi/edit/cpdf_flateencoder.h
+++ b/core/fpdfapi/edit/cpdf_flateencoder.h
@@ -14,6 +14,7 @@
#include "core/fxcrt/fx_memory.h"
#include "core/fxcrt/maybe_owned.h"
#include "core/fxcrt/retain_ptr.h"
+#include "third_party/base/span.h"
class CPDF_Stream;
@@ -28,8 +29,9 @@ class CPDF_FlateEncoder {
// Returns |m_pClonedDict| if it is valid. Otherwise returns |m_pDict|.
const CPDF_Dictionary* GetDict() const;
- uint32_t GetSize() const { return m_dwSize; }
- const uint8_t* GetData() const { return m_pData.Get(); }
+ pdfium::span<const uint8_t> GetSpan() const {
+ return pdfium::make_span(m_pData.Get(), m_dwSize);
+ }
private:
uint32_t m_dwSize;
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.cpp b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
index fa784668fa..f0bf1139fd 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.cpp
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.cpp
@@ -375,23 +375,21 @@ bool CPDF_CryptoHandler::DecryptStream(void* context,
bool CPDF_CryptoHandler::DecryptFinish(void* context, CFX_BinaryBuf& dest_buf) {
return CryptFinish(context, dest_buf, false);
}
-uint32_t CPDF_CryptoHandler::EncryptGetSize(uint32_t objnum,
- uint32_t version,
- const uint8_t* src_buf,
- uint32_t src_size) {
- if (m_Cipher == FXCIPHER_AES) {
- return src_size + 32;
- }
- return src_size;
+
+uint32_t CPDF_CryptoHandler::EncryptGetSize(
+ uint32_t objnum,
+ uint32_t version,
+ pdfium::span<const uint8_t> source) const {
+ return m_Cipher == FXCIPHER_AES ? source.size() + 32 : source.size();
}
bool CPDF_CryptoHandler::EncryptContent(uint32_t objnum,
uint32_t gennum,
- const uint8_t* src_buf,
- uint32_t src_size,
+ pdfium::span<const uint8_t> source,
uint8_t* dest_buf,
uint32_t& dest_size) {
- CryptBlock(true, objnum, gennum, src_buf, src_size, dest_buf, dest_size);
+ CryptBlock(true, objnum, gennum, source.data(), source.size(), dest_buf,
+ dest_size);
return true;
}
diff --git a/core/fpdfapi/parser/cpdf_crypto_handler.h b/core/fpdfapi/parser/cpdf_crypto_handler.h
index 1ca2130717..23dfe4aae1 100644
--- a/core/fpdfapi/parser/cpdf_crypto_handler.h
+++ b/core/fpdfapi/parser/cpdf_crypto_handler.h
@@ -15,6 +15,7 @@
#include "core/fxcrt/fx_string.h"
#include "core/fxcrt/fx_system.h"
#include "core/fxcrt/retain_ptr.h"
+#include "third_party/base/span.h"
class CPDF_Dictionary;
class CPDF_Object;
@@ -32,12 +33,10 @@ class CPDF_CryptoHandler {
uint32_t EncryptGetSize(uint32_t objnum,
uint32_t version,
- const uint8_t* src_buf,
- uint32_t src_size);
+ pdfium::span<const uint8_t> source) const;
bool EncryptContent(uint32_t objnum,
uint32_t version,
- const uint8_t* src_buf,
- uint32_t src_size,
+ pdfium::span<const uint8_t> source,
uint8_t* dest_buf,
uint32_t& dest_size);