diff --git a/calibre-plugin/libadobe.py b/calibre-plugin/libadobe.py index 0032aa2..8e264ad 100644 --- a/calibre-plugin/libadobe.py +++ b/calibre-plugin/libadobe.py @@ -217,8 +217,8 @@ def makeSerial(random): sha_out = hashlib.sha1(dataToHash.encode('latin-1')).hexdigest().lower() else: - import binascii - sha_out = binascii.hexlify(Random.get_random_bytes(20)).lower() + # SHA1 of a bunch of random bytes + sha_out = hashlib.sha1(Random.get_random_bytes(256)).hexdigest().lower() return sha_out diff --git a/tests/main.py b/tests/main.py index f8a88a9..4eee315 100755 --- a/tests/main.py +++ b/tests/main.py @@ -77,6 +77,10 @@ class TestAdobe(unittest.TestCase): self.assertEqual((len(libadobe.makeSerial(False))), 40, "SHA1 hash for device serial invalid (device-based)") self.assertEqual((len(libadobe.makeSerial(True))), 40, "SHA1 hash for device serial invalid (random)") self.assertEqual(libadobe.makeSerial(False), libadobe.makeSerial(False), "Two non-random serials not identical") + self.assertNotEqual(libadobe.makeSerial(True), libadobe.makeSerial(True), "Two random serials are identical ...") + + self.assertIsInstance(libadobe.makeSerial(True), str, "Serial must be a string, not bytes!") + self.assertIsInstance(libadobe.makeSerial(False), str, "Serial must be a string, not bytes!") def test_fingerprintGeneration(self): '''Check if fingerprint generation works'''