)]}'
{"pegleg/engine/catalogs/passphrase_catalog.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"e9b58f0c686d85d70176d813dd34a3263d22119d","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        for c_doc in self._catalog_docs:"},{"line_number":187,"context_line":"            for passphrase in c_doc[\u0027data\u0027][\u0027passphrases\u0027]:"},{"line_number":188,"context_line":"                if passphrase[P_DOCUMENT_NAME] \u003d\u003d passphrase_name:"},{"line_number":189,"context_line":"                    profile \u003d passphrase.get(P_PROFILE,"},{"line_number":190,"context_line":"                                             P_DEFAULT_PROFILE).lower()"},{"line_number":191,"context_line":"                    if profile not in passphrase_profiles.VALID_PROFILES:"},{"line_number":192,"context_line":"                        raise exceptions.InvalidPassphraseProfile("},{"line_number":193,"context_line":"                            pprofile\u003dprofile,"}],"source_content_type":"text/x-python","patch_set":20,"id":"3fa7e38b_fd1752a2","line":190,"range":{"start_line":189,"start_character":20,"end_line":190,"end_character":71},"updated":"2019-09-23 16:55:37.000000000","message":"I think a lot of this stuff could also be handled pre-emptively via schema validation: https://github.com/airshipit/pegleg/blob/master/pegleg/schemas/PKICatalog.yaml\n\nBut I don\u0027t think this thing has been updated at all for passphrases.\n\nHowever, Pegleg\u0027s schema validation logic was never fully realized, hence I had pushed this patch set a while back to address that: https://review.opendev.org/#/c/608159/\n\nSo it\u0027s understandable that this type of manual conditional checking is being done in lieu of Pegleg\u0027s otherwise immature schema validation implementation, which would be excellent at handling all of these complex data validations, were it actually implemented correctly from the start.","commit_id":"fe602251bdc59b53cfa9907cfd408238c9996479"}],"pegleg/engine/catalogs/passphrase_profiles.py":[{"author":{"_account_id":23186,"name":"Felipe Monteiro","email":"felipe.carneiro.monteiro@gmail.com","username":"felipe.monteiro"},"change_message_id":"272a3b1fa404fbe69426187d32c08cdbc5632a07","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import string"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"VALID_PROFILES \u003d ["},{"line_number":18,"context_line":"    \u0027default\u0027, \u0027alphanumeric\u0027, \u0027alphanumeric_lower\u0027, \u0027alphanumeric_upper\u0027,"},{"line_number":19,"context_line":"    \u0027all\u0027, \u0027hex\u0027, \u0027hex_lower\u0027, \u0027hex_upper\u0027"},{"line_number":20,"context_line":"]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"PROFILES \u003d {"},{"line_number":23,"context_line":"    \u0027default\u0027: string.ascii_letters + string.digits + \u0027@#\u0026-+\u003d?\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_8f042b19","line":20,"range":{"start_line":17,"start_character":17,"end_line":20,"end_character":1},"updated":"2019-09-19 03:00:01.000000000","message":"PROFILES.keys()","commit_id":"7c697c3c0fa3175d3c3d21123ee5a139d048952d"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"ca20f071416d5d7cc0f9b1eabc589f5d11d3dae7","unresolved":false,"context_lines":[{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import string"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"VALID_PROFILES \u003d ["},{"line_number":18,"context_line":"    \u0027default\u0027, \u0027alphanumeric\u0027, \u0027alphanumeric_lower\u0027, \u0027alphanumeric_upper\u0027,"},{"line_number":19,"context_line":"    \u0027all\u0027, \u0027hex\u0027, \u0027hex_lower\u0027, \u0027hex_upper\u0027"},{"line_number":20,"context_line":"]"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"PROFILES \u003d {"},{"line_number":23,"context_line":"    \u0027default\u0027: string.ascii_letters + string.digits + \u0027@#\u0026-+\u003d?\u0027,"}],"source_content_type":"text/x-python","patch_set":14,"id":"3fa7e38b_5baed298","line":20,"range":{"start_line":17,"start_character":17,"end_line":20,"end_character":1},"in_reply_to":"3fa7e38b_8f042b19","updated":"2019-09-20 15:24:25.000000000","message":"Done","commit_id":"7c697c3c0fa3175d3c3d21123ee5a139d048952d"},{"author":{"_account_id":28235,"name":"Aaron Sheffield","email":"ajs@sheffieldfamily.net","username":"aaronsheffield"},"change_message_id":"9db392f592109426e2db9731ca4f2c0bad831e92","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \u0027alphanumeric_lower\u0027: string.ascii_lowercase + string.digits,"},{"line_number":21,"context_line":"    \u0027alphanumeric_upper\u0027: string.ascii_uppercase + string.digits,"},{"line_number":22,"context_line":"    \u0027all\u0027: string.ascii_letters + string.digits + string.punctuation,"},{"line_number":23,"context_line":"    \u0027hex\u0027: \u0027abcdefACBDEF0123456789\u0027,"},{"line_number":24,"context_line":"    \u0027hex_lower\u0027: \u0027abcdef0123456789\u0027,"},{"line_number":25,"context_line":"    \u0027hex_upper\u0027: \u0027ABCDEF0123456789\u0027"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_531eb270","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":36},"updated":"2019-09-20 19:12:29.000000000","message":"Does anything use this one?  Seems odd for hex to be more than 16 characters.","commit_id":"dc818fee4cd2ca7a557cd08ee511bd526f71fdf6"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"f1d0af7a4dfde8796c8460d337a185df07fc975e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \u0027alphanumeric_lower\u0027: string.ascii_lowercase + string.digits,"},{"line_number":21,"context_line":"    \u0027alphanumeric_upper\u0027: string.ascii_uppercase + string.digits,"},{"line_number":22,"context_line":"    \u0027all\u0027: string.ascii_letters + string.digits + string.punctuation,"},{"line_number":23,"context_line":"    \u0027hex\u0027: \u0027abcdefACBDEF0123456789\u0027,"},{"line_number":24,"context_line":"    \u0027hex_lower\u0027: \u0027abcdef0123456789\u0027,"},{"line_number":25,"context_line":"    \u0027hex_upper\u0027: \u0027ABCDEF0123456789\u0027"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_59a573b4","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":36},"in_reply_to":"3fa7e38b_531eb270","updated":"2019-09-20 20:36:36.000000000","message":"I don\u0027t think so, but tried to make an abundance of profiles during this patch for the wider community to take advantage of in case they had a use for one of these character pools in their passphrase generation.","commit_id":"dc818fee4cd2ca7a557cd08ee511bd526f71fdf6"},{"author":{"_account_id":28235,"name":"Aaron Sheffield","email":"ajs@sheffieldfamily.net","username":"aaronsheffield"},"change_message_id":"31822d8da906844fc3210892d56aa81fdbc0fa3f","unresolved":false,"context_lines":[{"line_number":20,"context_line":"    \u0027alphanumeric_lower\u0027: string.ascii_lowercase + string.digits,"},{"line_number":21,"context_line":"    \u0027alphanumeric_upper\u0027: string.ascii_uppercase + string.digits,"},{"line_number":22,"context_line":"    \u0027all\u0027: string.ascii_letters + string.digits + string.punctuation,"},{"line_number":23,"context_line":"    \u0027hex\u0027: \u0027abcdefACBDEF0123456789\u0027,"},{"line_number":24,"context_line":"    \u0027hex_lower\u0027: \u0027abcdef0123456789\u0027,"},{"line_number":25,"context_line":"    \u0027hex_upper\u0027: \u0027ABCDEF0123456789\u0027"},{"line_number":26,"context_line":"}"}],"source_content_type":"text/x-python","patch_set":16,"id":"3fa7e38b_19605b32","line":23,"range":{"start_line":23,"start_character":4,"end_line":23,"end_character":36},"in_reply_to":"3fa7e38b_59a573b4","updated":"2019-09-20 21:00:42.000000000","message":"I figured it didn\u0027t hurt anything, but did get me to go out and do some reading.","commit_id":"dc818fee4cd2ca7a557cd08ee511bd526f71fdf6"}],"tests/unit/engine/test_generate_passphrases.py":[{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"c8d9c7b3a2b7e35bd7732c197dbe3c80ad61b094","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":422,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is True"},{"line_number":423,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":424,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is True"},{"line_number":425,"context_line":"            elif passphrase_file_name \u003d\u003d \"alphanumeric_passphrase.yaml\":"},{"line_number":426,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":427,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is True"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_c9964794","line":424,"updated":"2019-09-24 15:21:47.000000000","message":"since this contains a limited set of symbols we should probably only check against that limited set instead of all symbols. that way it\u0027s distinguished from \"all\"","commit_id":"2a8f57d11a8756b8fe0b4a9f7c90ff73ca060a19"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"d0939f4598afe2423a14c04c3f9e6171c7f0eed0","unresolved":false,"context_lines":[{"line_number":421,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":422,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is True"},{"line_number":423,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":424,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is True"},{"line_number":425,"context_line":"            elif passphrase_file_name \u003d\u003d \"alphanumeric_passphrase.yaml\":"},{"line_number":426,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":427,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is True"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_2c2a897e","line":424,"in_reply_to":"3fa7e38b_c9964794","updated":"2019-09-24 15:56:30.000000000","message":"Done","commit_id":"2a8f57d11a8756b8fe0b4a9f7c90ff73ca060a19"},{"author":{"_account_id":30173,"name":"Ian Pittwood","email":"pittwoodian@gmail.com","username":"ianp"},"change_message_id":"c8d9c7b3a2b7e35bd7732c197dbe3c80ad61b094","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":444,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is True"},{"line_number":445,"context_line":"            elif passphrase_file_name \u003d\u003d \"hex_lower_passphrase.yaml\":"},{"line_number":446,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":447,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is False"},{"line_number":448,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":449,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is False"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_49f017ff","line":446,"updated":"2019-09-24 15:21:47.000000000","message":"this should only check for a-f, not all letters. same below","commit_id":"2a8f57d11a8756b8fe0b4a9f7c90ff73ca060a19"},{"author":{"_account_id":29624,"name":"Alexander Hughes","email":"Alexander.Hughes@pm.me","username":"alexanderhughes"},"change_message_id":"d0939f4598afe2423a14c04c3f9e6171c7f0eed0","unresolved":false,"context_lines":[{"line_number":443,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":444,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is True"},{"line_number":445,"context_line":"            elif passphrase_file_name \u003d\u003d \"hex_lower_passphrase.yaml\":"},{"line_number":446,"context_line":"                assert s_util.has_lower(decrypted_passphrase) is True"},{"line_number":447,"context_line":"                assert s_util.has_upper(decrypted_passphrase) is False"},{"line_number":448,"context_line":"                assert s_util.has_number(decrypted_passphrase) is True"},{"line_number":449,"context_line":"                assert s_util.has_symbol(decrypted_passphrase) is False"}],"source_content_type":"text/x-python","patch_set":22,"id":"3fa7e38b_4c2fc58d","line":446,"in_reply_to":"3fa7e38b_49f017ff","updated":"2019-09-24 15:56:30.000000000","message":"Done","commit_id":"2a8f57d11a8756b8fe0b4a9f7c90ff73ca060a19"}]}
