summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikos Mavrogiannopoulos <nmav@redhat.com>2018-03-05 15:42:14 +0100
committerNikos Mavrogiannopoulos <nmav@gnutls.org>2018-03-05 14:52:18 +0000
commit77639ed40823382601594fbae6c566c8766e0472 (patch)
tree289275ce9aa8df6cf5a8417571d9e6e7a5f9c5a6
parent7c8a527766e270c3d603f633fbd52ee02870ae60 (diff)
downloadgnutls-77639ed40823382601594fbae6c566c8766e0472.tar.gz
tests: added unit tests of gnutls_x509_crt_export
Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
-rw-r--r--tests/crt_apis.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/tests/crt_apis.c b/tests/crt_apis.c
index 9fc1a53be6..cf0c7fd800 100644
--- a/tests/crt_apis.c
+++ b/tests/crt_apis.c
@@ -78,6 +78,7 @@ void doit(void)
gnutls_x509_crt_t crt2;
const char *err = NULL;
unsigned char buf[64];
+ unsigned char large_buf[5*1024];
unsigned int status;
gnutls_datum_t out;
size_t s = 0;
@@ -331,6 +332,29 @@ void doit(void)
assert(memcmp(out.data, saved_crt.data, out.size)==0);
#endif
+ /* test behavior of gnutls_x509_crt_export on varios corner cases */
+ s = 0;
+ assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, NULL, &s) == GNUTLS_E_SHORT_MEMORY_BUFFER);
+ assert(s == out.size+1);
+ s = sizeof(buf);
+ assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, buf, &s) == GNUTLS_E_SHORT_MEMORY_BUFFER);
+ assert(s == out.size+1);
+
+ /* check whether the PEM output matches gnutls_x509_crt_export2 */
+ s = sizeof(large_buf);
+ assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_PEM, large_buf, &s) == 0);
+ assert(s == out.size);
+ assert(memcmp(large_buf, out.data, out.size) == 0);
+ gnutls_free(out.data);
+
+ /* check whether the der out length differs */
+ s = sizeof(large_buf);
+ assert(gnutls_x509_crt_export(crt, GNUTLS_X509_FMT_DER, large_buf, &s) == 0);
+ assert(gnutls_x509_crt_export2(crt, GNUTLS_X509_FMT_DER, &out) >= 0);
+
+ assert(s == out.size);
+ assert(memcmp(large_buf, out.data, out.size) == 0);
+
gnutls_free(out.data);
gnutls_x509_crt_deinit(crt);