diff options
author | Simon Josefsson <simon@josefsson.org> | 2009-03-04 17:17:46 +0100 |
---|---|---|
committer | Simon Josefsson <simon@josefsson.org> | 2009-03-04 17:17:46 +0100 |
commit | 45e34b66d1c30727816cca7594b44ea212e47ad4 (patch) | |
tree | c954d417f3b8face79292904dddfe4e08876d93a /src/asn1Decoding.c | |
parent | 7610ca58af3ccc0431e89d6ffd6279f6b10f283b (diff) | |
download | libtasn1-45e34b66d1c30727816cca7594b44ea212e47ad4.tar.gz |
Indent code. Reproduce using 'make indent' with GNU indent 2.2.10.
Diffstat (limited to 'src/asn1Decoding.c')
-rw-r--r-- | src/asn1Decoding.c | 389 |
1 files changed, 203 insertions, 186 deletions
diff --git a/src/asn1Decoding.c b/src/asn1Decoding.c index e38b78f..8aebfc1 100644 --- a/src/asn1Decoding.c +++ b/src/asn1Decoding.c @@ -48,213 +48,230 @@ static const char help_man[] = " -c, --check checks the syntax only\n" " -h, --help display this help and exit\n" " -v, --version output version information and exit.\n" - "\n" - "Report bugs to <" PACKAGE_BUGREPORT ">."; + "\n" "Report bugs to <" PACKAGE_BUGREPORT ">."; /********************************************************/ /* Function : main */ /* Description: */ /********************************************************/ int -main(int argc,char *argv[]) +main (int argc, char *argv[]) { - static struct option long_options[] = - { - {"help", no_argument, 0, 'h'}, - {"version", no_argument, 0, 'v'}, - {"check", no_argument, 0, 'c'}, + static struct option long_options[] = { + {"help", no_argument, 0, 'h'}, + {"version", no_argument, 0, 'v'}, + {"check", no_argument, 0, 'c'}, {0, 0, 0, 0} }; - int option_index = 0; - int option_result; - char *inputFileAsnName=NULL; - char *inputFileDerName=NULL; - char *typeName=NULL; - int checkSyntaxOnly=0; - ASN1_TYPE definitions=ASN1_TYPE_EMPTY; - ASN1_TYPE structure=ASN1_TYPE_EMPTY; - char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; - int asn1_result=ASN1_SUCCESS; - unsigned char *der; - int der_len=0; - /* FILE *outputFile; */ - - set_program_name (argv[0]); - - opterr=0; /* disable error messages from getopt */ - - while(1){ - - option_result=getopt_long(argc,argv,"hvc",long_options,&option_index); - - if(option_result == -1) break; - - switch(option_result){ - case 'h': /* HELP */ - printf("%s\n",help_man); - exit(0); - break; - case 'v': /* VERSION */ - version_etc (stdout, program_name, PACKAGE, VERSION, - "Fabio Fiorina", NULL); - exit(0); - break; - case 'c': /* CHECK SYNTAX */ - checkSyntaxOnly = 1; - break; - case '?': /* UNKNOW OPTION */ - fprintf(stderr,"asn1Decoding: option '%s' not recognized or without argument.\n\n",argv[optind-1]); - printf("%s\n",help_man); - - exit(1); - break; - default: - fprintf(stderr,"asn1Decoding: ?? getopt returned character code Ox%x ??\n",option_result); - } - } - - if(optind == argc){ - fprintf(stderr,"asn1Decoding: input file with ASN1 definitions missing.\n"); - fprintf(stderr," input file with DER coding missing.\n"); - fprintf(stderr," ASN1 type name missing.\n\n"); - printf("%s\n",help_man); - - exit(1); - } - - if(optind == argc-1){ - fprintf(stderr,"asn1Decoding: input file with DER coding missing.\n\n"); - fprintf(stderr," ASN1 type name missing.\n\n"); - printf("%s\n",help_man); - - exit(1); - } - - if(optind == argc-2){ - fprintf(stderr,"asn1Decoding: ASN1 type name missing.\n\n"); - printf("%s\n",help_man); - - exit(1); - } - - inputFileAsnName=(char *)malloc(strlen(argv[optind])+1); - strcpy(inputFileAsnName,argv[optind]); - - inputFileDerName=(char *)malloc(strlen(argv[optind+1])+1); - strcpy(inputFileDerName,argv[optind+1]); - - typeName=(char *)malloc(strlen(argv[optind+2])+1); - strcpy(typeName,argv[optind+2]); - - asn1_result=asn1_parser2tree(inputFileAsnName,&definitions,errorDescription); - - switch(asn1_result){ - case ASN1_SUCCESS: - printf("Parse: done.\n"); - break; - case ASN1_FILE_NOT_FOUND: - printf("asn1Decoding: FILE %s NOT FOUND\n",inputFileAsnName); - break; - case ASN1_SYNTAX_ERROR: - case ASN1_IDENTIFIER_NOT_FOUND: - case ASN1_NAME_TOO_LONG: - printf("asn1Decoding: %s\n",errorDescription); - break; - default: - printf("libtasn1 ERROR: %s\n",asn1_strerror(asn1_result)); - } - - if(asn1_result != ASN1_SUCCESS){ - free(inputFileAsnName); - free(inputFileDerName); - free(typeName); - exit(1); - } - - - { - size_t tmplen; - der = (unsigned char*) read_binary_file (inputFileDerName, &tmplen); - der_len = tmplen; - } - - if(der==NULL){ - printf("asn1Decoding: could not read '%s'\n",inputFileDerName); - asn1_delete_structure(&definitions); - - free(inputFileAsnName); - free(inputFileDerName); - free(typeName); - exit(1); - } + int option_index = 0; + int option_result; + char *inputFileAsnName = NULL; + char *inputFileDerName = NULL; + char *typeName = NULL; + int checkSyntaxOnly = 0; + ASN1_TYPE definitions = ASN1_TYPE_EMPTY; + ASN1_TYPE structure = ASN1_TYPE_EMPTY; + char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; + int asn1_result = ASN1_SUCCESS; + unsigned char *der; + int der_len = 0; + /* FILE *outputFile; */ + + set_program_name (argv[0]); + + opterr = 0; /* disable error messages from getopt */ + + while (1) + { + + option_result = + getopt_long (argc, argv, "hvc", long_options, &option_index); + + if (option_result == -1) + break; + + switch (option_result) + { + case 'h': /* HELP */ + printf ("%s\n", help_man); + exit (0); + break; + case 'v': /* VERSION */ + version_etc (stdout, program_name, PACKAGE, VERSION, + "Fabio Fiorina", NULL); + exit (0); + break; + case 'c': /* CHECK SYNTAX */ + checkSyntaxOnly = 1; + break; + case '?': /* UNKNOW OPTION */ + fprintf (stderr, + "asn1Decoding: option '%s' not recognized or without argument.\n\n", + argv[optind - 1]); + printf ("%s\n", help_man); + + exit (1); + break; + default: + fprintf (stderr, + "asn1Decoding: ?? getopt returned character code Ox%x ??\n", + option_result); + } + } + + if (optind == argc) + { + fprintf (stderr, + "asn1Decoding: input file with ASN1 definitions missing.\n"); + fprintf (stderr, " input file with DER coding missing.\n"); + fprintf (stderr, " ASN1 type name missing.\n\n"); + printf ("%s\n", help_man); + + exit (1); + } + + if (optind == argc - 1) + { + fprintf (stderr, + "asn1Decoding: input file with DER coding missing.\n\n"); + fprintf (stderr, " ASN1 type name missing.\n\n"); + printf ("%s\n", help_man); + + exit (1); + } + + if (optind == argc - 2) + { + fprintf (stderr, "asn1Decoding: ASN1 type name missing.\n\n"); + printf ("%s\n", help_man); + + exit (1); + } + + inputFileAsnName = (char *) malloc (strlen (argv[optind]) + 1); + strcpy (inputFileAsnName, argv[optind]); + + inputFileDerName = (char *) malloc (strlen (argv[optind + 1]) + 1); + strcpy (inputFileDerName, argv[optind + 1]); + + typeName = (char *) malloc (strlen (argv[optind + 2]) + 1); + strcpy (typeName, argv[optind + 2]); + + asn1_result = + asn1_parser2tree (inputFileAsnName, &definitions, errorDescription); + + switch (asn1_result) + { + case ASN1_SUCCESS: + printf ("Parse: done.\n"); + break; + case ASN1_FILE_NOT_FOUND: + printf ("asn1Decoding: FILE %s NOT FOUND\n", inputFileAsnName); + break; + case ASN1_SYNTAX_ERROR: + case ASN1_IDENTIFIER_NOT_FOUND: + case ASN1_NAME_TOO_LONG: + printf ("asn1Decoding: %s\n", errorDescription); + break; + default: + printf ("libtasn1 ERROR: %s\n", asn1_strerror (asn1_result)); + } + + if (asn1_result != ASN1_SUCCESS) + { + free (inputFileAsnName); + free (inputFileDerName); + free (typeName); + exit (1); + } - /*****************************************/ - /* ONLY FOR TEST */ - /*****************************************/ - /* - der_len=0; - outputFile=fopen("data.p12","w"); - while(fscanf(inputFile,"%c",der+der_len) != EOF){ - if((der_len>=0x11) && (der_len<=(0xe70))) - fprintf(outputFile,"%c",der[der_len]); - der_len++; - } - fclose(outputFile); - fclose(inputFile); - */ - - asn1_result=asn1_create_element(definitions,typeName,&structure); + { + size_t tmplen; + der = (unsigned char *) read_binary_file (inputFileDerName, &tmplen); + der_len = tmplen; + } - /* asn1_print_structure(stdout,structure,"",ASN1_PRINT_ALL); */ + if (der == NULL) + { + printf ("asn1Decoding: could not read '%s'\n", inputFileDerName); + asn1_delete_structure (&definitions); + free (inputFileAsnName); + free (inputFileDerName); + free (typeName); + exit (1); + } - if(asn1_result != ASN1_SUCCESS){ - printf("Structure creation: %s\n",asn1_strerror(asn1_result)); - asn1_delete_structure(&definitions); - free(inputFileAsnName); - free(inputFileDerName); - free(typeName); - free(der); - exit(1); - } + /*****************************************/ + /* ONLY FOR TEST */ + /*****************************************/ + /* + der_len=0; + outputFile=fopen("data.p12","w"); + while(fscanf(inputFile,"%c",der+der_len) != EOF){ + if((der_len>=0x11) && (der_len<=(0xe70))) + fprintf(outputFile,"%c",der[der_len]); + der_len++; + } + fclose(outputFile); + fclose(inputFile); + */ - asn1_result=asn1_der_decoding(&structure,der,der_len,errorDescription); - printf("\nDecoding: %s\n",asn1_strerror(asn1_result)); - if(asn1_result != ASN1_SUCCESS) - printf("asn1Decoding: %s\n",errorDescription); + asn1_result = asn1_create_element (definitions, typeName, &structure); - printf("\nDECODING RESULT:\n"); - asn1_print_structure(stdout,structure,"",ASN1_PRINT_NAME_TYPE_VALUE); + /* asn1_print_structure(stdout,structure,"",ASN1_PRINT_ALL); */ - /*****************************************/ - /* ONLY FOR TEST */ - /*****************************************/ - /* - der_len=10000; - option_index=0; - asn1_result=asn1_read_value(structure,"?2.content",der,&der_len); - outputFile=fopen("encryptedData.p12","w"); - while(der_len>0){ - fprintf(outputFile,"%c",der[option_index]); - der_len--; - option_index++; - } - fclose(outputFile); - */ - asn1_delete_structure(&definitions); - asn1_delete_structure(&structure); + if (asn1_result != ASN1_SUCCESS) + { + printf ("Structure creation: %s\n", asn1_strerror (asn1_result)); + asn1_delete_structure (&definitions); - free(der); + free (inputFileAsnName); + free (inputFileDerName); + free (typeName); + free (der); + exit (1); + } - free(inputFileAsnName); - free(inputFileDerName); - free(typeName); + asn1_result = + asn1_der_decoding (&structure, der, der_len, errorDescription); + printf ("\nDecoding: %s\n", asn1_strerror (asn1_result)); + if (asn1_result != ASN1_SUCCESS) + printf ("asn1Decoding: %s\n", errorDescription); - if(asn1_result != ASN1_SUCCESS) - exit(1); + printf ("\nDECODING RESULT:\n"); + asn1_print_structure (stdout, structure, "", ASN1_PRINT_NAME_TYPE_VALUE); - exit(0); + /*****************************************/ + /* ONLY FOR TEST */ + /*****************************************/ + /* + der_len=10000; + option_index=0; + asn1_result=asn1_read_value(structure,"?2.content",der,&der_len); + outputFile=fopen("encryptedData.p12","w"); + while(der_len>0){ + fprintf(outputFile,"%c",der[option_index]); + der_len--; + option_index++; + } + fclose(outputFile); + */ + + asn1_delete_structure (&definitions); + asn1_delete_structure (&structure); + + free (der); + + free (inputFileAsnName); + free (inputFileDerName); + free (typeName); + + if (asn1_result != ASN1_SUCCESS) + exit (1); + + exit (0); } |