Merge pull request #1482 from 2weak2live/master

Fix python3 encoding problem in voucher decryption
This commit is contained in:
Apprentice Harper 2021-01-23 14:32:43 +00:00 committed by GitHub
commit 8d2d6627cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -815,18 +815,18 @@ class DrmIonVoucher(object):
addprottable(self.envelope) addprottable(self.envelope)
def decryptvoucher(self): def decryptvoucher(self):
shared = "PIDv3" + self.encalgorithm + self.enctransformation + self.hashalgorithm shared = ("PIDv3" + self.encalgorithm + self.enctransformation + self.hashalgorithm).encode('ASCII')
self.lockparams.sort() self.lockparams.sort()
for param in self.lockparams: for param in self.lockparams:
if param == "ACCOUNT_SECRET": if param == "ACCOUNT_SECRET":
shared += param + self.secret shared += param.encode('ASCII') + self.secret
elif param == "CLIENT_ID": elif param == "CLIENT_ID":
shared += param + self.dsn shared += param.encode('ASCII') + self.dsn
else: else:
_assert(False, "Unknown lock parameter: %s" % param) _assert(False, "Unknown lock parameter: %s" % param)
sharedsecret = obfuscate(shared.encode('ASCII'), self.version) sharedsecret = obfuscate(shared, self.version)
key = hmac.new(sharedsecret, b"PIDv3", digestmod=hashlib.sha256).digest() key = hmac.new(sharedsecret, b"PIDv3", digestmod=hashlib.sha256).digest()
aes = AES.new(key[:32], AES.MODE_CBC, self.cipheriv[:16]) aes = AES.new(key[:32], AES.MODE_CBC, self.cipheriv[:16])