/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include <string> #include "shared.h" #define TEST_FUNCTION(f) \ out = f(certName); \ free(out); extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { std::string name(data, data + size); assert(SECOID_Init() == SECSuccess); CERTName* certName = CERT_AsciiToName(name.c_str()); if (certName) { char* out; TEST_FUNCTION(CERT_NameToAscii) TEST_FUNCTION(CERT_GetCertEmailAddress) // These functions call CERT_GetNameElement with different OIDs. // Unfotunately CERT_GetNameElement is not accesible from here. TEST_FUNCTION(CERT_GetCertUid) TEST_FUNCTION(CERT_GetCommonName) TEST_FUNCTION(CERT_GetCountryName) TEST_FUNCTION(CERT_GetDomainComponentName) TEST_FUNCTION(CERT_GetLocalityName) TEST_FUNCTION(CERT_GetOrgName) TEST_FUNCTION(CERT_GetOrgUnitName) TEST_FUNCTION(CERT_GetStateName) out = CERT_NameToAsciiInvertible(certName, CERT_N2A_READABLE); free(out); out = CERT_NameToAsciiInvertible(certName, CERT_N2A_STRICT); free(out); out = CERT_NameToAsciiInvertible(certName, CERT_N2A_INVERTIBLE); free(out); } CERT_DestroyName(certName); return 0; }