| 480 | self.check_file_digest(name, data, hexdigest) |
| 481 | |
| 482 | def check_file_digest(self, name, data, hexdigest): |
| 483 | hexdigest = hexdigest.lower() |
| 484 | try: |
| 485 | hashlib.new(name) |
| 486 | except ValueError: |
| 487 | # skip, algorithm is blocked by security policy. |
| 488 | return |
| 489 | digests = [name] |
| 490 | digests.extend(self.constructors_to_test[name]) |
| 491 | |
| 492 | with tempfile.TemporaryFile() as f: |
| 493 | f.write(data) |
| 494 | |
| 495 | for digest in digests: |
| 496 | buf = io.BytesIO(data) |
| 497 | buf.seek(0) |
| 498 | self.assertEqual( |
| 499 | hashlib.file_digest(buf, digest).hexdigest(), hexdigest |
| 500 | ) |
| 501 | f.seek(0) |
| 502 | digestobj = hashlib.file_digest(f, digest) |
| 503 | self.assertEqual(digestobj.hexdigest(), hexdigest) |
| 504 | |
| 505 | def check_no_unicode(self, algorithm_name): |
| 506 | # Unicode objects are not allowed as input. |