summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/cha-gtls-app.texi22
-rw-r--r--doc/examples/ex-serv-x509.c9
-rw-r--r--lib/ext/status_request.c3
-rw-r--r--lib/includes/gnutls/gnutls.h.in4
-rw-r--r--lib/x509.c81
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/set_key.c2
-rw-r--r--tests/set_x509_key.c2
-rw-r--r--tests/set_x509_key_file.c5
-rw-r--r--tests/set_x509_key_file_legacy.c176
-rw-r--r--tests/set_x509_key_file_ocsp_multi.c2
-rw-r--r--tests/set_x509_key_file_ocsp_multi2.c2
-rw-r--r--tests/set_x509_key_utf8.c2
13 files changed, 285 insertions, 27 deletions
diff --git a/doc/cha-gtls-app.texi b/doc/cha-gtls-app.texi
index 63843124c8..7ee6ce81ae 100644
--- a/doc/cha-gtls-app.texi
+++ b/doc/cha-gtls-app.texi
@@ -82,11 +82,23 @@ resumed one, and will share the same session ID with the previous one.
@node Error handling
@subsection Error handling
-There two types of @acronym{GnuTLS} functions. One type returns
-a boolean true (non-zero) or false (zero) value, which are set
-to return an unsigned integer type. The other type returns a
-signed integer type with zero indicating success and a negative
-value indicating failure.
+There two types of @acronym{GnuTLS} functions. The first type returns
+a boolean value, true (non-zero) or false (zero) value; these functions
+are defined to return an unsigned integer type. The other type returns a
+signed integer type with zero (or a positive number) indicating
+success and a negative value indicating failure. For the latter
+type it is recommended to check for errors as following.
+@example
+ ret = gnutls_function();
+ if (ret < 0) @{
+ return -1;
+ @}
+@end example
+The above example checks for a failure condition rather than
+for explicit success (e.g., equality to zero). That has the advantage
+that future extensions of the API can be extended to provide
+additional information via positive returned values (see for example
+@funcref{gnutls_certificate_set_x509_key_file}).
For certain operations such as TLS handshake and TLS packet receive
there is the notion of fatal and non-fatal error codes.
diff --git a/doc/examples/ex-serv-x509.c b/doc/examples/ex-serv-x509.c
index e67c9592b5..4bf1940b89 100644
--- a/doc/examples/ex-serv-x509.c
+++ b/doc/examples/ex-serv-x509.c
@@ -63,11 +63,16 @@ int main(void)
CHECK(gnutls_certificate_set_x509_crl_file(x509_cred, CRLFILE,
GNUTLS_X509_FMT_PEM));
+ /* The following code sets the certificate key pair as well as,
+ * an OCSP response which corresponds to it. It is possible
+ * to set multiple key-pairs and multiple OCSP status responses
+ * (the latter since 3.5.6). See the manual pages of the individual
+ * functions for more information.
+ */
CHECK(gnutls_certificate_set_x509_key_file(x509_cred, CERTFILE,
KEYFILE,
GNUTLS_X509_FMT_PEM));
- /* loads an OCSP status request if available */
CHECK(gnutls_certificate_set_ocsp_status_request_file(x509_cred,
OCSP_STATUS_FILE,
0));
@@ -75,9 +80,11 @@ int main(void)
CHECK(gnutls_priority_init(&priority_cache,
"PERFORMANCE:%SERVER_PRECEDENCE", NULL));
+#if GNUTLS_VERSION_NUMBER >= 0x030506
/* only available since GnuTLS 3.5.6, on previous versions see
* gnutls_certificate_set_dh_params(). */
gnutls_certificate_set_known_dh_params(x509_cred, GNUTLS_SEC_PARAM_MEDIUM);
+#endif
/* Socket operations
*/
diff --git a/lib/ext/status_request.c b/lib/ext/status_request.c
index 01d0266151..203b481132 100644
--- a/lib/ext/status_request.c
+++ b/lib/ext/status_request.c
@@ -475,7 +475,8 @@ static int file_ocsp_func(gnutls_session_t session, void *ptr,
* file accesses.
*
* Note: the ability to set multiple OCSP responses per credential
- * structure via @idx was added in version 3.5.5.
+ * structure via @idx was added in version 3.5.6 with the
+ * %GNUTLS_CERTIFICATE_API_V2 flag.
*
* Returns: On success, %GNUTLS_E_SUCCESS (0) is returned,
* otherwise a negative error code is returned.
diff --git a/lib/includes/gnutls/gnutls.h.in b/lib/includes/gnutls/gnutls.h.in
index 2d5f5097b7..a90918742b 100644
--- a/lib/includes/gnutls/gnutls.h.in
+++ b/lib/includes/gnutls/gnutls.h.in
@@ -1661,11 +1661,13 @@ gnutls_certificate_get_verify_flags(gnutls_certificate_credentials_t res);
/**
* gnutls_certificate_flags:
* @GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH: Skip the key and certificate matching check.
+ * @GNUTLS_CERTIFICATE_API_V2: If set the gnutls_certificate_set_*key* functions will return an index of the added key pair instead of zero.
*
* Enumeration of different certificate credentials flags.
*/
typedef enum gnutls_certificate_flags {
- GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH = 1
+ GNUTLS_CERTIFICATE_SKIP_KEY_CERT_MATCH = 1,
+ GNUTLS_CERTIFICATE_API_V2 = (1<<1)
} gnutls_certificate_flags;
void gnutls_certificate_set_flags(gnutls_certificate_credentials_t,
diff --git a/lib/x509.c b/lib/x509.c
index 9dcef3b65d..aa5ea5177c 100644
--- a/lib/x509.c
+++ b/lib/x509.c
@@ -57,6 +57,13 @@
* some x509 certificate parsing functions.
*/
+#define CRED_RET_SUCCESS(cred) \
+ if (cred->flags & GNUTLS_CERTIFICATE_API_V2) { \
+ return cred->ncerts-1; \
+ } else { \
+ return 0; \
+ }
+
/* fifteen days */
#define MAX_OCSP_VALIDITY_SECS (15*60*60*24)
#ifdef ENABLE_OCSP
@@ -986,7 +993,12 @@ read_key_file(gnutls_certificate_credentials_t res,
* The @key may be %NULL if you are using a sign callback, see
* gnutls_sign_callback_set().
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
+ *
**/
int
gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res,
@@ -1022,7 +1034,11 @@ gnutls_certificate_set_x509_key_mem(gnutls_certificate_credentials_t res,
* The @key may be %NULL if you are using a sign callback, see
* gnutls_sign_callback_set().
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
**/
int
gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res,
@@ -1052,8 +1068,7 @@ gnutls_certificate_set_x509_key_mem2(gnutls_certificate_credentials_t res,
return ret;
}
- /* return the index of the chain */
- return res->ncerts-1;
+ CRED_RET_SUCCESS(res);
}
int
@@ -1115,7 +1130,11 @@ certificate_credentials_append_pkey(gnutls_certificate_credentials_t res,
* If that function fails to load the @res type is at an undefined state, it must
* not be reused to load other keys or certificates.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
* Since: 2.4.0
**/
@@ -1197,7 +1216,7 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
return ret;
}
- return res->ncerts-1;
+ CRED_RET_SUCCESS(res);
cleanup:
gnutls_free(pcerts);
@@ -1219,11 +1238,12 @@ gnutls_certificate_set_x509_key(gnutls_certificate_credentials_t res,
* gnutls_certificate_set_x509_key_mem2(). The returned key must be deallocated
* with gnutls_x509_privkey_deinit() when no longer needed.
*
+ * The @index matches the return value of gnutls_certificate_set_x509_key() and friends
+ * functions, when the %GNUTLS_CERTIFICATE_API_V2 flag is set.
+ *
* If there is no key with the given index,
* %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. If the key with the
* given index is not a X.509 key, %GNUTLS_E_INVALID_REQUEST is returned.
- * The @index matches the value gnutls_certificate_set_x509_key() and friends
- * functions.
*
* Returns: %GNUTLS_E_SUCCESS (0) on success, or a negative error code.
*
@@ -1258,8 +1278,10 @@ gnutls_certificate_get_x509_key(gnutls_certificate_credentials_t res,
* certificate list must be deallocated with gnutls_x509_crt_deinit(), and the
* list itself must be freed with gnutls_free().
*
- * The @index matches the value gnutls_certificate_set_x509_key() and friends
- * functions. If there is no certificate with the given index,
+ * The @index matches the return value of gnutls_certificate_set_x509_key() and friends
+ * functions, when the %GNUTLS_CERTIFICATE_API_V2 flag is set.
+ *
+ * If there is no certificate with the given index,
* %GNUTLS_E_REQUESTED_DATA_NOT_AVAILABLE is returned. If the certificate
* with the given index is not a X.509 certificate, %GNUTLS_E_INVALID_REQUEST
* is returned. The returned certificates must be deinitialized after
@@ -1329,7 +1351,11 @@ gnutls_certificate_get_x509_crt(gnutls_certificate_credentials_t res,
* If that function fails to load the @res structure is at an undefined state, it must
* not be reused to load other keys or certificates.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
* Since: 3.0
**/
@@ -1421,7 +1447,7 @@ gnutls_certificate_set_key(gnutls_certificate_credentials_t res,
goto cleanup;
}
- return res->ncerts-1;
+ CRED_RET_SUCCESS(res);
cleanup:
_gnutls_str_array_clear(&str_names);
@@ -1502,7 +1528,11 @@ gnutls_certificate_get_trust_list(gnutls_certificate_credentials_t res,
* If that function fails to load the @res structure is at an undefined state, it must
* not be reused to load other keys or certificates.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
* Since: 3.1.11
**/
@@ -1550,7 +1580,11 @@ gnutls_certificate_set_x509_key_file(gnutls_certificate_credentials_t res,
* If that function fails to load the @res structure is at an undefined state, it must
* not be reused to load other keys or certificates.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
**/
int
@@ -1580,7 +1614,7 @@ gnutls_certificate_set_x509_key_file2(gnutls_certificate_credentials_t res,
return ret;
}
- return res->ncerts-1;
+ CRED_RET_SUCCESS(res);
}
/* Returns 0 if it's ok to use the gnutls_kx_algorithm_t with this
@@ -1972,7 +2006,11 @@ int ret;
* complexity that would make it harder to use this functionality at
* all.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
**/
int
@@ -2028,7 +2066,11 @@ int
* complexity that would make it harder to use this functionality at
* all.
*
- * Returns: An index of the inserted certificate chain on success (greater or equal to zero), or a negative error code.
+ * Note that, this function by default returns zero on success and a negative value on error.
+ * Since 3.5.6, when the flag %GNUTLS_CERTIFICATE_API_V2 is set on the credentials structure
+ * it returns an index (greater or equal to zero). That index can be used to other functions to refer to the added key-pair.
+ *
+ * Returns: On success this functions returns zero, and otherwise a negative value on error (see above for modifying that behavior).
*
* Since: 2.8.0
**/
@@ -2098,7 +2140,10 @@ int
}
}
- ret = idx;
+ if (res->flags & GNUTLS_CERTIFICATE_API_V2)
+ ret = idx;
+ else
+ ret = 0;
done:
if (chain) {
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 12c5b7ae5e..a0a85afe5e 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -116,7 +116,7 @@ ctests = mini-record-2 simple gc set_pkcs12_cred certder certuniqueid \
client_dsa_key server_ecdsa_key tls-session-ext-register tls-session-supplemental \
multi-alerts naked-alerts pkcs7-cat-parse set_known_dh_params_x509 \
set_known_dh_params_anon set_known_dh_params_psk session-tickets-ok \
- session-tickets-missing
+ session-tickets-missing set_x509_key_file_legacy
if HAVE_SECCOMP_TESTS
ctests += dtls-with-seccomp tls-with-seccomp dtls-client-with-seccomp tls-client-with-seccomp
diff --git a/tests/set_key.c b/tests/set_key.c
index 3097d81749..38c1d52c9e 100644
--- a/tests/set_key.c
+++ b/tests/set_key.c
@@ -134,6 +134,8 @@ static void basic(void)
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
assert(gnutls_certificate_allocate_credentials(&x509_cred)>=0);
+ gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2);
+
ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, GNUTLS_X509_FMT_PEM);
if (ret < 0)
fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret));
diff --git a/tests/set_x509_key.c b/tests/set_x509_key.c
index 306bcd0809..6a189540d9 100644
--- a/tests/set_x509_key.c
+++ b/tests/set_x509_key.c
@@ -156,6 +156,8 @@ static void basic(void)
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
assert(gnutls_certificate_allocate_credentials(&x509_cred)>=0);
+ gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2);
+
ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca_cert, GNUTLS_X509_FMT_PEM);
if (ret < 0)
fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret));
diff --git a/tests/set_x509_key_file.c b/tests/set_x509_key_file.c
index b76e6d6377..504e6dc609 100644
--- a/tests/set_x509_key_file.c
+++ b/tests/set_x509_key_file.c
@@ -21,6 +21,9 @@
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*/
+/* This test checks the behavior of gnutls_certificate_set_x509_key_file2()
+ * when the GNUTLS_CERTIFICATE_API_V2 is set */
+
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
@@ -136,6 +139,8 @@ void doit(void)
assert(gnutls_certificate_allocate_credentials(&xcred) >= 0);
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
+ gnutls_certificate_set_flags(xcred, GNUTLS_CERTIFICATE_API_V2);
+
ret = gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, GNUTLS_X509_FMT_PEM);
if (ret < 0)
fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret));
diff --git a/tests/set_x509_key_file_legacy.c b/tests/set_x509_key_file_legacy.c
new file mode 100644
index 0000000000..143b9120b2
--- /dev/null
+++ b/tests/set_x509_key_file_legacy.c
@@ -0,0 +1,176 @@
+/*
+ * Copyright (C) 2014-2016 Nikos Mavrogiannopoulos
+ * Copyright (C) 2016 Red Hat, Inc.
+ *
+ * Author: Nikos Mavrogiannopoulos
+ *
+ * This file is part of GnuTLS.
+ *
+ * GnuTLS is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * GnuTLS is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with GnuTLS; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+/* This test checks the behavior of gnutls_certificate_set_x509_key_file2()
+ * when the GNUTLS_CERTIFICATE_API_V2 is not set */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <assert.h>
+#include <gnutls/gnutls.h>
+#include <gnutls/x509.h>
+
+#include "cert-common.h"
+#include "utils.h"
+
+static time_t mytime(time_t * t)
+{
+ time_t then = 1470002400;
+ if (t)
+ *t = then;
+
+ return then;
+}
+
+static void compare(const gnutls_datum_t *der, const void *ipem)
+{
+ gnutls_datum_t pem = {(void*)ipem, strlen((char*)ipem)};
+ gnutls_datum_t new_der;
+ int ret;
+
+ ret = gnutls_pem_base64_decode2("CERTIFICATE", &pem, &new_der);
+ if (ret < 0) {
+ fail("error: %s\n", gnutls_strerror(ret));
+ }
+
+ if (der->size != new_der.size || memcmp(der->data, new_der.data, der->size) != 0) {
+ fail("error in %d: %s\n", __LINE__, "cert don't match");
+ exit(1);
+ }
+ gnutls_free(new_der.data);
+ return;
+}
+
+static unsigned set_cert(gnutls_certificate_credentials_t xcred, const gnutls_datum_t *key, const gnutls_datum_t *cert)
+{
+ const char *certfile;
+ FILE *fp;
+ int ret;
+
+ certfile = get_tmpname(NULL);
+
+ fp = fopen(certfile, "w");
+ if (fp == NULL)
+ fail("error in fopen\n");
+ assert(fwrite(cert->data, 1, cert->size, fp)>0);
+ assert(fwrite(key->data, 1, key->size, fp)>0);
+ fclose(fp);
+
+ ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, certfile,
+ GNUTLS_X509_FMT_PEM, NULL, 0);
+ if (ret < 0)
+ fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret));
+
+ /* return index */
+ return ret;
+}
+
+static void verify_written_cert(gnutls_certificate_credentials_t xcred, unsigned idx, const gnutls_datum_t *cert, unsigned ncerts)
+{
+ int ret;
+ gnutls_datum_t tcert = {NULL, 0};
+
+ /* verify whether the stored certificate match the ones we have */
+ ret = gnutls_certificate_get_crt_raw(xcred, idx, 0, &tcert);
+ if (ret < 0) {
+ fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret));
+ exit(1);
+ }
+
+ compare(&tcert, cert->data);
+
+ if (ncerts > 1) {
+ ret = gnutls_certificate_get_crt_raw(xcred, idx, 1, &tcert);
+ if (ret < 0) {
+ fail("error in %d: %s\n", __LINE__, gnutls_strerror(ret));
+ exit(1);
+ }
+
+ /* skip headers of first cert */
+ compare(&tcert, cert->data+2);
+ }
+}
+
+void doit(void)
+{
+ int ret;
+ gnutls_certificate_credentials_t xcred, clicred;
+ const char *keyfile = "./certs/ecc256.pem";
+ const char *certfile = "does-not-exist.pem";
+ unsigned idx, i;
+
+ global_init();
+ assert(gnutls_certificate_allocate_credentials(&xcred) >= 0);
+ gnutls_global_set_time_function(mytime);
+ track_temp_files();
+
+ /* this will fail */
+ ret = gnutls_certificate_set_x509_key_file2(xcred, certfile, keyfile,
+ GNUTLS_X509_FMT_PEM, NULL, 0);
+ if (ret != GNUTLS_E_FILE_ERROR)
+ fail("set_x509_key_file failed: %s\n", gnutls_strerror(ret));
+
+ gnutls_certificate_free_credentials(xcred);
+
+ assert(gnutls_certificate_allocate_credentials(&xcred) >= 0);
+ assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
+
+ ret = gnutls_certificate_set_x509_trust_mem(clicred, &subca3_cert, GNUTLS_X509_FMT_PEM);
+ if (ret < 0)
+ fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret));
+
+ success("Testing store of certificates\n");
+
+ idx = set_cert(xcred, &server_ca3_key, &server_ca3_localhost6_cert_chain);
+ verify_written_cert(xcred, idx, &server_ca3_localhost6_cert_chain, 2);
+ assert(idx == 0);
+
+ success("Tested store of %d\n", idx);
+
+ idx = set_cert(xcred, &server_ca3_key, &server_ca3_localhost_cert);
+ assert(idx == 0);
+
+ success("Tested store of %d\n", idx);
+
+ test_cli_serv(xcred, clicred, "NORMAL", "localhost", NULL, NULL, NULL); /* the DNS name of the first cert */
+
+ idx = set_cert(xcred, &server_key, &server_cert);
+ assert(idx == 0);
+
+ success("Tested store of %d\n", idx);
+
+ for (i=0;i<16;i++) {
+ idx = set_cert(xcred, &server_ecc_key, &server_ecc_cert);
+ assert(idx == 0);
+ success("Tested store of %d\n", idx);
+ }
+
+ gnutls_certificate_free_credentials(xcred);
+ gnutls_certificate_free_credentials(clicred);
+ gnutls_global_deinit();
+ delete_temp_files();
+}
diff --git a/tests/set_x509_key_file_ocsp_multi.c b/tests/set_x509_key_file_ocsp_multi.c
index 2f0e903bad..b2847055e0 100644
--- a/tests/set_x509_key_file_ocsp_multi.c
+++ b/tests/set_x509_key_file_ocsp_multi.c
@@ -115,6 +115,8 @@ void doit(void)
assert(gnutls_certificate_allocate_credentials(&xcred) >= 0);
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
+ gnutls_certificate_set_flags(xcred, GNUTLS_CERTIFICATE_API_V2);
+
certfile1 = get_tmpname(certname1);
/* set cert with localhost name */
diff --git a/tests/set_x509_key_file_ocsp_multi2.c b/tests/set_x509_key_file_ocsp_multi2.c
index d9b7c637bb..10c1b81a6f 100644
--- a/tests/set_x509_key_file_ocsp_multi2.c
+++ b/tests/set_x509_key_file_ocsp_multi2.c
@@ -126,6 +126,8 @@ void doit(void)
assert(gnutls_certificate_allocate_credentials(&xcred) >= 0);
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
+ gnutls_certificate_set_flags(xcred, GNUTLS_CERTIFICATE_API_V2);
+
certfile1 = get_tmpname(certname1);
/* set cert with localhost name */
diff --git a/tests/set_x509_key_utf8.c b/tests/set_x509_key_utf8.c
index 496bd57c92..838ec84028 100644
--- a/tests/set_x509_key_utf8.c
+++ b/tests/set_x509_key_utf8.c
@@ -160,6 +160,8 @@ void doit(void)
assert(gnutls_certificate_allocate_credentials(&clicred) >= 0);
assert(gnutls_certificate_allocate_credentials(&x509_cred)>=0);
+ gnutls_certificate_set_flags(x509_cred, GNUTLS_CERTIFICATE_API_V2);
+
ret = gnutls_certificate_set_x509_trust_mem(clicred, &ca3_cert, GNUTLS_X509_FMT_PEM);
if (ret < 0)
fail("set_x509_trust_file failed: %s\n", gnutls_strerror(ret));