(key, msg, digest)
| 255 | |
| 256 | |
| 257 | def _compute_digest_fallback(key, msg, digest): |
| 258 | digest_cons = _get_digest_constructor(digest) |
| 259 | inner = digest_cons() |
| 260 | outer = digest_cons() |
| 261 | blocksize = getattr(inner, 'block_size', 64) |
| 262 | if len(key) > blocksize: |
| 263 | key = digest_cons(key).digest() |
| 264 | key = key.ljust(blocksize, b'\0') |
| 265 | inner.update(key.translate(trans_36)) |
| 266 | outer.update(key.translate(trans_5C)) |
| 267 | inner.update(msg) |
| 268 | outer.update(inner.digest()) |
| 269 | return outer.digest() |