From 88f6eaea9e90ef847d499ff6f55a8ebfd70ec20d Mon Sep 17 00:00:00 2001 From: Marcus Brinkmann Date: Sun, 27 Apr 2003 18:25:07 +0000 Subject: [PATCH] 2003-04-27 Marcus Brinkmann * gpg/t-import.c (check_result): Really use FPR. * gpgsm/t-import.c (check_result): Rewritten. --- tests/ChangeLog | 5 + tests/gpg/t-import.c | 2 +- tests/gpgsm/t-import.c | 202 +++++++++++++++++++++++++++++------------ 3 files changed, 148 insertions(+), 61 deletions(-) diff --git a/tests/ChangeLog b/tests/ChangeLog index 6a60abb8..357c12ff 100644 --- a/tests/ChangeLog +++ b/tests/ChangeLog @@ -1,3 +1,8 @@ +2003-04-27 Marcus Brinkmann + + * gpg/t-import.c (check_result): Really use FPR. + * gpgsm/t-import.c (check_result): Rewritten. + 2003-04-25 Marcus Brinkmann * gpg/t-import.c: Rewritten. diff --git a/tests/gpg/t-import.c b/tests/gpg/t-import.c index 13d1f39c..57bfcd15 100644 --- a/tests/gpg/t-import.c +++ b/tests/gpg/t-import.c @@ -151,7 +151,7 @@ check_result (GpgmeImportResult result, char *fpr, int secret) fprintf (stderr, "Unexpected number of status reports\n"); exit (1); } - if (strcmp ("ADAB7FCC1F4DE2616ECFA402AF82244F9CD9FD55", result->imports->fpr)) + if (strcmp (fpr, result->imports->fpr)) { fprintf (stderr, "Unexpected fingerprint %s\n", result->imports->fpr); diff --git a/tests/gpgsm/t-import.c b/tests/gpgsm/t-import.c index 974cdd93..125e87fd 100644 --- a/tests/gpgsm/t-import.c +++ b/tests/gpgsm/t-import.c @@ -1,40 +1,44 @@ /* t-import.c - regression test - * Copyright (C) 2000 Werner Koch - * Copyright (C) 2001 g10 Code GmbH - * - * This file is part of GPGME. - * - * GPGME 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 2 of the License, or - * (at your option) any later version. - * - * GPGME 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 this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA - */ + Copyright (C) 2000 Werner Koch (dd9jn) + Copyright (C) 2001, 2003 g10 Code GmbH + + This file is part of GPGME. + + GPGME 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 2 of the License, or + (at your option) any later version. + + GPGME 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 GPGME; if not, write to the Free Software Foundation, + Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -#include #include +#include #include -#include #include #include -#define fail_if_err(a) do { if(a) { int my_errno = errno; \ - fprintf (stderr, "%s:%d: GpgmeError %s\n", \ - __FILE__, __LINE__, gpgme_strerror(a)); \ - if ((a) == GPGME_File_Error) \ - fprintf (stderr, "\terrno=`%s'\n", strerror (my_errno)); \ - exit (1); } \ - } while(0) +#define fail_if_err(err) \ + do \ + { \ + if (err) \ + { \ + fprintf (stderr, "%s:%d: GpgmeError %s\n", \ + __FILE__, __LINE__, gpgme_strerror (err)); \ + exit (1); \ + } \ + } \ + while (0) + + static char * make_filename (const char *fname) @@ -44,7 +48,7 @@ make_filename (const char *fname) if (!srcdir) srcdir = "."; - buf = malloc (strlen(srcdir) + strlen(fname) + 2 ); + buf = malloc (strlen(srcdir) + strlen(fname) + 2); if (!buf) { fprintf (stderr, "%s:%d: could not allocate string: %s\n", @@ -57,16 +61,93 @@ make_filename (const char *fname) return buf; } -static void -print_op_info (GpgmeCtx c) -{ - char *s = gpgme_get_op_info (c, 0); - if (!s) - puts (""); - else { - puts (s); - free (s); +void +check_result (GpgmeImportResult result, char *fpr, int total) +{ + if (result->considered != total) + { + fprintf (stderr, "Unexpected number of considered keys %i\n", + result->considered); + exit (1); + } + if (result->no_user_id != 0) + { + fprintf (stderr, "Unexpected number of user ids %i\n", + result->no_user_id); + exit (1); + } + if (result->imported != 0 && result->imported != 1) + { + fprintf (stderr, "Unexpected number of imported keys %i\n", + result->imported); + exit (1); + } + if (result->imported_rsa != 0) + { + fprintf (stderr, "Unexpected number of imported RSA keys %i\n", + result->imported_rsa); + exit (1); + } + if ((result->imported == 0 && result->unchanged != total) + || (result->imported == 1 && result->unchanged != total - 1)) + { + fprintf (stderr, "Unexpected number of unchanged keys %i\n", + result->unchanged); + exit (1); + } + if (result->new_user_ids != 0) + { + fprintf (stderr, "Unexpected number of new user IDs %i\n", + result->new_user_ids); + exit (1); + } + if (result->new_sub_keys != 0) + { + fprintf (stderr, "Unexpected number of new sub keys %i\n", + result->new_sub_keys); + exit (1); + } + if (result->new_signatures != 0) + { + fprintf (stderr, "Unexpected number of new signatures %i\n", + result->new_signatures); + exit (1); + } + if (result->new_revocations != 0) + { + fprintf (stderr, "Unexpected number of new revocations %i\n", + result->new_revocations); + exit (1); + } + if (result->secret_read != 0) + { + fprintf (stderr, "Unexpected number of secret keys read %i\n", + result->secret_read); + exit (1); + } + if (result->secret_imported != 0) + { + fprintf (stderr, "Unexpected number of secret keys imported %i\n", + result->secret_imported); + exit (1); + } + if (result->secret_unchanged != 0) + { + fprintf (stderr, "Unexpected number of secret keys unchanged %i\n", + result->secret_unchanged); + exit (1); + } + if (result->not_imported != 0) + { + fprintf (stderr, "Unexpected number of secret keys not imported %i\n", + result->not_imported); + exit (1); + } + if (result->imports) + { + fprintf (stderr, "Unexpected number of status reports\n"); + exit (1); } } @@ -77,35 +158,36 @@ main (int argc, char **argv) GpgmeCtx ctx; GpgmeError err; GpgmeData in; + GpgmeImportResult result; const char *cert_1 = make_filename ("cert_dfn_pca01.der"); const char *cert_2 = make_filename ("cert_dfn_pca15.der"); - do - { - err = gpgme_new (&ctx); - fail_if_err (err); - gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS); + err = gpgme_engine_check_version (GPGME_PROTOCOL_CMS); + fail_if_err (err); - err = gpgme_data_new_from_file (&in, cert_1, 1); - fail_if_err (err); + err = gpgme_new (&ctx); + fail_if_err (err); + + gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS); - err = gpgme_op_import (ctx, in); - print_op_info (ctx); - fail_if_err (err); + err = gpgme_data_new_from_file (&in, cert_1, 1); + fail_if_err (err); - gpgme_data_release (in); + err = gpgme_op_import (ctx, in); + fail_if_err (err); + result = gpgme_op_import_result (ctx); + check_result (result, "DFA56FB5FC41E3A8921F77AD1622EEFD9152A5AD", 1); + gpgme_data_release (in); - err = gpgme_data_new_from_file (&in, cert_2, 1); - fail_if_err (err); - - err = gpgme_op_import (ctx, in); - print_op_info (ctx); - fail_if_err (err); + err = gpgme_data_new_from_file (&in, cert_2, 1); + fail_if_err (err); - gpgme_data_release (in); - gpgme_release (ctx); - } - while (argc > 1 && !strcmp (argv[1], "--loop")); - + err = gpgme_op_import (ctx, in); + fail_if_err (err); + result = gpgme_op_import_result (ctx); + check_result (result, "2C8F3C356AB761CB3674835B792CDA52937F9285", 2); + gpgme_data_release (in); + + gpgme_release (ctx); return 0; }