)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Handle Compressed tokens"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Allows for a new form of token.  If the token startes with the string"},{"line_number":10,"context_line":"\"{cmsz}\"  it is  urlsafe-base64 unencoded, decompressed using zlib,"},{"line_number":11,"context_line":"and then the DER form of the Token is verified using CMS."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"AAAAUH%2F9fOw%3D","line":9,"updated":"2014-02-06 16:01:09.000000000","message":"s/startes/starts/","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2b6d004f9574321733d3c5d1d622cd3c2816f2d9","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Generate and validate Compressed Tokens"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Uses the CMS -compress falg when generating tokens"},{"line_number":10,"context_line":"Handles validation of both compressed and uncompressed tokens."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Partial-Bug: #1255321"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"AAAAUX%2F%2FdHQ%3D","line":9,"updated":"2014-02-13 03:42:28.000000000","message":"flag","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Allows for a new form of document signature."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"pkiz_sign will take data and encode it in a string that starts with"},{"line_number":12,"context_line":"the substring  \"PKIZ_\".  This prfix indicates that  the data hase been:"},{"line_number":13,"context_line":"1) Signed via PKI in  Crypto Message Syntax (CMS) in binary (DER) format"},{"line_number":14,"context_line":"2) Compressed using zlib (comparable to gzip)"},{"line_number":15,"context_line":"3) urlsafe-base64 unencoded"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"AAAAXH%2F%2FQbA%3D","line":12,"updated":"2014-04-23 00:08:45.000000000","message":"change \"prfix\" to \"prefix\"\n\nchange \"hase\" to \"has\"","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":10,"context_line":""},{"line_number":11,"context_line":"pkiz_sign will take data and encode it in a string that starts with"},{"line_number":12,"context_line":"the substring  \"PKIZ_\".  This prfix indicates that  the data hase been:"},{"line_number":13,"context_line":"1) Signed via PKI in  Crypto Message Syntax (CMS) in binary (DER) format"},{"line_number":14,"context_line":"2) Compressed using zlib (comparable to gzip)"},{"line_number":15,"context_line":"3) urlsafe-base64 unencoded"},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"AAAAXH%2F%2FQa4%3D","line":13,"updated":"2014-04-23 00:08:45.000000000","message":"remove extra space after first in.","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":17,"context_line":"This process is reversed to validate the data."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"middleware/auth_token.py will be capable of validating Keystone"},{"line_number":20,"context_line":"tokens that are marshalled in the new format.  THe current existing"},{"line_number":21,"context_line":"\"PKI\" tokens will continue to be identified with \"MII\", issued by"},{"line_number":22,"context_line":"default, and validated as well.  It will require corresponding changes"},{"line_number":23,"context_line":"on the Keystone server to issue the new token format."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"AAAAXH%2F%2FQak%3D","line":20,"updated":"2014-04-23 00:08:45.000000000","message":"change \"THe\" to \"The\"","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":20,"context_line":"tokens that are marshalled in the new format.  THe current existing"},{"line_number":21,"context_line":"\"PKI\" tokens will continue to be identified with \"MII\", issued by"},{"line_number":22,"context_line":"default, and validated as well.  It will require corresponding changes"},{"line_number":23,"context_line":"on the Keystone server to issue the new token format."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"examples/pki/gen_cmsz.py, A seperate script for generating the sample"},{"line_number":26,"context_line":"data used in the unit tests, also serves as an example of how to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":29,"id":"AAAAXH%2F%2FQaQ%3D","line":23,"updated":"2014-04-23 00:08:45.000000000","message":"Put up a patch set with these changes so I can try it out.","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":9,"context_line":"Allows for a new form of document signature."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"pkiz_sign will take data and encode it in a string that starts with"},{"line_number":12,"context_line":"the substring  \"PKIZ_\".  This prefix indicates that  the data hase been:"},{"line_number":13,"context_line":"1) Signed via PKI in Crypto Message Syntax (CMS) in binary (DER) format"},{"line_number":14,"context_line":"2) Compressed using zlib (comparable to gzip)"},{"line_number":15,"context_line":"3) urlsafe-base64 decoded"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"bad4c104_0fdddc70","line":12,"updated":"2014-04-29 19:22:53.000000000","message":"* extra space after that\n* has instead of hase","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":19,"context_line":"middleware/auth_token.py will be capable of validating Keystone"},{"line_number":20,"context_line":"tokens that are marshalled in the new format.  The current existing"},{"line_number":21,"context_line":"\"PKI\" tokens will continue to be identified with \"MII\", issued by"},{"line_number":22,"context_line":"default, and validated as well.  It will require corresponding changes"},{"line_number":23,"context_line":"on the Keystone server to issue the new token format."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"examples/pki/gen_cmsz.py, A separate script for generating the sample"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"bad4c104_efcfd8ae","line":22,"updated":"2014-04-29 19:22:53.000000000","message":"Is there already a review you can link to?","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":22,"context_line":"default, and validated as well.  It will require corresponding changes"},{"line_number":23,"context_line":"on the Keystone server to issue the new token format."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"examples/pki/gen_cmsz.py, A separate script for generating the sample"},{"line_number":26,"context_line":"data used in the unit tests, also serves as an example of how to"},{"line_number":27,"context_line":"call the API from python code."},{"line_number":28,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"bad4c104_6f52e8de","line":25,"updated":"2014-04-29 19:22:53.000000000","message":"I think the \u0027A\u0027 should be an \u0027a\u0027 since it\u0027s not the beginning of a sentence","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"examples/pki/gen_cmsz.py, A separate script for generating the sample"},{"line_number":26,"context_line":"data used in the unit tests, also serves as an example of how to"},{"line_number":27,"context_line":"call the API from python code."},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"Some of the sample data for the old tests had to be regenerated. A"},{"line_number":30,"context_line":"stray comma in one of the JSON files made for non-parsing JSON."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":33,"id":"bad4c104_8f5e4ce8","line":27,"updated":"2014-04-29 19:22:53.000000000","message":"Python","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"}],"examples/pki/cms/auth_token_revoked.pkiz":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":1,"context_line":"PKIZ_eJyVVtly4joQfddX3PfU1HjBBB7mwRtegkRsjBe9IRu8yUBYbOyvv7JJMsxkMveGKqpsSW51n9Onu799Yz9FNyz0jwqX_cs3AC3L5JvIftpjK6tjJDuxumdrraaqysRRZUe_qp5sKunqqKVQNQq2vnEMdfliLC0iAs3RTXnNFpOVnqahu2ntLBIQjUWYL3Ll0dq59VrwL1axT9ke3ZjKIa78rn-3CqsBsEvPUNPP0MtWsNDH0HPGUEvWVt6kVkXL4eBOOUUBomtjesKG3w57O5eSanYBiWqNLfOUrwOH3SjnieFfokDiQoGWcGmdLNXuD-bE8AdjiWnzeNkbd2ksoBasQ4VbB9PBRbLzT0TtN6WMBKvfDA5rV2vHT-eqnMeC3yYVLQBeoSwxZicixH3MpI-TVG5DBHpJTLQlBr2sb3iQcLjZv2BTqdfMaNxaY2DNzo9WNStJQC--b8Mh5irjElMez9vJFRbxBaqjZs7wWWixiPKpAJcTARmWgAtUgahCBfIgBzufLgxdgAYucJFKUWUJqNDF6IZDi4PkQITREBZjYdeH7QkSBa9oX1isLQPr9FUvQO_G__SiSQL7tA6QvyqbwZO16XIg1vb1vNNb1PY3yBfo7Ueoi4W5GF3nXcRFBa6ggPNIgDzsnA4Fq1HkRQ2uULXQaA6igm15ScboSXp6EpM2eMlyQ7UFIlz5ns5-nYV3_n19y1gBX6Xtd9bAXwHzLAkOgH3OBOip-DITd4bBZ-j-AVwJFmXbg3uPF3gF5kCC2Q7fXGW5z9ObBwlToVTgpc3yn0n7Hg9-yi6VjuAVmMEiDqQyNqYHsnMHvQfiKY8C98wOfuoduOOeG7gv9BoVbs7Sq8OVXUTdqkMa5LGXZahQqkiIRovAzlERXZGg52CQ5iuit-JhUyzQmpTTy2tIvUc07iU-85eeOoS8T0y3WeSTGkDPEgcv1NF1UaQi6pw6KfTLveL-lurgv3L9k1R_Dxd8Jd6tz_UXcZtQeWUJ1YCECp8YH_L9QkTM9ME-YPXynp1QuB5Idb6xxHNDIt1pAb6VtQwb_IHQj6D9ihnkWVlfiSyeli3mHxih_80I-Jv1D8ZNn5V3WtxrBfxJLMiTG6gyseSj5g914sCaCxMe5TavYrrL_TPdhIgjvULfPgxZm8tvzWd4vusZLFwBEOFM8WzK941iYMHTX7FgbSz8tcCwLK2JwZrL0NqG5xZYdOD2gG9otzjEfTMtQ9HvcGhvWcu7-8B_F9kb5X0ILatxFL5L9t5F5oVnvSXQz1CZXpJqesSBuwV3cQ19b-sZqhzvmzQ1DTnVFWgZJftvoLNvVDnSfMeZ6Y3OQ-fUqE6kAbZg6I3trzp9DuXSkPmVripQdTj9qheyo6TIV-TYU33Ek0qSElbyGE5LqMjDWaBm0PZEhRKKODYDHKGrN1oz3DTXm2yOQ9olBkskT6dQhe-TCRtMbNmNAsAAk2LRrUnly6Q3tLsZmlfTFnf6CirWcJN8hfOV4J9wrnjrILnggI0_7DKgNNHsqRlpcrZvNOd-VtIVxZHZ2KPLc_Lwvdk-pmNtd9XSg7M4E3GuiMEyIjOQ7espUop8xj3KVBA09TBT8kN85IXNQWpovtpnhtn6ldPWacgv58nkELee8D1s_ecXL3kC2-P1klXpYpeKWdNyYZcbiRVLXu2UoqSXXT4KrcnLwY7StOSYfXmS7go6njsv9PtEq2KQPuJoUm-qc2kID05VlVtbqNwyfMD8aVMrO3-TWb65ZP1sgWeUKFFwfZS0Q_1yNeHDcrQBhW1Cll61E7lNeORXAT61ze7YbooKoel8l23GmqYbsUTUk9ls19Lz04IbNRmczUofPXlgFZzaPHXqx2d-oasSZ4R4cUyvsiS52pI8hutnw3K1WhxVhlfMxuGIPCmXZ0vSnB8_wDCr6kj7Obf-C8p1lV4\u003d"}],"source_content_type":"application/octet-stream","patch_set":29,"id":"AAAAXH%2F%2FQaI%3D","line":1,"updated":"2014-04-23 00:08:45.000000000","message":"this is compressed?","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"}],"examples/pki/cms/auth_token_revoked_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGK_zsap1ebR9p2XkZ1pQRP7CYMm9iNMjIyGnAbsbKzafMxMUgZNrE8QihgXNLFeZWlivVitlJicnFpcrGSlUK1Ukp-dmgdmpVYUZBalgkSVjAyMLXQNDHUNLUKMDK0MTawMzKOUdBSUMlNAsgU5icmpGfk5KalFIMGS1LzEvBKIEXmJSTmpIEUlRaWpcA0QFfGZKYYg9XmJualIoiAuWDwltTi5KLOgJDMf5J680pyc2lqgcHFqUVlmcqpzYkliTn46UCYaZE9KQX5mXkkxhJuYkpuZFxrkAzI1o6SkwEpf39DIXM8ACA2tLMzNzfTLDPXNTJLM0ozTkpKTTY1NjE1TLRLNDNKS0ywsk5LMzAzNE0FOKEpNh9gOZfnnpYK9nVeSWpSXmEMNKwpKk3Iykyk2qTYWaBY8GOJzMvOywYEBEi6pLAAHcFl-TmluKnKQQ0WAwUpaGFoaWRoBnUVBECGZgD8EYAqJ8WBmbmI6iv_ScxLzksnwHzDYTYCW6tE6lZBgCcF0QqxZxARkcn5uQWkJSlDm5Zclkh6QxqbGpub6ZUZ6BqgBFURKQKEagj8gTA0MDCBKiUowKal5JZkllcgezU6tLC7JB7oMbEApsLgBF2UgBkxJUWoZsJRMiYeJQTJCfk4qkjVgPlzCSCkWXvoh64aVgWDNkPCEWwLWDw5xZCEjiLtwO6W2ttawifGUQRPjMWDpb9C4xKBxniGXAQcbcygLqzCjqSG3ASeIzSbMFBoM43AIMzk7GgoZCIA47MKcwaV5eZVliUAXQMW4hDn9C1LzgksSk7MNBQ34QWLcwhze0MAyVDVQhtcsnIxiYrBQdMgH6ioG6dLLL0o3FDEQAulkFuYOTs1JUwjOTM9LTWFiFERUUbxwYxgZWRlYmhgZ2JI26eT-5158hMv-d9Mm_rq3p6Y2_lglHfTpaDeLxMWwUu5yK3-HhNjri1nDTyw709y9zKpe5sq9CQs9mhlPzV-18mm5zEqr45lLPQ83ZMiUOxVJLW3yLbtYnaf4o3hS3e5L516pN59bvUU0sdNzy_Rf7cy7hbUtV-_Mnrrk4D5pYdn-C9V_sm_vlZdMvn58pdy5IzuM7qy49CdjleD_Jf3X_t5emBVZNvPxtSRdu5oWrUlvyyXer3_0fUPfAbles_vCm7_mfgqu4fPfVnZ_65nMWOcsP-bvv06-9O2UnjF38UT_ICN_kYMyt_9-TTX08ntSda983bLUJTdWfgzbXCbx7JZIqJ-piBvj_h9zGQC1cnpq"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F09c%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"this shouldn\u0027t be a new file introducing a parallel _z format. update the existing file","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/cms/auth_token_scoped_expired_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGI_yMap1ebR9p2XkZ1pQRP7JoMm9nVMjIyGnAbsbKzafMxMUgZNrOcQihgXNLHuZ2li3V2tlJicnFpcrGSlUK1Ukp-dmgdmpVYUZBalgkSVjAwMDXQNzHQNjEIMTaxMzK2MTaKUdBSUMlNAsgU5icmpGfk5KalFIMGS1LzEvBKIEXmJSTmpIEUlRaWpcA0QFfGZKYYg9XmJualIoiAuWDwltTi5KLOgJDMf5J680pyc2lqgcHFqUVlmcqpzYkliTn46UCYaZE9KQX5mXkkxhJuYkpuZFxrkAzI1o6SkwEpf39DIXM8ACA2tLMzNzfTLDPXNTJLM0ozTkpKTTY1NjE1TLRLNDNKS0ywsk5LMzAzNE0FOKEpNh9gOZfnnpYK9nVeSWpSXmEMNKwpKk3Iykyk2qTYWaBY8GOJzMvOywYEBEi6pLAAHcFl-TmluKnKQQ0WAwUpaGFoaWRoBnUVBECGZgD8EYAqJ8WBmbmI6iv_ScxLzksnwHzDYTYCW6tE6lZBgCcF0QqxZxARkcn5uQWkJSlDm5Zclkh6QxqbGpub6ZUZ6BqgBFURKQKEagj8gTA0MDCBKiUowKal5JZkllcgezU6tLC7JB7oMbEApsLgBF2UgBkwJiI0op4ryc1KRzAfz4RJGSrHwYg-sDVrogTVBAhBmKkQfOIiRhYwgDsFid21trWET4ymDJsZjwHLeoHGJQeM8Qy4DDjbmUBZWYUZTQ24DThCbTZgpNBjG4RBmcnY0FDIQAHHYhTmDS_PyKssSgVZDxbiEOf0LUvOCSxKTsw0FDfhBYtzCHN7QYDFUNVCG1yGcjGJisPByyAfqKgbp0ssvSjcUMRAC6WQW5g5OzUlTCM5Mz0tNYWIURFRGvHBjGBlZGViaGBk0y_vEpmvFB610nr_fqybZr6aNs8XiAkNoYqvOrwvVp7h2trta_NcSyBLrYj_5auOu5jT7NUcm7V8pf_Bti2JX4-lI_fjjivveXbKv7VpyW4_94VWfbZ6_Hxc-8bl6kVUoqTJj8onpMRa_dHozu-VzGpdaBAb09qyY0HxAbdOfHJunzU98nqxvbP7l8z9hfUWRh_RuvYkN-xf-eHyMJ8R5icsOvm97vT_Nt2azOjbpt8rOQOe-PUty-k-cbIoNzeNpK2O1Ebj5w-hzg3l_2LR_ulKbVbteyj24qRq_200-kqNZd0rv3tpNnR4m-7_wnzrecVstrkVZdJfinDIJczuGD_uj7Q-fOrPiQOGyfQDm1mqm"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F09I%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"same","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/cms/auth_token_scoped_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGI_yMap1ebR9p2XkZ1pQRP7JoMm9nVMjIyGnAbsbKzafMxMUgZNrOcQihgXNLHuZ2li3V2tlJicnFpcrGSlUK1Ukp-dmgdmpVYUZBalgkSVjAyMLXQNDHUNLUKMDK0MTawMzKOUdBSUMlNAsgU5icmpGfk5KalFIMGS1LzEvBKIEXmJSTmpIEUlRaWpcA0QFfGZKYYg9XmJualIoiAuWDwltTi5KLOgJDMf5J680pyc2lqgcHFqUVlmcqpzYkliTn46UCYaZE9KQX5mXkkxhJuYkpuZFxrkAzI1o6SkwEpf39DIXM8ACA2tLMzNzfTLDPXNTJLM0ozTkpKTTY1NjE1TLRLNDNKS0ywsk5LMzAzNE0FOKEpNh9gOZfnnpYK9nVeSWpSXmEMNKwpKk3Iykyk2qTYWaBY8GOJzMvOywYEBEi6pLAAHcFl-TmluKnKQQ0WAwUpaGFoaWRoBnUVBECGZgD8EYAqJ8WBmbmI6iv_ScxLzksnwHzDYTYCW6tE6lZBgCcF0QqxZxARkcn5uQWkJSlDm5Zclkh6QxqbGpub6ZUZ6BqgBFURKQKEagj8gTA0MDCBKiUowKal5JZkllcgezU6tLC7JB7oMbEApsLgBF2UgBkwJiI0op4ryc1KRzAfz4RJGSrHwYg-sDVrogTVBAhBmKkQfOIiRhYwgDsFid21trWET4ymDJsZjwHLeoHGJQeM8Qy4DDjbmUBZWYUZTQ24DThCbTZgpNBjG4RBmcnY0FDIQAHHYhTmDS_PyKssSgVZDxbiEOf0LUvOCSxKTsw0FDfhBYtzCHN7QYDFUNVCG1yGcjGJisPByyAfqKgbp0ssvSjcUMRAC6WQW5g5OzUlTCM5Mz0tNYWIURFRGvHBjGBlZGViaGBnap11WVczdscvixao5KsaNeaLljhMv30ld8izo-L6-lSWpb0U-tPzc8fiaz8er_Eeu17hn2xzMP_L_5jQhXosC31PJ19OdVd8fmKmtelP7l72ps7l86NOZescq1lhv91SU2G1__MzW-8_C445qn__2vvHXMq_4sG1JfKtzjaTEFBdv3eq4ufO7RPZC3ROf-nbZfVvG6HL24UHjRf8fBARszM_8W_XViUdk5ZqMT3sDRN8Uc7k-fVhU0_3weMkScVvlaFev0hmskb1vDDJubdj2iSe3ci1H0a0Ljam3AyK8F7RLnXSq8NJ7FXe4Ufdus0F7vOp0jkPPmPITWxRXLkoSun7ggLv0xfz9Kw2mq84DAJ8Sbck\u003d"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F09E%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"same","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/cms/auth_token_unscoped.json":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"898bb7e7138b1d52cb7cec5432e1b57ad1e8d211","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{\"access\": {\"token\": {\"expires\": \"2112-08-17T15:35:34Z\", \"id\": \"01e032c996ef4406b144335915a41e79\"}, \"serviceCatalog\": {}, \"user\": {\"username\": \"user_name1\", \"roles_links\": [], \"id\": \"c9c89e3be3ee453fbf00c7966f6d3fbd\", \"roles\": [{\u0027name\u0027: \u0027role1\u0027},{\u0027name\u0027: \u0027role2\u0027},], \"name\": \"user_name1\"}}}"}],"source_content_type":"application/json","patch_set":38,"id":"7adec928_f317c14f","side":"PARENT","line":1,"updated":"2014-05-08 06:13:52.000000000","message":"nit: these would be better fixed in a seperate review","commit_id":"0781c3ca27557f2e699e4578bd898bb32efa8155"}],"examples/pki/cms/auth_token_unscoped_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGLWYOPUavNo-87LyM60oIlZ0qCJWZSJkdGQ04CdjVWbj5lJyqCJ0RShiHFBE6MaSxOjUrVSYnJyanGxkpVCtVJJfnZqHpiVWlGQWZQKElUyMjQ00jWw0DU0DzE0tTIGIpMoJR0FpcwUkKyBYaqBsVGypaVZapqJiYFZkqGJibGxqaWhaaKJYaq5pVItUGlxalFZZnKqc2JJYk5-OsgCkGgpUBhsGYiRl5ibCjIPxI4HcQxBdhTl56QWx-dk5mWDnBIdC7c22TLZwjLVOCnVODXVxNQ4LSnNwCDZ3NLMLM0sBchLgWsGaatWgpkOEjIEOQlVyEipFmQ0FjfU1tYaNjGeAgbeMWBwGjQuMWicZ8hlwMHGHMrCKsxoashtwAliswkzhQbDOBzCTM6OhkIGAiAOuzBncGleXmVZItBqqBiXMKd_QWpecElicrahoAE_SIxbmMM7tbK4JD8v1VDVQBkeVZyMYmLZUAmHfKCuYpAuvfyidEMRAyGQTmZh7uDUnDSF4Mz0vNQUJkZBRJzzwo1hZGRlAMY3Q_SLBbKiTqeqNojuO7rz2MwPp6ZsnRRTYDppyU6pR6aH3q9eqThrrUtFxIV1LFoVOXfuN5xfFqugrf87mEuBp-386faFfQl6H1IeJn5I6VA8dDTRwsl22r6d8d-_Tuv24-6ZZcafttYl8JSdidet3r5luYErN0lGf-xLFV_OO2mzou1ulQKWpBeiYru_9-WZ38u_veF6jaiyapdDIxdzKBuzz7xT-h2vPGcsVygIbr-mefvOnhfTO1KmpT15Ufwn0jGWd1GLnOAkm3e1DeLP3XTf_06Ysdvw8u9JQZa7XeVC_kaUPimWb9t2WDlwT8bhv_vtUm61_kx4N_XrJOfXmlprviU3uliv-ZP2-sRjZgCXeQ94"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F08w%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"same","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/cms/auth_v3_token_revoked_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGK_ycap1ebR9p2XkZ1pQRP7KYMm9mNMjIyGnAbsbKzafMxMUgZNrM8QihgXNLFeZ2livVytVJKfnZqnZKVQrVRQlJ-VmlwCZqfk5yZmQoQzU4AUVCA-M8VQSUdBKS8xNxVJFMQ1VKoFSqTmJSblpIJ0lBSVpgIFILpLgOJ5Jei6oaIQ3UDxlNTi5KLMgpLMfJDNeaU5OSAjkxNLEnPy04Ei0dVA81MK8jPzSooh3MSU3My80CAfkGkZJSUFVvr6hkbmegZAaGhlYW5upl9mqG9mkmSWZpyWlJxsamxibJpqkWhmkJacZmGZlGRmZmieCLK6KDUdYiuU5Z-XChIG2pRalJeYQw0rCkqTcjKTKTapNhYczNBgiM_JzMsGBwZIuKSyABywZfk5pbmpyEENFQGGJ2lhaGlkaQR0FgVBhGQC_hCAKSTGg5m5ieko_kvPScxLJsN_wGA3AVqqR-tUQoIlBNMJsWYRE5DJ-bkFpSUoQZmXX5ZIekAamxqbmuuXGaMGUxApwYRsBP5AMDUwMAApJCqppKTmlWSWVCJ7MTu1srgkH-gqiAEVBZlFqcXxiaCiT8nIwNhC18BQ19AixMjQytDEysA8CqS3tDi1iKKiESZRlFoGLHJT4kEGwos-iEnIUmDzQPqK8nNSoTEANwIoZAiJI2QhI6B_amsNmxiB5T8jqPw3aFxi0DjPkMuAg405lIVVmNHUkNuAE8RmE2YKDYZxOISZnB0NhQwEQBx2Yc7g0ry8yrJEoB1QMS5hTv-C1LzgksTkbENBA36QGLcwhzc0GA1VDZThdQsno5gYLHwd8oG6ikG69PKL0g1FDIRAOpmFuYNTc9IUgjPT81JTmBgFEZUUL9wYRkZWBpYmRoY66T3afyY6HfFZ2XH2rVsc89IZRhnu6cc2RWgsCAqadmJzUW3Hdp2a1KTXZaWnjkWGGkbtbZYUFX4pPskgasu30wHFwReD3ka1bVKu97yd9X5PENeJpRWzvXIdlssXV6xZoBGvzbsusG29zkS9qrXlKSZRW--ybfCeOaPF2ponSvcQVxZXXdE66R_S0y-dUb81efH9W4nR_msUH7daT3aUfqng39t-yj30Gn_g2vURHaKvGDWev7Q8vU3mLbtRpJVxd5nRzu8cE4KNrjfLBa4plBBp4FjjfZqZ_aZ07c99kWte2qY7uuRdY7pwccZXZrbYc6w32CzWH_Lr7XLZ560rbLI7Ztl1AcEOswULAI76alc\u003d"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F08o%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"same","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/cms/auth_v3_token_scoped_z.pem":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"{cmsz}eJwzaGI_xcap1ebR9p2XkZ1pQRP7boMm9u1MjIyGnAbsbKzafMxMUgZNrNcRihgXNLGeYGliPVKtVJKfnZqnZKVQrVRQlJ-VmlwCZqfk5yZmQoQzU4AUVCA-M8VQSUdBKS8xNxVJFMQ1VKoFSqTmJSblpIJ0lBSVpgIFILpLgOJ5Jei6oaIQ3UDxlNTi5KLMgpLMfJDNeaU5OSAjkxNLEnPy04Ei0dVA81MK8jPzSooh3MSU3My80CAfkGkZJSUFVvr6hkbmegZAaGhlYW5upl9mqG9mkmSWZpyWlJxsamxibJpqkWhmkJacZmGZlGRmZmieCLK6KDUdYiuU5Z-XChIG2pRalJeYQw0rCkqTcjKTKTapNhYczNBgiM_JzMsGBwZIuKSyABywZfk5pbmpyEENFQGGJ2lhaGlkaQR0FgVBhGQC_hCAKSTGg5m5ieko_kvPScxLJsN_wGA3AVqqR-tUQoIlBNMJsWYRE5DJ-bkFpSUoQZmXX5ZIekAamxqbmuuXGaMGUxApwYRsBP5AMDUwMAApJCqppKTmlWSWVCJ7MTu1srgkH-gqiAEVBZlFqcXxiaCiT8nIwNhC18BQ19AixMjQytDEysA8CqS3tDi1iKKiESYBMghR5kGMAIuBDAApLMrPSYUGOUwPSMgQEinIQkZAD9TWGjYxnjJoYjwGLPANGpcYNM4z5DLgYGMOZWEVZjQ15DbgBLHZhJlCg2EcDmEmZ0dDIQMBEIddmDO4NC-vsiwRaAdUjEuY078gNS-4JDE521DQgB8kxi3M4Q0NN0NVA2V4ZcLJKCYGC1CHfKCuYpAuvfyidEMRAyGQTmZh7uDUnDSF4Mz0vNQUJkZBRK3ECzeGkZGVgaWJkcE4Ny73hY3bg5Uuug-jMm9yeP67bNNUtvTWUmFOfsHEO3EHnbekc51wfqX7IXZ6wPxDJnI3zk2zKLnim-O4NGHjdp3Tpg0Cxxw3MRh6vMn4-n1fmWP004o7pUZts2X9-kW1Ev5Wf7ScKGKbkBrE9TlY8vt3k5tV_evMrzm26Ry20oiWbDR_KVo5794Vwdxdz1XKN8xlyZvW8_F3rVHkTDbft8dYLL6bVp324F6yfofNm162Uts5J1vePT954-nNRMWAApmT_9crCB69L8vAlCa9VbFM44TMP5fta8RNz0x17xdWy1zLKnhfynrVSsUnaWaBidyVjz6-87t41_TQwmbF2TMVrK5x2-pUv-N8AADXiWgL"}],"source_content_type":"application/octet-stream","patch_set":7,"id":"AAAAUX%2F%2F08k%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"same","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"}],"examples/pki/gen_cmsz.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":18,"context_line":"import zlib"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from keystoneclient.common import cms"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"signing_cert_file_name \u003d \u0027certs/signing_cert.pem\u0027"},{"line_number":23,"context_line":"signing_key_file_name \u003d \u0027private/signing_key.pem\u0027"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fN0%3D","line":21,"updated":"2014-02-06 16:01:09.000000000","message":"There should be an extra newline here.","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":33,"context_line":"    try:"},{"line_number":34,"context_line":"        json_file \u003d \"cms/%s.json\" % name"},{"line_number":35,"context_line":"        pem_file \u003d \"cms/%s_z.pem\" % name"},{"line_number":36,"context_line":"        f \u003d open(json_file, \u0027r\u0027)"},{"line_number":37,"context_line":"        string_data \u003d f.read()"},{"line_number":38,"context_line":"        f.close()"},{"line_number":39,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fLI%3D","line":36,"updated":"2014-02-06 16:01:09.000000000","message":"(nit) \"with open(json_file, \u0027r\u0027) as f\" and you don\u0027t need to explicitly close the file","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":37,"context_line":"        string_data \u003d f.read()"},{"line_number":38,"context_line":"        f.close()"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        token_data \u003d json.loads(string_data)"},{"line_number":41,"context_line":"        text \u003d json.dumps(token_data).encode(\u0027utf-8\u0027)"},{"line_number":42,"context_line":"        signed \u003d cms.cms_sign_text(text,"},{"line_number":43,"context_line":"                                   signing_cert_file_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fHc%3D","line":40,"updated":"2014-02-06 16:01:09.000000000","message":"Can you add a comment saying why you have to do a json.loads immediately followed by a json.dumps? Checking for valid JSON?","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":45,"context_line":"                                   \"DER\")"},{"line_number":46,"context_line":"        compressed \u003d zlib.compress(signed, 6)"},{"line_number":47,"context_line":"        encoded \u003d PREFIX + base64.urlsafe_b64encode(compressed)"},{"line_number":48,"context_line":"        f \u003d open(pem_file, \u0027w\u0027)"},{"line_number":49,"context_line":"        f.write(encoded)"},{"line_number":50,"context_line":"        f.flush()"},{"line_number":51,"context_line":"        f.close()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fIQ%3D","line":48,"updated":"2014-02-06 16:01:09.000000000","message":"You can use the same \"with\" statement here.  Do you need to explicitly flush?  I thought that Python did that automatically when closing a file.","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":50,"context_line":"        f.flush()"},{"line_number":51,"context_line":"        f.close()"},{"line_number":52,"context_line":"    except Exception as e:"},{"line_number":53,"context_line":"        print (e)"},{"line_number":54,"context_line":"        print (name + \" failed\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fGY%3D","line":53,"updated":"2014-02-06 16:01:09.000000000","message":"It may also be helpful to print a traceback instead of just the exception message.\n\n  import traceback; traceback.print_stack()","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F07g%3D","line":1,"updated":"2014-02-10 15:35:35.000000000","message":"this shouldn\u0027t be a new file; evolve the existing gen_cms.py","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/usr/bin/python"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":""},{"line_number":4,"context_line":"# Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"# not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F08Y%3D","line":2,"updated":"2014-02-10 15:35:35.000000000","message":"remove an extra blank line","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"signing_cert_file_name \u003d \u0027certs/signing_cert.pem\u0027"},{"line_number":23,"context_line":"signing_key_file_name \u003d \u0027private/signing_key.pem\u0027"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"PREFIX \u003d \"{cmsz}\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F07E%3D","line":23,"updated":"2014-02-10 15:35:35.000000000","message":"name MODULE_LEVEL_CONSTANTS accordingly","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":49,"context_line":"            f.flush()"},{"line_number":50,"context_line":"    except Exception as e:"},{"line_number":51,"context_line":"        print(e)"},{"line_number":52,"context_line":"        traceback.print_stack()"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F07Q%3D","line":52,"updated":"2014-02-10 15:35:35.000000000","message":"the entire try/except is pointless","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":22,"context_line":""},{"line_number":23,"context_line":"make_filename \u003d lambda basename: os.path.join(CURRENT_DIR, basename)"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"CA_CERT_FILE_NAME \u003d make_filename(\u0027certs/cacert.pem\u0027)"},{"line_number":26,"context_line":"SIGNING_CERT_FILE_NAME \u003d make_filename(\u0027certs/signing_cert.pem\u0027)"},{"line_number":27,"context_line":"SIGNING_KEY_FILE_NAME \u003d make_filename(\u0027private/signing_key.pem\u0027)"},{"line_number":28,"context_line":""}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQZg%3D","line":25,"updated":"2014-04-23 00:08:45.000000000","message":"seems like if we\u0027re going to the trouble of using os.path.join then shouldn\u0027t embed the /, suggest change make_filename to take *args and pass \u0027certs\u0027, \u0027cacert.pem\u0027\n\nactually, should be able to use\n\n  make_filename \u003d functools.partial(os.path.join, CURRENT_DIR)","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":29,"context_line":""},{"line_number":30,"context_line":"# Helper script to generate the sample data for testing"},{"line_number":31,"context_line":"# the signed tokens using the existing JSON data for the"},{"line_number":32,"context_line":"# MII-prefexed tokens.  Uses the Keys and certificates"},{"line_number":33,"context_line":"# generated in gen_pki.sh."},{"line_number":34,"context_line":"def generate_der_form(name):"},{"line_number":35,"context_line":"    derfile \u003d make_filename(\u0027cms/%s.der\u0027 % name)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQZw%3D","line":32,"updated":"2014-04-23 00:08:45.000000000","message":"change \"prefexed\" to \"prefixed\"\n\nlowercase \"Keys\"","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":32,"context_line":"# MII-prefexed tokens.  Uses the Keys and certificates"},{"line_number":33,"context_line":"# generated in gen_pki.sh."},{"line_number":34,"context_line":"def generate_der_form(name):"},{"line_number":35,"context_line":"    derfile \u003d make_filename(\u0027cms/%s.der\u0027 % name)"},{"line_number":36,"context_line":"    derform \u003d cms.cms_sign_data(text,"},{"line_number":37,"context_line":"                                SIGNING_CERT_FILE_NAME,"},{"line_number":38,"context_line":"                                SIGNING_KEY_FILE_NAME, \u0027DER\u0027)"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQXs%3D","line":35,"updated":"2014-04-23 00:08:45.000000000","message":"this isn\u0027t used until line 39, suggest move it right before that line.","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":33,"context_line":"# generated in gen_pki.sh."},{"line_number":34,"context_line":"def generate_der_form(name):"},{"line_number":35,"context_line":"    derfile \u003d make_filename(\u0027cms/%s.der\u0027 % name)"},{"line_number":36,"context_line":"    derform \u003d cms.cms_sign_data(text,"},{"line_number":37,"context_line":"                                SIGNING_CERT_FILE_NAME,"},{"line_number":38,"context_line":"                                SIGNING_KEY_FILE_NAME, \u0027DER\u0027)"},{"line_number":39,"context_line":"    with open(derfile, \u0027w\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQXo%3D","line":36,"updated":"2014-04-23 00:08:45.000000000","message":"same here, move it right before line 40.","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":38,"context_line":"                                SIGNING_KEY_FILE_NAME, \u0027DER\u0027)"},{"line_number":39,"context_line":"    with open(derfile, \u0027w\u0027) as f:"},{"line_number":40,"context_line":"        f.write(derform)"},{"line_number":41,"context_line":"        f.flush()"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"for name in [\u0027auth_token_revoked\u0027,"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQYI%3D","line":41,"updated":"2014-04-23 00:08:45.000000000","message":"doesn\u0027t the flush happen automatically when the file is closed by the context?","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":34,"context_line":"# MII-prefixed tokens.  Uses the Keys and certificates"},{"line_number":35,"context_line":"# generated in gen_pki.sh."},{"line_number":36,"context_line":"def generate_der_form(name):"},{"line_number":37,"context_line":"    derfile \u003d make_filename(\u0027cms/%s.der\u0027 % name)"},{"line_number":38,"context_line":"    with open(derfile, \u0027w\u0027) as f:"},{"line_number":39,"context_line":"        derform \u003d cms.cms_sign_data(text,"},{"line_number":40,"context_line":"                                    SIGNING_CERT_FILE_NAME,"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGxI%3D","line":37,"updated":"2014-04-24 00:52:39.000000000","message":"use make_filename(\u0027cms\u0027, \u0027%s.der\u0027 % name)\n\nsame at line 52 \u0026 53.","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":38,"context_line":"    with open(derfile, \u0027w\u0027) as f:"},{"line_number":39,"context_line":"        derform \u003d cms.cms_sign_data(text,"},{"line_number":40,"context_line":"                                    SIGNING_CERT_FILE_NAME,"},{"line_number":41,"context_line":"                                    SIGNING_KEY_FILE_NAME, \u0027DER\u0027)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        f.write(derform)"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGw8%3D","line":41,"updated":"2014-04-24 00:52:39.000000000","message":"should be able to use cms.PKIZ_CMS_FORM for \u0027DER\u0027","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":23,"context_line":""},{"line_number":24,"context_line":"def make_filename(*args):"},{"line_number":25,"context_line":"    return os.path.join(CURRENT_DIR, *args)"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"CA_CERT_FILE_NAME \u003d make_filename(\u0027certs\u0027, \u0027cacert.pem\u0027)"},{"line_number":28,"context_line":"SIGNING_CERT_FILE_NAME \u003d make_filename(\u0027certs\u0027, \u0027signing_cert.pem\u0027)"},{"line_number":29,"context_line":"SIGNING_KEY_FILE_NAME \u003d make_filename(\u0027private\u0027, \u0027signing_key.pem\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_8f056cc4","line":26,"updated":"2014-04-29 19:22:53.000000000","message":"Add a newline","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":48,"context_line":"             \u0027auth_token_scoped\u0027,"},{"line_number":49,"context_line":"             \u0027auth_token_scoped_expired\u0027,"},{"line_number":50,"context_line":"             \u0027auth_v3_token_scoped\u0027,"},{"line_number":51,"context_line":"             \u0027auth_v3_token_revoked\u0027]:"},{"line_number":52,"context_line":"    json_file \u003d make_filename(\u0027cms/%s.json\u0027 % name)"},{"line_number":53,"context_line":"    pkiz_file \u003d make_filename(\u0027cms/%s.pkiz\u0027 % name)"},{"line_number":54,"context_line":"    with open(json_file, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_92ff4f01","line":51,"updated":"2014-04-29 19:41:21.000000000","message":"this log would be much more readable if this list wasn\u0027t defined as part of the loop syntax","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":48,"context_line":"             \u0027auth_token_scoped\u0027,"},{"line_number":49,"context_line":"             \u0027auth_token_scoped_expired\u0027,"},{"line_number":50,"context_line":"             \u0027auth_v3_token_scoped\u0027,"},{"line_number":51,"context_line":"             \u0027auth_v3_token_revoked\u0027]:"},{"line_number":52,"context_line":"    json_file \u003d make_filename(\u0027cms/%s.json\u0027 % name)"},{"line_number":53,"context_line":"    pkiz_file \u003d make_filename(\u0027cms/%s.pkiz\u0027 % name)"},{"line_number":54,"context_line":"    with open(json_file, \u0027r\u0027) as f:"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_52a590b3","line":51,"in_reply_to":"bad4c104_92ff4f01","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":50,"context_line":"             \u0027auth_v3_token_scoped\u0027,"},{"line_number":51,"context_line":"             \u0027auth_v3_token_revoked\u0027]:"},{"line_number":52,"context_line":"    json_file \u003d make_filename(\u0027cms/%s.json\u0027 % name)"},{"line_number":53,"context_line":"    pkiz_file \u003d make_filename(\u0027cms/%s.pkiz\u0027 % name)"},{"line_number":54,"context_line":"    with open(json_file, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"        string_data \u003d f.read()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_721acb6f","line":53,"updated":"2014-04-29 19:41:21.000000000","message":"use .join() and os.sep","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":50,"context_line":"             \u0027auth_v3_token_scoped\u0027,"},{"line_number":51,"context_line":"             \u0027auth_v3_token_revoked\u0027]:"},{"line_number":52,"context_line":"    json_file \u003d make_filename(\u0027cms/%s.json\u0027 % name)"},{"line_number":53,"context_line":"    pkiz_file \u003d make_filename(\u0027cms/%s.pkiz\u0027 % name)"},{"line_number":54,"context_line":"    with open(json_file, \u0027r\u0027) as f:"},{"line_number":55,"context_line":"        string_data \u003d f.read()"},{"line_number":56,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_72ac54a1","line":53,"in_reply_to":"bad4c104_721acb6f","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":58,"context_line":"    try:"},{"line_number":59,"context_line":"        token_data \u003d json.loads(string_data)"},{"line_number":60,"context_line":"    except ValueError as v:"},{"line_number":61,"context_line":"        print(\"File %s\" % json_file)"},{"line_number":62,"context_line":"        print(\"error processing token data:\")"},{"line_number":63,"context_line":"        print(string_data)"},{"line_number":64,"context_line":"        print(v)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_8f2c8c4c","line":61,"updated":"2014-04-29 19:22:53.000000000","message":"Should this go to stderr instead of stdout?","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":62,"context_line":"        print(\"error processing token data:\")"},{"line_number":63,"context_line":"        print(string_data)"},{"line_number":64,"context_line":"        print(v)"},{"line_number":65,"context_line":"        exit(1)"},{"line_number":66,"context_line":"    text \u003d json.dumps(token_data).encode(\u0027utf-8\u0027)"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    # Uncomment to record the token uncompressed,"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_cfb6948a","line":65,"updated":"2014-04-29 19:41:21.000000000","message":"use SystemExit directly, as it already does all the things\n\n  $ python -c \"raise SystemExit(\u0027Oh noes\u0027)\" 2\u003e stderr.log\n  $ echo $?\n  1\n  $ cat stderr.log \n  Oh noes\n\nSo:\n\n  raise SystemExit(\u0027%s while processing token data from %s: %s\u0027 % (v, json_file, string_data)","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f7fbbf57bdfb6a0490a91dcc49508ad82071e417","unresolved":false,"context_lines":[{"line_number":73,"context_line":""},{"line_number":74,"context_line":"# Helper script to generate the sample data for testing"},{"line_number":75,"context_line":"# the signed tokens using the existing JSON data for the"},{"line_number":76,"context_line":"# MII-prefixed tokens.  Uses the Keys and certificates"},{"line_number":77,"context_line":"# generated in gen_pki.sh."},{"line_number":78,"context_line":"def generate_der_form(name):"},{"line_number":79,"context_line":"    derfile \u003d make_filename(\u0027cms\u0027, \u0027%s.der\u0027 % name)"}],"source_content_type":"text/x-python","patch_set":37,"id":"9ad9bd40_3af09166","line":76,"updated":"2014-05-06 17:44:29.000000000","message":"is \"Keys\" meant to be capitalized?","commit_id":"49d8586ee9811370b909d0ed1be0f7114251e673"}],"examples/pki/gen_pki.sh":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d484dc96f9430312dce1cb2694710c496cb1aa5c","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  for json_file in \"${CMS_DIR}/auth_token_revoked.json\" \"${CMS_DIR}/auth_token_unscoped.json\" \"${CMS_DIR}/auth_token_scoped.json\" \"${CMS_DIR}/auth_token_scoped_expired.json\" \"${CMS_DIR}/revocation_list.json\" \"${CMS_DIR}/auth_v3_token_scoped.json\" \"${CMS_DIR}/auth_v3_token_revoked.json\""},{"line_number":207,"context_line":"  do"},{"line_number":208,"context_line":"    openssl cms -sign -in $json_file -nosmimecap -signer $CERTS_DIR/signing_cert.pem -inkey $PRIVATE_DIR/signing_key.pem -outform PEM -nodetach -nocerts -noattr -out ${json_file/.json/.pem}"},{"line_number":209,"context_line":"    "},{"line_number":210,"context_line":"  done"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"AAAAUH%2F9lMU%3D","line":209,"updated":"2014-02-05 22:03:54.000000000","message":"revert all the changes here","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":206,"context_line":"  for json_file in \"${CMS_DIR}/auth_token_revoked.json\" \"${CMS_DIR}/auth_token_unscoped.json\" \"${CMS_DIR}/auth_token_scoped.json\" \"${CMS_DIR}/auth_token_scoped_expired.json\" \"${CMS_DIR}/revocation_list.json\" \"${CMS_DIR}/auth_v3_token_scoped.json\" \"${CMS_DIR}/auth_v3_token_revoked.json\""},{"line_number":207,"context_line":"  do"},{"line_number":208,"context_line":"    openssl cms -sign -in $json_file -nosmimecap -signer $CERTS_DIR/signing_cert.pem -inkey $PRIVATE_DIR/signing_key.pem -outform PEM -nodetach -nocerts -noattr -out ${json_file/.json/.pem}"},{"line_number":209,"context_line":"    "},{"line_number":210,"context_line":"  done"},{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""}],"source_content_type":"text/x-sh","patch_set":3,"id":"AAAAUH%2F9fEQ%3D","line":209,"in_reply_to":"AAAAUH%2F9lMU%3D","updated":"2014-02-06 16:01:09.000000000","message":"++","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":211,"context_line":"}"},{"line_number":212,"context_line":""},{"line_number":213,"context_line":""},{"line_number":214,"context_line":""},{"line_number":215,"context_line":"check_openssl"},{"line_number":216,"context_line":"rm_old"},{"line_number":217,"context_line":"cleanup"}],"source_content_type":"text/x-sh","patch_set":7,"id":"AAAAUX%2F%2F06k%3D","line":214,"updated":"2014-02-10 15:35:35.000000000","message":"undo irrelevant whitespace changes","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed0b65240995026de4490e0603fb67921eaa110e","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# This script generates the crypto necessary for the SSL tests."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":". pki_functions"},{"line_number":20,"context_line":" "},{"line_number":21,"context_line":"check_openssl"},{"line_number":22,"context_line":"rm_old"},{"line_number":23,"context_line":"cleanup"}],"source_content_type":"text/x-sh","patch_set":11,"id":"AAAAUX%2F%2FdKM%3D","line":20,"updated":"2014-02-13 03:41:12.000000000","message":"trailing whitespace","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"}],"examples/pki/pki_functions":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed0b65240995026de4490e0603fb67921eaa110e","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"#"}],"source_content_type":"application/x-shellscript","patch_set":11,"id":"AAAAUX%2F%2FdJ8%3D","line":1,"updated":"2014-02-13 03:41:12.000000000","message":"can you save the refactor (moving all this to a new file) for a subsequent commit? it\u0027s difficult to diff as-is","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0d1dc0a996745462681046ca8c6791f47f5aed78","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#!/bin/bash"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"# Copyright 2012 OpenStack Foundation"},{"line_number":4,"context_line":"#"}],"source_content_type":"application/x-shellscript","patch_set":11,"id":"AAAAUX%2F%2FdDM%3D","line":1,"in_reply_to":"AAAAUX%2F%2FdJ8%3D","updated":"2014-02-13 04:06:05.000000000","message":"I did this to make it easier to execute, but I can keep this one with the old name.  The only difference is the last function","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"}],"examples/scripts/exercise_v3_regions.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0abf279fdf1314e305ee32ce8861f130539b0710","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":2,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":3,"context_line":"#    a copy of the License at"},{"line_number":4,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":29,"id":"AAAAXH%2F%2FQVI%3D","line":1,"updated":"2014-04-23 00:08:45.000000000","message":"what is this file doing here?","commit_id":"40d8850807b27f7cb30a72845b1fdf21bb5ea169"}],"examples/scripts/regions.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"898bb7e7138b1d52cb7cec5432e1b57ad1e8d211","unresolved":false,"context_lines":[{"line_number":16,"context_line":"Performs Create without and with parent region, list, update and delete."},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Uses the OS_SERVICE_TOKEN to authenticate, assuming a new install and no"},{"line_number":19,"context_line":"established authentication information."},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":"from __future__ import print_function"}],"source_content_type":"text/x-python","patch_set":38,"id":"7adec928_13026d3e","line":19,"updated":"2014-05-08 06:13:52.000000000","message":"does this file have anything do do with the review?","commit_id":"bccfdc3491f6572c5daf1a81c06ee32f7bc739a5"}],"keystoneclient/common/cms.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# vim: tabstop\u003d4 shiftwidth\u003d4 softtabstop\u003d4"},{"line_number":2,"context_line":""},{"line_number":3,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":4,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":5,"context_line":"#    a copy of the License at"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F06Y%3D","side":"PARENT","line":2,"updated":"2014-02-10 15:35:35.000000000","message":"undo irrelevant whitespace changes","commit_id":"ba102bbd56795b1e97a26877a514e7c1303d65d7"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":34,"context_line":"subprocess \u003d None"},{"line_number":35,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":36,"context_line":"PKI_ANS1_PREFIX \u003d \u0027MII\u0027"},{"line_number":37,"context_line":"CMSZ_PREFIX \u003d \u0027{cmsz}\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _ensure_subprocess():"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F01I%3D","line":37,"updated":"2014-02-10 15:35:35.000000000","message":"the mixed naming scheme used throughout this module makes the entire module incredibly difficult to follow. \"CMSZ\" tokens are still \"PKI\" tokens, so refer to them accordingly.","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":155,"context_line":"    signed \u003d cms_sign_data(text,"},{"line_number":156,"context_line":"                           signing_cert_file_name,"},{"line_number":157,"context_line":"                           signing_key_file_name,"},{"line_number":158,"context_line":"                           \"DER\")"},{"line_number":159,"context_line":"    compressed \u003d zlib.compress(signed, compression_level)"},{"line_number":160,"context_line":"    encoded \u003d CMSZ_PREFIX + base64.urlsafe_b64encode(compressed)"},{"line_number":161,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F04I%3D","line":158,"updated":"2014-02-10 15:35:35.000000000","message":"use a kwarg and single quotes","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":168,"context_line":"    return uncompressed"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"def token_to_cms(signed_text):"},{"line_number":172,"context_line":"    copy_of_text \u003d signed_text.replace(\u0027-\u0027, \u0027/\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    formatted \u003d \"-----BEGIN CMS-----\\n\""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F03Q%3D","line":171,"updated":"2014-02-10 15:35:35.000000000","message":"this should be deprecated now?","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":296,"context_line":"    return signed_text"},{"line_number":297,"context_line":""},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"def cms_hash_token(token_id):"},{"line_number":300,"context_line":"    \"\"\"Hash Long tokens."},{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    return: for tokens longer than 64 characters (the size of the UUID tokens,"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F02c%3D","line":299,"updated":"2014-02-10 15:35:35.000000000","message":"you changed the intent of the docstr without changing the method name... they don\u0027t match anymore","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    return: for tokens longer than 64 characters (the size of the UUID tokens,"},{"line_number":303,"context_line":"    and the key in the backend storage), returns the hash of the passed in"},{"line_number":304,"context_line":"    token; otherwise, returns what it was passed in."},{"line_number":305,"context_line":"    \"\"\""},{"line_number":306,"context_line":"    if token_id is None:"},{"line_number":307,"context_line":"        return None"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F014%3D","line":304,"updated":"2014-02-10 15:35:35.000000000","message":"this looks like a half baked change -- maybe just undo changes to the docstr since you didn\u0027t follow up on them","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"9e86d4b9c8f412496b3e59344984f60c40f29701","unresolved":false,"context_lines":[{"line_number":305,"context_line":"    \"\"\""},{"line_number":306,"context_line":"    if token_id is None:"},{"line_number":307,"context_line":"        return None"},{"line_number":308,"context_line":"    if is_ans1_token(token_id) or is_cmsz_token(token_id):"},{"line_number":309,"context_line":"        hasher \u003d hashlib.md5()"},{"line_number":310,"context_line":"        if isinstance(token_id, six.text_type):"},{"line_number":311,"context_line":"            token_id \u003d token_id.encode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAUX%2F%2F02Q%3D","line":308,"updated":"2014-02-10 15:35:35.000000000","message":"and again, this doesn\u0027t match the new docstr at all","commit_id":"c1d59ee65c4cd30e631f14dcfbfc5d9153d9a286"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed0b65240995026de4490e0603fb67921eaa110e","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    #"},{"line_number":144,"context_line":"    if retcode \u003d\u003d 2:"},{"line_number":145,"context_line":"        raise exceptions.CertificateConfigError(err)"},{"line_number":146,"context_line":"    elif retcode \u003d\u003d 4:"},{"line_number":147,"context_line":"            retcode, err, output \u003d _verify_in_subprocess("},{"line_number":148,"context_line":"                formatted, signing_cert_file_name, ca_file_name, False)"},{"line_number":149,"context_line":"    if retcode:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2FdI4%3D","line":146,"updated":"2014-02-13 03:41:12.000000000","message":"i\u0027m pretty sure you can get a 4 if you haven\u0027t run pki_setup yet","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0d1dc0a996745462681046ca8c6791f47f5aed78","unresolved":false,"context_lines":[{"line_number":143,"context_line":"    #"},{"line_number":144,"context_line":"    if retcode \u003d\u003d 2:"},{"line_number":145,"context_line":"        raise exceptions.CertificateConfigError(err)"},{"line_number":146,"context_line":"    elif retcode \u003d\u003d 4:"},{"line_number":147,"context_line":"            retcode, err, output \u003d _verify_in_subprocess("},{"line_number":148,"context_line":"                formatted, signing_cert_file_name, ca_file_name, False)"},{"line_number":149,"context_line":"    if retcode:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2FdB4%3D","line":146,"in_reply_to":"AAAAUX%2F%2FdI4%3D","updated":"2014-02-13 04:06:05.000000000","message":"this is kindof dodgey, but to get anything clearer would require parsing the error message strings.  For example, you can get a 4 if the data that comes in is not a valid PEM formatted message.","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ed0b65240995026de4490e0603fb67921eaa110e","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        raise exceptions.CertificateConfigError(err)"},{"line_number":146,"context_line":"    elif retcode \u003d\u003d 4:"},{"line_number":147,"context_line":"            retcode, err, output \u003d _verify_in_subprocess("},{"line_number":148,"context_line":"                formatted, signing_cert_file_name, ca_file_name, False)"},{"line_number":149,"context_line":"    if retcode:"},{"line_number":150,"context_line":"        # NOTE(dmllr): Python 2.6 compatibility:"},{"line_number":151,"context_line":"        # CalledProcessError did not have output keyword argument"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2FdJM%3D","line":148,"updated":"2014-02-13 03:41:12.000000000","message":"especially when passing constants around, use kwargs\n\n  uncompress\u003dFalse","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"0d1dc0a996745462681046ca8c6791f47f5aed78","unresolved":false,"context_lines":[{"line_number":145,"context_line":"        raise exceptions.CertificateConfigError(err)"},{"line_number":146,"context_line":"    elif retcode \u003d\u003d 4:"},{"line_number":147,"context_line":"            retcode, err, output \u003d _verify_in_subprocess("},{"line_number":148,"context_line":"                formatted, signing_cert_file_name, ca_file_name, False)"},{"line_number":149,"context_line":"    if retcode:"},{"line_number":150,"context_line":"        # NOTE(dmllr): Python 2.6 compatibility:"},{"line_number":151,"context_line":"        # CalledProcessError did not have output keyword argument"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAAUX%2F%2FdC0%3D","line":148,"in_reply_to":"AAAAUX%2F%2FdJM%3D","updated":"2014-02-13 04:06:05.000000000","message":"Done","commit_id":"4578778a5ea9e20a3195d3a89b0b333f3b7b157d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"71cc9d64d866b98eb517d12f4c0481b9940512ce","unresolved":false,"context_lines":[{"line_number":235,"context_line":"        raise subprocess.CalledProcessError(retcode, \"openssl\")"},{"line_number":236,"context_line":"    return output"},{"line_number":237,"context_line":""},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"def cms_sign_token(text, signing_cert_file_name, signing_key_file_name):"},{"line_number":240,"context_line":"    output \u003d cms_sign_text(text, signing_cert_file_name, signing_key_file_name)"},{"line_number":241,"context_line":"    return cms_to_token(output)"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FVoA%3D","side":"PARENT","line":238,"updated":"2014-03-06 18:51:16.000000000","message":"This is now used by the Keystone server. It needs to come back","commit_id":"b935741f6c93abae1c7aac41da92b475bbe14815"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"71cc9d64d866b98eb517d12f4c0481b9940512ce","unresolved":false,"context_lines":[{"line_number":243,"context_line":"    return token[:3] \u003d\u003d PKI_ANS1_PREFIX"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def is_pkiz(token_text):"},{"line_number":247,"context_line":"    \"\"\"Determine if a token a  cmsz token"},{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    Checks if the string has the prefix that indicates it is a"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FVqE%3D","line":246,"updated":"2014-03-06 18:51:16.000000000","message":"I think this should be moved up to where the rest of the pkiz_ functions are defined.","commit_id":"b2b20a0e38f2ef895c8e05a62a6c085835f05d6e"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"71cc9d64d866b98eb517d12f4c0481b9940512ce","unresolved":false,"context_lines":[{"line_number":267,"context_line":""},{"line_number":268,"context_line":"    \"\"\""},{"line_number":269,"context_line":"    _ensure_subprocess()"},{"line_number":270,"context_line":"    new_lines \u003d True if outform \u003d\u003d \u0027PEM\u0027 else False"},{"line_number":271,"context_line":""},{"line_number":272,"context_line":"    process \u003d subprocess.Popen([\"openssl\", \"cms\", \"-sign\","},{"line_number":273,"context_line":"                                \"-signer\", signing_cert_file_name,"}],"source_content_type":"text/x-python","patch_set":16,"id":"AAAAVn%2F%2FVp4%3D","line":270,"updated":"2014-03-06 18:51:16.000000000","message":"this value needs to match the type of Data transported between processes via popoen.  PEM is text, DER is binary.","commit_id":"b2b20a0e38f2ef895c8e05a62a6c085835f05d6e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":34,"context_line":"PKI_ASN1_PREFIX \u003d \u0027MII\u0027"},{"line_number":35,"context_line":"PKIZ_PREFIX \u003d \u0027PKIZ_\u0027"},{"line_number":36,"context_line":"PKIZ_CMS_FORM \u003d \u0027DER\u0027"},{"line_number":37,"context_line":"PKI_ANS1_FORM \u003d \u0027PEM\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"def _ensure_subprocess():"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGu4%3D","line":37,"updated":"2014-04-24 00:52:39.000000000","message":"change ANS1 to ASN1","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    # Error opening certificate file not_exist_file"},{"line_number":151,"context_line":"    #"},{"line_number":152,"context_line":"    if retcode \u003d\u003d 2:"},{"line_number":153,"context_line":"        if not isinstance(err, six.string_types):"},{"line_number":154,"context_line":"            err \u003d err.decode(\"utf-8\")"},{"line_number":155,"context_line":"        if err.startswith(\u0027Error reading S/MIME message\u0027):"},{"line_number":156,"context_line":"            raise exceptions.CMSError(err)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGwI%3D","line":153,"updated":"2014-04-24 00:52:39.000000000","message":"I thought we made sure that err was always a string.","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"def is_pkiz(token_text):"},{"line_number":169,"context_line":"    \"\"\"Determine if a token a  cmsz token"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    Checks if the string has the prefix that indicates it is a"},{"line_number":172,"context_line":"    Crypto Message Sytax, Z compressed token."}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGwE%3D","line":169,"updated":"2014-04-24 00:52:39.000000000","message":"remove extra space before cmsz","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":286,"context_line":"    return is_asn1_token(token)"},{"line_number":287,"context_line":""},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"#Legacy function call, will be deprecated once the Server is updated."},{"line_number":290,"context_line":"def cms_sign_text(data_to_sign, signing_cert_file_name, signing_key_file_name):"},{"line_number":291,"context_line":"    return cms_sign_data(data_to_sign, signing_cert_file_name,"},{"line_number":292,"context_line":"                         signing_key_file_name)"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGvk%3D","line":289,"updated":"2014-04-24 00:52:39.000000000","message":"add a space after # for consistency","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":301,"context_line":""},{"line_number":302,"context_line":"    :param data_to_sign: data to sign"},{"line_number":303,"context_line":"    :param signing_cert_file_name:  path to the X509 certificate containing"},{"line_number":304,"context_line":"        the public key associated with the pribvate key used to sign the data"},{"line_number":305,"context_line":"    :param signing_key_file_name: path to the private key used to sign"},{"line_number":306,"context_line":"        the data"},{"line_number":307,"context_line":"    :param outform Format for the signed document \"PEM\" or \"DER\""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGvM%3D","line":304,"updated":"2014-04-24 00:52:39.000000000","message":"change \"pribvate\" to \"private\"","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":304,"context_line":"        the public key associated with the pribvate key used to sign the data"},{"line_number":305,"context_line":"    :param signing_key_file_name: path to the private key used to sign"},{"line_number":306,"context_line":"        the data"},{"line_number":307,"context_line":"    :param outform Format for the signed document \"PEM\" or \"DER\""},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"    \"\"\""},{"line_number":310,"context_line":"    _ensure_subprocess()"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGvI%3D","line":307,"updated":"2014-04-24 00:52:39.000000000","message":"add : after outform\n\nalso, suggest reference the constants (e.g., PKIZ_CMS_FORM for \"DER\")","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    if retcode or (\u0027Error\u0027 in err):"},{"line_number":329,"context_line":"        LOG.error(\u0027Signing error: %s\u0027 % err)"},{"line_number":330,"context_line":"        if retcode \u003d\u003d 3:"},{"line_number":331,"context_line":"            LOG.error(\u0027Signing error: Unable to load certificate - \u0027"},{"line_number":332,"context_line":"                      \u0027ensure you have configured PKI with \u0027"},{"line_number":333,"context_line":"                      \u0027\"keystone-manage pki_setup\"\u0027)"},{"line_number":334,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGus%3D","line":331,"updated":"2014-04-24 00:52:39.000000000","message":"this looks unrelated.","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"fc1b92baa970facc1230a8b9ff4b6e70b0a7ab2e","unresolved":false,"context_lines":[{"line_number":328,"context_line":"    if retcode or (\u0027Error\u0027 in err):"},{"line_number":329,"context_line":"        LOG.error(\u0027Signing error: %s\u0027 % err)"},{"line_number":330,"context_line":"        if retcode \u003d\u003d 3:"},{"line_number":331,"context_line":"            LOG.error(\u0027Signing error: Unable to load certificate - \u0027"},{"line_number":332,"context_line":"                      \u0027ensure you have configured PKI with \u0027"},{"line_number":333,"context_line":"                      \u0027\"keystone-manage pki_setup\"\u0027)"},{"line_number":334,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGR8%3D","line":331,"in_reply_to":"AAAAXH%2F%2FGus%3D","updated":"2014-04-24 02:19:03.000000000","message":"Came out during development.  It made debugging easier for me, and it should be left in.","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import hashlib"},{"line_number":25,"context_line":"import logging"},{"line_number":26,"context_line":"import six"},{"line_number":27,"context_line":"import zlib"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"from keystoneclient import exceptions"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_2fe4600c","line":27,"updated":"2014-04-29 19:22:53.000000000","message":"I know options differ on arranging imports during a commit, but it seems like you can put zlib and a newline before six and that would fix the order without touching existing imports.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8501ab89be7767161cbbeb6da94b1ccafcc7598b","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        encoding \u003d \u0027UTF-8\u0027"},{"line_number":110,"context_line":"    elif inform \u003d\u003d PKIZ_CMS_FORM:"},{"line_number":111,"context_line":"        encoding \u003d \u0027hex\u0027"},{"line_number":112,"context_line":"    return encoding"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def cms_verify(formatted, signing_cert_file_name, ca_file_name,"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_426354b1","line":112,"updated":"2014-04-29 22:46:34.000000000","message":"this is going to raise an UnboundLocalError if inform isn\u0027t either of the tested values since encoding isn\u0027t set; have it raise an Exception with an explanation instead.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        encoding \u003d \u0027UTF-8\u0027"},{"line_number":110,"context_line":"    elif inform \u003d\u003d PKIZ_CMS_FORM:"},{"line_number":111,"context_line":"        encoding \u003d \u0027hex\u0027"},{"line_number":112,"context_line":"    return encoding"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""},{"line_number":115,"context_line":"def cms_verify(formatted, signing_cert_file_name, ca_file_name,"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_3dd7fd24","line":112,"in_reply_to":"9ad9bd40_426354b1","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    if retcode or (\u0027Error\u0027 in err):"},{"line_number":329,"context_line":"        LOG.error(\u0027Signing error: %s\u0027 % err)"},{"line_number":330,"context_line":"        if retcode \u003d\u003d 3:"},{"line_number":331,"context_line":"            LOG.error(\u0027Signing error: Unable to load certificate - \u0027"},{"line_number":332,"context_line":"                      \u0027ensure you have configured PKI with \u0027"},{"line_number":333,"context_line":"                      \u0027\"keystone-manage pki_setup\"\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_8f880c24","line":330,"updated":"2014-04-29 19:22:53.000000000","message":"Is there a test for this? Since it\u0027s only logging maybe there doesn\u0027t need to be one.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":327,"context_line":""},{"line_number":328,"context_line":"    if retcode or (\u0027Error\u0027 in err):"},{"line_number":329,"context_line":"        LOG.error(\u0027Signing error: %s\u0027 % err)"},{"line_number":330,"context_line":"        if retcode \u003d\u003d 3:"},{"line_number":331,"context_line":"            LOG.error(\u0027Signing error: Unable to load certificate - \u0027"},{"line_number":332,"context_line":"                      \u0027ensure you have configured PKI with \u0027"},{"line_number":333,"context_line":"                      \u0027\"keystone-manage pki_setup\"\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_fdbf55a8","line":330,"in_reply_to":"bad4c104_8f880c24","updated":"2014-05-02 19:31:59.000000000","message":"This was code I developed as I was working with the input, when I realized that retcode 3 specifically indicated the signing cert.  It is checked by existing logic.  The else block is a catch all for other errors.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":332,"context_line":"                      \u0027ensure you have configured PKI with \u0027"},{"line_number":333,"context_line":"                      \u0027\"keystone-manage pki_setup\"\u0027)"},{"line_number":334,"context_line":"        else:"},{"line_number":335,"context_line":"            LOG.error(\u0027Signing error: %s\u0027 % err)"},{"line_number":336,"context_line":"        raise subprocess.CalledProcessError(retcode, \u0027openssl\u0027)"},{"line_number":337,"context_line":"    if outform \u003d\u003d PKI_ASN1_FORM:"},{"line_number":338,"context_line":"        return output.decode(\u0027utf-8\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_6fd8281e","line":335,"updated":"2014-04-29 19:22:53.000000000","message":"Use a comma instead of a percent.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a26f50926e47862730d86d0a4c15fc8021d5a82d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"    if inform \u003d\u003d PKI_ASN1_FORM:"},{"line_number":109,"context_line":"        encoding \u003d \u0027UTF-8\u0027"},{"line_number":110,"context_line":"    elif inform \u003d\u003d PKIZ_CMS_FORM:"},{"line_number":111,"context_line":"        encoding \u003d \u0027hex\u0027"},{"line_number":112,"context_line":"    return encoding"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"9ad9bd40_4736d053","line":111,"updated":"2014-05-01 19:35:26.000000000","message":"Should a case be added here to make sure we don\u0027t return \u0027None\u0027? In the case None is returned line 124 will fail because of: \n\n    data \u003d bytearray(formatted, None)","commit_id":"f5253d758ec918b0d9ab7fe6cc156169c4a86ce0"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    return is_asn1_token(token)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"# Legacy function call, will be deprecated once the Server is updated."},{"line_number":293,"context_line":"def cms_sign_text(data_to_sign, signing_cert_file_name, signing_key_file_name):"},{"line_number":294,"context_line":"    return cms_sign_data(data_to_sign, signing_cert_file_name,"},{"line_number":295,"context_line":"                         signing_key_file_name)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_2787b5d8","line":292,"updated":"2014-05-05 23:38:17.000000000","message":"change \"Server\" to \"server\"","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f7fbbf57bdfb6a0490a91dcc49508ad82071e417","unresolved":false,"context_lines":[{"line_number":258,"context_line":""},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"def cms_to_token(cms_text):"},{"line_number":261,"context_line":""},{"line_number":262,"context_line":"    start_delim \u003d \u0027-----BEGIN CMS-----\u0027"},{"line_number":263,"context_line":"    end_delim \u003d \u0027-----END CMS-----\u0027"},{"line_number":264,"context_line":"    signed_text \u003d cms_text"}],"source_content_type":"text/x-python","patch_set":37,"id":"9ad9bd40_da87a5b3","side":"PARENT","line":261,"updated":"2014-05-06 17:44:29.000000000","message":"Whitespace change?","commit_id":"f2adf271e719647b8e3f8bd13dce84a35dfcb932"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"898bb7e7138b1d52cb7cec5432e1b57ad1e8d211","unresolved":false,"context_lines":[{"line_number":289,"context_line":"    return is_asn1_token(token)"},{"line_number":290,"context_line":""},{"line_number":291,"context_line":""},{"line_number":292,"context_line":"# Legacy function call, will be deprecated once the server is updated."},{"line_number":293,"context_line":"def cms_sign_text(data_to_sign, signing_cert_file_name, signing_key_file_name):"},{"line_number":294,"context_line":"    return cms_sign_data(data_to_sign, signing_cert_file_name,"},{"line_number":295,"context_line":"                         signing_key_file_name)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7adec928_d6a55305","line":292,"updated":"2014-05-08 06:13:52.000000000","message":"why? it\u0027s the same argument spec as the one replacing it.\n\n(not a blocker)","commit_id":"bccfdc3491f6572c5daf1a81c06ee32f7bc739a5"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"4765881e30cfdb7bcf9a54f5cd3146a8cb5286d1","unresolved":false,"context_lines":[{"line_number":172,"context_line":"    \"\"\"Determine if a token a cmsz token"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"    Checks if the string has the prefix that indicates it is a"},{"line_number":175,"context_line":"    Crypto Message Syntax, Z compressed token."},{"line_number":176,"context_line":"    \"\"\""},{"line_number":177,"context_line":"    return token_text.startswith(PKIZ_PREFIX)"},{"line_number":178,"context_line":""}],"source_content_type":"text/x-python","patch_set":40,"id":"7adec928_7a27c064","line":175,"updated":"2014-05-12 18:53:42.000000000","message":"zlib-compressed","commit_id":"3d6d749e6f0fef682a88758e1a2f6c9e8e7bd23c"}],"keystoneclient/exceptions.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \"\"\"Error reading the certificate\"\"\""},{"line_number":41,"context_line":"    def __init__(self, output):"},{"line_number":42,"context_line":"        self.output \u003d output"},{"line_number":43,"context_line":"        msg \u003d (\"Unable to Sign or Verify data.\")"},{"line_number":44,"context_line":"        super(CMSError, self).__init__(msg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_d2571701","line":43,"updated":"2014-04-29 19:41:21.000000000","message":"remove the parens and use sentence case in the sentence","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":40,"context_line":"    \"\"\"Error reading the certificate\"\"\""},{"line_number":41,"context_line":"    def __init__(self, output):"},{"line_number":42,"context_line":"        self.output \u003d output"},{"line_number":43,"context_line":"        msg \u003d (\"Unable to Sign or Verify data.\")"},{"line_number":44,"context_line":"        super(CMSError, self).__init__(msg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_1d05d979","line":43,"in_reply_to":"bad4c104_d2571701","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        super(CMSError, self).__init__(msg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class EmptyCatalog(EndpointNotFound):"},{"line_number":49,"context_line":"    \"\"\"The service catalog is empty.\"\"\""},{"line_number":50,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_924d8f75","line":47,"updated":"2014-04-29 19:41:21.000000000","message":"pep8 use consistent whitespace","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        super(CMSError, self).__init__(msg)"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"class EmptyCatalog(EndpointNotFound):"},{"line_number":49,"context_line":"    \"\"\"The service catalog is empty.\"\"\""},{"line_number":50,"context_line":"    pass"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_3d08dd90","line":47,"in_reply_to":"bad4c104_924d8f75","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"}],"keystoneclient/middleware/auth_token.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":318,"context_line":""},{"line_number":319,"context_line":"LIST_OF_VERSIONS_TO_ATTEMPT \u003d [\u0027v2.0\u0027, \u0027v3.0\u0027]"},{"line_number":320,"context_line":"CACHE_KEY_TEMPLATE \u003d \u0027tokens/%s\u0027"},{"line_number":321,"context_line":"CMSZ \u003d \"{cmsz}\""},{"line_number":322,"context_line":""},{"line_number":323,"context_line":""},{"line_number":324,"context_line":"class BIND_MODE:"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9fAc%3D","line":321,"updated":"2014-02-06 16:01:09.000000000","message":"Would CMSZ_PREFIX be a better name? We are using PKI_ANS1_PREFIX in cms for a similar concept.","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":1274,"context_line":"                raise"},{"line_number":1275,"context_line":"            return output"},{"line_number":1276,"context_line":""},{"line_number":1277,"context_line":"    def is_zlib_token(self, signed_text):"},{"line_number":1278,"context_line":"        return signed_text.startswith(CMSZ)"},{"line_number":1279,"context_line":""},{"line_number":1280,"context_line":"    def verify_signed_token(self, signed_text):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9e%2FI%3D","line":1277,"updated":"2014-02-06 16:01:09.000000000","message":"Is there any reason this isn\u0027t in cms with `is_ans1_token`?","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":1282,"context_line":"        if self.is_signed_token_revoked(signed_text):"},{"line_number":1283,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1284,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1285,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1286,"context_line":"        return verified"},{"line_number":1287,"context_line":""},{"line_number":1288,"context_line":"    def verify_zlib_token(self, signed_text):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9e%2Bo%3D","line":1285,"updated":"2014-02-06 16:01:09.000000000","message":"Just return here and avoid the extra line?","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"        try:"},{"line_number":1290,"context_line":"            unencoded \u003d base64.urlsafe_b64decode(signed_text[len(CMSZ):])"},{"line_number":1291,"context_line":"            uncompressed \u003d zlib.decompress(unencoded)"},{"line_number":1292,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003d\"DER\")"},{"line_number":1293,"context_line":"            return verified"},{"line_number":1294,"context_line":"        except TypeError:"},{"line_number":1295,"context_line":"            raise InvalidUserToken(signed_text)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9e%2BQ%3D","line":1292,"updated":"2014-02-06 16:01:09.000000000","message":"Same return question here.","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"d484dc96f9430312dce1cb2694710c496cb1aa5c","unresolved":false,"context_lines":[{"line_number":1293,"context_line":"            return verified"},{"line_number":1294,"context_line":"        except TypeError:"},{"line_number":1295,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1296,"context_line":"#            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1297,"context_line":""},{"line_number":1298,"context_line":"    def verify_signing_dir(self):"},{"line_number":1299,"context_line":"        if os.path.exists(self.signing_dirname):"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9lL0%3D","line":1296,"updated":"2014-02-05 22:03:54.000000000","message":"can probably remove this comment","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e6dca68a8d13562340539b2018d7bf99ac25d178","unresolved":false,"context_lines":[{"line_number":1271,"context_line":"        \"\"\"Check that the token is unrevoked and has a valid signature.\"\"\""},{"line_number":1272,"context_line":"        if self.is_signed_token_revoked(signed_text):"},{"line_number":1273,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1276,"context_line":"        return self.cms_verify(formatted)"},{"line_number":1277,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2F4k%3D","side":"PARENT","line":1274,"updated":"2014-02-07 20:50:15.000000000","message":"irrelevant","commit_id":"bb7f6aa9a9651576b73f6f187285a966c2a5ffe4"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e6dca68a8d13562340539b2018d7bf99ac25d178","unresolved":false,"context_lines":[{"line_number":1273,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1274,"context_line":""},{"line_number":1275,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1276,"context_line":"        return self.cms_verify(formatted)"},{"line_number":1277,"context_line":""},{"line_number":1278,"context_line":"    def verify_signing_dir(self):"},{"line_number":1279,"context_line":"        if os.path.exists(self.signing_dirname):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2F40%3D","side":"PARENT","line":1276,"updated":"2014-02-07 20:50:15.000000000","message":"this change is irrelevant","commit_id":"bb7f6aa9a9651576b73f6f187285a966c2a5ffe4"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e6dca68a8d13562340539b2018d7bf99ac25d178","unresolved":false,"context_lines":[{"line_number":1284,"context_line":"    def verify_cmsz_token(self, signed_text):"},{"line_number":1285,"context_line":"        try:"},{"line_number":1286,"context_line":"            uncompressed \u003d cms.uncompress_cmsz_token(signed_text)"},{"line_number":1287,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003d\"DER\")"},{"line_number":1288,"context_line":"            return verified"},{"line_number":1289,"context_line":"        except TypeError:"},{"line_number":1290,"context_line":"            raise InvalidUserToken(signed_text)"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2F5g%3D","line":1287,"updated":"2014-02-07 20:50:15.000000000","message":"why is DER not the default, and PEM the deprecated exception?","commit_id":"bf53156957e2053f10c126ea41763410277d5a0b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"e6dca68a8d13562340539b2018d7bf99ac25d178","unresolved":false,"context_lines":[{"line_number":1286,"context_line":"            uncompressed \u003d cms.uncompress_cmsz_token(signed_text)"},{"line_number":1287,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003d\"DER\")"},{"line_number":1288,"context_line":"            return verified"},{"line_number":1289,"context_line":"        except TypeError:"},{"line_number":1290,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1291,"context_line":""},{"line_number":1292,"context_line":"    def verify_signing_dir(self):"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAUX%2F%2F%2F5U%3D","line":1289,"updated":"2014-02-07 20:50:15.000000000","message":"what raises a TypeError? remove a line from the try block","commit_id":"bf53156957e2053f10c126ea41763410277d5a0b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":853,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":854,"context_line":"            elif cms.is_pkiz(user_token):"},{"line_number":855,"context_line":"                verified \u003d self.verify_pkiz_token(user_token)"},{"line_number":856,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":857,"context_line":"            else:"},{"line_number":858,"context_line":"                data \u003d self.verify_uuid_token(user_token, retry)"},{"line_number":859,"context_line":"            expires \u003d confirm_token_not_expired(data)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_12afbfe4","line":856,"updated":"2014-04-29 19:41:21.000000000","message":"i\u0027d suggest checking pkiz first, since that will be the deployment preference","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":853,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":854,"context_line":"            elif cms.is_pkiz(user_token):"},{"line_number":855,"context_line":"                verified \u003d self.verify_pkiz_token(user_token)"},{"line_number":856,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":857,"context_line":"            else:"},{"line_number":858,"context_line":"                data \u003d self.verify_uuid_token(user_token, retry)"},{"line_number":859,"context_line":"            expires \u003d confirm_token_not_expired(data)"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_12194879","line":856,"in_reply_to":"bad4c104_12afbfe4","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8501ab89be7767161cbbeb6da94b1ccafcc7598b","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"        \"\"\"Check that the token is unrevoked and has a valid signature.\"\"\""},{"line_number":1235,"context_line":"        if self.is_signed_token_revoked(signed_text):"},{"line_number":1236,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1237,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1238,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1239,"context_line":"        return verified"},{"line_number":1240,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_e26b8883","line":1237,"updated":"2014-04-29 22:46:34.000000000","message":"revert whitespace change on previous line (add a blank line)","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":1234,"context_line":"        \"\"\"Check that the token is unrevoked and has a valid signature.\"\"\""},{"line_number":1235,"context_line":"        if self.is_signed_token_revoked(signed_text):"},{"line_number":1236,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1237,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1238,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1239,"context_line":"        return verified"},{"line_number":1240,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_4f7debe6","line":1237,"in_reply_to":"9ad9bd40_e26b8883","updated":"2014-05-02 19:31:59.000000000","message":"Done","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1237,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1238,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1239,"context_line":"        return verified"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"    def verify_pkiz_token(self, signed_text):"},{"line_number":1242,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_cf0cd497","line":1239,"updated":"2014-04-29 19:22:53.000000000","message":"Why the extra return line here? It wasn\u0027t in the original.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1237,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1238,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1239,"context_line":"        return verified"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"    def verify_pkiz_token(self, signed_text):"},{"line_number":1242,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_d27c7775","line":1239,"in_reply_to":"bad4c104_cf0cd497","updated":"2014-04-29 19:41:21.000000000","message":"++ undo this change","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":1236,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1237,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1238,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1239,"context_line":"        return verified"},{"line_number":1240,"context_line":""},{"line_number":1241,"context_line":"    def verify_pkiz_token(self, signed_text):"},{"line_number":1242,"context_line":"        try:"}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_8fba936c","line":1239,"in_reply_to":"bad4c104_d27c7775","updated":"2014-05-02 19:31:59.000000000","message":"The idea is that the verify call will populate the token data.  See _validate_user_token","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"e88d2acb7d120735b44b7763a9b8308545d6a129","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        try:"},{"line_number":1243,"context_line":"            uncompressed \u003d cms.pkiz_uncompress(signed_text)"},{"line_number":1244,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003dcms.PKIZ_CMS_FORM)"},{"line_number":1245,"context_line":"            return verified"},{"line_number":1246,"context_line":"        except TypeError:"},{"line_number":1247,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1248,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_ef1198ad","line":1245,"updated":"2014-04-29 19:22:53.000000000","message":"And here...","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":1242,"context_line":"        try:"},{"line_number":1243,"context_line":"            uncompressed \u003d cms.pkiz_uncompress(signed_text)"},{"line_number":1244,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003dcms.PKIZ_CMS_FORM)"},{"line_number":1245,"context_line":"            return verified"},{"line_number":1246,"context_line":"        except TypeError:"},{"line_number":1247,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1248,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_52906795","line":1245,"in_reply_to":"bad4c104_ef1198ad","updated":"2014-04-29 19:41:21.000000000","message":"++","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":1243,"context_line":"            uncompressed \u003d cms.pkiz_uncompress(signed_text)"},{"line_number":1244,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003dcms.PKIZ_CMS_FORM)"},{"line_number":1245,"context_line":"            return verified"},{"line_number":1246,"context_line":"        except TypeError:"},{"line_number":1247,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1248,"context_line":""},{"line_number":1249,"context_line":"    def verify_signing_dir(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_f2f89be7","line":1246,"updated":"2014-04-29 19:41:21.000000000","message":"what raises a TypeError and why?","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":1244,"context_line":"            except cms.subprocess.CalledProcessError as err:"},{"line_number":1245,"context_line":"                self.LOG.warning(\u0027Verify error: %s\u0027, err)"},{"line_number":1246,"context_line":"                raise"},{"line_number":1247,"context_line":"        try:"},{"line_number":1248,"context_line":"            return verify()"},{"line_number":1249,"context_line":"        except exceptions.CertificateConfigError:"},{"line_number":1250,"context_line":"            # the certs might be missing; unconditionally fetch to avoid racing"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_a74905b9","line":1247,"updated":"2014-05-05 23:38:17.000000000","message":"revert whitespace change on previous line (add a blank line)","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":1264,"context_line":"        \"\"\"Check that the token is unrevoked and has a valid signature.\"\"\""},{"line_number":1265,"context_line":"        if self.is_signed_token_revoked(signed_text):"},{"line_number":1266,"context_line":"            raise InvalidUserToken(\u0027Token has been revoked\u0027)"},{"line_number":1267,"context_line":"        formatted \u003d cms.token_to_cms(signed_text)"},{"line_number":1268,"context_line":"        verified \u003d self.cms_verify(formatted)"},{"line_number":1269,"context_line":"        return verified"},{"line_number":1270,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_2702556f","line":1267,"updated":"2014-05-05 23:38:17.000000000","message":"revert whitespace change on previous line (add a blank line)","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":1273,"context_line":"            uncompressed \u003d cms.pkiz_uncompress(signed_text)"},{"line_number":1274,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003dcms.PKIZ_CMS_FORM)"},{"line_number":1275,"context_line":"            return verified"},{"line_number":1276,"context_line":"        except TypeError:"},{"line_number":1277,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1278,"context_line":""},{"line_number":1279,"context_line":"    def verify_signing_dir(self):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_67f7fd8b","line":1276,"updated":"2014-05-05 23:38:17.000000000","message":"what raises a TypeError and why?","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"f7fbbf57bdfb6a0490a91dcc49508ad82071e417","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"            uncompressed \u003d cms.pkiz_uncompress(signed_text)"},{"line_number":1278,"context_line":"            verified \u003d self.cms_verify(uncompressed, inform\u003dcms.PKIZ_CMS_FORM)"},{"line_number":1279,"context_line":"            return verified"},{"line_number":1280,"context_line":"        #TypeError If the signed_text is not zlib compressed"},{"line_number":1281,"context_line":"        except TypeError:"},{"line_number":1282,"context_line":"            raise InvalidUserToken(signed_text)"},{"line_number":1283,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"9ad9bd40_fa90e9ee","line":1280,"updated":"2014-05-06 17:44:29.000000000","message":"space after #","commit_id":"49d8586ee9811370b909d0ed1be0f7114251e673"}],"keystoneclient/tests/client_fixtures.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        # consistent between the tests and the signed documents, we read them"},{"line_number":55,"context_line":"        # in for use in the tests."},{"line_number":56,"context_line":"        with open(os.path.join(CMSDIR, \u0027auth_token_scoped.json\u0027)) as f:"},{"line_number":57,"context_line":"            self.TOKEN_SCOPED_DATA \u003d cms._cms_to_token(f.read())"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        with open(os.path.join(CMSDIR, \u0027auth_token_scoped.pem\u0027)) as f:"},{"line_number":60,"context_line":"            self.SIGNED_TOKEN_SCOPED \u003d cms._cms_to_token(f.read())"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_27ec158f","line":57,"updated":"2014-05-05 23:38:17.000000000","message":"why was this added when we already have SIGNED_TOKEN_SCOPED ? add a comment.","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"ea34a3853609a3ca37216fffeb7fb5ec1bd6355b","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            \"0000000000000000000000000000000000000000000000000000000000000000\")"},{"line_number":186,"context_line":""},{"line_number":187,"context_line":"        self.INVALID_SIGNED_PKIZ_TOKEN \u003d ("},{"line_number":188,"context_line":"            \"zlib-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\""},{"line_number":189,"context_line":"            \"BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB\""},{"line_number":190,"context_line":"            \"CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC\""},{"line_number":191,"context_line":"            \"DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\""}],"source_content_type":"text/x-python","patch_set":39,"id":"7adec928_5c64dd21","line":188,"updated":"2014-05-09 18:33:36.000000000","message":"This looks like it should be PKIZ_ not zlib- on the prefix (use the real prefix)","commit_id":"de1e2255b573262ece4b969abe97bdfc7f2658ac"}],"keystoneclient/tests/test_auth_token_middleware.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":527,"context_line":"        text \u003d self.middleware.verify_signed_token("},{"line_number":528,"context_line":"            self.token_dict[\u0027signed_token_scoped\u0027])"},{"line_number":529,"context_line":"        json.loads(text)"},{"line_number":530,"context_line":""},{"line_number":531,"context_line":"    def test_verify_signed_z_token_succeeds_for_unrevoked_token(self):"},{"line_number":532,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9e8c%3D","line":529,"updated":"2014-02-06 16:01:09.000000000","message":"Is this just verifying valid JSON?  Can you add a comment here about that?","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"3faf4120877fef22c713a4635f8acffeac24c037","unresolved":false,"context_lines":[{"line_number":532,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":533,"context_line":"        text \u003d self.middleware.verify_zlib_token("},{"line_number":534,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"},{"line_number":535,"context_line":"        json.loads(text)"},{"line_number":536,"context_line":""},{"line_number":537,"context_line":"    def test_verify_signing_dir_create_while_missing(self):"},{"line_number":538,"context_line":"        tmp_name \u003d uuid.uuid4().hex"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAUH%2F9e8Y%3D","line":535,"updated":"2014-02-06 16:01:09.000000000","message":"Same.","commit_id":"29ccaf30df57828c1346a3c000a17a535af2b98c"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":691,"context_line":"        req \u003d webob.Request.blank(\u0027/\u0027)"},{"line_number":692,"context_line":"        req.headers[\u0027X-Auth-Token\u0027] \u003d self.examples.INVALID_SIGNED_TOKEN"},{"line_number":693,"context_line":"        self.middleware(req.environ, self.start_fake_response)"},{"line_number":694,"context_line":"        self.assertEqual(self.response_status, 401)"},{"line_number":695,"context_line":"        self.assertEqual(self.response_headers[\u0027WWW-Authenticate\u0027],"},{"line_number":696,"context_line":"                         \"Keystone uri\u003d\u0027https://keystone.example.com:1234\u0027\")"},{"line_number":697,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGpU%3D","line":694,"updated":"2014-04-24 00:52:39.000000000","message":"(nit) the order of arguments to assertEqual is expected, observed","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        #ensure that signed requests do not generate HTTP traffic"},{"line_number":540,"context_line":"        self.assertLastPath(None)"},{"line_number":541,"context_line":""},{"line_number":542,"context_line":"    def test_valid_signed_Z_request(self):"},{"line_number":543,"context_line":"        self.assert_valid_request_200("},{"line_number":544,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"},{"line_number":545,"context_line":"        # ensure that signed requests do not generate HTTP traffic"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_f2cfbbae","line":542,"updated":"2014-04-29 19:41:21.000000000","message":"spell out compressed","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    def assertIsValidJSON(self, text):"},{"line_number":583,"context_line":"        try:"},{"line_number":584,"context_line":"            return json.loads(text)"},{"line_number":585,"context_line":"        except Exception:"},{"line_number":586,"context_line":"            self.fail(\u0027Text is Invalid JSON\u0027)"},{"line_number":587,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_72bbab0e","line":584,"updated":"2014-04-29 19:41:21.000000000","message":"there doesn\u0027t seem to be any reason to return this","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        try:"},{"line_number":584,"context_line":"            return json.loads(text)"},{"line_number":585,"context_line":"        except Exception:"},{"line_number":586,"context_line":"            self.fail(\u0027Text is Invalid JSON\u0027)"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    def test_verify_signed_token_succeeds_for_unrevoked_token(self):"},{"line_number":589,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_52bea700","line":586,"updated":"2014-04-29 19:41:21.000000000","message":"just let the exception get raised rather than suppressing it and making failures impossible to debug","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            self.token_dict[\u0027signed_token_scoped\u0027])"},{"line_number":592,"context_line":"        self.assertIsValidJSON(text)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def test_verify_signed_z_token_succeeds_for_unrevoked_token(self):"},{"line_number":595,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":596,"context_line":"        text \u003d self.middleware.verify_pkiz_token("},{"line_number":597,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_3248432d","line":594,"updated":"2014-04-29 19:41:21.000000000","message":"spell out compressed","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":594,"context_line":"    def test_verify_signed_z_token_succeeds_for_unrevoked_token(self):"},{"line_number":595,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":596,"context_line":"        text \u003d self.middleware.verify_pkiz_token("},{"line_number":597,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"},{"line_number":598,"context_line":"        self.assertIsValidJSON(text)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def test_verify_signing_dir_create_while_missing(self):"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_5255c7c4","line":597,"updated":"2014-04-29 19:41:21.000000000","message":"same","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        self.middleware(req.environ, self.start_fake_response)"},{"line_number":694,"context_line":"        self.assertEqual(401, self.response_status)"},{"line_number":695,"context_line":"        self.assertEqual(\"Keystone uri\u003d\u0027https://keystone.example.com:1234\u0027\","},{"line_number":696,"context_line":"                         self.response_headers[\u0027WWW-Authenticate\u0027])"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    def test_request_invalid_signed_z_token(self):"},{"line_number":699,"context_line":"        req \u003d webob.Request.blank(\u0027/\u0027)"}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_925e6fe8","line":696,"updated":"2014-04-29 19:41:21.000000000","message":"these changes aren\u0027t relevant","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":581,"context_line":""},{"line_number":582,"context_line":"    def assertIsValidJSON(self, text):"},{"line_number":583,"context_line":"        try:"},{"line_number":584,"context_line":"            return json.loads(text)"},{"line_number":585,"context_line":"        except Exception:"},{"line_number":586,"context_line":"            self.fail(\u0027Text is Invalid JSON\u0027)"},{"line_number":587,"context_line":""}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_c72d2900","line":584,"updated":"2014-05-05 23:38:17.000000000","message":"(From Dolph in review 33): there doesn\u0027t seem to be any reason to return this","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":583,"context_line":"        try:"},{"line_number":584,"context_line":"            return json.loads(text)"},{"line_number":585,"context_line":"        except Exception:"},{"line_number":586,"context_line":"            self.fail(\u0027Text is Invalid JSON\u0027)"},{"line_number":587,"context_line":""},{"line_number":588,"context_line":"    def test_verify_signed_token_succeeds_for_unrevoked_token(self):"},{"line_number":589,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_e7322d5e","line":586,"updated":"2014-05-05 23:38:17.000000000","message":"(From Dolph in review 33): just let the exception get raised rather than suppressing it and making failures impossible to debug","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":591,"context_line":"            self.token_dict[\u0027signed_token_scoped\u0027])"},{"line_number":592,"context_line":"        self.assertIsValidJSON(text)"},{"line_number":593,"context_line":""},{"line_number":594,"context_line":"    def test_verify_signed_compressed_token_succeeds_for_unrevoked_token(self):"},{"line_number":595,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":596,"context_line":"        text \u003d self.middleware.verify_pkiz_token("},{"line_number":597,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_47b2f994","line":594,"updated":"2014-05-05 23:38:17.000000000","message":"there should be a test for a revoked compressed token.","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":594,"context_line":"    def test_verify_signed_compressed_token_succeeds_for_unrevoked_token(self):"},{"line_number":595,"context_line":"        self.middleware.token_revocation_list \u003d self.get_revocation_list_json()"},{"line_number":596,"context_line":"        text \u003d self.middleware.verify_pkiz_token("},{"line_number":597,"context_line":"            self.token_dict[\u0027signed_token_scoped_z\u0027])"},{"line_number":598,"context_line":"        self.assertIsValidJSON(text)"},{"line_number":599,"context_line":""},{"line_number":600,"context_line":"    def test_verify_signing_dir_create_while_missing(self):"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_27397541","line":597,"updated":"2014-05-05 23:38:17.000000000","message":"(From Dolph in review 33):  spell out compressed","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"63f6f6ca1c56ced092bb1cf62532a5cbcf177232","unresolved":false,"context_lines":[{"line_number":693,"context_line":"        self.middleware(req.environ, self.start_fake_response)"},{"line_number":694,"context_line":"        self.assertEqual(401, self.response_status)"},{"line_number":695,"context_line":"        self.assertEqual(\"Keystone uri\u003d\u0027https://keystone.example.com:1234\u0027\","},{"line_number":696,"context_line":"                         self.response_headers[\u0027WWW-Authenticate\u0027])"},{"line_number":697,"context_line":""},{"line_number":698,"context_line":"    def test_request_invalid_signed_z_token(self):"},{"line_number":699,"context_line":"        req \u003d webob.Request.blank(\u0027/\u0027)"}],"source_content_type":"text/x-python","patch_set":36,"id":"9ad9bd40_474119a8","line":696,"updated":"2014-05-05 23:38:17.000000000","message":"(From Dolph in review 33): these changes aren\u0027t relevant","commit_id":"c01b9e5618084e63f061a6951c8b62a9f9ceae90"}],"keystoneclient/tests/test_cms.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"757c369bb7cdc18194dcb4752c4fa1594d098a82","unresolved":false,"context_lines":[{"line_number":54,"context_line":""},{"line_number":55,"context_line":"    def test_cms_sign_token_no_files(self):"},{"line_number":56,"context_line":"        self.assertRaises(subprocess.CalledProcessError,"},{"line_number":57,"context_line":"                          cms.pkiz_sign,"},{"line_number":58,"context_line":"                          self.examples.TOKEN_SCOPED_DATA,"},{"line_number":59,"context_line":"                          \u0027/no/such/file\u0027, \u0027/no/such/key\u0027)"},{"line_number":60,"context_line":""}],"source_content_type":"text/x-python","patch_set":30,"id":"AAAAXH%2F%2FGoI%3D","line":57,"updated":"2014-04-24 00:52:39.000000000","message":"why was this changed? the old test should still work. Add a new one for pkiz_sign.","commit_id":"fe587f690c0b4cdd44d2ce8078597a8aa1c3a606"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"86ab37c8cb73259436ba441105162a803ca93a2f","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.assertEqual(cms.token_to_cms(self.examples.SIGNED_TOKEN_SCOPED),"},{"line_number":45,"context_line":"                         AUTH_TOKEN_SCOPED_CMS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        tok \u003d cms._cms_to_token(cms.token_to_cms("},{"line_number":48,"context_line":"            self.examples.SIGNED_TOKEN_SCOPED))"},{"line_number":49,"context_line":"        self.assertEqual(tok, self.examples.SIGNED_TOKEN_SCOPED)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"bad4c104_526ce79c","line":47,"updated":"2014-04-29 19:41:21.000000000","message":"why is this method private if it\u0027s obviously needed externally?","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"bf56d530a46b3eaddf9012cff1dc9d4940185c2a","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.assertEqual(cms.token_to_cms(self.examples.SIGNED_TOKEN_SCOPED),"},{"line_number":45,"context_line":"                         AUTH_TOKEN_SCOPED_CMS)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"        tok \u003d cms._cms_to_token(cms.token_to_cms("},{"line_number":48,"context_line":"            self.examples.SIGNED_TOKEN_SCOPED))"},{"line_number":49,"context_line":"        self.assertEqual(tok, self.examples.SIGNED_TOKEN_SCOPED)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"9ad9bd40_bd3a2d32","line":47,"in_reply_to":"bad4c104_526ce79c","updated":"2014-05-02 19:31:59.000000000","message":"It is really not, as its use is internal to cms_sign_token.  and it can be removed once we move over to the PKIZ tokens.  I did think it hurt to leave the test in until we were ready to remove it.","commit_id":"1b3ba8ba8d861c583bbd00ad89e74d498f951823"}]}
