static int execute_cert_test(CT_TEST_FIXTURE fixture)
{
- int test_failed = 0;
+ int success = 0;
X509 *cert = NULL, *issuer = NULL;
STACK_OF(SCT) *scts = NULL;
SCT *sct = NULL;
CT_TEST_MAX_FILE_SIZE - 1);
if (sct_text_len < 0) {
- test_failed = 1;
fprintf(stderr, "Test data file not found: %s\n",
fixture.sct_text_file);
goto end;
cert = load_pem_cert(fixture.certs_dir, fixture.certificate_file);
if (cert == NULL) {
- test_failed = 1;
fprintf(stderr, "Unable to load certificate: %s\n",
fixture.certificate_file);
goto end;
issuer = load_pem_cert(fixture.certs_dir, fixture.issuer_file);
if (issuer == NULL) {
- test_failed = 1;
fprintf(stderr, "Unable to load issuer certificate: %s\n",
fixture.issuer_file);
goto end;
sct_extension = X509_get_ext(cert, sct_extension_index);
if (fixture.expected_sct_count > 0) {
if (sct_extension == NULL) {
- test_failed = 1;
fprintf(stderr, "SCT extension not found in: %s\n",
fixture.certificate_file);
goto end;
}
- if (fixture.sct_text_file) {
- test_failed = compare_extension_printout(sct_extension,
- expected_sct_text);
- if (test_failed != 0)
+ if (fixture.sct_text_file
+ && compare_extension_printout(sct_extension,
+ expected_sct_text)) {
goto end;
}
if (!SCT_set_source(sct_i, SCT_SOURCE_X509V3_EXTENSION)) {
fprintf(stderr,
"Error setting SCT source to X509v3 extension\n");
- test_failed = 1;
goto end;
}
}
are_scts_validated = SCT_LIST_validate(scts, ct_policy_ctx);
if (are_scts_validated < 0) {
fprintf(stderr, "Error verifying SCTs\n");
- test_failed = 1;
+ goto end;
} else if (!are_scts_validated) {
int invalid_sct_count = 0;
int valid_sct_count = 0;
fixture.expected_sct_count,
unverified_sct_count);
}
- test_failed = 1;
- }
-
- if (test_failed != 0)
goto end;
+ }
}
} else if (sct_extension != NULL) {
- test_failed = 1;
fprintf(stderr,
"Expected no SCTs, but found SCT extension in: %s\n",
fixture.certificate_file);
if (fixture.tls_sct != NULL) {
const unsigned char *p = fixture.tls_sct;
if (o2i_SCT(&sct, &p, fixture.tls_sct_len) == NULL) {
- test_failed = 1;
fprintf(stderr, "Failed to decode SCT from TLS format\n");
goto end;
}
- if (fixture.sct_text_file) {
- test_failed = compare_sct_printout(sct, expected_sct_text);
- if (test_failed != 0)
+ if (fixture.sct_text_file
+ && compare_sct_printout(sct, expected_sct_text)) {
goto end;
}
tls_sct_len = i2o_SCT(sct, &tls_sct);
if (tls_sct_len != fixture.tls_sct_len ||
memcmp(fixture.tls_sct, tls_sct, tls_sct_len) != 0) {
- test_failed = 1;
fprintf(stderr, "Failed to encode SCT into TLS format correctly\n");
goto end;
}
if (fixture.test_validity && cert != NULL) {
int is_sct_validated = SCT_validate(sct, ct_policy_ctx);
if (is_sct_validated < 0) {
- test_failed = 1;
fprintf(stderr, "Error validating SCT\n");
goto end;
} else if (!is_sct_validated) {
- test_failed = 1;
fprintf(stderr, "SCT failed verification\n");
goto end;
}
}
}
+ success = 1;
end:
X509_free(cert);
SCT_free(sct);
CT_POLICY_EVAL_CTX_free(ct_policy_ctx);
OPENSSL_free(tls_sct);
- return test_failed;
+ return success;
}
#define SETUP_CT_TEST_FIXTURE() SETUP_TEST_FIXTURE(CT_TEST_FIXTURE, set_up)
static int execute_test(SSL_TEST_FIXTURE fixture)
{
- /* TODO(emilia): this is confusing. Flip to return 1 on success. */
- int ret = 1;
+ int ret = 0;
SSL_CTX *server_ctx = NULL, *client_ctx = NULL;
SSL_TEST_CTX *test_ctx = NULL;
HANDSHAKE_RESULT result;
result = do_handshake(server_ctx, client_ctx);
- if (check_test(result, test_ctx))
- ret = 0;
+ ret = check_test(result, test_ctx);
err:
CONF_modules_unload(0);
SSL_CTX_free(server_ctx);
SSL_CTX_free(client_ctx);
SSL_TEST_CTX_free(test_ctx);
- if (ret != 0)
+ if (ret != 1)
ERR_print_errors_fp(stderr);
return ret;
}
for (i = 0; i != num_tests; ++i) {
if (all_tests[i].num == -1) {
- if (all_tests[i].test_fn()) {
+ if (!all_tests[i].test_fn()) {
printf("** %s failed **\n--------\n",
all_tests[i].test_case_name);
++num_failed;
}
} else {
for (j = 0; j < all_tests[i].num; j++) {
- if (all_tests[i].param_test_fn(j)) {
+ if (!all_tests[i].param_test_fn(j)) {
printf("** %s failed test %d\n--------\n",
all_tests[i].test_case_name, j);
++num_failed;