diff options
Diffstat (limited to 'tests/key-import-export.c')
-rw-r--r-- | tests/key-import-export.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/key-import-export.c b/tests/key-import-export.c index 45434eeb2d..e28b21a4f2 100644 --- a/tests/key-import-export.c +++ b/tests/key-import-export.c @@ -285,6 +285,20 @@ int check_x509_privkey(void) static int check_privkey_import_export(void) { + static const struct rsa_privkey_opt_args + { + gnutls_datum_t *_u, *_e1, *_e2; + } + rsa_opt_args[] = + { + { NULL, NULL, NULL }, + { NULL, &_rsa_e1, &_rsa_e2 }, + { NULL, &_rsa_e1, NULL }, + { NULL, NULL, &_rsa_e2 }, + { &_rsa_u, NULL, NULL }, + { &_rsa_u, &_rsa_e1, NULL }, + { &_rsa_u, NULL, &_rsa_e2 }, + }; gnutls_privkey_t key; gnutls_datum_t p, q, g, y, x; gnutls_datum_t m, e, u, e1, e2, d; @@ -293,6 +307,7 @@ int check_privkey_import_export(void) gnutls_digest_algorithm_t digest; gnutls_gost_paramset_t paramset; #endif + unsigned i; int ret; global_init(); @@ -337,10 +352,26 @@ int check_privkey_import_export(void) gnutls_privkey_deinit(key); /* RSA */ + + /* Optional arguments */ + for (i = 0; i < sizeof(rsa_opt_args) / sizeof(rsa_opt_args[0]); i++) + { + ret = gnutls_privkey_init(&key); + if (ret < 0) + fail("error\n"); + + ret = gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, &_rsa_d, &_rsa_p, &_rsa_q, rsa_opt_args[i]._u, rsa_opt_args[i]._e1, rsa_opt_args[i]._e2); + if (ret < 0) + fail("error\n"); + + gnutls_privkey_deinit(key); + } + ret = gnutls_privkey_init(&key); if (ret < 0) fail("error\n"); + /* Import/export */ ret = gnutls_privkey_import_rsa_raw(key, &_rsa_m, &_rsa_e, &_rsa_d, &_rsa_p, &_rsa_q, &_rsa_u, &_rsa_e1, &_rsa_e2); if (ret < 0) fail("error\n"); |