)]}'
{"bandit/core/context.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c1c6bdc0497a805e761f5b60f917f5177e5d0ad3","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        :return: named argument value"},{"line_number":234,"context_line":"        \u0027\u0027\u0027"},{"line_number":235,"context_line":"        kwd_values \u003d self.call_keywords"},{"line_number":236,"context_line":"        if (kwd_values is not None and argument_name in kwd_values):"},{"line_number":237,"context_line":"            return kwd_values[argument_name]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def check_call_arg_value(self, argument_name, argument_values\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_4cdad94c","line":236,"updated":"2015-08-11 19:20:49.000000000","message":"No parens necessary here.","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":233,"context_line":"        :return: named argument value"},{"line_number":234,"context_line":"        \u0027\u0027\u0027"},{"line_number":235,"context_line":"        kwd_values \u003d self.call_keywords"},{"line_number":236,"context_line":"        if (kwd_values is not None and argument_name in kwd_values):"},{"line_number":237,"context_line":"            return kwd_values[argument_name]"},{"line_number":238,"context_line":""},{"line_number":239,"context_line":"    def check_call_arg_value(self, argument_name, argument_values\u003dNone):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_b4721910","line":236,"in_reply_to":"1a4dcd0f_4cdad94c","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c1c6bdc0497a805e761f5b60f917f5177e5d0ad3","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        found and not matched, None if argument not found at all"},{"line_number":247,"context_line":"        \u0027\u0027\u0027"},{"line_number":248,"context_line":"        arg_value \u003d self.get_call_arg_value(argument_name)"},{"line_number":249,"context_line":"        if (arg_value is not None):"},{"line_number":250,"context_line":"            if not isinstance(argument_values, list):"},{"line_number":251,"context_line":"                # if passed a single value, or a tuple, convert to a list"},{"line_number":252,"context_line":"                argument_values \u003d list((argument_values,))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_6cdf953a","line":249,"updated":"2015-08-11 19:20:49.000000000","message":"Same here","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":246,"context_line":"        found and not matched, None if argument not found at all"},{"line_number":247,"context_line":"        \u0027\u0027\u0027"},{"line_number":248,"context_line":"        arg_value \u003d self.get_call_arg_value(argument_name)"},{"line_number":249,"context_line":"        if (arg_value is not None):"},{"line_number":250,"context_line":"            if not isinstance(argument_values, list):"},{"line_number":251,"context_line":"                # if passed a single value, or a tuple, convert to a list"},{"line_number":252,"context_line":"                argument_values \u003d list((argument_values,))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_54605d35","line":249,"in_reply_to":"1a4dcd0f_6cdf953a","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"}],"bandit/plugins/weak_cryptographic_key.py":[{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"5c5140e895fb41a6c0b017e60df281ba15d3e244","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa1b9901_64483a2e","line":20,"updated":"2015-08-19 03:22:59.000000000","message":"(warning: opinion; I know it means a rewrite of this file)\n\nI think this function is if/else ladder that\u0027s just too big. Considering it will deserve also ECDSA with different curves, etc. in the future, I think it will grow beyond reasonable size. What I\u0027d like to see instead is 3 sections... let\u0027s say data-driven, rather than decision branches:\n\nClear definition of corresponding levels:\n\n    KEY_SIZES \u003d {\n        \u0027RSA\u0027: [(512, bandit.HIGH), (2048, bandit.MEDIUM)],\n        \u0027DSA\u0027: ...\n    }\n\nSimple classifier that doesn\u0027t depend on which library is used:\n\n    def _classify_key_size(key_type, key_size):\n        for size, level in KEY_SIZES[key_type]:\n            if key_size \u003c size:\n                return level\n\nA set of function checks which deal with one case only:\n\n    @check(\u0027Call\u0027)\n    def weak_crypto_key_size_cryptography_io(context):\n        FUNC_KEY_TYPE \u003d {\n            \u0027cryptography.......dsa.generate_private_key\u0027: \u0027DSA\u0027,\n            \u0027cryptography.......rsa.generate_private_key\u0027: \u0027RSA\u0027,\n        }\n        key_type \u003d FUNC_KEY_TYPE.get(context.call_function_name_qual)\n        if key_type:\n            key_size \u003d context.get_call_arg_value(\"key_size\") or 2048\n            return _classify_key_size(key_type, key_size)\n\n    @check(\u0027Call\u0027)\n    def weak_crypto_key_size_pycrypto(context):\n    ....\n\nI think this would be both considerably more readable and shorter. (already includes the requested multiple severity levels)","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_69dd7f6f","line":20,"in_reply_to":"fa1b9901_64483a2e","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c1c6bdc0497a805e761f5b60f917f5177e5d0ad3","unresolved":false,"context_lines":[{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CRYPTO_DSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.dsa.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_2ce66d15","line":22,"updated":"2015-08-11 19:20:49.000000000","message":"Is there a reason these aren\u0027t module globals? They\u0027re capitalized as if they\u0027re globals but they\u0027re not.","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CRYPTO_DSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.dsa.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_942fd5a0","line":22,"in_reply_to":"1a4dcd0f_14834f57","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"f0ddd9f5a66c55264115a4a96949a3c7dcfebe2b","unresolved":false,"context_lines":[{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CRYPTO_DSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.dsa.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_665b0887","line":22,"in_reply_to":"1a4dcd0f_14834f57","updated":"2015-08-12 15:07:46.000000000","message":"sorry, I\u0027m not understanding why these are needed globally in this module","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"807ed5f57f01949adff0d7d1fe7b23c310632158","unresolved":false,"context_lines":[{"line_number":19,"context_line":"@checks(\u0027Call\u0027)"},{"line_number":20,"context_line":"def weak_cryptographic_key_size(context):"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"    DSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":23,"context_line":"    RSA_MIN_KEY_SIZE \u003d 2048"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"    CRYPTO_DSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.dsa.\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_14834f57","line":22,"in_reply_to":"1a4dcd0f_2ce66d15","updated":"2015-08-12 14:11:37.000000000","message":"yes, please make these module globals","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c1c6bdc0497a805e761f5b60f917f5177e5d0ad3","unresolved":false,"context_lines":[{"line_number":25,"context_line":"    CRYPTO_DSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.dsa.\u0027"},{"line_number":26,"context_line":"                       \u0027generate_private_key\u0027)"},{"line_number":27,"context_line":"    CRYPTO_RSA_FUNC \u003d (\u0027cryptography.hazmat.primitives.asymmetric.rsa.\u0027"},{"line_number":28,"context_line":"                       \u0027generate_private_key\u0027)"},{"line_number":29,"context_line":"    PYCRYPTO_DSA_FUNC \u003d \u0027Crypto.PublicKey.DSA.generate\u0027"},{"line_number":30,"context_line":"    PYCRYPTO_RSA_FUNC \u003d \u0027Crypto.PublicKey.RSA.generate\u0027"},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_cceee9ec","line":28,"updated":"2015-08-11 19:20:49.000000000","message":"If we move these to the module scope, we should greate a tuple:\n\n     CRYPTO_FUNCS \u003d (CRYPTO_DSA_FUNC, CRYPTO_RSA_FUNC)\n\nOr a set since creating a set means that future additions to this list of functions (e.g., if we start checking for specific ECKey curves) will then not cause lookup to take longer and longer as the list of functions grows (although, I don\u0027t think this list will grow very long in the first place).","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"504f431a04f529f7911a5545c215cd9cef5b8a3b","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if key_size \u003c DSA_MIN_KEY_SIZE:"},{"line_number":41,"context_line":"            return bandit.Issue("},{"line_number":42,"context_line":"                severity\u003dbandit.HIGH,"},{"line_number":43,"context_line":"                confidence\u003dbandit.HIGH,"},{"line_number":44,"context_line":"                text\u003d\u0027DSA key sizes below %d bits are considered breakable. \u0027"},{"line_number":45,"context_line":"                     \u0027%s\u0027 % (DSA_MIN_KEY_SIZE, context.call_args_string))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_4871a943","line":42,"updated":"2015-08-10 18:06:43.000000000","message":"severity MEDIUM?  Yeah they are considered breakable but it\u0027s still pretty damn hard :)","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if key_size \u003c DSA_MIN_KEY_SIZE:"},{"line_number":41,"context_line":"            return bandit.Issue("},{"line_number":42,"context_line":"                severity\u003dbandit.HIGH,"},{"line_number":43,"context_line":"                confidence\u003dbandit.HIGH,"},{"line_number":44,"context_line":"                text\u003d\u0027DSA key sizes below %d bits are considered breakable. \u0027"},{"line_number":45,"context_line":"                     \u0027%s\u0027 % (DSA_MIN_KEY_SIZE, context.call_args_string))"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_69c49f91","line":42,"in_reply_to":"1a4dcd0f_144eef6e","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"2b74a31ad09df72c61f0b450c228c1ca9fd5011b","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if key_size \u003c DSA_MIN_KEY_SIZE:"},{"line_number":41,"context_line":"            return bandit.Issue("},{"line_number":42,"context_line":"                severity\u003dbandit.HIGH,"},{"line_number":43,"context_line":"                confidence\u003dbandit.HIGH,"},{"line_number":44,"context_line":"                text\u003d\u0027DSA key sizes below %d bits are considered breakable. \u0027"},{"line_number":45,"context_line":"                     \u0027%s\u0027 % (DSA_MIN_KEY_SIZE, context.call_args_string))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_eb174f52","line":42,"in_reply_to":"1a4dcd0f_4871a943","updated":"2015-08-10 18:48:11.000000000","message":"Sure, I can change it to medium.  But I guess this all depends on the use of the key.  If the key is used to front a web server as part of a certificate for a public cloud, then seems very severe.\n\nAlso, probably varying levels of severity.  If 512 bits, high, 1024 medium.  How does that sound?","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11716,"name":"Tim Kelsey","email":"timothy.kelsey@uk.ibm.com","username":"tkelsey"},"change_message_id":"807ed5f57f01949adff0d7d1fe7b23c310632158","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if key_size \u003c DSA_MIN_KEY_SIZE:"},{"line_number":41,"context_line":"            return bandit.Issue("},{"line_number":42,"context_line":"                severity\u003dbandit.HIGH,"},{"line_number":43,"context_line":"                confidence\u003dbandit.HIGH,"},{"line_number":44,"context_line":"                text\u003d\u0027DSA key sizes below %d bits are considered breakable. \u0027"},{"line_number":45,"context_line":"                     \u0027%s\u0027 % (DSA_MIN_KEY_SIZE, context.call_args_string))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_144eef6e","line":42,"in_reply_to":"1a4dcd0f_ae563504","updated":"2015-08-12 14:11:37.000000000","message":"+1","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"5b8d007887ac10591fe89d1c2f8f39c7fb59788b","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"        if key_size \u003c DSA_MIN_KEY_SIZE:"},{"line_number":41,"context_line":"            return bandit.Issue("},{"line_number":42,"context_line":"                severity\u003dbandit.HIGH,"},{"line_number":43,"context_line":"                confidence\u003dbandit.HIGH,"},{"line_number":44,"context_line":"                text\u003d\u0027DSA key sizes below %d bits are considered breakable. \u0027"},{"line_number":45,"context_line":"                     \u0027%s\u0027 % (DSA_MIN_KEY_SIZE, context.call_args_string))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_ae563504","line":42,"in_reply_to":"1a4dcd0f_eb174f52","updated":"2015-08-10 18:50:08.000000000","message":"That sounds great.  I definitely agree 512 would be HIGH :)","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":11861,"name":"Travis McPeak","email":"tmcpeak@us.ibm.com","username":"travis-mcpeak"},"change_message_id":"504f431a04f529f7911a5545c215cd9cef5b8a3b","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    elif (context.call_function_name_qual in"},{"line_number":48,"context_line":"            (CRYPTO_RSA_FUNC, PYCRYPTO_RSA_FUNC)):"},{"line_number":49,"context_line":"        if context.get_call_arg_value(\u0027key_size\u0027) is not None:"},{"line_number":50,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027key_size\u0027)"},{"line_number":51,"context_line":"        elif context.get_call_arg_value(\u0027bits\u0027) is not None:"},{"line_number":52,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027bits\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_68a3459f","line":49,"updated":"2015-08-10 18:06:43.000000000","message":"key_size and bits could be moved out of these two if blocks to higher up but I don\u0027t care enough to block it","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"7a3a0ab00c2a621e85495b6da53f5047e4ea7de9","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    elif (context.call_function_name_qual in"},{"line_number":48,"context_line":"            (CRYPTO_RSA_FUNC, PYCRYPTO_RSA_FUNC)):"},{"line_number":49,"context_line":"        if context.get_call_arg_value(\u0027key_size\u0027) is not None:"},{"line_number":50,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027key_size\u0027)"},{"line_number":51,"context_line":"        elif context.get_call_arg_value(\u0027bits\u0027) is not None:"},{"line_number":52,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027bits\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_09d3a360","line":49,"in_reply_to":"1a4dcd0f_68a3459f","updated":"2015-09-02 23:46:35.000000000","message":"Done","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"2b74a31ad09df72c61f0b450c228c1ca9fd5011b","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    elif (context.call_function_name_qual in"},{"line_number":48,"context_line":"            (CRYPTO_RSA_FUNC, PYCRYPTO_RSA_FUNC)):"},{"line_number":49,"context_line":"        if context.get_call_arg_value(\u0027key_size\u0027) is not None:"},{"line_number":50,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027key_size\u0027)"},{"line_number":51,"context_line":"        elif context.get_call_arg_value(\u0027bits\u0027) is not None:"},{"line_number":52,"context_line":"            key_size \u003d context.get_call_arg_value(\u0027bits\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_eefe7d04","line":49,"in_reply_to":"1a4dcd0f_68a3459f","updated":"2015-08-10 18:48:11.000000000","message":"I\u0027ll fix since I\u0027m touching this file anyway.","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"}],"examples/weak_cryptographic_key_sizes.py":[{"author":{"_account_id":12000,"name":"Ian Cordasco","email":"sigmavirus24@gmail.com","username":"sigmavirus24"},"change_message_id":"c1c6bdc0497a805e761f5b60f917f5177e5d0ad3","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from cryptography.hazmat import backends"},{"line_number":2,"context_line":"from cryptography.hazmat.primitives.asymmetric import dsa"},{"line_number":3,"context_line":"from cryptography.hazmat.primitives.asymmetric import rsa"},{"line_number":4,"context_line":"from Crypto.PublicKey import DSA"},{"line_number":5,"context_line":"from Crypto.PublicKey import RSA"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1a4dcd0f_0ce931e6","line":3,"updated":"2015-08-11 19:20:49.000000000","message":"Cryptography has fixtures for RSA and DSA keys. Is it not possible to use those?","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"},{"author":{"_account_id":8119,"name":"Eric Brown","email":"eric_wade_brown@yahoo.com","username":"ericwb"},"change_message_id":"06156eda293637a645249bd0ea98cd9c07b64027","unresolved":false,"context_lines":[{"line_number":1,"context_line":"from cryptography.hazmat import backends"},{"line_number":2,"context_line":"from cryptography.hazmat.primitives.asymmetric import dsa"},{"line_number":3,"context_line":"from cryptography.hazmat.primitives.asymmetric import rsa"},{"line_number":4,"context_line":"from Crypto.PublicKey import DSA"},{"line_number":5,"context_line":"from Crypto.PublicKey import RSA"},{"line_number":6,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"da20952f_69e7bf12","line":3,"in_reply_to":"1a4dcd0f_0ce931e6","updated":"2015-09-02 23:49:58.000000000","message":"doesn\u0027t look like those fixtures use generate_private_key.  Or am I mistaking what you were thinking here?","commit_id":"fd7399639764d164a60c4dae0e28a755223446f1"}]}
