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

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp

Issue 361553002: Remove "this==NULL" and adjust corresponding callers (Closed) Base URL: https://pdfium.googlesource.com/pdfium.git@master
Patch Set: change tab to spaces Created 6 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include <time.h> 7 #include <time.h>
8 #include "../../../include/fpdfapi/fpdf_parser.h" 8 #include "../../../include/fpdfapi/fpdf_parser.h"
9 #include "../../../include/fdrm/fx_crypt.h" 9 #include "../../../include/fdrm/fx_crypt.h"
10 const FX_BYTE defpasscode[32] = { 10 const FX_BYTE defpasscode[32] = {
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after
285 ++i; 285 ++i;
286 } 286 }
287 FX_Free(aes); 287 FX_Free(aes);
288 if (hash) { 288 if (hash) {
289 FXSYS_memcpy32(hash, input, 32); 289 FXSYS_memcpy32(hash, input, 32);
290 } 290 }
291 } 291 }
292 FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(FX_LPCBYTE password, FX_DWORD size, 292 FX_BOOL CPDF_StandardSecurityHandler::AES256_CheckPassword(FX_LPCBYTE password, FX_DWORD size,
293 FX_BOOL bOwner, FX_LPBYTE key) 293 FX_BOOL bOwner, FX_LPBYTE key)
294 { 294 {
295 CFX_ByteString okey = m_pEncryptDict->GetString(FX_BSTRC("O")); 295 CFX_ByteString okey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("O ")) : CFX_ByteString();
296 if (okey.GetLength() < 48) { 296 if (okey.GetLength() < 48) {
297 return FALSE; 297 return FALSE;
298 } 298 }
299 CFX_ByteString ukey = m_pEncryptDict->GetString(FX_BSTRC("U")); 299 CFX_ByteString ukey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("U ")) : CFX_ByteString();
300 if (ukey.GetLength() < 48) { 300 if (ukey.GetLength() < 48) {
301 return FALSE; 301 return FALSE;
302 } 302 }
303 FX_LPCBYTE pkey = bOwner ? (FX_LPCBYTE)okey : (FX_LPCBYTE)ukey; 303 FX_LPCBYTE pkey = bOwner ? (FX_LPCBYTE)okey : (FX_LPCBYTE)ukey;
304 FX_BYTE sha[128]; 304 FX_BYTE sha[128];
305 FX_BYTE digest[32]; 305 FX_BYTE digest[32];
306 if (m_Revision >= 6) { 306 if (m_Revision >= 6) {
307 Revision6_Hash(password, size, (FX_LPCBYTE)pkey + 32, (bOwner ? (FX_LPCB YTE)ukey : NULL), digest); 307 Revision6_Hash(password, size, (FX_LPCBYTE)pkey + 32, (bOwner ? (FX_LPCB YTE)ukey : NULL), digest);
308 } else { 308 } else {
309 CRYPT_SHA256Start(sha); 309 CRYPT_SHA256Start(sha);
(...skipping 14 matching lines...) Expand all
324 Revision6_Hash(password, size, (FX_LPCBYTE)pkey + 40, (bOwner ? (FX_LPCB YTE)ukey : NULL), digest); 324 Revision6_Hash(password, size, (FX_LPCBYTE)pkey + 40, (bOwner ? (FX_LPCB YTE)ukey : NULL), digest);
325 } else { 325 } else {
326 CRYPT_SHA256Start(sha); 326 CRYPT_SHA256Start(sha);
327 CRYPT_SHA256Update(sha, password, size); 327 CRYPT_SHA256Update(sha, password, size);
328 CRYPT_SHA256Update(sha, pkey + 40, 8); 328 CRYPT_SHA256Update(sha, pkey + 40, 8);
329 if (bOwner) { 329 if (bOwner) {
330 CRYPT_SHA256Update(sha, ukey, 48); 330 CRYPT_SHA256Update(sha, ukey, 48);
331 } 331 }
332 CRYPT_SHA256Finish(sha, digest); 332 CRYPT_SHA256Finish(sha, digest);
333 } 333 }
334 CFX_ByteString ekey = m_pEncryptDict->GetString(bOwner ? FX_BSTRC("OE") : FX _BSTRC("UE")); 334 CFX_ByteString ekey = m_pEncryptDict ? m_pEncryptDict->GetString(bOwner ? FX _BSTRC("OE") : FX_BSTRC("UE")) : CFX_ByteString();
335 if (ekey.GetLength() < 32) { 335 if (ekey.GetLength() < 32) {
336 return FALSE; 336 return FALSE;
337 } 337 }
338 FX_BYTE* aes = FX_Alloc(FX_BYTE, 2048); 338 FX_BYTE* aes = FX_Alloc(FX_BYTE, 2048);
339 CRYPT_AESSetKey(aes, 16, digest, 32, FALSE); 339 CRYPT_AESSetKey(aes, 16, digest, 32, FALSE);
340 FX_BYTE iv[16]; 340 FX_BYTE iv[16];
341 FXSYS_memset32(iv, 0, 16); 341 FXSYS_memset32(iv, 0, 16);
342 CRYPT_AESSetIV(aes, iv); 342 CRYPT_AESSetIV(aes, iv);
343 CRYPT_AESDecrypt(aes, key, ekey, 32); 343 CRYPT_AESDecrypt(aes, key, ekey, 32);
344 CRYPT_AESSetKey(aes, 16, key, 32, FALSE); 344 CRYPT_AESSetKey(aes, 16, key, 32, FALSE);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
384 if (bOwner) { 384 if (bOwner) {
385 return CheckOwnerPassword(password, size, key, key_len); 385 return CheckOwnerPassword(password, size, key, key_len);
386 } 386 }
387 return CheckUserPassword(password, size, FALSE, key, key_len) || CheckUserPa ssword(password, size, TRUE, key, key_len); 387 return CheckUserPassword(password, size, FALSE, key, key_len) || CheckUserPa ssword(password, size, TRUE, key, key_len);
388 } 388 }
389 FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword(FX_LPCBYTE password, FX_ DWORD pass_size, 389 FX_BOOL CPDF_StandardSecurityHandler::CheckUserPassword(FX_LPCBYTE password, FX_ DWORD pass_size,
390 FX_BOOL bIgnoreEncryptMeta, FX_LPBYTE key, FX_INT32 key_len) 390 FX_BOOL bIgnoreEncryptMeta, FX_LPBYTE key, FX_INT32 key_len)
391 { 391 {
392 CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len, bIgnoreEnc ryptMeta, 392 CalcEncryptKey(m_pEncryptDict, password, pass_size, key, key_len, bIgnoreEnc ryptMeta,
393 m_pParser->GetIDArray()); 393 m_pParser->GetIDArray());
394 CFX_ByteString ukey = m_pEncryptDict->GetString(FX_BSTRC("U")); 394 CFX_ByteString ukey = m_pEncryptDict ? m_pEncryptDict->GetString(FX_BSTRC("U ")) : CFX_ByteString();
395 if (ukey.GetLength() < 16) { 395 if (ukey.GetLength() < 16) {
396 return FALSE; 396 return FALSE;
397 } 397 }
398 FX_BYTE ukeybuf[32]; 398 FX_BYTE ukeybuf[32];
399 if (m_Revision == 2) { 399 if (m_Revision == 2) {
400 FXSYS_memcpy32(ukeybuf, defpasscode, 32); 400 FXSYS_memcpy32(ukeybuf, defpasscode, 32);
401 CRYPT_ArcFourCryptBlock(ukeybuf, 32, key, key_len); 401 CRYPT_ArcFourCryptBlock(ukeybuf, 32, key, key_len);
402 } else { 402 } else {
403 FX_BYTE test[32], tmpkey[32]; 403 FX_BYTE test[32], tmpkey[32];
404 FX_DWORD copy_len = sizeof(test); 404 FX_DWORD copy_len = sizeof(test);
(...skipping 543 matching lines...) Expand 10 before | Expand all | Expand 10 after
948 m_pAESContext = NULL; 948 m_pAESContext = NULL;
949 m_Cipher = FXCIPHER_NONE; 949 m_Cipher = FXCIPHER_NONE;
950 m_KeyLen = 0; 950 m_KeyLen = 0;
951 } 951 }
952 CPDF_StandardCryptoHandler::~CPDF_StandardCryptoHandler() 952 CPDF_StandardCryptoHandler::~CPDF_StandardCryptoHandler()
953 { 953 {
954 if (m_pAESContext) { 954 if (m_pAESContext) {
955 FX_Free(m_pAESContext); 955 FX_Free(m_pAESContext);
956 } 956 }
957 } 957 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698