)]}'
{"glance/common/signature_utils.py":[{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"ed85f0ec4ad0d1083c34b0c38c8708dcab09f55d","unresolved":false,"context_lines":[{"line_number":142,"context_line":"}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def should_create_verifier(image_properties):"},{"line_number":146,"context_line":"    \"\"\"Determine whether a verifier should be created."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    Using the image properties, determine whether existing properties indicate"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_c8532ce1","line":145,"updated":"2015-12-18 16:36:49.000000000","message":"I think this is fine to leave as \"should_verify_signature\". Would leaving it as \"should_verify_signature\" collide with the deprecated method, or is there a way around that? If the deprecated method would be an issue, disregard this comment.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"81743a0cb40bb1f4275e072a2c91973f30eeadc4","unresolved":false,"context_lines":[{"line_number":142,"context_line":"}"},{"line_number":143,"context_line":""},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"def should_create_verifier(image_properties):"},{"line_number":146,"context_line":"    \"\"\"Determine whether a verifier should be created."},{"line_number":147,"context_line":""},{"line_number":148,"context_line":"    Using the image properties, determine whether existing properties indicate"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_35731d17","line":145,"in_reply_to":"3a7e1126_c8532ce1","updated":"2015-12-18 22:26:44.000000000","message":"Yes, there cannot be two methods with the same name in python--and since I don\u0027t want to rename the deprecated method, I decided to rename this one instead.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"ed85f0ec4ad0d1083c34b0c38c8708dcab09f55d","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    else:"},{"line_number":191,"context_line":"        # Error creating the verifier"},{"line_number":192,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":193,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def verify_verifier(verifier):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_c8f00c94","line":193,"updated":"2015-12-18 16:36:49.000000000","message":"This error message doesn\u0027t really describe the error and is used elsewhere in your signature_utils implementation. In my implementation, I changed this message to \"Error occurred while creating the verifier\".","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"81743a0cb40bb1f4275e072a2c91973f30eeadc4","unresolved":false,"context_lines":[{"line_number":190,"context_line":"    else:"},{"line_number":191,"context_line":"        # Error creating the verifier"},{"line_number":192,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":193,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def verify_verifier(verifier):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_e9a8608f","line":193,"in_reply_to":"3a7e1126_c8f00c94","updated":"2015-12-18 22:26:44.000000000","message":"Agreed. Done.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"ed85f0ec4ad0d1083c34b0c38c8708dcab09f55d","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def verify_verifier(verifier):"},{"line_number":197,"context_line":"    \"\"\"Verify the given verifier, and respond with True or an exception."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    :param verifier: the verifier to verify"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_8e23eda6","line":196,"updated":"2015-12-18 16:36:49.000000000","message":"IMHO this method isn\u0027t totally necessary. You probably will have to wrap all the code using the signature_utils class in a try/except block anyway since it follows the \"succeed or raise exception\" style that pyca/cryptography advocates, so you could always catch the InvalidSignature error there instead of doing it here.\n\nHowever, if I\u0027m wrong and this method is helpful for integrating signature_utils into Glance\u0027s control flow, I\u0027d suggest renaming it. The name \"verify_verifier()\" is a bit confusing/misleading.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"81743a0cb40bb1f4275e072a2c91973f30eeadc4","unresolved":false,"context_lines":[{"line_number":193,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":194,"context_line":""},{"line_number":195,"context_line":""},{"line_number":196,"context_line":"def verify_verifier(verifier):"},{"line_number":197,"context_line":"    \"\"\"Verify the given verifier, and respond with True or an exception."},{"line_number":198,"context_line":""},{"line_number":199,"context_line":"    :param verifier: the verifier to verify"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_a986d8d8","line":196,"in_reply_to":"3a7e1126_8e23eda6","updated":"2015-12-18 22:26:44.000000000","message":"I\u0027ll remove this method for now since you have a good point.  However, I\u0027ll be raising a \"SignatureVerificationError\" instead of a crypto_exception at the next level, and so including the method here would not require the next level up to know about crypto_exceptions, which would be one reason to keep it.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"ed85f0ec4ad0d1083c34b0c38c8708dcab09f55d","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    else:"},{"line_number":212,"context_line":"        # Error creating the verifier"},{"line_number":213,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":214,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"def should_verify_signature(image_properties):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_ce6575b5","line":214,"updated":"2015-12-18 16:36:49.000000000","message":"I don\u0027t think this exception is really necessary. The get_verifier() method already throws an exception if the verifier ends up being None. I can\u0027t think of a case where you\u0027d call get_verifier(), get a None verifier, ignore that exception, call update() on the None verifier, ignore that error, and then try to call this verify_verifier() method.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":7012,"name":"Brianna Poulos","email":"Brianna.Poulos@jhuapl.edu","username":"brianna-poulos"},"change_message_id":"81743a0cb40bb1f4275e072a2c91973f30eeadc4","unresolved":false,"context_lines":[{"line_number":211,"context_line":"    else:"},{"line_number":212,"context_line":"        # Error creating the verifier"},{"line_number":213,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":214,"context_line":"            \u0027Error occurred while verifying the signature\u0027)"},{"line_number":215,"context_line":""},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"def should_verify_signature(image_properties):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a7e1126_69f8f07b","line":214,"in_reply_to":"3a7e1126_ce6575b5","updated":"2015-12-18 22:26:44.000000000","message":"N/A since method is being removed.","commit_id":"2e334ba458d59b72491a11009827f73111051ae2"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    :param context: the user context for authentication"},{"line_number":166,"context_line":"    :param image_properties: the key-value properties about the image"},{"line_number":167,"context_line":"    :return: instance of cryptography AsymmetricVerificationContext"},{"line_number":168,"context_line":"    :raises: SignatureVerificationError if building the verifier fails"},{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    if not should_create_verifier(image_properties):"},{"line_number":171,"context_line":"        raise exception.SignatureVerificationError("}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_f38141c4","line":168,"range":{"start_line":168,"start_character":4,"end_line":168,"end_character":39},"updated":"2016-02-24 16:32:13.000000000","message":":raises glance.common.exception.SignatureVerificationError:\n\ndoc: http://www.sphinx-doc.org/en/stable/domains.html#info-field-lists","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":165,"context_line":"    :param context: the user context for authentication"},{"line_number":166,"context_line":"    :param image_properties: the key-value properties about the image"},{"line_number":167,"context_line":"    :return: instance of cryptography AsymmetricVerificationContext"},{"line_number":168,"context_line":"    :raises: SignatureVerificationError if building the verifier fails"},{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    if not should_create_verifier(image_properties):"},{"line_number":171,"context_line":"        raise exception.SignatureVerificationError("}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_2f50555e","line":168,"range":{"start_line":168,"start_character":4,"end_line":168,"end_character":39},"in_reply_to":"bae84128_f38141c4","updated":"2016-02-24 18:59:27.000000000","message":"Done","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    if not should_create_verifier(image_properties):"},{"line_number":171,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":172,"context_line":"            \u0027Required image properties for signature verification do not\u0027"},{"line_number":173,"context_line":"            \u0027 exist. Cannot verify signature.\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    signature \u003d get_signature(image_properties[SIGNATURE])"},{"line_number":176,"context_line":"    hash_method \u003d get_hash_method(image_properties[HASH_METHOD])"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_00e60de7","line":173,"range":{"start_line":172,"start_character":12,"end_line":173,"end_character":46},"updated":"2016-02-24 16:32:13.000000000","message":"this needs to be i18n compliant","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":169,"context_line":"    \"\"\""},{"line_number":170,"context_line":"    if not should_create_verifier(image_properties):"},{"line_number":171,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":172,"context_line":"            \u0027Required image properties for signature verification do not\u0027"},{"line_number":173,"context_line":"            \u0027 exist. Cannot verify signature.\u0027)"},{"line_number":174,"context_line":""},{"line_number":175,"context_line":"    signature \u003d get_signature(image_properties[SIGNATURE])"},{"line_number":176,"context_line":"    hash_method \u003d get_hash_method(image_properties[HASH_METHOD])"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_afcaa518","line":173,"range":{"start_line":172,"start_character":12,"end_line":173,"end_character":46},"in_reply_to":"bae84128_00e60de7","updated":"2016-02-24 18:59:27.000000000","message":"Done","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":192,"context_line":"               % {\u0027e\u0027: encodeutils.exception_to_unicode(e)})"},{"line_number":193,"context_line":"        LOG.error(msg)"},{"line_number":194,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":195,"context_line":"            \u0027Unable to verify signature since the algorithm is unsupported \u0027"},{"line_number":196,"context_line":"            \u0027on this system\u0027)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    if verifier:"},{"line_number":199,"context_line":"        return verifier"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_60bef9ae","line":196,"range":{"start_line":195,"start_character":12,"end_line":196,"end_character":28},"updated":"2016-02-24 16:32:13.000000000","message":"this needs to be i18n compliant","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":192,"context_line":"               % {\u0027e\u0027: encodeutils.exception_to_unicode(e)})"},{"line_number":193,"context_line":"        LOG.error(msg)"},{"line_number":194,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":195,"context_line":"            \u0027Unable to verify signature since the algorithm is unsupported \u0027"},{"line_number":196,"context_line":"            \u0027on this system\u0027)"},{"line_number":197,"context_line":""},{"line_number":198,"context_line":"    if verifier:"},{"line_number":199,"context_line":"        return verifier"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_0fd0f1c8","line":196,"range":{"start_line":195,"start_character":12,"end_line":196,"end_character":28},"in_reply_to":"bae84128_60bef9ae","updated":"2016-02-24 18:59:27.000000000","message":"Done","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    else:"},{"line_number":201,"context_line":"        # Error creating the verifier"},{"line_number":202,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":203,"context_line":"            \u0027Error occurred while creating the verifier\u0027)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"@debtcollector.removals.remove(message\u003d\"This will be removed in the N cycle.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_c0b8a5ca","line":203,"range":{"start_line":203,"start_character":12,"end_line":203,"end_character":56},"updated":"2016-02-24 16:32:13.000000000","message":"this needs to be i18n compliant","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":200,"context_line":"    else:"},{"line_number":201,"context_line":"        # Error creating the verifier"},{"line_number":202,"context_line":"        raise exception.SignatureVerificationError("},{"line_number":203,"context_line":"            \u0027Error occurred while creating the verifier\u0027)"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":""},{"line_number":206,"context_line":"@debtcollector.removals.remove(message\u003d\"This will be removed in the N cycle.\")"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_4fdaf9ea","line":203,"range":{"start_line":203,"start_character":12,"end_line":203,"end_character":56},"in_reply_to":"bae84128_c0b8a5ca","updated":"2016-02-24 18:59:27.000000000","message":"Done","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fc322efd599f0bed8aa3465e1d0f0ad9df7e840d","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    :param public_key: the public key to use, as a cryptography object"},{"line_number":105,"context_line":"    :param image_properties: the key-value properties about the image"},{"line_number":106,"context_line":"    :returns: the verifier to use to verify the signature for RSA-PSS"},{"line_number":107,"context_line":"    :raises: glance.common.exception.SignatureVerificationError if"},{"line_number":108,"context_line":"             the RSA-PSS specific properties are invalid"},{"line_number":109,"context_line":"    \"\"\""},{"line_number":110,"context_line":"    # retrieve other needed properties, or use defaults if not there"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_602427c6","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":37},"updated":"2016-02-24 20:47:09.000000000","message":"This doesn\u0027t seems unrelated to this patch as the main purpose, I feel. It would be nice to separate this part as the separated one for reviewing.","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"943a260124cb75801244e6d5e1fc19459905906e","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    :param public_key: the public key to use, as a cryptography object"},{"line_number":105,"context_line":"    :param image_properties: the key-value properties about the image"},{"line_number":106,"context_line":"    :returns: the verifier to use to verify the signature for RSA-PSS"},{"line_number":107,"context_line":"    :raises: glance.common.exception.SignatureVerificationError if"},{"line_number":108,"context_line":"             the RSA-PSS specific properties are invalid"},{"line_number":109,"context_line":"    \"\"\""},{"line_number":110,"context_line":"    # retrieve other needed properties, or use defaults if not there"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_554b7559","line":107,"range":{"start_line":107,"start_character":13,"end_line":107,"end_character":37},"in_reply_to":"bae84128_602427c6","updated":"2016-02-25 13:43:09.000000000","message":"Done","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fc322efd599f0bed8aa3465e1d0f0ad9df7e840d","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        mask_gen_algorithm \u003d image_properties[MASK_GEN_ALG]"},{"line_number":113,"context_line":"        if mask_gen_algorithm not in MASK_GEN_ALGORITHMS:"},{"line_number":114,"context_line":"            raise exception.SignatureVerificationError("},{"line_number":115,"context_line":"                _(\u0027Invalid mask_gen_algorithm: %s\u0027) % mask_gen_algorithm"},{"line_number":116,"context_line":"            )"},{"line_number":117,"context_line":"        mgf \u003d MASK_GEN_ALGORITHMS[mask_gen_algorithm](hash_method)"},{"line_number":118,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_402123b4","line":115,"range":{"start_line":115,"start_character":16,"end_line":115,"end_character":18},"updated":"2016-02-24 20:47:09.000000000","message":"ditto","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"943a260124cb75801244e6d5e1fc19459905906e","unresolved":false,"context_lines":[{"line_number":112,"context_line":"        mask_gen_algorithm \u003d image_properties[MASK_GEN_ALG]"},{"line_number":113,"context_line":"        if mask_gen_algorithm not in MASK_GEN_ALGORITHMS:"},{"line_number":114,"context_line":"            raise exception.SignatureVerificationError("},{"line_number":115,"context_line":"                _(\u0027Invalid mask_gen_algorithm: %s\u0027) % mask_gen_algorithm"},{"line_number":116,"context_line":"            )"},{"line_number":117,"context_line":"        mgf \u003d MASK_GEN_ALGORITHMS[mask_gen_algorithm](hash_method)"},{"line_number":118,"context_line":"    else:"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_d56dc5cd","line":115,"range":{"start_line":115,"start_character":16,"end_line":115,"end_character":18},"in_reply_to":"bae84128_402123b4","updated":"2016-02-25 13:43:09.000000000","message":"Done","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"fc322efd599f0bed8aa3465e1d0f0ad9df7e840d","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            salt_length \u003d int(pss_salt_length)"},{"line_number":126,"context_line":"        except ValueError:"},{"line_number":127,"context_line":"            raise exception.SignatureVerificationError("},{"line_number":128,"context_line":"                _(\u0027Invalid pss_salt_length: %s\u0027) % pss_salt_length"},{"line_number":129,"context_line":"            )"},{"line_number":130,"context_line":"    else:"},{"line_number":131,"context_line":"        # default to max salt length"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_e0167757","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":18},"updated":"2016-02-24 20:47:09.000000000","message":"ditto","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"943a260124cb75801244e6d5e1fc19459905906e","unresolved":false,"context_lines":[{"line_number":125,"context_line":"            salt_length \u003d int(pss_salt_length)"},{"line_number":126,"context_line":"        except ValueError:"},{"line_number":127,"context_line":"            raise exception.SignatureVerificationError("},{"line_number":128,"context_line":"                _(\u0027Invalid pss_salt_length: %s\u0027) % pss_salt_length"},{"line_number":129,"context_line":"            )"},{"line_number":130,"context_line":"    else:"},{"line_number":131,"context_line":"        # default to max salt length"}],"source_content_type":"text/x-python","patch_set":13,"id":"bae84128_b572c1ab","line":128,"range":{"start_line":128,"start_character":16,"end_line":128,"end_character":18},"in_reply_to":"bae84128_e0167757","updated":"2016-02-25 13:43:09.000000000","message":"Done","commit_id":"a21348aa09fc1e7e792e23a202d5259a197bbea3"}],"glance/location.py":[{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        if verifier:"},{"line_number":420,"context_line":"            try:"},{"line_number":421,"context_line":"                verifier.verify()"},{"line_number":422,"context_line":"                LOG.info(_LI(\"Successfully verified signature for image %s\"),"},{"line_number":423,"context_line":"                         self.image.image_id)"},{"line_number":424,"context_line":"            except crypto_exception.InvalidSignature:"},{"line_number":425,"context_line":"                raise exception.SignatureVerificationError("},{"line_number":426,"context_line":"                    \u0027Signature verification failed\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_363d57c4","line":423,"range":{"start_line":422,"start_character":16,"end_line":423,"end_character":45},"updated":"2016-02-24 16:32:13.000000000","message":"should this be outside the try block?","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":419,"context_line":"        if verifier:"},{"line_number":420,"context_line":"            try:"},{"line_number":421,"context_line":"                verifier.verify()"},{"line_number":422,"context_line":"                LOG.info(_LI(\"Successfully verified signature for image %s\"),"},{"line_number":423,"context_line":"                         self.image.image_id)"},{"line_number":424,"context_line":"            except crypto_exception.InvalidSignature:"},{"line_number":425,"context_line":"                raise exception.SignatureVerificationError("},{"line_number":426,"context_line":"                    \u0027Signature verification failed\u0027)"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_cfba8971","line":423,"range":{"start_line":422,"start_character":16,"end_line":423,"end_character":45},"in_reply_to":"bae84128_363d57c4","updated":"2016-02-24 18:59:27.000000000","message":"The verify() method either succeeds or throws an exception. If an image\u0027s signature is invalid, or if there\u0027s anything wrong with the signature metadata, the verify() method throws an exception. So this message won\u0027t be logged unless the verify() method succeeds.","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":17123,"name":"Tom Cocozzello (tjcocozz)","email":"tjcocozz@us.ibm.com","username":"tcocozzello"},"change_message_id":"8ff68c4d91abe32bd7616167a9d2e10eeace8e2c","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                         self.image.image_id)"},{"line_number":424,"context_line":"            except crypto_exception.InvalidSignature:"},{"line_number":425,"context_line":"                raise exception.SignatureVerificationError("},{"line_number":426,"context_line":"                    \u0027Signature verification failed\u0027)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        self.image.locations \u003d [{\u0027url\u0027: location, \u0027metadata\u0027: loc_meta,"},{"line_number":429,"context_line":"                                 \u0027status\u0027: \u0027active\u0027}]"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_33b3a999","line":426,"range":{"start_line":426,"start_character":20,"end_line":426,"end_character":51},"updated":"2016-02-24 16:32:13.000000000","message":"i18n compliant","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"02f2c1131ca6e1c6c82c337d5fa17351fad59cd7","unresolved":false,"context_lines":[{"line_number":423,"context_line":"                         self.image.image_id)"},{"line_number":424,"context_line":"            except crypto_exception.InvalidSignature:"},{"line_number":425,"context_line":"                raise exception.SignatureVerificationError("},{"line_number":426,"context_line":"                    \u0027Signature verification failed\u0027)"},{"line_number":427,"context_line":""},{"line_number":428,"context_line":"        self.image.locations \u003d [{\u0027url\u0027: location, \u0027metadata\u0027: loc_meta,"},{"line_number":429,"context_line":"                                 \u0027status\u0027: \u0027active\u0027}]"}],"source_content_type":"text/x-python","patch_set":12,"id":"bae84128_afbf455f","line":426,"range":{"start_line":426,"start_character":20,"end_line":426,"end_character":51},"in_reply_to":"bae84128_33b3a999","updated":"2016-02-24 18:59:27.000000000","message":"Done","commit_id":"489aa8eab77cce45f3d1ff89a98cdead0c35d2c4"}],"requirements.txt":[{"author":{"_account_id":6802,"name":"Joel Coffman","email":"jmc7tp@gmail.com","username":"joel-coffman"},"change_message_id":"47380ebdb0812fd705e727e55d25a1b59a711308","unresolved":false,"context_lines":[{"line_number":48,"context_line":"osprofiler\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"# Glance Store"},{"line_number":51,"context_line":"glance-store\u003e\u003d0.11.0 # Apache-2.0"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"# Artifact repository"}],"source_content_type":"text/plain","patch_set":11,"id":"bae84128_6f51560e","line":51,"updated":"2016-02-22 12:42:13.000000000","message":"Should 0.9.0 continue to be blacklisted?","commit_id":"0913ed0df54d7aa592f6d28457e3720633c8893f"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"d13fa7e4aaa5558ae3c7b38d16360bee29784cf1","unresolved":false,"context_lines":[{"line_number":48,"context_line":"osprofiler\u003e\u003d1.0.0 # Apache-2.0"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"# Glance Store"},{"line_number":51,"context_line":"glance-store\u003e\u003d0.11.0 # Apache-2.0"},{"line_number":52,"context_line":""},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"# Artifact repository"}],"source_content_type":"text/plain","patch_set":11,"id":"bae84128_65f21571","line":51,"in_reply_to":"bae84128_6f51560e","updated":"2016-02-22 13:48:22.000000000","message":"We\u0027re requiring a version at least as new as 0.11.0, so 0.9.0 will not be used. IMO it\u0027s not necessary to explicitly blacklist 0.9.0.","commit_id":"0913ed0df54d7aa592f6d28457e3720633c8893f"}]}
