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
LLVMFuzzerTestOneInput(const uint8_t * sig,size_t slen)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