Fix for decription key

This commit is contained in:
Aldo Bleeker 2022-02-06 20:09:52 +01:00
parent f4634b5eab
commit bfa40e4a69
1 changed files with 9 additions and 7 deletions

View File

@ -427,7 +427,7 @@ def _load_crypto_pycrypto():
return total
def decrypt(self, data):
return _PKCS1_v1_5.new(self._rsa).decrypt(data, 172)
return _PKCS1_v1_5.new(self._rsa).decrypt(data, b'')
return (ARC4, RSA, AES)
@ -1901,6 +1901,9 @@ class PDFDocument(object):
return
def verify_book_key(self, bookkey):
if len(bookkey) <= 16:
return False
if bookkey[-17] != '\x00' and bookkey[-17] != 0:
# Byte not null, invalid result
return False
@ -1985,12 +1988,11 @@ class PDFDocument(object):
bookkey = codecs.decode(bookkey.encode('utf-8'),'base64')
bookkey = rsa.decrypt(bookkey)
if len(bookkey) > 16:
if (self.verify_book_key(bookkey)):
bookkey = bookkey[-16:]
length = 16
else:
raise ADEPTError('error decrypting book session key')
if (self.verify_book_key(bookkey)):
bookkey = bookkey[-16:]
length = 16
else:
raise ADEPTError('error decrypting book session key')
ebx_V = int_value(param.get('V', 4))
ebx_type = int_value(param.get('EBX_ENCRYPTIONTYPE', 6))