|
@@ -1,13 +1,88 @@
|
|
|
+#define CRYPTO_ED25519_PRIVATE
|
|
|
#include "orconfig.h"
|
|
|
#include "or.h"
|
|
|
#include "backtrace.h"
|
|
|
#include "config.h"
|
|
|
#include "fuzzing.h"
|
|
|
+#include "crypto.h"
|
|
|
+#include "crypto_ed25519.h"
|
|
|
|
|
|
extern const char tor_git_revision[];
|
|
|
const char tor_git_revision[] = "";
|
|
|
|
|
|
-#define MAX_FUZZ_SIZE (128*1024)
|
|
|
+static int
|
|
|
+mock_crypto_pk_public_checksig__nocheck(const crypto_pk_t *env, char *to,
|
|
|
+ size_t tolen,
|
|
|
+ const char *from, size_t fromlen)
|
|
|
+{
|
|
|
+ tor_assert(env && to && from);
|
|
|
+ (void)fromlen;
|
|
|
+
|
|
|
+ tor_assert(tolen >= crypto_pk_keysize(env));
|
|
|
+ memset(to, 0x01, 20);
|
|
|
+ return 20;
|
|
|
+}
|
|
|
+
|
|
|
+static int
|
|
|
+mock_crypto_pk_public_checksig_digest__nocheck(crypto_pk_t *env,
|
|
|
+ const char *data,
|
|
|
+ size_t datalen,
|
|
|
+ const char *sig,
|
|
|
+ size_t siglen)
|
|
|
+{
|
|
|
+ tor_assert(env && data && sig);
|
|
|
+ (void)datalen;
|
|
|
+ (void)siglen;
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int
|
|
|
+mock_ed25519_checksig__nocheck(const ed25519_signature_t *signature,
|
|
|
+ const uint8_t *msg, size_t len,
|
|
|
+ const ed25519_public_key_t *pubkey)
|
|
|
+{
|
|
|
+ tor_assert(signature && msg && pubkey);
|
|
|
+
|
|
|
+ (void)len;
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int
|
|
|
+mock_ed25519_checksig_batch__nocheck(int *okay_out,
|
|
|
+ const ed25519_checkable_t *checkable,
|
|
|
+ int n_checkable)
|
|
|
+{
|
|
|
+ tor_assert(checkable);
|
|
|
+ int i;
|
|
|
+ for (i = 0; i < n_checkable; ++i) {
|
|
|
+
|
|
|
+ tor_assert(checkable[i].pubkey);
|
|
|
+ tor_assert(checkable[i].msg);
|
|
|
+ if (okay_out)
|
|
|
+ okay_out[i] = 1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+static int
|
|
|
+mock_ed25519_impl_spot_check__nocheck(void)
|
|
|
+{
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+void
|
|
|
+disable_signature_checking(void)
|
|
|
+{
|
|
|
+ MOCK(crypto_pk_public_checksig,
|
|
|
+ mock_crypto_pk_public_checksig__nocheck);
|
|
|
+ MOCK(crypto_pk_public_checksig_digest,
|
|
|
+ mock_crypto_pk_public_checksig_digest__nocheck);
|
|
|
+ MOCK(ed25519_checksig, mock_ed25519_checksig__nocheck);
|
|
|
+ MOCK(ed25519_checksig_batch, mock_ed25519_checksig_batch__nocheck);
|
|
|
+ MOCK(ed25519_impl_spot_check, mock_ed25519_impl_spot_check__nocheck);
|
|
|
+}
|
|
|
|
|
|
#ifdef LLVM_FUZZ
|
|
|
int
|
|
@@ -70,6 +145,7 @@ main(int argc, char **argv)
|
|
|
__AFL_INIT();
|
|
|
#endif
|
|
|
|
|
|
+#define MAX_FUZZ_SIZE (128*1024)
|
|
|
char *input = read_file_to_str_until_eof(0, MAX_FUZZ_SIZE, &size);
|
|
|
tor_assert(input);
|
|
|
fuzz_main((const uint8_t*)input, size);
|