/*
- * Copyright 2015-2016 The OpenSSL Project Authors. All Rights Reserved.
+ * Copyright 2015-2018 The OpenSSL Project Authors. All Rights Reserved.
*
* Licensed under the OpenSSL license (the "License"). You may not use
* this file except in compliance with the License. You can obtain a copy
#include <openssl/pem.h>
#include <openssl/err.h>
#include "testutil.h"
-#include "test_main_custom.h"
+
+static const char *roots_f;
+static const char *untrusted_f;
+static const char *bad_f;
static STACK_OF(X509) *load_certs_from_file(const char *filename)
{
* CA=FALSE, and will therefore incorrectly verify bad
*
*/
-static int test_alt_chains_cert_forgery(const char *roots_f,
- const char *untrusted_f,
- const char *bad_f)
+static int test_alt_chains_cert_forgery(void)
{
int ret = 0;
int i;
return ret;
}
-int test_main(int argc, char **argv)
+static int test_store_ctx(void)
+{
+ X509_STORE_CTX *sctx = NULL;
+ X509 *x = NULL;
+ BIO *bio = NULL;
+ int testresult = 0, ret;
+
+ bio = BIO_new_file(bad_f, "r");
+ if (bio == NULL)
+ goto err;
+
+ x = PEM_read_bio_X509(bio, NULL, 0, NULL);
+ if (x == NULL)
+ goto err;
+
+ sctx = X509_STORE_CTX_new();
+ if (sctx == NULL)
+ goto err;
+
+ if (!X509_STORE_CTX_init(sctx, NULL, x, NULL))
+ goto err;
+
+ /* Verifying a cert where we have no trusted certs should fail */
+ ret = X509_verify_cert(sctx);
+
+ if (ret == 0) {
+ /* This is the result we were expecting: Test passed */
+ testresult = 1;
+ }
+
+ err:
+ X509_STORE_CTX_free(sctx);
+ X509_free(x);
+ BIO_free(bio);
+ return testresult;
+}
+
+int setup_tests(void)
{
- if (argc != 4) {
+ if (!TEST_ptr(roots_f = test_get_argument(0))
+ || !TEST_ptr(untrusted_f = test_get_argument(1))
+ || !TEST_ptr(bad_f = test_get_argument(2))) {
TEST_error("usage: verify_extra_test roots.pem untrusted.pem bad.pem\n");
- return EXIT_FAILURE;
+ return 0;
}
- if (!TEST_true(test_alt_chains_cert_forgery(argv[1], argv[2], argv[3])))
- return EXIT_FAILURE;
- return EXIT_SUCCESS;
+ ADD_TEST(test_alt_chains_cert_forgery);
+ ADD_TEST(test_store_ctx);
+ return 1;
}