)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"46a4812f521dadd8de5090e241b4e6bc5be926de","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"22797f94_3124707a","updated":"2026-08-21 22:13:11.000000000","message":"I think this better aligns with what we want, specifcally \u0027nothing to encrypt\u0027 vs \u0027not encrypted\u0027. We would easily dig ourselves into a whole if we sent the cipher even though the object was \u0027not encrypted\u0027","commit_id":"c4f858e9596f1078f954173728e603b91bce991c"},{"author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"change_message_id":"4f11777e02464120b3ff4d45d01ac66b70a5ce69","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"2ad94f20_c0b465b4","updated":"2026-08-21 05:32:31.000000000","message":"this change would look a LOT better if we dragged in 999651: sq? s3api: Capture zero-byte SSE response behavior | https://review.opendev.org/c/openstack/swift/+/999651\n\nkeep the XXX aws s3 responds w/ encryption on PUT until we rebase 992372: s3api: Add x-amz-server-side-encryption header on PUT requests | https://review.opendev.org/c/openstack/swift/+/992372\n\n... but otherwise let this change fix the NEW zero-byte-PUT will reports accurate encryption policy *from the time of write* to all future reads\n\ni.e. start to distinguish between \"nothing to encrypt\" vs \"not encrypted\" so we can report \"encryption policy at the time of write\" even when there\u0027s \"nothing to encrypt\"","commit_id":"c4f858e9596f1078f954173728e603b91bce991c"}],"swift/common/middleware/crypto/decrypter.py":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"46a4812f521dadd8de5090e241b4e6bc5be926de","unresolved":false,"context_lines":[{"line_number":327,"context_line":"                \u0027X-Object-Sysmeta-Crypto-Body-Cipher\u0027) or \\"},{"line_number":328,"context_line":"                (put_crypto_meta or {}).get(\u0027cipher\u0027)"},{"line_number":329,"context_line":"        else:"},{"line_number":330,"context_line":"            put_crypto_meta \u003d post_crypto_meta \u003d cipher \u003d None"},{"line_number":331,"context_line":""},{"line_number":332,"context_line":"        try:"},{"line_number":333,"context_line":"            put_keys \u003d self.get_decryption_keys(req, put_crypto_meta)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c343864d_8a8b8a53","line":330,"range":{"start_line":330,"start_character":0,"end_line":330,"end_character":62},"updated":"2026-08-21 22:13:11.000000000","message":"I like this, it makes this much easier to read too","commit_id":"c4f858e9596f1078f954173728e603b91bce991c"}],"swift/common/middleware/crypto/encrypter.py":[{"author":{"_account_id":39146,"name":"Nathaniel Martes","display_name":"Nate Martes","email":"nmartes@NVIDIA.com","username":"nmartes"},"change_message_id":"46a4812f521dadd8de5090e241b4e6bc5be926de","unresolved":false,"context_lines":[{"line_number":243,"context_line":"        # metadata is generated only after a non-empty input is read, so this"},{"line_number":244,"context_line":"        # marker records the encryption policy for empty objects without a"},{"line_number":245,"context_line":"        # body key, IV, or other body-crypto overhead."},{"line_number":246,"context_line":"        req.headers[\u0027X-Object-Sysmeta-Crypto-Body-Cipher\u0027] \u003d \\"},{"line_number":247,"context_line":"            self.crypto.cipher"},{"line_number":248,"context_line":"        enc_input_proxy \u003d EncInputWrapper(self.crypto, keys, req, self.logger)"},{"line_number":249,"context_line":"        req.environ[\u0027wsgi.input\u0027] \u003d enc_input_proxy"}],"source_content_type":"text/x-python","patch_set":1,"id":"c799dbea_a5af0ecd","line":246,"range":{"start_line":246,"start_character":0,"end_line":246,"end_character":62},"updated":"2026-08-21 22:13:11.000000000","message":"So we are persisting it now... Hmmm I can get behind this I think.\nI think its much better than just checking if the object is empty and saying \"YEP ITS ENCRYPTED!\"","commit_id":"c4f858e9596f1078f954173728e603b91bce991c"}]}
