)]}'
{"keystone/common/config.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"631564283c34b09a7dda71799c45005291d5271f","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                        \u0027seconds). Changing this value in a live environment \u0027"},{"line_number":247,"context_line":"                        \u0027will have a different impact depending on which \u0027"},{"line_number":248,"context_line":"                        \u0027token provider you\\\u0027re using: with UUID, PKI, and \u0027"},{"line_number":249,"context_line":"                        \u0027PKIz tokens, the change will not affect previously \u0027"},{"line_number":250,"context_line":"                        \u0027generated tokens (only ones generated after the \u0027"},{"line_number":251,"context_line":"                        \u0027change). With Fernet tokens, the new value will \u0027"},{"line_number":252,"context_line":"                        \u0027take effect immediately for all tokens (meaning that \u0027"}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_d96b1f1c","line":249,"updated":"2015-03-06 23:01:23.000000000","message":"PKIZ","commit_id":"7a4e593dfbfa2c602c0ea8069261b28cc22d4843"}],"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":6460,"name":"Brad Topol","email":"btopol@us.ibm.com","username":"btopol"},"change_message_id":"ae6185c7cf2f8c92d4c34740545e2217820c8052","unresolved":false,"context_lines":[{"line_number":178,"context_line":"                    ciphertext, timestamp\u003dtime.time())"},{"line_number":179,"context_line":"                return \u0027%s-%s\u0027 % (checksummed, checksum)"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":"            def decrypt(self, ciphertext, ttl\u003dNone):"},{"line_number":182,"context_line":"                \"\"\"Removes obscurity to validate security.\"\"\""},{"line_number":183,"context_line":"                try:"},{"line_number":184,"context_line":"                    ciphertext, timestamp, checksum \u003d ciphertext.rsplit(\u0027-\u0027, 2)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9a80dd14_e69e0407","line":181,"updated":"2015-03-11 03:30:52.000000000","message":"Would be nice to have a comment regarding who is using ttl.  The fact that you initially missed having it in there implies it\u0027s a little subtle","commit_id":"67233eadfcf8692528975508c1969c0e49787165"}],"keystone/token/providers/fernet/core.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1436ead802b9ce184a0fd9962d2d99e0b07a27f3","unresolved":false,"context_lines":[{"line_number":83,"context_line":"            token_ref \u003d self._handle_mapped_tokens("},{"line_number":84,"context_line":"                auth_context, project_id, domain_id)"},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"        # although we accept expires_at as part of this method\u0027s signature, we"},{"line_number":87,"context_line":"        # don\u0027t encode the expiration in the token, and thus just pass the"},{"line_number":88,"context_line":"        # intended expiration back through to the client as part of token_data."},{"line_number":89,"context_line":"        # this will still give the client an indication of how long the token"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_78aebbe7","line":86,"updated":"2015-03-06 17:33:09.000000000","message":"I don\u0027t think this is true. The token now relies on a completely external process that probably should match up, but we can\u0027t really guarantee it. The only way I can think of to guarantee it is to encode in the key file an expiration and to respect that when looking through the keys.","commit_id":"2c69d8cc3af2f844044ad1fe96760b1d32505831"}],"keystone/token/providers/fernet/token_formatters.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1436ead802b9ce184a0fd9962d2d99e0b07a27f3","unresolved":false,"context_lines":[{"line_number":149,"context_line":"        \"\"\"Validate an unscoped token."},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"        :param token_string: a string representing the token"},{"line_number":152,"context_line":"        :return: a tuple contains the user_id and token_data"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        \"\"\""},{"line_number":155,"context_line":"        payload \u003d self.unpack(token_string)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_18c93fac","line":152,"updated":"2015-03-06 17:33:09.000000000","message":"Needs an update","commit_id":"2c69d8cc3af2f844044ad1fe96760b1d32505831"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1436ead802b9ce184a0fd9962d2d99e0b07a27f3","unresolved":false,"context_lines":[{"line_number":194,"context_line":"        \"\"\"Validate a F00 formatted token."},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"        :param token_string: a string representing the token"},{"line_number":197,"context_line":"        :return: a tuple contains the user_id, project_id and token_data"},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"        \"\"\""},{"line_number":200,"context_line":"        payload \u003d self.unpack(token_string)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_b8e2f32c","line":197,"updated":"2015-03-06 17:33:09.000000000","message":"Needs an update","commit_id":"2c69d8cc3af2f844044ad1fe96760b1d32505831"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"1436ead802b9ce184a0fd9962d2d99e0b07a27f3","unresolved":false,"context_lines":[{"line_number":251,"context_line":"        \"\"\"Validate a trust formatted token."},{"line_number":252,"context_line":""},{"line_number":253,"context_line":"        :param token_string: a string representing the token"},{"line_number":254,"context_line":"        :return: a tuple contains the user_id, project_id and token_data"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        \"\"\""},{"line_number":257,"context_line":"        payload \u003d self.unpack(token_string)"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_38f7e3f6","line":254,"updated":"2015-03-06 17:33:09.000000000","message":"Needs an update.","commit_id":"2c69d8cc3af2f844044ad1fe96760b1d32505831"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"631564283c34b09a7dda71799c45005291d5271f","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        \"\"\"Create a unscoped token."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        :param user_id: identifier of the user in the token request"},{"line_number":138,"context_line":"        :param issued_at_int: datetime of the token\u0027s creation"},{"line_number":139,"context_line":"        :param audit_ids: list of the token\u0027s audit IDs"},{"line_number":140,"context_line":"        :returns: a string representing the token"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_f903830d","line":138,"updated":"2015-03-06 23:01:23.000000000","message":"(unrelated) this parameter doesn\u0027t exist either.","commit_id":"7a4e593dfbfa2c602c0ea8069261b28cc22d4843"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1349e5b22a08043d11af438eb9e6aa216aaaa4f2","unresolved":false,"context_lines":[{"line_number":135,"context_line":"        \"\"\"Create a unscoped token."},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"        :param user_id: identifier of the user in the token request"},{"line_number":138,"context_line":"        :param issued_at_int: datetime of the token\u0027s creation"},{"line_number":139,"context_line":"        :param audit_ids: list of the token\u0027s audit IDs"},{"line_number":140,"context_line":"        :returns: a string representing the token"},{"line_number":141,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_9cb355e8","line":138,"in_reply_to":"9a80dd14_f903830d","updated":"2015-03-06 23:16:55.000000000","message":"https://review.openstack.org/162337","commit_id":"7a4e593dfbfa2c602c0ea8069261b28cc22d4843"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"631564283c34b09a7dda71799c45005291d5271f","unresolved":false,"context_lines":[{"line_number":159,"context_line":"        # Rebuild and retrieve token information from the token string"},{"line_number":160,"context_line":"        b_user_id \u003d payload[0]"},{"line_number":161,"context_line":"        issued_at_ts \u003d payload[1]"},{"line_number":162,"context_line":"        audit_ids \u003d payload[2]"},{"line_number":163,"context_line":""},{"line_number":164,"context_line":"        user_id \u003d self._convert_uuid_bytes_to_hex(b_user_id)"},{"line_number":165,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"9a80dd14_9c2355a6","line":162,"updated":"2015-03-06 23:01:23.000000000","message":"b_user_id, issued_at_ts, audit_ids \u003d payload ?","commit_id":"7a4e593dfbfa2c602c0ea8069261b28cc22d4843"}]}
