| /* Based on BoringSSL's cert.c fuzzer */ |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| #include <openssl/asn1.h> |
| #include <openssl/crypto.h> |
| #include <openssl/x509.h> |
| #include <openssl/x509v3.h> |
| #include <stdint.h> |
| #include <stdio.h> |
| |
| #include <hf_ssl_lib.h> |
| #include <libhfuzz/libhfuzz.h> |
| |
| int LLVMFuzzerInitialize(int* argc, char*** argv) { |
| HFInit(); |
| HFResetRand(); |
| return 1; |
| } |
| |
| int LLVMFuzzerTestOneInput(const uint8_t* buf, size_t len) { |
| const uint8_t* b = buf; |
| X509* x = d2i_X509(NULL, &b, len); |
| if (x) { |
| BIO* o = BIO_new_fp(stdout, BIO_NOCLOSE); |
| X509_print_ex(o, x, XN_FLAG_RFC2253, X509_FLAG_COMPAT); |
| |
| unsigned char* der = NULL; |
| i2d_X509(x, &der); |
| OPENSSL_free(der); |
| |
| X509_free(x); |
| BIO_free(o); |
| } |
| |
| return 0; |
| } |
| |
| #ifdef __cplusplus |
| } |
| #endif |