)]}'
{"swift/common/middleware/s3api/s3request.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"928838e565201ef6a6e791494e834099b28f6190","unresolved":true,"context_lines":[{"line_number":146,"context_line":"        if content_length \u003d\u003d 0 and \\"},{"line_number":147,"context_line":"                self._hasher.hexdigest() !\u003d self._expected.lower():"},{"line_number":148,"context_line":"            self.close()"},{"line_number":149,"context_line":"            raise XAmzContentSHA256Mismatch("},{"line_number":150,"context_line":"                client_computed_content_s_h_a256\u003dself._expected,"},{"line_number":151,"context_line":"                s3_computed_content_s_h_a256\u003dself._hasher.hexdigest(),"},{"line_number":152,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":1,"id":"e55bd660_ce2199c1","line":149,"range":{"start_line":149,"start_character":18,"end_line":149,"end_character":43},"updated":"2025-02-20 10:47:53.000000000","message":"this does suggest the class is somewhat specific to sha256","commit_id":"b49941c9b872c22fdb4baf8c4922f1cf1ed13131"}],"test/unit/common/middleware/s3api/test_s3request.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"928838e565201ef6a6e791494e834099b28f6190","unresolved":true,"context_lines":[{"line_number":1462,"context_line":"        raw \u003d b\u0027123456789\u0027"},{"line_number":1463,"context_line":"        wrapped \u003d HashingInput("},{"line_number":1464,"context_line":"            BytesIO(raw), 9, lambda: md5(usedforsecurity\u003dFalse),"},{"line_number":1465,"context_line":"            md5(raw, usedforsecurity\u003dFalse).hexdigest())"},{"line_number":1466,"context_line":"        self.assertEqual(b\u00271234\u0027, wrapped.read(4))"},{"line_number":1467,"context_line":"        self.assertEqual(b\u002756\u0027, wrapped.read(2))"},{"line_number":1468,"context_line":"        # trying to read past the end gets us whatever\u0027s left"}],"source_content_type":"text/x-python","patch_set":1,"id":"9eb14f69_72c16416","side":"PARENT","line":1465,"updated":"2025-02-20 10:47:53.000000000","message":"curious, was it used for a variety of hashers at some point?","commit_id":"8b6abfb85d5986dec0333b03784f7a463c4cd5a6"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"7439ff9e17c3d65990240aef3af94a0001bd4142","unresolved":true,"context_lines":[{"line_number":1462,"context_line":"        raw \u003d b\u0027123456789\u0027"},{"line_number":1463,"context_line":"        wrapped \u003d HashingInput("},{"line_number":1464,"context_line":"            BytesIO(raw), 9, lambda: md5(usedforsecurity\u003dFalse),"},{"line_number":1465,"context_line":"            md5(raw, usedforsecurity\u003dFalse).hexdigest())"},{"line_number":1466,"context_line":"        self.assertEqual(b\u00271234\u0027, wrapped.read(4))"},{"line_number":1467,"context_line":"        self.assertEqual(b\u002756\u0027, wrapped.read(2))"},{"line_number":1468,"context_line":"        # trying to read past the end gets us whatever\u0027s left"}],"source_content_type":"text/x-python","patch_set":1,"id":"5b9e1053_a56e5dfc","side":"PARENT","line":1465,"in_reply_to":"9eb14f69_72c16416","updated":"2025-02-20 15:06:42.000000000","message":"Nope; see https://github.com/openstack/swift/commit/3a8f5dbf9c49fdf1cf2d0b7ba35b82f25f88e634\n\nI think I maybe thought at the time that AWS might shift demands in the future, but we\u0027ll deal with that if/when it comes up.","commit_id":"8b6abfb85d5986dec0333b03784f7a463c4cd5a6"}]}
