19
const char **verify_args;
20
const char **sigs;
21
int (*verify_signed_buffer)(struct signature_check *sigc,
22
- struct gpg_format *fmt, const char *payload,
23
- size_t payload_size, const char *signature,
22
+ struct gpg_format *fmt,
23
+ const char *signature,
24
size_t signature_size);
25
int (*sign_buffer)(struct strbuf *buffer, struct strbuf *signature,
26
const char *signing_key);
53
};
54
55
static int verify_gpg_signed_buffer(struct signature_check *sigc,
56
- struct gpg_format *fmt, const char *payload,
57
- size_t payload_size, const char *signature,
56
+ struct gpg_format *fmt,
57
+ const char *signature,
58
size_t signature_size);
59
static int verify_ssh_signed_buffer(struct signature_check *sigc,
60
- struct gpg_format *fmt, const char *payload,
61
- size_t payload_size, const char *signature,
60
+ struct gpg_format *fmt,
61
+ const char *signature,
62
size_t signature_size);
63
static int sign_buffer_gpg(struct strbuf *buffer, struct strbuf *signature,
64
const char *signing_key);
314
}
315
316
static int verify_gpg_signed_buffer(struct signature_check *sigc,
317
- struct gpg_format *fmt, const char *payload,
318
- size_t payload_size, const char *signature,
317
+ struct gpg_format *fmt,
318
+ const char *signature,
319
size_t signature_size)
320
{
321
struct child_process gpg = CHILD_PROCESS_INIT;
343
NULL);
344
345
sigchain_push(SIGPIPE, SIG_IGN);
346
- ret = pipe_command(&gpg, payload, payload_size, &gpg_stdout, 0,
346
+ ret = pipe_command(&gpg, sigc->payload, sigc->payload_len, &gpg_stdout, 0,
347
&gpg_stderr, 0);
348
sigchain_pop(SIGPIPE);
349
350
delete_tempfile(&temp);
351
352
ret |= !strstr(gpg_stdout.buf, "\n[GNUPG:] GOODSIG ");
353
- sigc->payload = xmemdupz(payload, payload_size);
353
sigc->output = strbuf_detach(&gpg_stderr, NULL);
354
sigc->gpg_status = strbuf_detach(&gpg_stdout, NULL);
355
425
}
426
427
static int verify_ssh_signed_buffer(struct signature_check *sigc,
429
- struct gpg_format *fmt, const char *payload,
430
- size_t payload_size, const char *signature,
428
+ struct gpg_format *fmt,
429
+ const char *signature,
430
size_t signature_size)
431
{
432
struct child_process ssh_keygen = CHILD_PROCESS_INIT;
479
"-n", "git",
480
"-s", buffer_file->filename.buf,
481
NULL);
483
- pipe_command(&ssh_keygen, payload, payload_size,
482
+ pipe_command(&ssh_keygen, sigc->payload, sigc->payload_len,
483
&ssh_keygen_out, 0, &ssh_keygen_err, 0);
484
485
/*
525
}
526
527
sigchain_push(SIGPIPE, SIG_IGN);
529
- ret = pipe_command(&ssh_keygen, payload, payload_size,
528
+ ret = pipe_command(&ssh_keygen, sigc->payload, sigc->payload_len,
529
&ssh_keygen_out, 0, &ssh_keygen_err, 0);
530
sigchain_pop(SIGPIPE);
531
539
}
540
}
541
543
- sigc->payload = xmemdupz(payload, payload_size);
542
strbuf_stripspace(&ssh_keygen_out, 0);
543
strbuf_stripspace(&ssh_keygen_err, 0);
544
/* Add stderr outputs to show the user actual ssh-keygen errors */
560
return ret;
561
}
562
565
-int check_signature(const char *payload, size_t plen, const char *signature,
566
- size_t slen, struct signature_check *sigc)
563
+int check_signature(struct signature_check *sigc,
564
+ const char *signature, size_t slen)
565
{
566
struct gpg_format *fmt;
567
int status;
573
if (!fmt)
574
die(_("bad/incompatible signature '%s'"), signature);
575
578
- status = fmt->verify_signed_buffer(sigc, fmt, payload, plen, signature,
579
- slen);
576
+ status = fmt->verify_signed_buffer(sigc, fmt, signature, slen);
577
578
if (status && !sigc->output)
579
return !!status;
590
sigc->output;
591
592
if (flags & GPG_VERIFY_VERBOSE && sigc->payload)
596
- fputs(sigc->payload, stdout);
593
+ fwrite(sigc->payload, 1, sigc->payload_len, stdout);
594
595
if (output)
596
fputs(output, stderr);