1 /* File generated by GAA 1.6.6
14 void certtool_version(void);
21 #if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(WINDOWS)
26 static void* gaa_malloc( size_t size
) {
30 fprintf(stderr
, "gaa: could not allocate memory");
36 static void __gaa_helpsingle(char short_name
, char *name
,
37 char *arg_desc
, char *opt_help
)
39 int col1
, col3
, col4
, tabsize
= 3, curr
;
42 col1
= 5; /* Default values */
47 for(i
= 0; i
< col1
; i
++)
56 printf("-%c, ", short_name
);
61 printf("-%c ", short_name
);
67 printf("--%s ", name
);
68 curr
+= 3 + strlen(name
);
70 if(arg_desc
&& *arg_desc
)
72 printf("%s ", arg_desc
);
73 curr
+= 1 + strlen(arg_desc
);
80 if(opt_help
) /* let's print the option's help body */
82 const char *str
= opt_help
;
102 while((curr
- col3
) % tabsize
!= 0 && curr
< col4
);
109 for(i
= 1; str
[i
] && str
[i
] != ' ' && str
[i
] != '\n'
110 && str
[i
] != '\t'; i
++);
111 if(curr
+ i
- 1 >= col4
)
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-crl", "", "Verify a CRL.");
141 __gaa_helpsingle(0, "generate-dh-params", "", "Generate PKCS #3 encoded Diffie Hellman parameters.");
142 __gaa_helpsingle(0, "get-dh-params", "", "Get the included PKCS #3 encoded Diffie Hellman parameters.");
143 __gaa_helpsingle(0, "load-privkey", "FILE ", "Private key file to use.");
144 __gaa_helpsingle(0, "load-request", "FILE ", "Certificate request file to use.");
145 __gaa_helpsingle(0, "load-certificate", "FILE ", "Certificate file to use.");
146 __gaa_helpsingle(0, "load-ca-privkey", "FILE ", "Certificate authority's private key file to use.");
147 __gaa_helpsingle(0, "load-ca-certificate", "FILE ", "Certificate authority's certificate file to use.");
148 __gaa_helpsingle(0, "password", "PASSWORD ", "Password to use.");
149 __gaa_helpsingle('i', "certificate-info", "", "Print information on a certificate.");
150 __gaa_helpsingle(0, "pgp-certificate-info", "", "Print information on a OpenPGP certificate.");
151 __gaa_helpsingle(0, "pgp-ring-info", "", "Print information on a keyring structure.");
152 __gaa_helpsingle('l', "crl-info", "", "Print information on a CRL.");
153 __gaa_helpsingle(0, "p12-info", "", "Print information on a PKCS #12 structure.");
154 __gaa_helpsingle(0, "p7-info", "", "Print information on a PKCS #7 structure.");
155 __gaa_helpsingle(0, "smime-to-p7", "", "Convert S/MIME to PKCS #7 structure.");
156 __gaa_helpsingle('k', "key-info", "", "Print information on a private key.");
157 __gaa_helpsingle(0, "pgp-key-info", "", "Print information on a OpenPGP private key.");
158 __gaa_helpsingle(0, "fix-key", "", "Regenerate the parameters in a private key.");
159 __gaa_helpsingle(0, "v1", "", "Generate an X.509 version 1 certificate (no extensions).");
160 __gaa_helpsingle(0, "to-p12", "", "Generate a PKCS #12 structure.");
161 __gaa_helpsingle(0, "to-p8", "", "Generate a PKCS #8 key structure.");
162 __gaa_helpsingle('8', "pkcs8", "", "Use PKCS #8 format for private keys.");
163 __gaa_helpsingle(0, "dsa", "", "Use DSA keys.");
164 __gaa_helpsingle(0, "hash", "STR ", "Hash algorithm to use for signing (MD5,SHA1,RMD160,SHA256,SHA384,SHA512).");
165 __gaa_helpsingle(0, "export-ciphers", "", "Use weak encryption algorithms.");
166 __gaa_helpsingle(0, "inder", "", "Use DER format for input certificates and private keys.");
167 __gaa_helpsingle(0, "outder", "", "Use DER format for output certificates and private keys.");
168 __gaa_helpsingle(0, "bits", "BITS ", "specify the number of bits for key generation.");
169 __gaa_helpsingle(0, "disable-quick-random", "", "Use /dev/random for key generationg, thus increasing the quality of randomness used.");
170 __gaa_helpsingle(0, "outfile", "FILE ", "Output file.");
171 __gaa_helpsingle(0, "infile", "FILE ", "Input file.");
172 __gaa_helpsingle(0, "template", "FILE ", "Template file to use for non interactive operation.");
173 __gaa_helpsingle('d', "debug", "LEVEL ", "specify the debug level. Default is 1.");
174 __gaa_helpsingle('h', "help", "", "shows this help text");
175 __gaa_helpsingle('v', "version", "", "shows the program's version");
183 #ifndef GAA_HEADER_POKY
184 #define GAA_HEADER_POKY
186 typedef struct _gaainfo gaainfo
;
190 #line 118 "certtool.gaa"
192 #line 114 "certtool.gaa"
194 #line 111 "certtool.gaa"
196 #line 108 "certtool.gaa"
198 #line 105 "certtool.gaa"
200 #line 102 "certtool.gaa"
202 #line 99 "certtool.gaa"
204 #line 96 "certtool.gaa"
206 #line 93 "certtool.gaa"
208 #line 90 "certtool.gaa"
210 #line 87 "certtool.gaa"
212 #line 84 "certtool.gaa"
214 #line 77 "certtool.gaa"
216 #line 74 "certtool.gaa"
218 #line 53 "certtool.gaa"
220 #line 50 "certtool.gaa"
222 #line 47 "certtool.gaa"
224 #line 44 "certtool.gaa"
226 #line 41 "certtool.gaa"
228 #line 38 "certtool.gaa"
230 #line 16 "certtool.gaa"
241 int gaa(int argc
, char *argv
[], gaainfo
*gaaval
);
245 int gaa_file(const char *name
, gaainfo
*gaaval
);
258 #define GAAERROR(x) \
264 static char *gaa_current_option
;
265 static int gaa_error
= 0;
267 /* Generated by gaa */
275 #define GAA_ERROR_NOMATCH 0
276 #define GAA_ERROR_NOTENOUGH_ARGS 1
277 #define GAA_ERROR_INVALID_ARG 2
278 #define GAA_ERROR_UNKNOWN 3
280 #define GAA_NOT_AN_OPTION 0
281 #define GAA_WORD_OPTION 1
282 #define GAA_LETTER_OPTION 2
283 #define GAA_MULTIPLE_OPTION 3
286 #define GAA_NB_OPTION 44
287 #define GAAOPTID_version 1
288 #define GAAOPTID_help 2
289 #define GAAOPTID_debug 3
290 #define GAAOPTID_template 4
291 #define GAAOPTID_infile 5
292 #define GAAOPTID_outfile 6
293 #define GAAOPTID_disable_quick_random 7
294 #define GAAOPTID_bits 8
295 #define GAAOPTID_outder 9
296 #define GAAOPTID_inder 10
297 #define GAAOPTID_export_ciphers 11
298 #define GAAOPTID_hash 12
299 #define GAAOPTID_dsa 13
300 #define GAAOPTID_pkcs8 14
301 #define GAAOPTID_to_p8 15
302 #define GAAOPTID_to_p12 16
303 #define GAAOPTID_v1 17
304 #define GAAOPTID_fix_key 18
305 #define GAAOPTID_pgp_key_info 19
306 #define GAAOPTID_key_info 20
307 #define GAAOPTID_smime_to_p7 21
308 #define GAAOPTID_p7_info 22
309 #define GAAOPTID_p12_info 23
310 #define GAAOPTID_crl_info 24
311 #define GAAOPTID_pgp_ring_info 25
312 #define GAAOPTID_pgp_certificate_info 26
313 #define GAAOPTID_certificate_info 27
314 #define GAAOPTID_password 28
315 #define GAAOPTID_load_ca_certificate 29
316 #define GAAOPTID_load_ca_privkey 30
317 #define GAAOPTID_load_certificate 31
318 #define GAAOPTID_load_request 32
319 #define GAAOPTID_load_privkey 33
320 #define GAAOPTID_get_dh_params 34
321 #define GAAOPTID_generate_dh_params 35
322 #define GAAOPTID_verify_crl 36
323 #define GAAOPTID_verify_chain 37
324 #define GAAOPTID_generate_request 38
325 #define GAAOPTID_generate_privkey 39
326 #define GAAOPTID_update_certificate 40
327 #define GAAOPTID_generate_crl 41
328 #define GAAOPTID_generate_proxy 42
329 #define GAAOPTID_generate_certificate 43
330 #define GAAOPTID_generate_self_signed 44
334 #define GAA_CHECK1STR(a,b) \
337 gaa_current_option = a; \
341 #define GAA_CHECKSTR(a,b) \
342 if(strcmp(a,str) == 0) \
344 gaa_current_option = a; \
348 #define GAA_TESTMOREARGS \
351 while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
353 if(gaa_last_non_option == gaa_index) \
354 return GAA_ERROR_NOTENOUGH_ARGS; \
357 #define GAA_TESTMOREOPTIONALARGS \
360 while((gaa_last_non_option != gaa_index) && (gaa_arg_used[gaa_index] == 1)) \
362 if(gaa_last_non_option == gaa_index) \
366 #define GAA_FILL_2ARGS(target, func) \
367 target = func(GAAargv[gaa_index]); \
368 gaa_arg_used[gaa_index] = 1; \
372 return GAA_ERROR_INVALID_ARG; \
377 #define GAA_FILL(target, func, num) \
380 target = func(GAAargv[gaa_index]); \
381 gaa_arg_used[gaa_index] = 1; \
385 return GAA_ERROR_INVALID_ARG; \
394 #define GAA_LIST_FILL(target, func, type ,num) \
399 if ( gaa_last_non_option - gaa_index > 0) \
400 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
401 for(; gaa_index < gaa_last_non_option; gaa_index++) \
403 if(gaa_arg_used[gaa_index] == 0) \
405 GAA_FILL_2ARGS(target[num], func); \
410 return GAA_ERROR_NOTENOUGH_ARGS; \
413 #define GAA_OPTIONALLIST_FILL(target, func, type ,num) \
418 if ( gaa_last_non_option - gaa_index > 0) \
419 target = gaa_malloc((gaa_last_non_option - gaa_index) * sizeof(type));\
420 for(; gaa_index < gaa_last_non_option; gaa_index++) \
422 if(gaa_arg_used[gaa_index] == 0) \
424 GAA_FILL_2ARGS(target[num], func); \
430 #define GAA_OBLIGAT(str) \
432 for(i = 0; i < strlen(str); i++) \
434 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION); \
435 if(j == GAA_ERROR_NOMATCH) \
437 printf("Error: invalid 'obligat' set\n"); \
440 if(opt_list[j] == 1) \
445 if(strlen(str) == 1) \
446 printf("You must give the -%s option\n", str); \
448 printf("You must give at least one option of '%s'\n", str); \
452 #define GAA_INCOMP(str) \
454 for(i = 0; i < strlen(str); i++) \
456 j = gaa_get_option_num(str + i, GAA_LETTER_OPTION); \
457 if(j == GAA_ERROR_NOMATCH) \
459 printf("Error: invalid 'obligat' set\n"); \
462 if(opt_list[j] == 1) \
467 printf("The options '%s' are incompatible\n", str); \
472 static char **GAAargv
;
474 static char *gaa_arg_used
;
475 static int gaa_processing_file
= 0;
476 static int inited
= 0;
478 static int gaa_getint(char *arg
)
482 if(sscanf(arg
, "%d%c", &tmp
, &a
) < 1)
484 printf("Option %s: '%s' isn't an integer\n", gaa_current_option
, arg
);
490 static char gaa_getchar(char *arg
)
494 printf("Option %s: '%s' isn't an character\n", gaa_current_option
, arg
);
500 static char* gaa_getstr(char *arg
)
504 static float gaa_getfloat(char *arg
)
508 if(sscanf(arg
, "%f%c", &tmp
, &a
) < 1)
510 printf("Option %s: '%s' isn't a float number\n", gaa_current_option
, arg
);
515 /* option structures */
517 struct GAAOPTION_debug
523 struct GAAOPTION_template
529 struct GAAOPTION_infile
535 struct GAAOPTION_outfile
541 struct GAAOPTION_bits
547 struct GAAOPTION_hash
553 struct GAAOPTION_password
559 struct GAAOPTION_load_ca_certificate
565 struct GAAOPTION_load_ca_privkey
571 struct GAAOPTION_load_certificate
577 struct GAAOPTION_load_request
583 struct GAAOPTION_load_privkey
590 static int gaa_is_an_argument(char *str
)
593 if(str
[0] == '/' && str
[1] != 0)
594 return GAA_MULTIPLE_OPTION
;
597 return GAA_NOT_AN_OPTION
;
599 return GAA_NOT_AN_OPTION
;
603 return GAA_WORD_OPTION
;
605 return GAA_NOT_AN_OPTION
;
608 return GAA_LETTER_OPTION
;
610 return GAA_MULTIPLE_OPTION
;
613 static int gaa_get_option_num(char *str
, int status
)
617 case GAA_LETTER_OPTION
:
618 GAA_CHECK1STR("d", GAAOPTID_debug
);
619 GAA_CHECK1STR("", GAAOPTID_template
);
620 GAA_CHECK1STR("", GAAOPTID_infile
);
621 GAA_CHECK1STR("", GAAOPTID_outfile
);
622 GAA_CHECK1STR("", GAAOPTID_bits
);
623 GAA_CHECK1STR("", GAAOPTID_hash
);
624 GAA_CHECK1STR("", GAAOPTID_password
);
625 GAA_CHECK1STR("", GAAOPTID_load_ca_certificate
);
626 GAA_CHECK1STR("", GAAOPTID_load_ca_privkey
);
627 GAA_CHECK1STR("", GAAOPTID_load_certificate
);
628 GAA_CHECK1STR("", GAAOPTID_load_request
);
629 GAA_CHECK1STR("", GAAOPTID_load_privkey
);
630 case GAA_MULTIPLE_OPTION
:
632 GAA_CHECK1STR("v", GAAOPTID_version
);
633 GAA_CHECK1STR("h", GAAOPTID_help
);
634 GAA_CHECK1STR("", GAAOPTID_disable_quick_random
);
635 GAA_CHECK1STR("", GAAOPTID_outder
);
636 GAA_CHECK1STR("", GAAOPTID_inder
);
637 GAA_CHECK1STR("", GAAOPTID_export_ciphers
);
638 GAA_CHECK1STR("", GAAOPTID_dsa
);
639 GAA_CHECK1STR("8", GAAOPTID_pkcs8
);
640 GAA_CHECK1STR("", GAAOPTID_to_p8
);
641 GAA_CHECK1STR("", GAAOPTID_to_p12
);
642 GAA_CHECK1STR("", GAAOPTID_v1
);
643 GAA_CHECK1STR("", GAAOPTID_fix_key
);
644 GAA_CHECK1STR("", GAAOPTID_pgp_key_info
);
645 GAA_CHECK1STR("k", GAAOPTID_key_info
);
646 GAA_CHECK1STR("", GAAOPTID_smime_to_p7
);
647 GAA_CHECK1STR("", GAAOPTID_p7_info
);
648 GAA_CHECK1STR("", GAAOPTID_p12_info
);
649 GAA_CHECK1STR("l", GAAOPTID_crl_info
);
650 GAA_CHECK1STR("", GAAOPTID_pgp_ring_info
);
651 GAA_CHECK1STR("", GAAOPTID_pgp_certificate_info
);
652 GAA_CHECK1STR("i", GAAOPTID_certificate_info
);
653 GAA_CHECK1STR("", GAAOPTID_get_dh_params
);
654 GAA_CHECK1STR("", GAAOPTID_generate_dh_params
);
655 GAA_CHECK1STR("", GAAOPTID_verify_crl
);
656 GAA_CHECK1STR("e", GAAOPTID_verify_chain
);
657 GAA_CHECK1STR("q", GAAOPTID_generate_request
);
658 GAA_CHECK1STR("p", GAAOPTID_generate_privkey
);
659 GAA_CHECK1STR("u", GAAOPTID_update_certificate
);
660 GAA_CHECK1STR("", GAAOPTID_generate_crl
);
661 GAA_CHECK1STR("", GAAOPTID_generate_proxy
);
662 GAA_CHECK1STR("c", GAAOPTID_generate_certificate
);
663 GAA_CHECK1STR("s", GAAOPTID_generate_self_signed
);
667 case GAA_WORD_OPTION
:
668 GAA_CHECKSTR("version", GAAOPTID_version
);
669 GAA_CHECKSTR("help", GAAOPTID_help
);
670 GAA_CHECKSTR("debug", GAAOPTID_debug
);
671 GAA_CHECKSTR("template", GAAOPTID_template
);
672 GAA_CHECKSTR("infile", GAAOPTID_infile
);
673 GAA_CHECKSTR("outfile", GAAOPTID_outfile
);
674 GAA_CHECKSTR("disable-quick-random", GAAOPTID_disable_quick_random
);
675 GAA_CHECKSTR("bits", GAAOPTID_bits
);
676 GAA_CHECKSTR("outder", GAAOPTID_outder
);
677 GAA_CHECKSTR("inder", GAAOPTID_inder
);
678 GAA_CHECKSTR("export-ciphers", GAAOPTID_export_ciphers
);
679 GAA_CHECKSTR("hash", GAAOPTID_hash
);
680 GAA_CHECKSTR("dsa", GAAOPTID_dsa
);
681 GAA_CHECKSTR("pkcs8", GAAOPTID_pkcs8
);
682 GAA_CHECKSTR("to-p8", GAAOPTID_to_p8
);
683 GAA_CHECKSTR("to-p12", GAAOPTID_to_p12
);
684 GAA_CHECKSTR("v1", GAAOPTID_v1
);
685 GAA_CHECKSTR("fix-key", GAAOPTID_fix_key
);
686 GAA_CHECKSTR("pgp-key-info", GAAOPTID_pgp_key_info
);
687 GAA_CHECKSTR("key-info", GAAOPTID_key_info
);
688 GAA_CHECKSTR("smime-to-p7", GAAOPTID_smime_to_p7
);
689 GAA_CHECKSTR("p7-info", GAAOPTID_p7_info
);
690 GAA_CHECKSTR("p12-info", GAAOPTID_p12_info
);
691 GAA_CHECKSTR("crl-info", GAAOPTID_crl_info
);
692 GAA_CHECKSTR("pgp-ring-info", GAAOPTID_pgp_ring_info
);
693 GAA_CHECKSTR("pgp-certificate-info", GAAOPTID_pgp_certificate_info
);
694 GAA_CHECKSTR("certificate-info", GAAOPTID_certificate_info
);
695 GAA_CHECKSTR("password", GAAOPTID_password
);
696 GAA_CHECKSTR("load-ca-certificate", GAAOPTID_load_ca_certificate
);
697 GAA_CHECKSTR("load-ca-privkey", GAAOPTID_load_ca_privkey
);
698 GAA_CHECKSTR("load-certificate", GAAOPTID_load_certificate
);
699 GAA_CHECKSTR("load-request", GAAOPTID_load_request
);
700 GAA_CHECKSTR("load-privkey", GAAOPTID_load_privkey
);
701 GAA_CHECKSTR("get-dh-params", GAAOPTID_get_dh_params
);
702 GAA_CHECKSTR("generate-dh-params", GAAOPTID_generate_dh_params
);
703 GAA_CHECKSTR("verify-crl", GAAOPTID_verify_crl
);
704 GAA_CHECKSTR("verify-chain", GAAOPTID_verify_chain
);
705 GAA_CHECKSTR("generate-request", GAAOPTID_generate_request
);
706 GAA_CHECKSTR("generate-privkey", GAAOPTID_generate_privkey
);
707 GAA_CHECKSTR("update-certificate", GAAOPTID_update_certificate
);
708 GAA_CHECKSTR("generate-crl", GAAOPTID_generate_crl
);
709 GAA_CHECKSTR("generate-proxy", GAAOPTID_generate_proxy
);
710 GAA_CHECKSTR("generate-certificate", GAAOPTID_generate_certificate
);
711 GAA_CHECKSTR("generate-self-signed", GAAOPTID_generate_self_signed
);
717 return GAA_ERROR_NOMATCH
;
720 static int gaa_try(int gaa_num
, int gaa_index
, gaainfo
*gaaval
, char *opt_list
)
723 int gaa_last_non_option
;
724 struct GAAOPTION_debug GAATMP_debug
;
725 struct GAAOPTION_template GAATMP_template
;
726 struct GAAOPTION_infile GAATMP_infile
;
727 struct GAAOPTION_outfile GAATMP_outfile
;
728 struct GAAOPTION_bits GAATMP_bits
;
729 struct GAAOPTION_hash GAATMP_hash
;
730 struct GAAOPTION_password GAATMP_password
;
731 struct GAAOPTION_load_ca_certificate GAATMP_load_ca_certificate
;
732 struct GAAOPTION_load_ca_privkey GAATMP_load_ca_privkey
;
733 struct GAAOPTION_load_certificate GAATMP_load_certificate
;
734 struct GAAOPTION_load_request GAATMP_load_request
;
735 struct GAAOPTION_load_privkey GAATMP_load_privkey
;
738 #ifdef GAA_REST_EXISTS
739 struct GAAREST GAAREST_tmp
;
742 opt_list
[gaa_num
] = 1;
744 for(gaa_last_non_option
= gaa_index
;
745 (gaa_last_non_option
!= GAAargc
) && (gaa_is_an_argument(GAAargv
[gaa_last_non_option
]) == GAA_NOT_AN_OPTION
);
746 gaa_last_non_option
++);
748 if(gaa_num
== GAA_REST
)
751 gaa_last_non_option
= GAAargc
;
756 case GAAOPTID_version
:
758 #line 123 "certtool.gaa"
759 { certtool_version(); exit(0); ;};
765 #line 121 "certtool.gaa"
766 { gaa_help(); exit(0); ;};
773 GAA_FILL(GAATMP_debug
.arg1
, gaa_getint
, GAATMP_debug
.size1
);
775 #line 119 "certtool.gaa"
776 { gaaval
->debug
= GAATMP_debug
.arg1
;};
780 case GAAOPTID_template
:
783 GAA_FILL(GAATMP_template
.arg1
, gaa_getstr
, GAATMP_template
.size1
);
785 #line 115 "certtool.gaa"
786 { gaaval
->template = GAATMP_template
.arg1
;};
790 case GAAOPTID_infile
:
793 GAA_FILL(GAATMP_infile
.arg1
, gaa_getstr
, GAATMP_infile
.size1
);
795 #line 112 "certtool.gaa"
796 { gaaval
->infile
= GAATMP_infile
.arg1
;};
800 case GAAOPTID_outfile
:
803 GAA_FILL(GAATMP_outfile
.arg1
, gaa_getstr
, GAATMP_outfile
.size1
);
805 #line 109 "certtool.gaa"
806 { gaaval
->outfile
= GAATMP_outfile
.arg1
;};
810 case GAAOPTID_disable_quick_random
:
812 #line 106 "certtool.gaa"
813 { gaaval
->quick_random
= 0; ;};
820 GAA_FILL(GAATMP_bits
.arg1
, gaa_getint
, GAATMP_bits
.size1
);
822 #line 103 "certtool.gaa"
823 { gaaval
->bits
= GAATMP_bits
.arg1
;};
827 case GAAOPTID_outder
:
829 #line 100 "certtool.gaa"
830 { gaaval
->outcert_format
=1 ;};
836 #line 97 "certtool.gaa"
837 { gaaval
->incert_format
=1 ;};
841 case GAAOPTID_export_ciphers
:
843 #line 94 "certtool.gaa"
844 { gaaval
->export
=1 ;};
851 GAA_FILL(GAATMP_hash
.arg1
, gaa_getstr
, GAATMP_hash
.size1
);
853 #line 91 "certtool.gaa"
854 { gaaval
->hash
= GAATMP_hash
.arg1
;};
860 #line 88 "certtool.gaa"
867 #line 85 "certtool.gaa"
868 { gaaval
->pkcs8
=1 ;};
874 #line 82 "certtool.gaa"
875 { gaaval
->action
= 18; ;};
879 case GAAOPTID_to_p12
:
881 #line 80 "certtool.gaa"
882 { gaaval
->action
= 8; ;};
888 #line 78 "certtool.gaa"
889 { gaaval
->v1_cert
= 1; ;};
893 case GAAOPTID_fix_key
:
895 #line 75 "certtool.gaa"
896 { gaaval
->fix_key
= 1; ;};
900 case GAAOPTID_pgp_key_info
:
902 #line 72 "certtool.gaa"
903 { gaaval
->action
= 20; ;};
907 case GAAOPTID_key_info
:
909 #line 70 "certtool.gaa"
910 { gaaval
->action
= 6; ;};
914 case GAAOPTID_smime_to_p7
:
916 #line 68 "certtool.gaa"
917 { gaaval
->action
= 15; ;};
921 case GAAOPTID_p7_info
:
923 #line 66 "certtool.gaa"
924 { gaaval
->action
= 12; ;};
928 case GAAOPTID_p12_info
:
930 #line 64 "certtool.gaa"
931 { gaaval
->action
= 9; ;};
935 case GAAOPTID_crl_info
:
937 #line 62 "certtool.gaa"
938 { gaaval
->action
= 11; ;};
942 case GAAOPTID_pgp_ring_info
:
944 #line 60 "certtool.gaa"
945 { gaaval
->action
= 21; ;};
949 case GAAOPTID_pgp_certificate_info
:
951 #line 58 "certtool.gaa"
952 { gaaval
->action
= 19; ;};
956 case GAAOPTID_certificate_info
:
958 #line 56 "certtool.gaa"
959 { gaaval
->action
= 2; ;};
963 case GAAOPTID_password
:
966 GAA_FILL(GAATMP_password
.arg1
, gaa_getstr
, GAATMP_password
.size1
);
968 #line 54 "certtool.gaa"
969 { gaaval
->pass
= GAATMP_password
.arg1
;};
973 case GAAOPTID_load_ca_certificate
:
976 GAA_FILL(GAATMP_load_ca_certificate
.arg1
, gaa_getstr
, GAATMP_load_ca_certificate
.size1
);
978 #line 51 "certtool.gaa"
979 { gaaval
->ca
= GAATMP_load_ca_certificate
.arg1
;};
983 case GAAOPTID_load_ca_privkey
:
986 GAA_FILL(GAATMP_load_ca_privkey
.arg1
, gaa_getstr
, GAATMP_load_ca_privkey
.size1
);
988 #line 48 "certtool.gaa"
989 { gaaval
->ca_privkey
= GAATMP_load_ca_privkey
.arg1
;};
993 case GAAOPTID_load_certificate
:
996 GAA_FILL(GAATMP_load_certificate
.arg1
, gaa_getstr
, GAATMP_load_certificate
.size1
);
998 #line 45 "certtool.gaa"
999 { gaaval
->cert
= GAATMP_load_certificate
.arg1
;};
1003 case GAAOPTID_load_request
:
1006 GAA_FILL(GAATMP_load_request
.arg1
, gaa_getstr
, GAATMP_load_request
.size1
);
1008 #line 42 "certtool.gaa"
1009 { gaaval
->request
= GAATMP_load_request
.arg1
;};
1013 case GAAOPTID_load_privkey
:
1016 GAA_FILL(GAATMP_load_privkey
.arg1
, gaa_getstr
, GAATMP_load_privkey
.size1
);
1018 #line 39 "certtool.gaa"
1019 { gaaval
->privkey
= GAATMP_load_privkey
.arg1
;};
1023 case GAAOPTID_get_dh_params
:
1025 #line 36 "certtool.gaa"
1026 { gaaval
->action
=16; ;};
1030 case GAAOPTID_generate_dh_params
:
1032 #line 35 "certtool.gaa"
1033 { gaaval
->action
=10; ;};
1037 case GAAOPTID_verify_crl
:
1039 #line 33 "certtool.gaa"
1040 { gaaval
->action
=14; ;};
1044 case GAAOPTID_verify_chain
:
1046 #line 31 "certtool.gaa"
1047 { gaaval
->action
=5; ;};
1051 case GAAOPTID_generate_request
:
1053 #line 29 "certtool.gaa"
1054 { gaaval
->action
=3; ;};
1058 case GAAOPTID_generate_privkey
:
1060 #line 27 "certtool.gaa"
1061 { gaaval
->action
=1; ;};
1065 case GAAOPTID_update_certificate
:
1067 #line 25 "certtool.gaa"
1068 { gaaval
->action
=7; ;};
1072 case GAAOPTID_generate_crl
:
1074 #line 23 "certtool.gaa"
1075 { gaaval
->action
=13; ;};
1079 case GAAOPTID_generate_proxy
:
1081 #line 21 "certtool.gaa"
1082 { gaaval
->action
=17; ;};
1086 case GAAOPTID_generate_certificate
:
1088 #line 19 "certtool.gaa"
1089 { gaaval
->action
=4; ;};
1093 case GAAOPTID_generate_self_signed
:
1095 #line 17 "certtool.gaa"
1096 { gaaval
->action
=0; ;};
1101 #line 413 "gaa.skel"
1104 return GAA_ERROR_UNKNOWN
;
1107 int gaa(int argc
, char **argv
, gaainfo
*gaaval
)
1116 opt_list
= (char*) gaa_malloc(GAA_NB_OPTION
+ 1);
1118 for(i
= 0; i
< GAA_NB_OPTION
+ 1; i
++)
1120 /* initialization */
1124 #line 125 "certtool.gaa"
1125 { gaaval
->bits
= 2048; gaaval
->pkcs8
= 0; gaaval
->privkey
= NULL
; gaaval
->ca
=NULL
; gaaval
->ca_privkey
= NULL
;
1126 gaaval
->debug
=1; gaaval
->request
= NULL
; gaaval
->infile
= NULL
; gaaval
->outfile
= NULL
; gaaval
->cert
= NULL
;
1127 gaaval
->incert_format
= 0; gaaval
->outcert_format
= 0; gaaval
->action
=-1; gaaval
->pass
= NULL
; gaaval
->v1_cert
= 0;
1128 gaaval
->export
= 0; gaaval
->template = NULL
; gaaval
->hash
=NULL
; gaaval
->fix_key
= 0; gaaval
->quick_random
=1; ;};
1132 #line 438 "gaa.skel"
1133 gaa_arg_used
= NULL
;
1136 gaa_arg_used
= gaa_malloc(argc
* sizeof(char));
1139 for(i
= 1; i
< argc
; i
++)
1140 gaa_arg_used
[i
] = 0;
1141 for(i
= 1; i
< argc
; i
++)
1143 if(gaa_arg_used
[i
] == 0)
1146 tmp1
= gaa_is_an_argument(GAAargv
[i
]);
1149 case GAA_WORD_OPTION
:
1151 case GAA_LETTER_OPTION
:
1153 tmp2
= gaa_get_option_num(argv
[i
]+j
, tmp1
);
1154 if(tmp2
== GAA_ERROR_NOMATCH
)
1156 printf("Invalid option '%s'\n", argv
[i
]+j
);
1159 switch(gaa_try(tmp2
, i
+1, gaaval
, opt_list
))
1161 case GAA_ERROR_NOTENOUGH_ARGS
:
1162 printf("'%s': not enough arguments\n",gaa_current_option
);
1164 case GAA_ERROR_INVALID_ARG
:
1165 printf("Invalid arguments\n");
1170 printf("Unknown error\n");
1172 gaa_arg_used
[i
] = 1;
1174 case GAA_MULTIPLE_OPTION
:
1175 for(j
= 1; j
< strlen(argv
[i
]); j
++)
1177 tmp2
= gaa_get_option_num(argv
[i
]+j
, tmp1
);
1178 if(tmp2
== GAA_ERROR_NOMATCH
)
1180 printf("Invalid option '%c'\n", *(argv
[i
]+j
));
1183 switch(gaa_try(tmp2
, i
+1, gaaval
, opt_list
))
1185 case GAA_ERROR_NOTENOUGH_ARGS
:
1186 printf("'%s': not enough arguments\n",gaa_current_option
);
1188 case GAA_ERROR_INVALID_ARG
:
1189 printf("Invalid arguments\n");
1194 printf("Unknown error\n");
1197 gaa_arg_used
[i
] = 1;
1203 if(gaa_processing_file
== 0)
1206 #line 507 "gaa.skel"
1207 #ifdef GAA_REST_EXISTS
1208 switch(gaa_try(GAA_REST
, 1, gaaval
, opt_list
))
1210 case GAA_ERROR_NOTENOUGH_ARGS
:
1211 printf("Rest: not enough arguments\n");
1213 case GAA_ERROR_INVALID_ARG
:
1214 printf("Invalid arguments\n");
1219 printf("Unknown error\n");
1223 for(i
= 1; i
< argc
; i
++)
1225 if(gaa_arg_used
[i
] == 0)
1227 printf("Too many arguments\n");
1239 struct gaastrnode
*next
;
1242 typedef struct gaastrnode gaa_str_node
;
1244 static int gaa_internal_get_next_str(FILE *file
, gaa_str_node
*tmp_str
, int argc
)
1248 int i
= 0, len
= 0, newline
= 0;
1256 if (a
== EOF
) return 0;
1258 while(a
== ' ' || a
== 9 || a
== '\n')
1266 if (a
== EOF
) return 0;
1269 pos_ini
= ftell(file
) - 1;
1271 while(a
!= ' ' && a
!= 9 && a
!= '\n')
1276 if(a
==EOF
) return 0; //a = ' ';
1280 tmp_str
->str
= gaa_malloc((len
) * sizeof(char));
1284 tmp_str
->str
[0] = '-';
1285 tmp_str
->str
[1] = '-';
1293 fseek(file
,pos_ini
, SEEK_SET
);
1302 tmp_str
->str
[i
] = a
;
1305 while(a
!= ' ' && a
!= 9 && a
!= '\n' && i
< len
);
1307 tmp_str
->str
[i
- 1] = 0;
1309 fseek(file
,- 1, SEEK_CUR
);
1310 /* printf("%d\n", ftell(file)); */
1315 int gaa_file(const char *name
, gaainfo
*gaaval
)
1317 gaa_str_node
*first_str
, **tmp_str
, *tmp_str2
;
1323 gaa_processing_file
= 1;
1325 if((file
= fopen(name
, "r")) == NULL
)
1327 printf("Couldn't open '%s' configuration file for reading\n", name
);
1331 tmp_str
= &first_str
;
1335 *tmp_str
= gaa_malloc(sizeof(gaa_str_node
));
1337 (*tmp_str
)->str
= NULL
;
1338 (*tmp_str
)->next
= NULL
;
1340 rval
= gaa_internal_get_next_str(file
, *tmp_str
, argc
);
1341 tmp_str
= &((*tmp_str
)->next
);
1348 argv
= gaa_malloc((1 + argc
) * sizeof(char*));
1350 tmp_str2
= first_str
;
1352 for(i
= 1; i
< argc
; i
++)
1354 argv
[i
] = tmp_str2
->str
;
1355 tmp_str2
= tmp_str2
->next
;
1358 rval
= gaa(argc
, argv
, gaaval
);
1359 gaa_processing_file
= 0;