Mercurial > hgrepos > Python > apps > py-cutils
comparison shasum.py @ 70:7844f5136214
Use "hmac.compare_digest()" where available
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Sat, 26 Feb 2022 17:48:20 +0100 |
| parents | a23371a8780f |
| children | 29fb33aa639a |
comparison
equal
deleted
inserted
replaced
| 69:a23371a8780f | 70:7844f5136214 |
|---|---|
| 25 import argparse | 25 import argparse |
| 26 import base64 | 26 import base64 |
| 27 import binascii | 27 import binascii |
| 28 import errno | 28 import errno |
| 29 import hashlib | 29 import hashlib |
| 30 try: | |
| 31 from hmac import compare_digest | |
| 32 except ImportError: | |
| 33 compare_digest = None | |
| 30 import io | 34 import io |
| 31 try: | 35 try: |
| 32 import mmap | 36 import mmap |
| 33 except ImportError: | 37 except ImportError: |
| 34 mmap = None | 38 mmap = None |
| 206 exd = base64.b64decode(expected_digest) | 210 exd = base64.b64decode(expected_digest) |
| 207 except TypeError: | 211 except TypeError: |
| 208 return False | 212 return False |
| 209 else: | 213 else: |
| 210 return False | 214 return False |
| 211 return given_digest == exd | 215 if compare_digest: |
| 216 return compare_digest(given_digest, exd) | |
| 217 else: | |
| 218 return given_digest == exd | |
| 212 | 219 |
| 213 | 220 |
| 214 def verify_digests_with_checklist(opts): | 221 def verify_digests_with_checklist(opts): |
| 215 dest = opts.dest or sys.stdout | 222 dest = opts.dest or sys.stdout |
| 216 exit_code = 0 | 223 exit_code = 0 |
