)]}'
{"etc/proxy-server.conf-sample":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1b96991a75861cf71e97c146a22a80272a5533a1","unresolved":false,"context_lines":[{"line_number":772,"context_line":"# TODO - STOP SETTING THIS DEFAULT! This is only here while work"},{"line_number":773,"context_line":"# continues on the feature/crypto branch.  Later, this will be added"},{"line_number":774,"context_line":"# to the devstack proxy-config so that gate tests can pass."},{"line_number":775,"context_line":"encryption_root_secret \u003d dontEverUseThisIn_PRODUCTION_xxxxxxxxxxxxxxx"},{"line_number":776,"context_line":""},{"line_number":777,"context_line":"[filter:encrypter]"},{"line_number":778,"context_line":"use \u003d egg:swift#encrypter"}],"source_content_type":"application/octet-stream","patch_set":5,"id":"9abb7d3a_e4a960e1","line":775,"updated":"2016-05-27 11:27:02.000000000","message":"lol - perhaps you could emphasize that this value should be changed :)","commit_id":"5ca67b8d262f1051149022e63d9897bc83beb266"}],"swift/common/middleware/keymaster.py":[{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"1b96991a75861cf71e97c146a22a80272a5533a1","unresolved":false,"context_lines":[{"line_number":180,"context_line":"                \u0027encryption_root_secret option in proxy-server.conf must be \u0027"},{"line_number":181,"context_line":"                \u0027at least 44 characters\u0027)"},{"line_number":182,"context_line":"        try:"},{"line_number":183,"context_line":"            self.root_secret \u003d self.root_secret.decode(\u0027utf-8\u0027).encode(\u0027utf-8\u0027)"},{"line_number":184,"context_line":"        except UnicodeError:"},{"line_number":185,"context_line":"            raise ValueError("},{"line_number":186,"context_line":"                \u0027encryption_root_secret option in proxy-server.conf must be \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9abb7d3a_e2a02ba8","line":183,"updated":"2016-05-27 11:27:02.000000000","message":"This breaks if self.root_secret is unicode.\n\nThe goal here was to ensure that the root_secret in conf can always be encoded into the same bytes whether it\u0027s a string or unicode.\n\nI\u0027m now thinking we should just insist on base64, which is the recommended form of key encoding and why we have a min length of 44.","commit_id":"5ca67b8d262f1051149022e63d9897bc83beb266"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"329418692f5f430d9f0e9109c28cd034838c9a90","unresolved":false,"context_lines":[{"line_number":178,"context_line":"        try:"},{"line_number":179,"context_line":"            self.root_secret \u003d base64.b64decode(self.root_secret)"},{"line_number":180,"context_line":"            if len(self.root_secret) \u003c 32:"},{"line_number":181,"context_line":"                raise ValueError"},{"line_number":182,"context_line":"        except (TypeError, ValueError):"},{"line_number":183,"context_line":"            raise ValueError("},{"line_number":184,"context_line":"                \u0027encryption_root_secret option in proxy-server.conf must be \u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_c5651ae2","line":181,"range":{"start_line":181,"start_character":22,"end_line":181,"end_character":32},"updated":"2016-05-27 19:29:12.000000000","message":"I was kinda expecting ValueError(), but w/e","commit_id":"ee86f564e4a047d4e263ab32ed53ef4048f782af"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"329418692f5f430d9f0e9109c28cd034838c9a90","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            self.root_secret \u003d base64.b64decode(self.root_secret)"},{"line_number":180,"context_line":"            if len(self.root_secret) \u003c 32:"},{"line_number":181,"context_line":"                raise ValueError"},{"line_number":182,"context_line":"        except (TypeError, ValueError):"},{"line_number":183,"context_line":"            raise ValueError("},{"line_number":184,"context_line":"                \u0027encryption_root_secret option in proxy-server.conf must be \u0027"},{"line_number":185,"context_line":"                \u0027a base64 encoding of at least 32 raw bytes\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_05b7223a","line":182,"range":{"start_line":182,"start_character":16,"end_line":182,"end_character":25},"updated":"2016-05-27 19:29:12.000000000","message":"Couldn\u0027t we avoid the TypeError possibility by defaulting to \u0027\u0027 instead of None?","commit_id":"ee86f564e4a047d4e263ab32ed53ef4048f782af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"880df067e4b4df76d889fff51e904cb6c4ea83cd","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            self.root_secret \u003d base64.b64decode(self.root_secret)"},{"line_number":180,"context_line":"            if len(self.root_secret) \u003c 32:"},{"line_number":181,"context_line":"                raise ValueError"},{"line_number":182,"context_line":"        except (TypeError, ValueError):"},{"line_number":183,"context_line":"            raise ValueError("},{"line_number":184,"context_line":"                \u0027encryption_root_secret option in proxy-server.conf must be \u0027"},{"line_number":185,"context_line":"                \u0027a base64 encoding of at least 32 raw bytes\u0027)"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_dffe2bad","line":182,"range":{"start_line":182,"start_character":16,"end_line":182,"end_character":25},"in_reply_to":"9abb7d3a_05b7223a","updated":"2016-05-31 09:46:29.000000000","message":"b64decode raises a TypeError for incorrectly padded strings as well as non-string types.\n\nhttps://docs.python.org/2/library/base64.html#base64.b64decode","commit_id":"ee86f564e4a047d4e263ab32ed53ef4048f782af"}],"test/functional/__init__.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"329418692f5f430d9f0e9109c28cd034838c9a90","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        \u0027account_autocreate\u0027: \u0027true\u0027,"},{"line_number":363,"context_line":"        \u0027allow_versions\u0027: \u0027True\u0027,"},{"line_number":364,"context_line":"        \u0027encryption_root_secret\u0027:"},{"line_number":365,"context_line":"            \u0027ZG9udEV2ZXJVc2VUaGlzSW5fUFJPRFVDVElPTl94eHh4eHh4eHh4eHh4eHg\u003d\u0027,"},{"line_number":366,"context_line":"        # Below are values used by the functional test framework, as well as"},{"line_number":367,"context_line":"        # by the various in-process swift servers"},{"line_number":368,"context_line":"        \u0027auth_host\u0027: \u0027127.0.0.1\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_655eeeea","line":365,"updated":"2016-05-27 19:29:12.000000000","message":"Needs comment?\n\n // chosen by 136 fair dice rolls.\n // guaranteed to be random.\n\n:P","commit_id":"ee86f564e4a047d4e263ab32ed53ef4048f782af"},{"author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"change_message_id":"880df067e4b4df76d889fff51e904cb6c4ea83cd","unresolved":false,"context_lines":[{"line_number":362,"context_line":"        \u0027account_autocreate\u0027: \u0027true\u0027,"},{"line_number":363,"context_line":"        \u0027allow_versions\u0027: \u0027True\u0027,"},{"line_number":364,"context_line":"        \u0027encryption_root_secret\u0027:"},{"line_number":365,"context_line":"            \u0027ZG9udEV2ZXJVc2VUaGlzSW5fUFJPRFVDVElPTl94eHh4eHh4eHh4eHh4eHg\u003d\u0027,"},{"line_number":366,"context_line":"        # Below are values used by the functional test framework, as well as"},{"line_number":367,"context_line":"        # by the various in-process swift servers"},{"line_number":368,"context_line":"        \u0027auth_host\u0027: \u0027127.0.0.1\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"9abb7d3a_fffa0f42","line":365,"in_reply_to":"9abb7d3a_655eeeea","updated":"2016-05-31 09:46:29.000000000","message":"Fair point. Actually, on reflection, this should be tagged with a TODO to remove before proposing to master. It\u0027s only necessary while encryption is in the sample pipeline.","commit_id":"ee86f564e4a047d4e263ab32ed53ef4048f782af"}]}
