xref: /freebsd/crypto/openssh/regress/misc/fuzz-harness/sshsig_fuzz.cc (revision 02e9120893770924227138ba49df1edb3896112a)
1 // cc_fuzz_target test for sshsig verification.
2 
3 #include <stddef.h>
4 #include <stdio.h>
5 #include <stdint.h>
6 #include <stdlib.h>
7 #include <string.h>
8 
9 extern "C" {
10 
11 #include "includes.h"
12 #include "sshkey.h"
13 #include "ssherr.h"
14 #include "sshbuf.h"
15 #include "sshsig.h"
16 #include "log.h"
17 
18 int LLVMFuzzerTestOneInput(const uint8_t* sig, size_t slen)
19 {
20   static const char *data = "If everyone started announcing his nose had "
21       "run away, I don’t know how it would all end";
22   struct sshbuf *signature = sshbuf_from(sig, slen);
23   struct sshbuf *message = sshbuf_from(data, strlen(data));
24   struct sshkey *k = NULL;
25   struct sshkey_sig_details *details = NULL;
26   extern char *__progname;
27 
28   log_init(__progname, SYSLOG_LEVEL_QUIET, SYSLOG_FACILITY_USER, 1);
29   sshsig_verifyb(signature, message, "castle", &k, &details);
30   sshkey_sig_details_free(details);
31   sshkey_free(k);
32   sshbuf_free(signature);
33   sshbuf_free(message);
34   return 0;
35 }
36 
37 } // extern
38