]> git.ipfire.org Git - thirdparty/git.git/blobdiff - log-tree.c
Sync with maint
[thirdparty/git.git] / log-tree.c
index 151e12f41578b1e30d2de825528beda6627d66a9..4e32638de8adc2ad28aaedd16f44281b2fbc9482 100644 (file)
@@ -449,22 +449,22 @@ static void show_signature(struct rev_info *opt, struct commit *commit)
 {
        struct strbuf payload = STRBUF_INIT;
        struct strbuf signature = STRBUF_INIT;
-       struct strbuf gpg_output = STRBUF_INIT;
+       struct signature_check sigc = { 0 };
        int status;
 
        if (parse_signed_commit(commit, &payload, &signature) <= 0)
                goto out;
 
-       status = verify_signed_buffer(payload.buf, payload.len,
-                                     signature.buf, signature.len,
-                                     &gpg_output, NULL);
-       if (status && !gpg_output.len)
-               strbuf_addstr(&gpg_output, "No signature\n");
-
-       show_sig_lines(opt, status, gpg_output.buf);
+       status = check_signature(payload.buf, payload.len, signature.buf,
+                                signature.len, &sigc);
+       if (status && sigc.result == 'N')
+               show_sig_lines(opt, status, "No signature\n");
+       else {
+               show_sig_lines(opt, status, sigc.gpg_output);
+               signature_check_clear(&sigc);
+       }
 
  out:
-       strbuf_release(&gpg_output);
        strbuf_release(&payload);
        strbuf_release(&signature);
 }
@@ -497,6 +497,7 @@ static int show_one_mergetag(struct commit *commit,
        struct object_id oid;
        struct tag *tag;
        struct strbuf verify_message;
+       struct signature_check sigc = { 0 };
        int status, nth;
        size_t payload_size, gpg_message_offset;
 
@@ -525,12 +526,13 @@ static int show_one_mergetag(struct commit *commit,
        status = -1;
        if (extra->len > payload_size) {
                /* could have a good signature */
-               if (!verify_signed_buffer(extra->value, payload_size,
-                                         extra->value + payload_size,
-                                         extra->len - payload_size,
-                                         &verify_message, NULL))
+               if (!check_signature(extra->value, payload_size,
+                                    extra->value + payload_size,
+                                    extra->len - payload_size, &sigc)) {
+                       strbuf_addstr(&verify_message, sigc.gpg_output);
+                       signature_check_clear(&sigc);
                        status = 0; /* good */
-               else if (verify_message.len <= gpg_message_offset)
+               else if (verify_message.len <= gpg_message_offset)
                        strbuf_addstr(&verify_message, "No signature\n");
                /* otherwise we couldn't verify, which is shown as bad */
        }