2525#include "binhexbin.h"
2626#include "lc_pkcs7_generator.h"
2727#include "lc_pkcs7_parser.h"
28+ #include "lc_status.h"
2829#include "lc_x509_generator.h"
2930#include "lc_x509_generator_helper.h"
3031#include "lc_x509_generator_file_helper.h"
@@ -445,7 +446,7 @@ static int pkcs7_set_data(struct pkcs7_generator_opts *opts)
445446
446447static void pkcs7_generator_usage (void )
447448{
448- fprintf (stderr , "\nLeancrypto X.509 Certificate Generator\n" );
449+ fprintf (stderr , "\nLeancrypto PKCS#7 / CMS Message Generator\n" );
449450
450451 fprintf (stderr , "\nUsage:\n" );
451452 fprintf (stderr , "\t[OPTION]\n" );
@@ -518,6 +519,17 @@ static void pkcs7_generator_usage(void)
518519 fprintf (stderr , "\n\t-h --help\t\t\tPrint this help text\n" );
519520}
520521
522+ static void pkcs7_generator_version (void )
523+ {
524+ char version [500 ];
525+
526+ memset (version , 0 , sizeof (version ));
527+ lc_status (version , sizeof (version ));
528+
529+ fprintf (stderr , "Leancrypto PKCS#7 / CMS Message Generator\n" );
530+ fprintf (stderr , "%s" , version );
531+ }
532+
521533static int pkcs7_collect_signer (struct pkcs7_generator_opts * opts )
522534{
523535 int ret ;
@@ -572,8 +584,9 @@ int main(int argc, char *argv[])
572584 PKCS7_ALLOC
573585 int ret = 0 , opt_index = 0 ;
574586
575- static const char * opts_short = "ho:i:" ;
587+ static const char * opts_short = "ho:i:v " ;
576588 static const struct option opts [] = { { "help" , 0 , 0 , 'h' },
589+ { "version" , 0 , 0 , 'v' },
577590
578591 { "outfile" , 1 , 0 , 'o' },
579592 { "infile" , 1 , 0 , 'i' },
@@ -626,19 +639,23 @@ int main(int argc, char *argv[])
626639 case 0 :
627640 pkcs7_generator_usage ();
628641 goto out ;
642+ /* version */
643+ case 1 :
644+ pkcs7_generator_version ();
645+ goto out ;
629646
630647 /* outfile */
631- case 1 :
648+ case 2 :
632649 CKINT (pkcs7_check_file (optarg ));
633650 parsed_opts .outfile = optarg ;
634651 break ;
635652 /* infile */
636- case 2 :
653+ case 3 :
637654 parsed_opts .infile = optarg ;
638655 break ;
639656
640657 /* md */
641- case 3 :
658+ case 4 :
642659 if (parsed_opts .signer_set ) {
643660 printf ("The option --md must be set before the first signer to take effect\n" );
644661 ret = - EINVAL ;
@@ -649,109 +666,109 @@ int main(int argc, char *argv[])
649666 break ;
650667
651668 /* x509-signer */
652- case 4 :
669+ case 5 :
653670 parsed_opts .x509_signer_file = optarg ;
654671 CKINT (pkcs7_collect_signer (& parsed_opts ));
655672 break ;
656673 /* signer-sk-file */
657- case 5 :
674+ case 6 :
658675 parsed_opts .signer_sk_file = optarg ;
659676 CKINT (pkcs7_collect_signer (& parsed_opts ));
660677 break ;
661678
662679 /* x509-cert */
663- case 6 :
680+ case 7 :
664681 parsed_opts .x509_file = optarg ;
665682 CKINT (pkcs7_collect_x509 (& parsed_opts ));
666683 break ;
667684
668685 /* print */
669- case 7 :
686+ case 8 :
670687 parsed_opts .print_pkcs7 = 1 ;
671688 break ;
672689 /* noout */
673- case 8 :
690+ case 9 :
674691 parsed_opts .noout = 1 ;
675692 break ;
676693 /* print-pkcs7 */
677- case 9 :
694+ case 10 :
678695 parsed_opts .pkcs7_msg = optarg ;
679696 parsed_opts .print_pkcs7 = 1 ;
680697 break ;
681698 /* trust-anchor */
682- case 10 :
699+ case 11 :
683700 parsed_opts .trust_anchor = optarg ;
684701 CKINT (pkcs7_collect_trust (& parsed_opts ));
685702 break ;
686703
687704 /* expected-keyusage */
688- case 11 :
705+ case 12 :
689706 CKINT (lc_x509_name_to_keyusage (
690707 optarg ,
691708 & verify_rules -> required_keyusage ));
692709 parsed_opts .verify_rules_set = 1 ;
693710 break ;
694711 /* expected-eku */
695- case 12 :
712+ case 13 :
696713 CKINT (lc_x509_name_to_eku (
697714 optarg , & verify_rules -> required_eku ));
698715 parsed_opts .verify_rules_set = 1 ;
699716 break ;
700717
701718 /* check-ca */
702- case 13 :
719+ case 14 :
703720 checker_opts -> check_ca = 1 ;
704721 parsed_opts .checker = 1 ;
705722 break ;
706723 /* check-ca-conformant */
707- case 14 :
724+ case 15 :
708725 checker_opts -> check_ca_conformant = 1 ;
709726 parsed_opts .checker = 1 ;
710727 break ;
711728 /* check-issuer-cn */
712- case 15 :
729+ case 16 :
713730 checker_opts -> issuer_cn = optarg ;
714731 parsed_opts .checker = 1 ;
715732 break ;
716733 /* check-subject-cn */
717- case 16 :
734+ case 17 :
718735 checker_opts -> subject_cn = optarg ;
719736 parsed_opts .checker = 1 ;
720737 break ;
721738 /* check-noselfsigned */
722- case 17 :
739+ case 18 :
723740 checker_opts -> check_no_selfsigned = 1 ;
724741 parsed_opts .checker = 1 ;
725742 break ;
726743 /* check-eku */
727- case 18 :
744+ case 19 :
728745 checker_opts -> eku =
729746 (unsigned int )strtoul (optarg , NULL , 10 );
730747 parsed_opts .checker = 1 ;
731748 break ;
732749 /* check-noca */
733- case 19 :
750+ case 20 :
734751 checker_opts -> check_no_ca = 1 ;
735752 parsed_opts .checker = 1 ;
736753 break ;
737754 /* check-selfsigned */
738- case 20 :
755+ case 21 :
739756 checker_opts -> check_selfsigned = 1 ;
740757 parsed_opts .checker = 1 ;
741758 break ;
742759 /* check-rootca */
743- case 21 :
760+ case 22 :
744761 checker_opts -> check_root_ca = 1 ;
745762 parsed_opts .checker = 1 ;
746763 break ;
747764 /* check-keyusage */
748- case 22 :
765+ case 23 :
749766 checker_opts -> keyusage =
750767 (unsigned int )strtoul (optarg , NULL , 10 );
751768 parsed_opts .checker = 1 ;
752769 break ;
753770 /* verify-pkcs7 */
754- case 23 :
771+ case 24 :
755772 parsed_opts .pkcs7_msg = optarg ;
756773 break ;
757774 }
@@ -767,6 +784,9 @@ int main(int argc, char *argv[])
767784 case 'h' :
768785 pkcs7_generator_usage ();
769786 goto out ;
787+ case 'v' :
788+ pkcs7_generator_version ();
789+ goto out ;
770790
771791 default :
772792 pkcs7_generator_usage ();
0 commit comments