Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2444)

Unified Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp

Issue 1194933003: Make CPDF_Object::GetString() a virtual method. (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
index 9f356a47483d2fb658433dadaa15e15547ad0102..128c561bada6b2be71b2837c8f06404c6a21e9fb 100644
--- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
+++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp
@@ -24,12 +24,12 @@ void CalcEncryptKey(CPDF_Dictionary* pEncrypt, const uint8_t* password, FX_DWORD
uint8_t md5[100];
CRYPT_MD5Start(md5);
CRYPT_MD5Update(md5, passcode, 32);
- CFX_ByteString okey = pEncrypt->GetString(FX_BSTRC("O"));
+ CFX_ByteString okey = pEncrypt->GetStringAt("O");
CRYPT_MD5Update(md5, (uint8_t*)okey.c_str(), okey.GetLength());
FX_DWORD perm = pEncrypt->GetInteger(FX_BSTRC("P"));
CRYPT_MD5Update(md5, (uint8_t*)&perm, 4);
if (pIdArray) {
- CFX_ByteString id = pIdArray->GetString(0);
+ CFX_ByteString id = pIdArray->GetStringAt(0);
CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
}
if (!bIgnoreMeta && revision >= 3 && !pEncrypt->GetInteger(FX_BSTRC("EncryptMetadata"), 1)) {
@@ -133,7 +133,7 @@ static FX_BOOL _LoadCryptInfo(CPDF_Dictionary* pEncryptDict, const CFX_ByteStrin
nKeyBits *= 8;
}
keylen = nKeyBits / 8;
- CFX_ByteString cipher_name = pDefFilter->GetString(FX_BSTRC("CFM"));
+ CFX_ByteString cipher_name = pDefFilter->GetStringAt("CFM");
if (cipher_name == FX_BSTRC("AESV2") || cipher_name == FX_BSTRC("AESV3")) {
cipher = FXCIPHER_AES;
}
@@ -156,8 +156,8 @@ FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict)
if (m_Version < 4) {
return _LoadCryptInfo(pEncryptDict, CFX_ByteString(), m_Cipher, m_KeyLen);
}
- CFX_ByteString stmf_name = pEncryptDict->GetString(FX_BSTRC("StmF"));
- CFX_ByteString strf_name = pEncryptDict->GetString(FX_BSTRC("StrF"));
+ CFX_ByteString stmf_name = pEncryptDict->GetStringAt("StmF");
+ CFX_ByteString strf_name = pEncryptDict->GetStringAt("StrF");
if (stmf_name != strf_name) {
return FALSE;
}
@@ -175,8 +175,8 @@ FX_BOOL CPDF_StandardSecurityHandler::LoadDict(CPDF_Dictionary* pEncryptDict, FX
m_Permissions = pEncryptDict->GetInteger(FX_BSTRC("P"), -1);
CFX_ByteString strf_name, stmf_name;
if (m_Version >= 4) {
- stmf_name = pEncryptDict->GetString(FX_BSTRC("StmF"));
- strf_name = pEncryptDict->GetString(FX_BSTRC("StrF"));
+ stmf_name = pEncryptDict->GetStringAt("StmF");
+ strf_name = pEncryptDict->GetStringAt("StrF");
if (stmf_name != strf_name) {
return FALSE;
}
@@ -291,11 +291,13 @@ void Revision6_Hash(const uint8_t* password, FX_DWORD size, const uint8_t* salt,
FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(const uint8_t* password, FX_DWORD size,
FX_BOOL bOwner, uint8_t* key)
{
- CFX_ByteString okey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("O")) : CFX_ByteString();
+ CFX_ByteString okey = m_pEncryptDict ?
+ m_pEncryptDict->GetStringAt("O") : CFX_ByteString();
if (okey.GetLength() < 48) {
return FALSE;
}
- CFX_ByteString ukey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("U")) : CFX_ByteString();
+ CFX_ByteString ukey = m_pEncryptDict ?
+ m_pEncryptDict->GetStringAt("U") : CFX_ByteString();
if (ukey.GetLength() < 48) {
return FALSE;
}
@@ -330,7 +332,8 @@ FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(const uint8_t* passwo
}
CRYPT_SHA256Finish(sha, digest);
}
- CFX_ByteString ekey = m_pEncryptDict ? m_pEncryptDict->GetString(bOwner ? FX_BSTRC("OE") : FX_BSTRC("UE")) : CFX_ByteString();
+ CFX_ByteString ekey = m_pEncryptDict ?
+ m_pEncryptDict->GetStringAt(bOwner ? "OE" : "UE") : CFX_ByteString();
if (ekey.GetLength() < 32) {
return FALSE;
}
@@ -342,7 +345,7 @@ FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(const uint8_t* passwo
CRYPT_AESDecrypt(aes, key, ekey, 32);
CRYPT_AESSetKey(aes, 16, key, 32, FALSE);
CRYPT_AESSetIV(aes, iv);
- CFX_ByteString perms = m_pEncryptDict->GetString(FX_BSTRC("Perms"));
+ CFX_ByteString perms = m_pEncryptDict->GetStringAt("Perms");
if (perms.IsEmpty()) {
return FALSE;
}
@@ -390,7 +393,8 @@ FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword(const uint8_t* password,
{
CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len, bIgnoreEncryptMeta,
m_pParser->GetIDArray());
- CFX_ByteString ukey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("U")) : CFX_ByteString();
+ CFX_ByteString ukey = m_pEncryptDict ?
+ m_pEncryptDict->GetStringAt("U") : CFX_ByteString();
if (ukey.GetLength() < 16) {
return FALSE;
}
@@ -418,7 +422,7 @@ FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword(const uint8_t* password,
CRYPT_MD5Update(md5, defpasscode, 32);
CPDF_Array* pIdArray = m_pParser->GetIDArray();
if (pIdArray) {
- CFX_ByteString id = pIdArray->GetString(0);
+ CFX_ByteString id = pIdArray->GetStringAt(0);
CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
}
CRYPT_MD5Finish(md5, ukeybuf);
@@ -435,7 +439,7 @@ CFX_ByteString CPDF_StandardSecurityHandler::GetUserPassword(const uint8_t* owne
}
CFX_ByteString CPDF_StandardSecurityHandler::GetUserPassword(const uint8_t* owner_pass, FX_DWORD pass_size, int32_t key_len)
{
- CFX_ByteString okey = m_pEncryptDict->GetString(FX_BSTRC("O"));
+ CFX_ByteString okey = m_pEncryptDict->GetStringAt("O");
uint8_t passcode[32];
FX_DWORD i;
for (i = 0; i < 32; i ++) {
@@ -565,7 +569,7 @@ void CPDF_StandardSecurityHandler::OnCreate(CPDF_Dictionary* pEncryptDict, CPDF_
CRYPT_MD5Start(md5);
CRYPT_MD5Update(md5, defpasscode, 32);
if (pIdArray) {
- CFX_ByteString id = pIdArray->GetString(0);
+ CFX_ByteString id = pIdArray->GetStringAt(0);
CRYPT_MD5Update(md5, (uint8_t*)id.c_str(), id.GetLength());
}
uint8_t digest[32];
@@ -600,7 +604,7 @@ void CPDF_StandardSecurityHandler::AES256_SetPassword(CPDF_Dictionary* pEncryptD
CRYPT_SHA1Update(sha, (uint8_t*)"hello", 5);
uint8_t digest[20];
CRYPT_SHA1Finish(sha, digest);
- CFX_ByteString ukey = pEncryptDict->GetString(FX_BSTRC("U"));
+ CFX_ByteString ukey = pEncryptDict->GetStringAt("U");
uint8_t digest1[48];
if (m_Revision >= 6) {
Revision6_Hash(password, size, digest, (bOwner ? (const uint8_t*)ukey : NULL), digest1);

Powered by Google App Engine
This is Rietveld 408576698