Bug Summary

File:src/certtool-gaa.c
Location:line 1148, column 3
Description:Value stored to 'gaa_index' is never read

Annotated Source Code

1/* File generated by GAA 1.6.6
2 */
3#define GAA_NO_WIN32
4#line 1 "certtool.gaa"
5
6
7/* C declarations */
8
9#include <config.h>
10#ifdef _WIN32
11# include <io.h>
12#endif
13
14#include "certtool-common.h"
15
16#include <stdio.h>
17#include <string.h>
18#include <stdlib.h>
19
20#ifndef GAA_NO_WIN32
21#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(WINDOWS)
22#define GAA_WIN32
23#endif
24#endif
25
26static void* gaa_malloc( size_t size) {
27void* ret;
28 ret = malloc(size);
29 if (ret==NULL((void*)0)) {
30 fprintf(stderrstderr, "gaa: could not allocate memory");
31 exit(1);
32 }
33 return ret;
34}
35
36static void __gaa_helpsingle(char short_name, char *name,
37 char *arg_desc, char *opt_help)
38{
39 int col1, col3, col4, tabsize = 3, curr;
40 int i;
41
42 col1 = 5; /* Default values */
43 col3 = 30;
44 col4 = 70;
45
46 curr = 0;
47 for(i = 0; i < col1; i++)
48 {
49 printf(" ");
50 curr++;
51 }
52 if(short_name)
53 {
54 if(name && *name)
55 {
56 printf("-%c, ", short_name);
57 curr += 4;
58 }
59 else
60 {
61 printf("-%c ", short_name);
62 curr += 3;
63 }
64 }
65 if(name && *name)
66 {
67 printf("--%s ", name);
68 curr += 3 + strlen(name);
69 }
70 if(arg_desc && *arg_desc)
71 {
72 printf("%s ", arg_desc);
73 curr += 1 + strlen(arg_desc);
74 }
75 if(curr >= col3)
76 {
77 printf("\n");
78 curr = 0;
79 }
80 if(opt_help) /* let's print the option's help body */
81 {
82 const char *str = opt_help;
83 while(*str)
84 {
85 while(curr < col3)
86 {
87 printf(" ");
88 curr++;
89 }
90 switch(*str)
91 {
92 case '\n':
93 printf("\n");
94 curr = 0;
95 break;
96 case '\t':
97 do
98 {
99 printf(" ");
100 curr++;
101 }
102 while((curr - col3) % tabsize != 0 && curr < col4);
103 case ' ':
104 if(*str == ' ')
105 {
106 curr++;
107 printf(" ");
108 }
109 for(i = 1; str[i] && str[i] != ' ' && str[i] != '\n'
110 && str[i] != '\t'; i++);
111 if(curr + i - 1 >= col4)
112 curr = col4;
113 break;
114 default:
115 printf("%c", *str);
116 curr++;
117 }
118 if(curr >= col4)
119 {
120 printf("\n");
121 curr = 0;
122 }
123 str++;
124 }
125 }
126 printf("\n");
127}
128
129void gaa_help(void)
130{
131 printf("Certtool help\nUsage: certtool [options]\n");
132 __gaa_helpsingle('s', "generate-self-signed", "", "Generate a self-signed certificate.");
133 __gaa_helpsingle('c', "generate-certificate", "", "Generate a signed certificate.");
134 __gaa_helpsingle(0, "generate-proxy", "", "Generate a proxy certificate.");
135 __gaa_helpsingle(0, "generate-crl", "", "Generate a CRL.");
136 __gaa_helpsingle('u', "update-certificate", "", "Update a signed certificate.");
137 __gaa_helpsingle('p', "generate-privkey", "", "Generate a private key.");
138 __gaa_helpsingle('q', "generate-request", "", "Generate a PKCS #10 certificate request.");
139 __gaa_helpsingle('e', "verify-chain", "", "Verify a PEM encoded certificate chain. The last certificate in the chain must be a self signed one.");
140 __gaa_helpsingle(0, "verify", "", "Verify a PEM encoded certificate chain. CA certificates must be loaded with --load-ca-certificate.");
141 __gaa_helpsingle(0, "verify-crl", "", "Verify a CRL.");
142 __gaa_helpsingle(0, "generate-dh-params", "", "Generate PKCS #3 encoded Diffie-Hellman parameters.");
143 __gaa_helpsingle(0, "get-dh-params", "", "Get the included PKCS #3 encoded Diffie-Hellman parameters.");
144 __gaa_helpsingle(0, "dh-info", "", "Print information on Diffie-Hellman parameters.");
145 __gaa_helpsingle(0, "load-privkey", "FILE ", "Private key file to use.");
146 __gaa_helpsingle(0, "load-pubkey", "FILE ", "Public key file to use.");
147 __gaa_helpsingle(0, "load-request", "FILE ", "Certificate request file to use.");
148 __gaa_helpsingle(0, "load-certificate", "FILE ", "Certificate file to use.");
149 __gaa_helpsingle(0, "load-ca-privkey", "FILE ", "Certificate authority's private key file to use.");
150 __gaa_helpsingle(0, "load-ca-certificate", "FILE ", "Certificate authority's certificate file to use.");
151 __gaa_helpsingle(0, "password", "PASSWORD ", "Password to use.");
152 __gaa_helpsingle('i', "certificate-info", "", "Print information on a certificate.");
153 __gaa_helpsingle(0, "certificate-pubkey", "", "Print certificate public key.");
154 __gaa_helpsingle(0, "pgp-certificate-info", "", "Print information on a OpenPGP certificate.");
155 __gaa_helpsingle(0, "pgp-ring-info", "", "Print information on a keyring structure.");
156 __gaa_helpsingle('l', "crl-info", "", "Print information on a CRL.");
157 __gaa_helpsingle(0, "crq-info", "", "Print information on a Certificate Request.");
158 __gaa_helpsingle(0, "no-crq-extensions", "", "Do not use extensions in certificate requests.");
159 __gaa_helpsingle(0, "p12-info", "", "Print information on a PKCS #12 structure.");
160 __gaa_helpsingle(0, "p7-info", "", "Print information on a PKCS #7 structure.");
161 __gaa_helpsingle(0, "smime-to-p7", "", "Convert S/MIME to PKCS #7 structure.");
162 __gaa_helpsingle('k', "key-info", "", "Print information on a private key.");
163 __gaa_helpsingle(0, "pgp-key-info", "", "Print information on a OpenPGP private key.");
164 __gaa_helpsingle(0, "pubkey-info", "", "Print information on a public key.");
165 __gaa_helpsingle(0, "fix-key", "", "Regenerate the parameters in a private key.");
166 __gaa_helpsingle(0, "v1", "", "Generate an X.509 version 1 certificate (no extensions).");
167 __gaa_helpsingle(0, "to-p12", "", "Generate a PKCS #12 structure.");
168 __gaa_helpsingle(0, "to-p8", "", "Generate a PKCS #8 key structure.");
169 __gaa_helpsingle('8', "pkcs8", "", "Use PKCS #8 format for private keys.");
170 __gaa_helpsingle(0, "dsa", "", "Use DSA keys.");
171 __gaa_helpsingle(0, "rsa", "", "Use RSA keys.");
172 __gaa_helpsingle(0, "ecc", "", "Use ECC (ECDSA) keys.");
173 __gaa_helpsingle(0, "hash", "STR ", "Hash algorithm to use for signing (MD5,SHA1,RMD160,SHA256,SHA384,SHA512).");
174 __gaa_helpsingle(0, "export-ciphers", "", "Use weak encryption algorithms.");
175 __gaa_helpsingle(0, "inder", "", "Use DER format for input certificates and private keys.");
176 __gaa_helpsingle(0, "inraw", "", "Use RAW/DER format for input certificates and private keys.");
177 __gaa_helpsingle(0, "outder", "", "Use DER format for output certificates and private keys.");
178 __gaa_helpsingle(0, "outraw", "", "Use RAW/DER format for output certificates and private keys.");
179 __gaa_helpsingle(0, "bits", "BITS ", "specify the number of bits for key generation.");
180 __gaa_helpsingle(0, "sec-param", "PARAM ", "specify the security level [low|normal|high|ultra].");
181 __gaa_helpsingle(0, "disable-quick-random", "", "Use /dev/random for key generationg, thus increasing the quality of randomness used.");
182 __gaa_helpsingle(0, "outfile", "FILE ", "Output file.");
183 __gaa_helpsingle(0, "infile", "FILE ", "Input file.");
184 __gaa_helpsingle(0, "template", "FILE ", "Template file to use for non interactive operation.");
185 __gaa_helpsingle(0, "pkcs-cipher", "CIPHER ", "Cipher to use for pkcs operations (3des,3des-pkcs12,aes-128,aes-192,aes-256,rc2-40,arcfour).");
186 __gaa_helpsingle('d', "debug", "LEVEL ", "specify the debug level. Default is 1.");
187 __gaa_helpsingle('h', "help", "", "shows this help text");
188 __gaa_helpsingle('v', "version", "", "shows the program's version");
189
190#line 100 "gaa.skel"
191}
192/* Copy of C area */
193
194#line 104 "gaa.skel"
195/* GAA HEADER */
196#ifndef GAA_HEADER_POKY
197#define GAA_HEADER_POKY
198
199typedef struct _gaainfo gaainfo;
200
201struct _gaainfo
202{
203#line 148 "certtool.gaa"
204 int debug;
205#line 145 "certtool.gaa"
206 char *pkcs_cipher;
207#line 142 "certtool.gaa"
208 char *template;
209#line 139 "certtool.gaa"
210 char *infile;
211#line 136 "certtool.gaa"
212 char *outfile;
213#line 133 "certtool.gaa"
214 int quick_random;
215#line 130 "certtool.gaa"
216 char* sec_param;
217#line 127 "certtool.gaa"
218 int bits;
219#line 123 "certtool.gaa"
220 int outcert_format;
221#line 119 "certtool.gaa"
222 int incert_format;
223#line 116 "certtool.gaa"
224 int export;
225#line 113 "certtool.gaa"
226 char *hash;
227#line 110 "certtool.gaa"
228 int ecc;
229#line 105 "certtool.gaa"
230 int dsa;
231#line 102 "certtool.gaa"
232 int pkcs8;
233#line 95 "certtool.gaa"
234 int v1_cert;
235#line 92 "certtool.gaa"
236 int fix_key;
237#line 75 "certtool.gaa"
238 int crq_extensions;
239#line 60 "certtool.gaa"
240 char *pass;
241#line 57 "certtool.gaa"
242 char *ca;
243#line 54 "certtool.gaa"
244 char *ca_privkey;
245#line 51 "certtool.gaa"
246 char *cert;
247#line 48 "certtool.gaa"
248 char *request;
249#line 45 "certtool.gaa"
250 char *pubkey;
251#line 42 "certtool.gaa"
252 char *privkey;
253#line 17 "certtool.gaa"
254 int action;
255#line 16 "certtool.gaa"
256 int privkey_op;
257
258#line 114 "gaa.skel"
259};
260
261#ifdef __cplusplus
262extern "C"
263{
264#endif
265
266 int gaa(int argc, char *argv[], gaainfo *gaaval);
267
268 void gaa_help(void);
269
270 int gaa_file(const char *name, gaainfo *gaaval);
271
272#ifdef __cplusplus
273}
274#endif
275
276
277#endif
278
279#line 135 "gaa.skel"
280
281/* C declarations */
282
283#define GAAERROR(x){ gaa_error = 1; return x; } \
284{ \
285gaa_error = 1; \
286return x; \
287}
288
289static char *gaa_current_option;
290static int gaa_error = 0;
291
292/* Generated by gaa */
293
294#include <string.h>
295#include <stdlib.h>
296
297
298#define GAA_OK-1 -1
299
300#define GAA_ERROR_NOMATCH0 0
301#define GAA_ERROR_NOTENOUGH_ARGS1 1
302#define GAA_ERROR_INVALID_ARG2 2
303#define GAA_ERROR_UNKNOWN3 3
304
305#define GAA_NOT_AN_OPTION0 0
306#define GAA_WORD_OPTION1 1
307#define GAA_LETTER_OPTION2 2
308#define GAA_MULTIPLE_OPTION3 3
309
310#define GAA_REST0 0
311#define GAA_NB_OPTION57 57
312#define GAAOPTID_version1 1
313#define GAAOPTID_help2 2
314#define GAAOPTID_debug3 3
315#define GAAOPTID_pkcs_cipher4 4
316#define GAAOPTID_template5 5
317#define GAAOPTID_infile6 6
318#define GAAOPTID_outfile7 7
319#define GAAOPTID_disable_quick_random8 8
320#define GAAOPTID_sec_param9 9
321#define GAAOPTID_bits10 10
322#define GAAOPTID_outraw11 11
323#define GAAOPTID_outder12 12
324#define GAAOPTID_inraw13 13
325#define GAAOPTID_inder14 14
326#define GAAOPTID_export_ciphers15 15
327#define GAAOPTID_hash16 16
328#define GAAOPTID_ecc17 17
329#define GAAOPTID_rsa18 18
330#define GAAOPTID_dsa19 19
331#define GAAOPTID_pkcs820 20
332#define GAAOPTID_to_p821 21
333#define GAAOPTID_to_p1222 22
334#define GAAOPTID_v123 23
335#define GAAOPTID_fix_key24 24
336#define GAAOPTID_pubkey_info25 25
337#define GAAOPTID_pgp_key_info26 26
338#define GAAOPTID_key_info27 27
339#define GAAOPTID_smime_to_p728 28
340#define GAAOPTID_p7_info29 29
341#define GAAOPTID_p12_info30 30
342#define GAAOPTID_no_crq_extensions31 31
343#define GAAOPTID_crq_info32 32
344#define GAAOPTID_crl_info33 33
345#define GAAOPTID_pgp_ring_info34 34
346#define GAAOPTID_pgp_certificate_info35 35
347#define GAAOPTID_certificate_pubkey36 36
348#define GAAOPTID_certificate_info37 37
349#define GAAOPTID_password38 38
350#define GAAOPTID_load_ca_certificate39 39
351#define GAAOPTID_load_ca_privkey40 40
352#define GAAOPTID_load_certificate41 41
353#define GAAOPTID_load_request42 42
354#define GAAOPTID_load_pubkey43 43
355#define GAAOPTID_load_privkey44 44
356#define GAAOPTID_dh_info45 45
357#define GAAOPTID_get_dh_params46 46
358#define GAAOPTID_generate_dh_params47 47
359#define GAAOPTID_verify_crl48 48
360#define GAAOPTID_verify49 49
361#define GAAOPTID_verify_chain50 50
362#define GAAOPTID_generate_request51 51
363#define GAAOPTID_generate_privkey52 52
364#define GAAOPTID_update_certificate53 53
365#define GAAOPTID_generate_crl54 54
366#define GAAOPTID_generate_proxy55 55
367#define GAAOPTID_generate_certificate56 56
368#define GAAOPTID_generate_self_signed57 57
369
370#line 168 "gaa.skel"
371
372#define GAA_CHECK1STR(a,b)if(a[0] == str[0]) { gaa_current_option = a; return b; } \
373if(a[0] == str[0]) \
374{ \
375 gaa_current_option = a; \
376 return b; \
377}
378
379#define GAA_CHECKSTR(a,b)if(strcmp(a,str) == 0) { gaa_current_option = a; return b; } \
380if(strcmp(a,str) == 0) \
381{ \
382 gaa_current_option = a; \
383 return b; \
384}
385
386#define GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
\
387if(!OK) \
388{ \
389while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
390 gaa_index++; \
391if(gaa_last_non_option == gaa_index) \
392 return GAA_ERROR_NOTENOUGH_ARGS1; \
393}
394
395#define GAA_TESTMOREOPTIONALARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) OK = 1; }
\
396if(!OK) \
397{ \
398while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
399 gaa_index++; \
400if(gaa_last_non_option == gaa_index) \
401 OK = 1; \
402}
403
404#define GAA_FILL_2ARGS(target, func)target = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index] = 1
; if(gaa_error == 1) { gaa_error = 0; return 2; }
\
405target = func(GAAargv[gaa_index]); \
406gaa_arg_used[gaa_index] = 1; \
407if(gaa_error == 1) \
408{ \
409 gaa_error = 0; \
410 return GAA_ERROR_INVALID_ARG2; \
411}
412
413
414
415#define GAA_FILL(target, func, num)if(!OK) { target = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index
] = 1; if(gaa_error == 1) { gaa_error = 0; return 2; } num = 1
; } else { num = 0; }
\
416if(!OK) \
417{ \
418target = func(GAAargv[gaa_index]); \
419gaa_arg_used[gaa_index] = 1; \
420if(gaa_error == 1) \
421{ \
422 gaa_error = 0; \
423 return GAA_ERROR_INVALID_ARG2; \
424} \
425num = 1; \
426} \
427else \
428{ \
429num = 0; \
430}
431
432#define GAA_LIST_FILL(target, func, type ,num)if(!OK) { num = 0; target = ((void*)0); if ( gaa_last_non_option
- gaa_index > 0) target = gaa_malloc((gaa_last_non_option
- gaa_index) * sizeof(type));for(; gaa_index < gaa_last_non_option
; gaa_index++) { if(gaa_arg_used[gaa_index] == 0) { target[num
] = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index] = 1; if
(gaa_error == 1) { gaa_error = 0; return 2; }; num++; } } if(
num == 0) return 1; }
\
433if(!OK) \
434{ \
435num = 0; \
436target = NULL((void*)0); \
437if ( gaa_last_non_option - gaa_index > 0) \
438 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
439for(; gaa_index < gaa_last_non_option; gaa_index++) \
440{ \
441 if(gaa_arg_used[gaa_index] == 0) \
442 { \
443 GAA_FILL_2ARGS(target[num], func)target[num] = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index
] = 1; if(gaa_error == 1) { gaa_error = 0; return 2; }
; \
444 num++; \
445 } \
446} \
447if(num == 0) \
448 return GAA_ERROR_NOTENOUGH_ARGS1; \
449}
450
451#define GAA_OPTIONALLIST_FILL(target, func, type ,num)if(!OK) { num = 0; target = ((void*)0); if ( gaa_last_non_option
- gaa_index > 0) target = gaa_malloc((gaa_last_non_option
- gaa_index) * sizeof(type));for(; gaa_index < gaa_last_non_option
; gaa_index++) { if(gaa_arg_used[gaa_index] == 0) { target[num
] = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index] = 1; if
(gaa_error == 1) { gaa_error = 0; return 2; }; num++; } } }
\
452if(!OK) \
453{ \
454num = 0; \
455target = NULL((void*)0); \
456if ( gaa_last_non_option - gaa_index > 0) \
457 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
458for(; gaa_index < gaa_last_non_option; gaa_index++) \
459{ \
460 if(gaa_arg_used[gaa_index] == 0) \
461 { \
462 GAA_FILL_2ARGS(target[num], func)target[num] = func(GAAargv[gaa_index]); gaa_arg_used[gaa_index
] = 1; if(gaa_error == 1) { gaa_error = 0; return 2; }
; \
463 num++; \
464 } \
465} \
466}
467
468#define GAA_OBLIGAT(str)k = 0; for(i = 0; i < strlen(str); i++) { j = gaa_get_option_num
(str + i, 2); if(j == 0) { printf("Error: invalid 'obligat' set\n"
); exit(-1); } if(opt_list[j] == 1) k = 1; } if(k == 0) { if(
strlen(str) == 1) printf("You must give the -%s option\n", str
); else printf("You must give at least one option of '%s'\n",
str); return 0; }
\
469k = 0; \
470for(i = 0; i < strlen(str); i++) \
471{ \
472 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION2); \
473 if(j == GAA_ERROR_NOMATCH0) \
474 { \
475 printf("Error: invalid 'obligat' set\n"); \
476 exit(-1); \
477 } \
478 if(opt_list[j] == 1) \
479 k = 1; \
480} \
481if(k == 0) \
482{ \
483 if(strlen(str) == 1) \
484 printf("You must give the -%s option\n", str); \
485 else \
486 printf("You must give at least one option of '%s'\n", str); \
487 return 0; \
488}
489
490#define GAA_INCOMP(str)k = 0; for(i = 0; i < strlen(str); i++) { j = gaa_get_option_num
(str + i, 2); if(j == 0) { printf("Error: invalid 'obligat' set\n"
); exit(-1); } if(opt_list[j] == 1) k++; } if(k > 1) { printf
("The options '%s' are incompatible\n", str); return 0; }
\
491k = 0; \
492for(i = 0; i < strlen(str); i++) \
493{ \
494 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION2); \
495 if(j == GAA_ERROR_NOMATCH0) \
496 { \
497 printf("Error: invalid 'obligat' set\n"); \
498 exit(-1); \
499 } \
500 if(opt_list[j] == 1) \
501 k++; \
502} \
503if(k > 1) \
504{ \
505 printf("The options '%s' are incompatible\n", str); \
506 return 0; \
507}
508
509
510static char **GAAargv;
511static int GAAargc;
512static char *gaa_arg_used;
513static int gaa_processing_file = 0;
514static int inited = 0;
515
516static int gaa_getint(char *arg)
517{
518 int tmp;
519 char a;
520 if(sscanf(arg, "%d%c", &tmp, &a) < 1)
521 {
522 printf("Option %s: '%s' isn't an integer\n", gaa_current_option, arg);
523 GAAERROR(-1){ gaa_error = 1; return -1; };
524 }
525 return tmp;
526}
527
528static char gaa_getchar(char *arg)
529{
530 if(strlen(arg) != 1)
531 {
532 printf("Option %s: '%s' isn't an character\n", gaa_current_option, arg);
533 GAAERROR(-1){ gaa_error = 1; return -1; };
534 }
535 return arg[0];
536}
537
538static char* gaa_getstr(char *arg)
539{
540 return arg;
541}
542static float gaa_getfloat(char *arg)
543{
544 float tmp;
545 char a;
546 if(sscanf(arg, "%f%c", &tmp, &a) < 1)
547 {
548 printf("Option %s: '%s' isn't a float number\n", gaa_current_option, arg);
549 GAAERROR(-1){ gaa_error = 1; return -1; };
550 }
551 return tmp;
552}
553/* option structures */
554
555struct GAAOPTION_debug
556{
557 int arg1;
558 int size1;
559};
560
561struct GAAOPTION_pkcs_cipher
562{
563 char* arg1;
564 int size1;
565};
566
567struct GAAOPTION_template
568{
569 char* arg1;
570 int size1;
571};
572
573struct GAAOPTION_infile
574{
575 char* arg1;
576 int size1;
577};
578
579struct GAAOPTION_outfile
580{
581 char* arg1;
582 int size1;
583};
584
585struct GAAOPTION_sec_param
586{
587 char* arg1;
588 int size1;
589};
590
591struct GAAOPTION_bits
592{
593 int arg1;
594 int size1;
595};
596
597struct GAAOPTION_hash
598{
599 char* arg1;
600 int size1;
601};
602
603struct GAAOPTION_password
604{
605 char* arg1;
606 int size1;
607};
608
609struct GAAOPTION_load_ca_certificate
610{
611 char* arg1;
612 int size1;
613};
614
615struct GAAOPTION_load_ca_privkey
616{
617 char* arg1;
618 int size1;
619};
620
621struct GAAOPTION_load_certificate
622{
623 char* arg1;
624 int size1;
625};
626
627struct GAAOPTION_load_request
628{
629 char* arg1;
630 int size1;
631};
632
633struct GAAOPTION_load_pubkey
634{
635 char* arg1;
636 int size1;
637};
638
639struct GAAOPTION_load_privkey
640{
641 char* arg1;
642 int size1;
643};
644
645#line 349 "gaa.skel"
646static int gaa_is_an_argument(char *str)
647{
648#ifdef GAA_WIN32
649 if(str[0] == '/' && str[1] != 0)
650 return GAA_MULTIPLE_OPTION3;
651#endif
652 if(str[0] != '-')
653 return GAA_NOT_AN_OPTION0;
654 if(str[1] == 0)
655 return GAA_NOT_AN_OPTION0;
656 if(str[1] == '-')
657 {
658 if(str[2] != 0)
659 return GAA_WORD_OPTION1;
660 else
661 return GAA_NOT_AN_OPTION0;
662 }
663 if(str[2] == 0)
664 return GAA_LETTER_OPTION2;
665 else
666 return GAA_MULTIPLE_OPTION3;
667}
668
669static int gaa_get_option_num(char *str, int status)
670{
671 switch(status)
672 {
673 case GAA_LETTER_OPTION2:
674 GAA_CHECK1STR("d", GAAOPTID_debug)if("d"[0] == str[0]) { gaa_current_option = "d"; return 3; };
675 GAA_CHECK1STR("", GAAOPTID_pkcs_cipher)if(""[0] == str[0]) { gaa_current_option = ""; return 4; };
676 GAA_CHECK1STR("", GAAOPTID_template)if(""[0] == str[0]) { gaa_current_option = ""; return 5; };
677 GAA_CHECK1STR("", GAAOPTID_infile)if(""[0] == str[0]) { gaa_current_option = ""; return 6; };
678 GAA_CHECK1STR("", GAAOPTID_outfile)if(""[0] == str[0]) { gaa_current_option = ""; return 7; };
679 GAA_CHECK1STR("", GAAOPTID_sec_param)if(""[0] == str[0]) { gaa_current_option = ""; return 9; };
680 GAA_CHECK1STR("", GAAOPTID_bits)if(""[0] == str[0]) { gaa_current_option = ""; return 10; };
681 GAA_CHECK1STR("", GAAOPTID_hash)if(""[0] == str[0]) { gaa_current_option = ""; return 16; };
682 GAA_CHECK1STR("", GAAOPTID_password)if(""[0] == str[0]) { gaa_current_option = ""; return 38; };
683 GAA_CHECK1STR("", GAAOPTID_load_ca_certificate)if(""[0] == str[0]) { gaa_current_option = ""; return 39; };
684 GAA_CHECK1STR("", GAAOPTID_load_ca_privkey)if(""[0] == str[0]) { gaa_current_option = ""; return 40; };
685 GAA_CHECK1STR("", GAAOPTID_load_certificate)if(""[0] == str[0]) { gaa_current_option = ""; return 41; };
686 GAA_CHECK1STR("", GAAOPTID_load_request)if(""[0] == str[0]) { gaa_current_option = ""; return 42; };
687 GAA_CHECK1STR("", GAAOPTID_load_pubkey)if(""[0] == str[0]) { gaa_current_option = ""; return 43; };
688 GAA_CHECK1STR("", GAAOPTID_load_privkey)if(""[0] == str[0]) { gaa_current_option = ""; return 44; };
689 case GAA_MULTIPLE_OPTION3:
690#line 375 "gaa.skel"
691 GAA_CHECK1STR("v", GAAOPTID_version)if("v"[0] == str[0]) { gaa_current_option = "v"; return 1; };
692 GAA_CHECK1STR("h", GAAOPTID_help)if("h"[0] == str[0]) { gaa_current_option = "h"; return 2; };
693 GAA_CHECK1STR("", GAAOPTID_disable_quick_random)if(""[0] == str[0]) { gaa_current_option = ""; return 8; };
694 GAA_CHECK1STR("", GAAOPTID_outraw)if(""[0] == str[0]) { gaa_current_option = ""; return 11; };
695 GAA_CHECK1STR("", GAAOPTID_outder)if(""[0] == str[0]) { gaa_current_option = ""; return 12; };
696 GAA_CHECK1STR("", GAAOPTID_inraw)if(""[0] == str[0]) { gaa_current_option = ""; return 13; };
697 GAA_CHECK1STR("", GAAOPTID_inder)if(""[0] == str[0]) { gaa_current_option = ""; return 14; };
698 GAA_CHECK1STR("", GAAOPTID_export_ciphers)if(""[0] == str[0]) { gaa_current_option = ""; return 15; };
699 GAA_CHECK1STR("", GAAOPTID_ecc)if(""[0] == str[0]) { gaa_current_option = ""; return 17; };
700 GAA_CHECK1STR("", GAAOPTID_rsa)if(""[0] == str[0]) { gaa_current_option = ""; return 18; };
701 GAA_CHECK1STR("", GAAOPTID_dsa)if(""[0] == str[0]) { gaa_current_option = ""; return 19; };
702 GAA_CHECK1STR("8", GAAOPTID_pkcs8)if("8"[0] == str[0]) { gaa_current_option = "8"; return 20; };
703 GAA_CHECK1STR("", GAAOPTID_to_p8)if(""[0] == str[0]) { gaa_current_option = ""; return 21; };
704 GAA_CHECK1STR("", GAAOPTID_to_p12)if(""[0] == str[0]) { gaa_current_option = ""; return 22; };
705 GAA_CHECK1STR("", GAAOPTID_v1)if(""[0] == str[0]) { gaa_current_option = ""; return 23; };
706 GAA_CHECK1STR("", GAAOPTID_fix_key)if(""[0] == str[0]) { gaa_current_option = ""; return 24; };
707 GAA_CHECK1STR("", GAAOPTID_pubkey_info)if(""[0] == str[0]) { gaa_current_option = ""; return 25; };
708 GAA_CHECK1STR("", GAAOPTID_pgp_key_info)if(""[0] == str[0]) { gaa_current_option = ""; return 26; };
709 GAA_CHECK1STR("k", GAAOPTID_key_info)if("k"[0] == str[0]) { gaa_current_option = "k"; return 27; };
710 GAA_CHECK1STR("", GAAOPTID_smime_to_p7)if(""[0] == str[0]) { gaa_current_option = ""; return 28; };
711 GAA_CHECK1STR("", GAAOPTID_p7_info)if(""[0] == str[0]) { gaa_current_option = ""; return 29; };
712 GAA_CHECK1STR("", GAAOPTID_p12_info)if(""[0] == str[0]) { gaa_current_option = ""; return 30; };
713 GAA_CHECK1STR("", GAAOPTID_no_crq_extensions)if(""[0] == str[0]) { gaa_current_option = ""; return 31; };
714 GAA_CHECK1STR("", GAAOPTID_crq_info)if(""[0] == str[0]) { gaa_current_option = ""; return 32; };
715 GAA_CHECK1STR("l", GAAOPTID_crl_info)if("l"[0] == str[0]) { gaa_current_option = "l"; return 33; };
716 GAA_CHECK1STR("", GAAOPTID_pgp_ring_info)if(""[0] == str[0]) { gaa_current_option = ""; return 34; };
717 GAA_CHECK1STR("", GAAOPTID_pgp_certificate_info)if(""[0] == str[0]) { gaa_current_option = ""; return 35; };
718 GAA_CHECK1STR("", GAAOPTID_certificate_pubkey)if(""[0] == str[0]) { gaa_current_option = ""; return 36; };
719 GAA_CHECK1STR("i", GAAOPTID_certificate_info)if("i"[0] == str[0]) { gaa_current_option = "i"; return 37; };
720 GAA_CHECK1STR("", GAAOPTID_dh_info)if(""[0] == str[0]) { gaa_current_option = ""; return 45; };
721 GAA_CHECK1STR("", GAAOPTID_get_dh_params)if(""[0] == str[0]) { gaa_current_option = ""; return 46; };
722 GAA_CHECK1STR("", GAAOPTID_generate_dh_params)if(""[0] == str[0]) { gaa_current_option = ""; return 47; };
723 GAA_CHECK1STR("", GAAOPTID_verify_crl)if(""[0] == str[0]) { gaa_current_option = ""; return 48; };
724 GAA_CHECK1STR("", GAAOPTID_verify)if(""[0] == str[0]) { gaa_current_option = ""; return 49; };
725 GAA_CHECK1STR("e", GAAOPTID_verify_chain)if("e"[0] == str[0]) { gaa_current_option = "e"; return 50; };
726 GAA_CHECK1STR("q", GAAOPTID_generate_request)if("q"[0] == str[0]) { gaa_current_option = "q"; return 51; };
727 GAA_CHECK1STR("p", GAAOPTID_generate_privkey)if("p"[0] == str[0]) { gaa_current_option = "p"; return 52; };
728 GAA_CHECK1STR("u", GAAOPTID_update_certificate)if("u"[0] == str[0]) { gaa_current_option = "u"; return 53; };
729 GAA_CHECK1STR("", GAAOPTID_generate_crl)if(""[0] == str[0]) { gaa_current_option = ""; return 54; };
730 GAA_CHECK1STR("", GAAOPTID_generate_proxy)if(""[0] == str[0]) { gaa_current_option = ""; return 55; };
731 GAA_CHECK1STR("c", GAAOPTID_generate_certificate)if("c"[0] == str[0]) { gaa_current_option = "c"; return 56; };
732 GAA_CHECK1STR("s", GAAOPTID_generate_self_signed)if("s"[0] == str[0]) { gaa_current_option = "s"; return 57; };
733
734#line 277 "gaa.skel"
735 break;
736 case GAA_WORD_OPTION1:
737 GAA_CHECKSTR("version", GAAOPTID_version)if(strcmp("version",str) == 0) { gaa_current_option = "version"
; return 1; }
;
738 GAA_CHECKSTR("help", GAAOPTID_help)if(strcmp("help",str) == 0) { gaa_current_option = "help"; return
2; }
;
739 GAA_CHECKSTR("debug", GAAOPTID_debug)if(strcmp("debug",str) == 0) { gaa_current_option = "debug"; return
3; }
;
740 GAA_CHECKSTR("pkcs-cipher", GAAOPTID_pkcs_cipher)if(strcmp("pkcs-cipher",str) == 0) { gaa_current_option = "pkcs-cipher"
; return 4; }
;
741 GAA_CHECKSTR("template", GAAOPTID_template)if(strcmp("template",str) == 0) { gaa_current_option = "template"
; return 5; }
;
742 GAA_CHECKSTR("infile", GAAOPTID_infile)if(strcmp("infile",str) == 0) { gaa_current_option = "infile"
; return 6; }
;
743 GAA_CHECKSTR("outfile", GAAOPTID_outfile)if(strcmp("outfile",str) == 0) { gaa_current_option = "outfile"
; return 7; }
;
744 GAA_CHECKSTR("disable-quick-random", GAAOPTID_disable_quick_random)if(strcmp("disable-quick-random",str) == 0) { gaa_current_option
= "disable-quick-random"; return 8; }
;
745 GAA_CHECKSTR("sec-param", GAAOPTID_sec_param)if(strcmp("sec-param",str) == 0) { gaa_current_option = "sec-param"
; return 9; }
;
746 GAA_CHECKSTR("bits", GAAOPTID_bits)if(strcmp("bits",str) == 0) { gaa_current_option = "bits"; return
10; }
;
747 GAA_CHECKSTR("outraw", GAAOPTID_outraw)if(strcmp("outraw",str) == 0) { gaa_current_option = "outraw"
; return 11; }
;
748 GAA_CHECKSTR("outder", GAAOPTID_outder)if(strcmp("outder",str) == 0) { gaa_current_option = "outder"
; return 12; }
;
749 GAA_CHECKSTR("inraw", GAAOPTID_inraw)if(strcmp("inraw",str) == 0) { gaa_current_option = "inraw"; return
13; }
;
750 GAA_CHECKSTR("inder", GAAOPTID_inder)if(strcmp("inder",str) == 0) { gaa_current_option = "inder"; return
14; }
;
751 GAA_CHECKSTR("export-ciphers", GAAOPTID_export_ciphers)if(strcmp("export-ciphers",str) == 0) { gaa_current_option = "export-ciphers"
; return 15; }
;
752 GAA_CHECKSTR("hash", GAAOPTID_hash)if(strcmp("hash",str) == 0) { gaa_current_option = "hash"; return
16; }
;
753 GAA_CHECKSTR("ecc", GAAOPTID_ecc)if(strcmp("ecc",str) == 0) { gaa_current_option = "ecc"; return
17; }
;
754 GAA_CHECKSTR("rsa", GAAOPTID_rsa)if(strcmp("rsa",str) == 0) { gaa_current_option = "rsa"; return
18; }
;
755 GAA_CHECKSTR("dsa", GAAOPTID_dsa)if(strcmp("dsa",str) == 0) { gaa_current_option = "dsa"; return
19; }
;
756 GAA_CHECKSTR("pkcs8", GAAOPTID_pkcs8)if(strcmp("pkcs8",str) == 0) { gaa_current_option = "pkcs8"; return
20; }
;
757 GAA_CHECKSTR("to-p8", GAAOPTID_to_p8)if(strcmp("to-p8",str) == 0) { gaa_current_option = "to-p8"; return
21; }
;
758 GAA_CHECKSTR("to-p12", GAAOPTID_to_p12)if(strcmp("to-p12",str) == 0) { gaa_current_option = "to-p12"
; return 22; }
;
759 GAA_CHECKSTR("v1", GAAOPTID_v1)if(strcmp("v1",str) == 0) { gaa_current_option = "v1"; return
23; }
;
760 GAA_CHECKSTR("fix-key", GAAOPTID_fix_key)if(strcmp("fix-key",str) == 0) { gaa_current_option = "fix-key"
; return 24; }
;
761 GAA_CHECKSTR("pubkey-info", GAAOPTID_pubkey_info)if(strcmp("pubkey-info",str) == 0) { gaa_current_option = "pubkey-info"
; return 25; }
;
762 GAA_CHECKSTR("pgp-key-info", GAAOPTID_pgp_key_info)if(strcmp("pgp-key-info",str) == 0) { gaa_current_option = "pgp-key-info"
; return 26; }
;
763 GAA_CHECKSTR("key-info", GAAOPTID_key_info)if(strcmp("key-info",str) == 0) { gaa_current_option = "key-info"
; return 27; }
;
764 GAA_CHECKSTR("smime-to-p7", GAAOPTID_smime_to_p7)if(strcmp("smime-to-p7",str) == 0) { gaa_current_option = "smime-to-p7"
; return 28; }
;
765 GAA_CHECKSTR("p7-info", GAAOPTID_p7_info)if(strcmp("p7-info",str) == 0) { gaa_current_option = "p7-info"
; return 29; }
;
766 GAA_CHECKSTR("p12-info", GAAOPTID_p12_info)if(strcmp("p12-info",str) == 0) { gaa_current_option = "p12-info"
; return 30; }
;
767 GAA_CHECKSTR("no-crq-extensions", GAAOPTID_no_crq_extensions)if(strcmp("no-crq-extensions",str) == 0) { gaa_current_option
= "no-crq-extensions"; return 31; }
;
768 GAA_CHECKSTR("crq-info", GAAOPTID_crq_info)if(strcmp("crq-info",str) == 0) { gaa_current_option = "crq-info"
; return 32; }
;
769 GAA_CHECKSTR("crl-info", GAAOPTID_crl_info)if(strcmp("crl-info",str) == 0) { gaa_current_option = "crl-info"
; return 33; }
;
770 GAA_CHECKSTR("pgp-ring-info", GAAOPTID_pgp_ring_info)if(strcmp("pgp-ring-info",str) == 0) { gaa_current_option = "pgp-ring-info"
; return 34; }
;
771 GAA_CHECKSTR("pgp-certificate-info", GAAOPTID_pgp_certificate_info)if(strcmp("pgp-certificate-info",str) == 0) { gaa_current_option
= "pgp-certificate-info"; return 35; }
;
772 GAA_CHECKSTR("certificate-pubkey", GAAOPTID_certificate_pubkey)if(strcmp("certificate-pubkey",str) == 0) { gaa_current_option
= "certificate-pubkey"; return 36; }
;
773 GAA_CHECKSTR("certificate-info", GAAOPTID_certificate_info)if(strcmp("certificate-info",str) == 0) { gaa_current_option =
"certificate-info"; return 37; }
;
774 GAA_CHECKSTR("password", GAAOPTID_password)if(strcmp("password",str) == 0) { gaa_current_option = "password"
; return 38; }
;
775 GAA_CHECKSTR("load-ca-certificate", GAAOPTID_load_ca_certificate)if(strcmp("load-ca-certificate",str) == 0) { gaa_current_option
= "load-ca-certificate"; return 39; }
;
776 GAA_CHECKSTR("load-ca-privkey", GAAOPTID_load_ca_privkey)if(strcmp("load-ca-privkey",str) == 0) { gaa_current_option =
"load-ca-privkey"; return 40; }
;
777 GAA_CHECKSTR("load-certificate", GAAOPTID_load_certificate)if(strcmp("load-certificate",str) == 0) { gaa_current_option =
"load-certificate"; return 41; }
;
778 GAA_CHECKSTR("load-request", GAAOPTID_load_request)if(strcmp("load-request",str) == 0) { gaa_current_option = "load-request"
; return 42; }
;
779 GAA_CHECKSTR("load-pubkey", GAAOPTID_load_pubkey)if(strcmp("load-pubkey",str) == 0) { gaa_current_option = "load-pubkey"
; return 43; }
;
780 GAA_CHECKSTR("load-privkey", GAAOPTID_load_privkey)if(strcmp("load-privkey",str) == 0) { gaa_current_option = "load-privkey"
; return 44; }
;
781 GAA_CHECKSTR("dh-info", GAAOPTID_dh_info)if(strcmp("dh-info",str) == 0) { gaa_current_option = "dh-info"
; return 45; }
;
782 GAA_CHECKSTR("get-dh-params", GAAOPTID_get_dh_params)if(strcmp("get-dh-params",str) == 0) { gaa_current_option = "get-dh-params"
; return 46; }
;
783 GAA_CHECKSTR("generate-dh-params", GAAOPTID_generate_dh_params)if(strcmp("generate-dh-params",str) == 0) { gaa_current_option
= "generate-dh-params"; return 47; }
;
784 GAA_CHECKSTR("verify-crl", GAAOPTID_verify_crl)if(strcmp("verify-crl",str) == 0) { gaa_current_option = "verify-crl"
; return 48; }
;
785 GAA_CHECKSTR("verify", GAAOPTID_verify)if(strcmp("verify",str) == 0) { gaa_current_option = "verify"
; return 49; }
;
786 GAA_CHECKSTR("verify-chain", GAAOPTID_verify_chain)if(strcmp("verify-chain",str) == 0) { gaa_current_option = "verify-chain"
; return 50; }
;
787 GAA_CHECKSTR("generate-request", GAAOPTID_generate_request)if(strcmp("generate-request",str) == 0) { gaa_current_option =
"generate-request"; return 51; }
;
788 GAA_CHECKSTR("generate-privkey", GAAOPTID_generate_privkey)if(strcmp("generate-privkey",str) == 0) { gaa_current_option =
"generate-privkey"; return 52; }
;
789 GAA_CHECKSTR("update-certificate", GAAOPTID_update_certificate)if(strcmp("update-certificate",str) == 0) { gaa_current_option
= "update-certificate"; return 53; }
;
790 GAA_CHECKSTR("generate-crl", GAAOPTID_generate_crl)if(strcmp("generate-crl",str) == 0) { gaa_current_option = "generate-crl"
; return 54; }
;
791 GAA_CHECKSTR("generate-proxy", GAAOPTID_generate_proxy)if(strcmp("generate-proxy",str) == 0) { gaa_current_option = "generate-proxy"
; return 55; }
;
792 GAA_CHECKSTR("generate-certificate", GAAOPTID_generate_certificate)if(strcmp("generate-certificate",str) == 0) { gaa_current_option
= "generate-certificate"; return 56; }
;
793 GAA_CHECKSTR("generate-self-signed", GAAOPTID_generate_self_signed)if(strcmp("generate-self-signed",str) == 0) { gaa_current_option
= "generate-self-signed"; return 57; }
;
794
795#line 281 "gaa.skel"
796 break;
797 default: break;
798 }
799 return GAA_ERROR_NOMATCH0;
800}
801
802static int gaa_try(int gaa_num, int gaa_index, gaainfo *gaaval, char *opt_list)
803{
804 int OK = 0;
805 int gaa_last_non_option;
806 struct GAAOPTION_debug GAATMP_debug;
807 struct GAAOPTION_pkcs_cipher GAATMP_pkcs_cipher;
808 struct GAAOPTION_template GAATMP_template;
809 struct GAAOPTION_infile GAATMP_infile;
810 struct GAAOPTION_outfile GAATMP_outfile;
811 struct GAAOPTION_sec_param GAATMP_sec_param;
812 struct GAAOPTION_bits GAATMP_bits;
813 struct GAAOPTION_hash GAATMP_hash;
814 struct GAAOPTION_password GAATMP_password;
815 struct GAAOPTION_load_ca_certificate GAATMP_load_ca_certificate;
816 struct GAAOPTION_load_ca_privkey GAATMP_load_ca_privkey;
817 struct GAAOPTION_load_certificate GAATMP_load_certificate;
818 struct GAAOPTION_load_request GAATMP_load_request;
819 struct GAAOPTION_load_pubkey GAATMP_load_pubkey;
820 struct GAAOPTION_load_privkey GAATMP_load_privkey;
821
822#line 393 "gaa.skel"
823#ifdef GAA_REST_EXISTS
824 struct GAAREST GAAREST_tmp;
825#endif
826
827 opt_list[gaa_num] = 1;
828
829 for(gaa_last_non_option = gaa_index;
830 (gaa_last_non_option != GAAargc) && (gaa_is_an_argument(GAAargv[gaa_last_non_option]) == GAA_NOT_AN_OPTION0);
831 gaa_last_non_option++);
832
833 if(gaa_num == GAA_REST0)
834 {
835 gaa_index = 1;
836 gaa_last_non_option = GAAargc;
837 }
838
839 switch(gaa_num)
840 {
841 case GAAOPTID_version1:
842 OK = 0;
843#line 153 "certtool.gaa"
844{ certtool_version(); exit(0); ;};
845
846 return GAA_OK-1;
847 break;
848 case GAAOPTID_help2:
849 OK = 0;
850#line 151 "certtool.gaa"
851{ gaa_help(); exit(0); ;};
852
853 return GAA_OK-1;
854 break;
855 case GAAOPTID_debug3:
856 OK = 0;
857 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
858 GAA_FILL(GAATMP_debug.arg1, gaa_getint, GAATMP_debug.size1)if(!OK) { GAATMP_debug.arg1 = gaa_getint(GAAargv[gaa_index]);
gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error =
0; return 2; } GAATMP_debug.size1 = 1; } else { GAATMP_debug
.size1 = 0; }
;
859 gaa_index++;
860#line 149 "certtool.gaa"
861{ gaaval->debug = GAATMP_debug.arg1 ;};
862
863 return GAA_OK-1;
864 break;
865 case GAAOPTID_pkcs_cipher4:
866 OK = 0;
867 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
868 GAA_FILL(GAATMP_pkcs_cipher.arg1, gaa_getstr, GAATMP_pkcs_cipher.size1)if(!OK) { GAATMP_pkcs_cipher.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_pkcs_cipher.size1 = 1; } else { GAATMP_pkcs_cipher
.size1 = 0; }
;
869 gaa_index++;
870#line 146 "certtool.gaa"
871{ gaaval->pkcs_cipher = GAATMP_pkcs_cipher.arg1 ;};
872
873 return GAA_OK-1;
874 break;
875 case GAAOPTID_template5:
876 OK = 0;
877 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
878 GAA_FILL(GAATMP_template.arg1, gaa_getstr, GAATMP_template.size1)if(!OK) { GAATMP_template.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_template.size1 = 1; } else { GAATMP_template
.size1 = 0; }
;
879 gaa_index++;
880#line 143 "certtool.gaa"
881{ gaaval->template = GAATMP_template.arg1 ;};
882
883 return GAA_OK-1;
884 break;
885 case GAAOPTID_infile6:
886 OK = 0;
887 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
888 GAA_FILL(GAATMP_infile.arg1, gaa_getstr, GAATMP_infile.size1)if(!OK) { GAATMP_infile.arg1 = gaa_getstr(GAAargv[gaa_index])
; gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_infile.size1 = 1; } else { GAATMP_infile
.size1 = 0; }
;
889 gaa_index++;
890#line 140 "certtool.gaa"
891{ gaaval->infile = GAATMP_infile.arg1 ;};
892
893 return GAA_OK-1;
894 break;
895 case GAAOPTID_outfile7:
896 OK = 0;
897 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
898 GAA_FILL(GAATMP_outfile.arg1, gaa_getstr, GAATMP_outfile.size1)if(!OK) { GAATMP_outfile.arg1 = gaa_getstr(GAAargv[gaa_index]
); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_outfile.size1 = 1; } else { GAATMP_outfile
.size1 = 0; }
;
899 gaa_index++;
900#line 137 "certtool.gaa"
901{ gaaval->outfile = GAATMP_outfile.arg1 ;};
902
903 return GAA_OK-1;
904 break;
905 case GAAOPTID_disable_quick_random8:
906 OK = 0;
907#line 134 "certtool.gaa"
908{ gaaval->quick_random = 0; ;};
909
910 return GAA_OK-1;
911 break;
912 case GAAOPTID_sec_param9:
913 OK = 0;
914 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
915 GAA_FILL(GAATMP_sec_param.arg1, gaa_getstr, GAATMP_sec_param.size1)if(!OK) { GAATMP_sec_param.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_sec_param.size1 = 1; } else { GAATMP_sec_param
.size1 = 0; }
;
916 gaa_index++;
917#line 131 "certtool.gaa"
918{ gaaval->sec_param = GAATMP_sec_param.arg1 ;};
919
920 return GAA_OK-1;
921 break;
922 case GAAOPTID_bits10:
923 OK = 0;
924 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
925 GAA_FILL(GAATMP_bits.arg1, gaa_getint, GAATMP_bits.size1)if(!OK) { GAATMP_bits.arg1 = gaa_getint(GAAargv[gaa_index]); gaa_arg_used
[gaa_index] = 1; if(gaa_error == 1) { gaa_error = 0; return 2
; } GAATMP_bits.size1 = 1; } else { GAATMP_bits.size1 = 0; }
;
926 gaa_index++;
927#line 128 "certtool.gaa"
928{ gaaval->bits = GAATMP_bits.arg1 ;};
929
930 return GAA_OK-1;
931 break;
932 case GAAOPTID_outraw11:
933 OK = 0;
934#line 125 "certtool.gaa"
935{ gaaval->outcert_format=1 ;};
936
937 return GAA_OK-1;
938 break;
939 case GAAOPTID_outder12:
940 OK = 0;
941#line 124 "certtool.gaa"
942{ gaaval->outcert_format=1 ;};
943
944 return GAA_OK-1;
945 break;
946 case GAAOPTID_inraw13:
947 OK = 0;
948#line 121 "certtool.gaa"
949{ gaaval->incert_format=1 ;};
950
951 return GAA_OK-1;
952 break;
953 case GAAOPTID_inder14:
954 OK = 0;
955#line 120 "certtool.gaa"
956{ gaaval->incert_format=1 ;};
957
958 return GAA_OK-1;
959 break;
960 case GAAOPTID_export_ciphers15:
961 OK = 0;
962#line 117 "certtool.gaa"
963{ gaaval->export=1 ;};
964
965 return GAA_OK-1;
966 break;
967 case GAAOPTID_hash16:
968 OK = 0;
969 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
970 GAA_FILL(GAATMP_hash.arg1, gaa_getstr, GAATMP_hash.size1)if(!OK) { GAATMP_hash.arg1 = gaa_getstr(GAAargv[gaa_index]); gaa_arg_used
[gaa_index] = 1; if(gaa_error == 1) { gaa_error = 0; return 2
; } GAATMP_hash.size1 = 1; } else { GAATMP_hash.size1 = 0; }
;
971 gaa_index++;
972#line 114 "certtool.gaa"
973{ gaaval->hash = GAATMP_hash.arg1 ;};
974
975 return GAA_OK-1;
976 break;
977 case GAAOPTID_ecc17:
978 OK = 0;
979#line 111 "certtool.gaa"
980{ gaaval->ecc=1 ;};
981
982 return GAA_OK-1;
983 break;
984 case GAAOPTID_rsa18:
985 OK = 0;
986#line 108 "certtool.gaa"
987{ ;};
988
989 return GAA_OK-1;
990 break;
991 case GAAOPTID_dsa19:
992 OK = 0;
993#line 106 "certtool.gaa"
994{ gaaval->dsa=1 ;};
995
996 return GAA_OK-1;
997 break;
998 case GAAOPTID_pkcs820:
999 OK = 0;
1000#line 103 "certtool.gaa"
1001{ gaaval->pkcs8=1 ;};
1002
1003 return GAA_OK-1;
1004 break;
1005 case GAAOPTID_to_p821:
1006 OK = 0;
1007#line 100 "certtool.gaa"
1008{ gaaval->action = ACTION_GENERATE_PKCS8; ;};
1009
1010 return GAA_OK-1;
1011 break;
1012 case GAAOPTID_to_p1222:
1013 OK = 0;
1014#line 98 "certtool.gaa"
1015{ gaaval->action = ACTION_TO_PKCS12; ;};
1016
1017 return GAA_OK-1;
1018 break;
1019 case GAAOPTID_v123:
1020 OK = 0;
1021#line 96 "certtool.gaa"
1022{ gaaval->v1_cert = 1; ;};
1023
1024 return GAA_OK-1;
1025 break;
1026 case GAAOPTID_fix_key24:
1027 OK = 0;
1028#line 93 "certtool.gaa"
1029{ gaaval->privkey_op=1; gaaval->fix_key = 1; ;};
1030
1031 return GAA_OK-1;
1032 break;
1033 case GAAOPTID_pubkey_info25:
1034 OK = 0;
1035#line 90 "certtool.gaa"
1036{ gaaval->action = ACTION_PUBKEY_INFO; ;};
1037
1038 return GAA_OK-1;
1039 break;
1040 case GAAOPTID_pgp_key_info26:
1041 OK = 0;
1042#line 88 "certtool.gaa"
1043{ gaaval->privkey_op=1; gaaval->action = ACTION_PGP_PRIVKEY_INFO; ;};
1044
1045 return GAA_OK-1;
1046 break;
1047 case GAAOPTID_key_info27:
1048 OK = 0;
1049#line 86 "certtool.gaa"
1050{ gaaval->privkey_op=1; gaaval->action = ACTION_PRIVKEY_INFO; ;};
1051
1052 return GAA_OK-1;
1053 break;
1054 case GAAOPTID_smime_to_p728:
1055 OK = 0;
1056#line 82 "certtool.gaa"
1057{ gaaval->action = ACTION_SMIME_TO_P7; ;};
1058
1059 return GAA_OK-1;
1060 break;
1061 case GAAOPTID_p7_info29:
1062 OK = 0;
1063#line 80 "certtool.gaa"
1064{ gaaval->action = ACTION_P7_INFO; ;};
1065
1066 return GAA_OK-1;
1067 break;
1068 case GAAOPTID_p12_info30:
1069 OK = 0;
1070#line 78 "certtool.gaa"
1071{ gaaval->action = ACTION_PKCS12_INFO; ;};
1072
1073 return GAA_OK-1;
1074 break;
1075 case GAAOPTID_no_crq_extensions31:
1076 OK = 0;
1077#line 76 "certtool.gaa"
1078{ gaaval->crq_extensions = 0; ;};
1079
1080 return GAA_OK-1;
1081 break;
1082 case GAAOPTID_crq_info32:
1083 OK = 0;
1084#line 73 "certtool.gaa"
1085{ gaaval->action = ACTION_REQUEST; ;};
1086
1087 return GAA_OK-1;
1088 break;
1089 case GAAOPTID_crl_info33:
1090 OK = 0;
1091#line 71 "certtool.gaa"
1092{ gaaval->action = ACTION_CRL_INFO; ;};
1093
1094 return GAA_OK-1;
1095 break;
1096 case GAAOPTID_pgp_ring_info34:
1097 OK = 0;
1098#line 69 "certtool.gaa"
1099{ gaaval->action = ACTION_RING_INFO; ;};
1100
1101 return GAA_OK-1;
1102 break;
1103 case GAAOPTID_pgp_certificate_info35:
1104 OK = 0;
1105#line 67 "certtool.gaa"
1106{ gaaval->action = ACTION_PGP_INFO; ;};
1107
1108 return GAA_OK-1;
1109 break;
1110 case GAAOPTID_certificate_pubkey36:
1111 OK = 0;
1112#line 65 "certtool.gaa"
1113{ gaaval->action = ACTION_CERT_PUBKEY; ;};
1114
1115 return GAA_OK-1;
1116 break;
1117 case GAAOPTID_certificate_info37:
1118 OK = 0;
1119#line 63 "certtool.gaa"
1120{ gaaval->action = ACTION_CERT_INFO; ;};
1121
1122 return GAA_OK-1;
1123 break;
1124 case GAAOPTID_password38:
1125 OK = 0;
1126 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1127 GAA_FILL(GAATMP_password.arg1, gaa_getstr, GAATMP_password.size1)if(!OK) { GAATMP_password.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_password.size1 = 1; } else { GAATMP_password
.size1 = 0; }
;
1128 gaa_index++;
1129#line 61 "certtool.gaa"
1130{ gaaval->pass = GAATMP_password.arg1 ;};
1131
1132 return GAA_OK-1;
1133 break;
1134 case GAAOPTID_load_ca_certificate39:
1135 OK = 0;
1136 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1137 GAA_FILL(GAATMP_load_ca_certificate.arg1, gaa_getstr, GAATMP_load_ca_certificate.size1)if(!OK) { GAATMP_load_ca_certificate.arg1 = gaa_getstr(GAAargv
[gaa_index]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1)
{ gaa_error = 0; return 2; } GAATMP_load_ca_certificate.size1
= 1; } else { GAATMP_load_ca_certificate.size1 = 0; }
;
1138 gaa_index++;
1139#line 58 "certtool.gaa"
1140{ gaaval->ca = GAATMP_load_ca_certificate.arg1 ;};
1141
1142 return GAA_OK-1;
1143 break;
1144 case GAAOPTID_load_ca_privkey40:
1145 OK = 0;
1146 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1147 GAA_FILL(GAATMP_load_ca_privkey.arg1, gaa_getstr, GAATMP_load_ca_privkey.size1)if(!OK) { GAATMP_load_ca_privkey.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_load_ca_privkey.size1 = 1; } else { GAATMP_load_ca_privkey
.size1 = 0; }
;
1148 gaa_index++;
Value stored to 'gaa_index' is never read
1149#line 55 "certtool.gaa"
1150{ gaaval->ca_privkey = GAATMP_load_ca_privkey.arg1 ;};
1151
1152 return GAA_OK-1;
1153 break;
1154 case GAAOPTID_load_certificate41:
1155 OK = 0;
1156 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1157 GAA_FILL(GAATMP_load_certificate.arg1, gaa_getstr, GAATMP_load_certificate.size1)if(!OK) { GAATMP_load_certificate.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_load_certificate.size1 = 1; } else {
GAATMP_load_certificate.size1 = 0; }
;
1158 gaa_index++;
1159#line 52 "certtool.gaa"
1160{ gaaval->cert = GAATMP_load_certificate.arg1 ;};
1161
1162 return GAA_OK-1;
1163 break;
1164 case GAAOPTID_load_request42:
1165 OK = 0;
1166 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1167 GAA_FILL(GAATMP_load_request.arg1, gaa_getstr, GAATMP_load_request.size1)if(!OK) { GAATMP_load_request.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_load_request.size1 = 1; } else { GAATMP_load_request
.size1 = 0; }
;
1168 gaa_index++;
1169#line 49 "certtool.gaa"
1170{ gaaval->request = GAATMP_load_request.arg1 ;};
1171
1172 return GAA_OK-1;
1173 break;
1174 case GAAOPTID_load_pubkey43:
1175 OK = 0;
1176 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1177 GAA_FILL(GAATMP_load_pubkey.arg1, gaa_getstr, GAATMP_load_pubkey.size1)if(!OK) { GAATMP_load_pubkey.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_load_pubkey.size1 = 1; } else { GAATMP_load_pubkey
.size1 = 0; }
;
1178 gaa_index++;
1179#line 46 "certtool.gaa"
1180{ gaaval->pubkey = GAATMP_load_pubkey.arg1 ;};
1181
1182 return GAA_OK-1;
1183 break;
1184 case GAAOPTID_load_privkey44:
1185 OK = 0;
1186 GAA_TESTMOREARGSif(!OK) { while((gaa_last_non_option != gaa_index) &&
(gaa_arg_used[gaa_index] == 1)) gaa_index++; if(gaa_last_non_option
== gaa_index) return 1; }
;
1187 GAA_FILL(GAATMP_load_privkey.arg1, gaa_getstr, GAATMP_load_privkey.size1)if(!OK) { GAATMP_load_privkey.arg1 = gaa_getstr(GAAargv[gaa_index
]); gaa_arg_used[gaa_index] = 1; if(gaa_error == 1) { gaa_error
= 0; return 2; } GAATMP_load_privkey.size1 = 1; } else { GAATMP_load_privkey
.size1 = 0; }
;
1188 gaa_index++;
1189#line 43 "certtool.gaa"
1190{ gaaval->privkey = GAATMP_load_privkey.arg1 ;};
1191
1192 return GAA_OK-1;
1193 break;
1194 case GAAOPTID_dh_info45:
1195 OK = 0;
1196#line 40 "certtool.gaa"
1197{ gaaval->action = ACTION_DH_INFO; ;};
1198
1199 return GAA_OK-1;
1200 break;
1201 case GAAOPTID_get_dh_params46:
1202 OK = 0;
1203#line 39 "certtool.gaa"
1204{ gaaval->action=ACTION_GET_DH; ;};
1205
1206 return GAA_OK-1;
1207 break;
1208 case GAAOPTID_generate_dh_params47:
1209 OK = 0;
1210#line 38 "certtool.gaa"
1211{ gaaval->action=ACTION_GENERATE_DH; ;};
1212
1213 return GAA_OK-1;
1214 break;
1215 case GAAOPTID_verify_crl48:
1216 OK = 0;
1217#line 36 "certtool.gaa"
1218{ gaaval->action=ACTION_VERIFY_CRL; ;};
1219
1220 return GAA_OK-1;
1221 break;
1222 case GAAOPTID_verify49:
1223 OK = 0;
1224#line 34 "certtool.gaa"
1225{ gaaval->action=ACTION_VERIFY; ;};
1226
1227 return GAA_OK-1;
1228 break;
1229 case GAAOPTID_verify_chain50:
1230 OK = 0;
1231#line 32 "certtool.gaa"
1232{ gaaval->action=ACTION_VERIFY_CHAIN; ;};
1233
1234 return GAA_OK-1;
1235 break;
1236 case GAAOPTID_generate_request51:
1237 OK = 0;
1238#line 30 "certtool.gaa"
1239{ gaaval->privkey_op=1; gaaval->action=ACTION_GENERATE_REQUEST; ;};
1240
1241 return GAA_OK-1;
1242 break;
1243 case GAAOPTID_generate_privkey52:
1244 OK = 0;
1245#line 28 "certtool.gaa"
1246{ gaaval->privkey_op=1; gaaval->action=ACTION_GENERATE_PRIVKEY; ;};
1247
1248 return GAA_OK-1;
1249 break;
1250 case GAAOPTID_update_certificate53:
1251 OK = 0;
1252#line 26 "certtool.gaa"
1253{ gaaval->action=ACTION_UPDATE_CERTIFICATE; ;};
1254
1255 return GAA_OK-1;
1256 break;
1257 case GAAOPTID_generate_crl54:
1258 OK = 0;
1259#line 24 "certtool.gaa"
1260{ gaaval->action=ACTION_GENERATE_CRL; ;};
1261
1262 return GAA_OK-1;
1263 break;
1264 case GAAOPTID_generate_proxy55:
1265 OK = 0;
1266#line 22 "certtool.gaa"
1267{ gaaval->action=ACTION_GENERATE_PROXY; ;};
1268
1269 return GAA_OK-1;
1270 break;
1271 case GAAOPTID_generate_certificate56:
1272 OK = 0;
1273#line 20 "certtool.gaa"
1274{ gaaval->action=ACTION_GENERATE_CERTIFICATE; ;};
1275
1276 return GAA_OK-1;
1277 break;
1278 case GAAOPTID_generate_self_signed57:
1279 OK = 0;
1280#line 18 "certtool.gaa"
1281{ gaaval->action=ACTION_SELF_SIGNED; ;};
1282
1283 return GAA_OK-1;
1284 break;
1285
1286#line 413 "gaa.skel"
1287 default: break;
1288 }
1289 return GAA_ERROR_UNKNOWN3;
1290}
1291
1292int gaa(int argc, char **argv, gaainfo *gaaval)
1293{
1294 int tmp1, tmp2;
1295 int i, j;
1296 char *opt_list;
1297
1298 GAAargv = argv;
1299 GAAargc = argc;
1300
1301 opt_list = (char*) gaa_malloc(GAA_NB_OPTION57 + 1);
1302
1303 for(i = 0; i < GAA_NB_OPTION57 + 1; i++)
1304 opt_list[i] = 0;
1305 /* initialization */
1306 if(inited == 0)
1307 {
1308
1309#line 155 "certtool.gaa"
1310{ gaaval->bits = 0; gaaval->pkcs8 = 0; gaaval->privkey = NULL((void*)0); gaaval->ca=NULL((void*)0); gaaval->ca_privkey = NULL((void*)0);
1311 gaaval->debug=1; gaaval->request = NULL((void*)0); gaaval->infile = NULL((void*)0); gaaval->outfile = NULL((void*)0); gaaval->cert = NULL((void*)0);
1312 gaaval->incert_format = 0; gaaval->outcert_format = 0; gaaval->action=-1; gaaval->pass = NULL((void*)0); gaaval->v1_cert = 0;
1313 gaaval->export = 0; gaaval->template = NULL((void*)0); gaaval->hash=NULL((void*)0); gaaval->fix_key = 0; gaaval->quick_random=1;
1314 gaaval->privkey_op = 0; gaaval->pkcs_cipher = "aes-128"; gaaval->crq_extensions=1; gaaval->ecc=0;
1315 gaaval->sec_param = NULL((void*)0); ;};
1316
1317 }
1318 inited = 1;
1319#line 438 "gaa.skel"
1320 gaa_arg_used = NULL((void*)0);
1321
1322 if (argc > 0) {
1323 gaa_arg_used = gaa_malloc(argc * sizeof(char));
1324 }
1325
1326 for(i = 1; i < argc; i++)
1327 gaa_arg_used[i] = 0;
1328 for(i = 1; i < argc; i++)
1329 {
1330 if(gaa_arg_used[i] == 0)
1331 {
1332 j = 0;
1333 tmp1 = gaa_is_an_argument(GAAargv[i]);
1334 switch(tmp1)
1335 {
1336 case GAA_WORD_OPTION1:
1337 j++;
1338 case GAA_LETTER_OPTION2:
1339 j++;
1340 tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1341 if(tmp2 == GAA_ERROR_NOMATCH0)
1342 {
1343 printf("Invalid option '%s'\n", argv[i]+j);
1344 return 0;
1345 }
1346 switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1347 {
1348 case GAA_ERROR_NOTENOUGH_ARGS1:
1349 printf("'%s': not enough arguments\n",gaa_current_option);
1350 return 0;
1351 case GAA_ERROR_INVALID_ARG2:
1352 printf("Invalid arguments\n");
1353 return 0;
1354 case GAA_OK-1:
1355 break;
1356 default:
1357 printf("Unknown error\n");
1358 }
1359 gaa_arg_used[i] = 1;
1360 break;
1361 case GAA_MULTIPLE_OPTION3:
1362 for(j = 1; j < strlen(argv[i]); j++)
1363 {
1364 tmp2 = gaa_get_option_num(argv[i]+j, tmp1);
1365 if(tmp2 == GAA_ERROR_NOMATCH0)
1366 {
1367 printf("Invalid option '%c'\n", *(argv[i]+j));
1368 return 0;
1369 }
1370 switch(gaa_try(tmp2, i+1, gaaval, opt_list))
1371 {
1372 case GAA_ERROR_NOTENOUGH_ARGS1:
1373 printf("'%s': not enough arguments\n",gaa_current_option);
1374 return 0;
1375 case GAA_ERROR_INVALID_ARG2:
1376 printf("Invalid arguments\n");
1377 return 0;
1378 case GAA_OK-1:
1379 break;
1380 default:
1381 printf("Unknown error\n");
1382 }
1383 }
1384 gaa_arg_used[i] = 1;
1385 break;
1386 default: break;
1387 }
1388 }
1389 }
1390if(gaa_processing_file == 0)
1391{
1392
1393#line 507 "gaa.skel"
1394#ifdef GAA_REST_EXISTS
1395 switch(gaa_try(GAA_REST0, 1, gaaval, opt_list))
1396 {
1397 case GAA_ERROR_NOTENOUGH_ARGS1:
1398 printf("Rest: not enough arguments\n");
1399 return 0;
1400 case GAA_ERROR_INVALID_ARG2:
1401 printf("Invalid arguments\n");
1402 return 0;
1403 case GAA_OK-1:
1404 break;
1405 default:
1406 printf("Unknown error\n");
1407 }
1408#endif
1409}
1410 for(i = 1; i < argc; i++)
1411 {
1412 if(gaa_arg_used[i] == 0)
1413 {
1414 printf("Too many arguments\n");
1415 return 0;
1416 }
1417 }
1418 free(gaa_arg_used);
1419 free(opt_list);
1420 return -1;
1421}
1422
1423struct gaastrnode
1424{
1425 char *str;
1426 struct gaastrnode *next;
1427};
1428
1429typedef struct gaastrnode gaa_str_node;
1430
1431static int gaa_internal_get_next_str(FILE *file, gaa_str_node *tmp_str, int argc)
1432{
1433 int pos_ini;
1434 int a;
1435 int i = 0, len = 0, newline = 0;
1436
1437 if(argc == 1) {
1438 newline = 1;
1439 len = 2;
1440 }
1441
1442 a = fgetc( file);
1443 if (a == EOF(-1)) return 0;
1444
1445 while(a == ' ' || a == 9 || a == '\n')
1446 {
1447 if(a == '\n')
1448 {
1449 newline=1;
1450 len = 2;
1451 }
1452 a = fgetc( file);
1453 if (a == EOF(-1)) return 0;
1454 }
1455
1456 pos_ini = ftell(file) - 1;
1457
1458 while(a != ' ' && a != 9 && a != '\n')
1459 {
1460
1461 len++;
1462 a = fgetc( file);
1463 if(a==EOF(-1)) return 0;
1464 }
1465
1466 len += 1;
1467 tmp_str->str = gaa_malloc((len) * sizeof(char));
1468
1469 if(newline == 1)
1470 {
1471 tmp_str->str[0] = '-';
1472 tmp_str->str[1] = '-';
1473 i = 2;
1474 }
1475 else
1476 {
1477 i = 0;
1478 }
1479
1480 fseek(file,pos_ini, SEEK_SET0);
1481 do
1482 {
1483 a = fgetc( file);
1484
1485 if (a == EOF(-1)) {
1486 i+=2;
1487 break;
1488 }
1489 tmp_str->str[i] = a;
1490 i++;
1491 }
1492 while(a != ' ' && a != 9 && a != '\n' && i < len);
1493
1494 tmp_str->str[i - 1] = 0;
1495
1496 fseek(file,- 1, SEEK_CUR1);
1497/* printf("%d\n", ftell(file)); */
1498
1499 return -1;
1500}
1501
1502int gaa_file(const char *name, gaainfo *gaaval)
1503{
1504 gaa_str_node *first_str, **tmp_str, *tmp_str2;
1505 int rval, i;
1506 char **argv;
1507 int argc = 0;
1508 FILE *file;
1509
1510 gaa_processing_file = 1;
1511
1512 if((file = fopen(name, "r")) == NULL((void*)0))
1513 {
1514 printf("Couldn't open '%s' configuration file for reading\n", name);
1515 return 1;
1516 }
1517
1518 tmp_str = &first_str;
1519 do
1520 {
1521 argc++;
1522 *tmp_str = gaa_malloc(sizeof(gaa_str_node));
1523
1524 (*tmp_str)->str = NULL((void*)0);
1525 (*tmp_str)->next = NULL((void*)0);
1526
1527 rval = gaa_internal_get_next_str(file, *tmp_str, argc);
1528 tmp_str = &((*tmp_str)->next);
1529 }
1530 while(rval == -1);
1531
1532 if(rval == 1)
1533 return 0;
1534
1535 argv = gaa_malloc((1 + argc) * sizeof(char*));
1536
1537 tmp_str2 = first_str;
1538 argv[0] = "cfg";
1539 for(i = 1; i < argc; i++)
1540 {
1541 argv[i] = tmp_str2->str;
1542 tmp_str2 = tmp_str2->next;
1543 }
1544
1545 rval = gaa(argc, argv, gaaval);
1546 gaa_processing_file = 0;
1547 return rval;
1548}