)]}'
{"nova/crypto.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4158b2f6b96c22f96d07a3e79aa3177eea150215","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"def ssh_encrypt_text(ssh_public_key, text):"},{"line_number":184,"context_line":"    \"\"\"Encrypt text with an ssh pubilc key."},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"    Requires recent ssh-keygen binary in addition to openssl binary."},{"line_number":187,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fj1s%3D","line":184,"updated":"2013-01-15 23:17:12.000000000","message":"s/pubilc/public/","commit_id":"8a50159ce478edb2a3e7e8c799c91dbd7c0d7022"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4158b2f6b96c22f96d07a3e79aa3177eea150215","unresolved":false,"context_lines":[{"line_number":200,"context_line":"            with open(sslkey, \u0027w\u0027) as f:"},{"line_number":201,"context_line":"                f.write(out)"},{"line_number":202,"context_line":"            enc, _err \u003d utils.execute(\u0027openssl\u0027,"},{"line_number":203,"context_line":"                                     \u0027rsautl\u0027,"},{"line_number":204,"context_line":"                                     \u0027-encrypt\u0027,"},{"line_number":205,"context_line":"                                     \u0027-pubin\u0027,"},{"line_number":206,"context_line":"                                     \u0027-inkey\u0027, sslkey,"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fj1o%3D","line":203,"updated":"2013-01-15 23:17:12.000000000","message":"Indentation off by one space.","commit_id":"8a50159ce478edb2a3e7e8c799c91dbd7c0d7022"},{"author":{"_account_id":1812,"name":"p-draigbrady","email":"P@draigBrady.com","username":"p-draigbrady"},"change_message_id":"e41a40aad98426d15c5f520eced782152f119cca","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                      \u0027rsautl\u0027,"},{"line_number":226,"context_line":"                                      \u0027-decrypt\u0027,"},{"line_number":227,"context_line":"                                      \u0027-inkey\u0027, sshkey,"},{"line_number":228,"context_line":"                                      process_input\u003dtext)"},{"line_number":229,"context_line":"            return dec"},{"line_number":230,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":231,"context_line":"            raise exception.DecryptionFailure(reason\u003dexc.stderr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FjSI%3D","line":228,"updated":"2013-01-16 10:29:06.000000000","message":"It might be safer to also add -passin \u0027pass:\u0027 (to mirror the -P \u0027\u0027 for ssh-keygen above), to give an error for ssh keys that require a passphrase. I\u0027ve verified that this works fine for keys that don\u0027t have a passhprase","commit_id":"58933c7146f97ef6e2b6b21ae80dc0171c59d8c4"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"1b2cb4b625db8c767ba87854f2311698fa3011eb","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                      \u0027rsautl\u0027,"},{"line_number":226,"context_line":"                                      \u0027-decrypt\u0027,"},{"line_number":227,"context_line":"                                      \u0027-inkey\u0027, sshkey,"},{"line_number":228,"context_line":"                                      process_input\u003dtext)"},{"line_number":229,"context_line":"            return dec"},{"line_number":230,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":231,"context_line":"            raise exception.DecryptionFailure(reason\u003dexc.stderr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2Firw%3D","line":228,"in_reply_to":"AAAAM3%2F%2FivI%3D","updated":"2013-01-16 17:53:45.000000000","message":"fair point, I will move the method to the test.","commit_id":"58933c7146f97ef6e2b6b21ae80dc0171c59d8c4"},{"author":{"_account_id":1030,"name":"Chris Behrens","email":"cbehrens@codestud.com","username":"cbehrens"},"change_message_id":"cd88a637ab7ab75f05ea1e4ee7a2a535f98399df","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                      \u0027rsautl\u0027,"},{"line_number":226,"context_line":"                                      \u0027-decrypt\u0027,"},{"line_number":227,"context_line":"                                      \u0027-inkey\u0027, sshkey,"},{"line_number":228,"context_line":"                                      process_input\u003dtext)"},{"line_number":229,"context_line":"            return dec"},{"line_number":230,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":231,"context_line":"            raise exception.DecryptionFailure(reason\u003dexc.stderr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FivI%3D","line":228,"in_reply_to":"AAAAM3%2F%2FixA%3D","updated":"2013-01-16 17:38:53.000000000","message":"This whole method is only here to use as a test?  If so, does it belong here?  Makes sense for completeness, but maybe you want to say something about it in the docstring.  Until I got down to the comments, I thought it was weird we had a method that accepted a private key as it meant somehow it was being sent to us, which would be bad!","commit_id":"58933c7146f97ef6e2b6b21ae80dc0171c59d8c4"},{"author":{"_account_id":67,"name":"Vish Ishaya","email":"vishvananda@gmail.com","username":"vishvananda"},"change_message_id":"501511d242ed03b7eee602cc0fe333b5a3ea928a","unresolved":false,"context_lines":[{"line_number":225,"context_line":"                                      \u0027rsautl\u0027,"},{"line_number":226,"context_line":"                                      \u0027-decrypt\u0027,"},{"line_number":227,"context_line":"                                      \u0027-inkey\u0027, sshkey,"},{"line_number":228,"context_line":"                                      process_input\u003dtext)"},{"line_number":229,"context_line":"            return dec"},{"line_number":230,"context_line":"        except exception.ProcessExecutionError as exc:"},{"line_number":231,"context_line":"            raise exception.DecryptionFailure(reason\u003dexc.stderr)"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAM3%2F%2FixA%3D","line":228,"in_reply_to":"AAAAM3%2F%2FjSI%3D","updated":"2013-01-16 17:29:04.000000000","message":"I originally had that. This is only used for a test, but I will add it for safety.","commit_id":"58933c7146f97ef6e2b6b21ae80dc0171c59d8c4"}],"nova/tests/test_crypto.py":[{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"4158b2f6b96c22f96d07a3e79aa3177eea150215","unresolved":false,"context_lines":[{"line_number":188,"context_line":"-----END RSA PRIVATE KEY-----\"\"\""},{"line_number":189,"context_line":"    text \u003d \"Some text! %$*\""},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"    def test_ssh_encrypt_decrypt_text(self):"},{"line_number":192,"context_line":"        enc \u003d crypto.ssh_encrypt_text(self.pubkey, self.text)"},{"line_number":193,"context_line":"        result \u003d crypto.ssh_decrypt_text(self.prikey, enc)"},{"line_number":194,"context_line":"        self.assertEqual(result, self.text)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2Fj1k%3D","line":191,"updated":"2013-01-15 23:17:12.000000000","message":"Might want to also assert that enc !\u003d self.text so there\u0027s an assurance that encryption happened.  Or add another test for that.","commit_id":"8a50159ce478edb2a3e7e8c799c91dbd7c0d7022"}]}
