tests: Mark lots of unused vars and fix const mismatches.
[gpgme.git] / tests / gpgsm / t-import.c
1 /* t-import.c - Regression test.
2    Copyright (C) 2000 Werner Koch (dd9jn)
3    Copyright (C) 2001, 2003, 2004 g10 Code GmbH
4
5    This file is part of GPGME.
6
7    GPGME is free software; you can redistribute it and/or modify it
8    under the terms of the GNU Lesser General Public License as
9    published by the Free Software Foundation; either version 2.1 of
10    the License, or (at your option) any later version.
11
12    GPGME is distributed in the hope that it will be useful, but
13    WITHOUT ANY WARRANTY; without even the implied warranty of
14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15    Lesser General Public License for more details.
16
17    You should have received a copy of the GNU Lesser General Public
18    License along with this program; if not, write to the Free Software
19    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
20    02111-1307, USA.  */
21
22 /* We need to include config.h so that we know whether we are building
23    with large file system (LFS) support. */
24 #ifdef HAVE_CONFIG_H
25 #include <config.h>
26 #endif
27
28 #include <stdlib.h>
29 #include <stdio.h>
30 #include <string.h>
31 #include <errno.h>
32
33 #include <gpgme.h>
34
35 #include "t-support.h"
36
37
38 void
39 check_result (gpgme_import_result_t result, const char *fpr, int total,
40               int total_stat)
41 {
42   (void)fpr;
43
44   if (result->considered != total)
45     {
46       fprintf (stderr, "Unexpected number of considered keys %i\n",
47                result->considered);
48       exit (1);
49     }
50   if (result->no_user_id != 0)
51     {
52       fprintf (stderr, "Unexpected number of user ids %i\n",
53                result->no_user_id);
54       exit (1);
55     }
56   if (result->imported != 0 && result->imported != 1)
57     {
58       fprintf (stderr, "Unexpected number of imported keys %i\n",
59                result->imported);
60       exit (1);
61     }
62   if (result->imported_rsa != 0)
63     {
64       fprintf (stderr, "Unexpected number of imported RSA keys %i\n",
65                result->imported_rsa);
66       exit (1);
67     }
68   if ((result->imported == 0 && result->unchanged != total)
69       || (result->imported == 1 && result->unchanged != total - 1))
70     {
71       fprintf (stderr, "Unexpected number of unchanged keys %i\n",
72                result->unchanged);
73       exit (1);
74     }
75   if (result->new_user_ids != 0)
76     {
77       fprintf (stderr, "Unexpected number of new user IDs %i\n",
78                result->new_user_ids);
79       exit (1);
80     }
81   if (result->new_sub_keys != 0)
82     {
83       fprintf (stderr, "Unexpected number of new sub keys %i\n",
84                result->new_sub_keys);
85       exit (1);
86     }
87   if (result->new_signatures != 0)
88     {
89       fprintf (stderr, "Unexpected number of new signatures %i\n",
90                result->new_signatures);
91       exit (1);
92     }
93   if (result->new_revocations != 0)
94     {
95       fprintf (stderr, "Unexpected number of new revocations %i\n",
96                result->new_revocations);
97       exit (1);
98     }
99   if (result->secret_read != 0)
100     {
101       fprintf (stderr, "Unexpected number of secret keys read %i\n",
102                result->secret_read);
103       exit (1);
104     }
105   if (result->secret_imported != 0)
106     {
107       fprintf (stderr, "Unexpected number of secret keys imported %i\n",
108                result->secret_imported);
109       exit (1);
110     }
111   if (result->secret_unchanged != 0)
112     {
113       fprintf (stderr, "Unexpected number of secret keys unchanged %i\n",
114                result->secret_unchanged);
115       exit (1);
116     }
117   if (result->not_imported != 0)
118     {
119       fprintf (stderr, "Unexpected number of secret keys not imported %i\n",
120                result->not_imported);
121       exit (1);
122     }
123
124   {
125     int n;
126     gpgme_import_status_t r;
127
128     for (n=0, r=result->imports; r; r=r->next)
129       n++;
130
131     if (n != total_stat)
132     {
133       fprintf (stderr, "Unexpected number of status reports\n");
134       exit (1);
135     }
136   }
137 }
138
139
140 int
141 main (void)
142 {
143   gpgme_ctx_t ctx;
144   gpgme_error_t err;
145   gpgme_data_t in;
146   gpgme_import_result_t result;
147   char *cert_1 = make_filename ("cert_dfn_pca01.der");
148   char *cert_2 = make_filename ("cert_dfn_pca15.der");
149
150   init_gpgme (GPGME_PROTOCOL_CMS);
151
152   err = gpgme_new (&ctx);
153   fail_if_err (err);
154
155   gpgme_set_protocol (ctx, GPGME_PROTOCOL_CMS);
156
157   err = gpgme_data_new_from_file (&in, cert_1, 1);
158   free (cert_1);
159   fail_if_err (err);
160
161   err = gpgme_op_import (ctx, in);
162   fail_if_err (err);
163   result = gpgme_op_import_result (ctx);
164   check_result (result, "DFA56FB5FC41E3A8921F77AD1622EEFD9152A5AD", 1, 1);
165   gpgme_data_release (in);
166
167   err = gpgme_data_new_from_file (&in, cert_2, 1);
168   free (cert_2);
169   fail_if_err (err);
170
171   err = gpgme_op_import (ctx, in);
172   fail_if_err (err);
173   result = gpgme_op_import_result (ctx);
174   check_result (result, "2C8F3C356AB761CB3674835B792CDA52937F9285", 1, 2);
175   gpgme_data_release (in);
176
177   gpgme_release (ctx);
178   return 0;
179 }