diff options
Diffstat (limited to 'tests/spc_pe_image_data.c')
-rw-r--r-- | tests/spc_pe_image_data.c | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/tests/spc_pe_image_data.c b/tests/spc_pe_image_data.c deleted file mode 100644 index a6bff0c..0000000 --- a/tests/spc_pe_image_data.c +++ /dev/null @@ -1,148 +0,0 @@ -/* - * Copyright (C) 2016 Red Hat, Inc. - * - * This file is part of LIBTASN1. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - * - */ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <libtasn1.h> - -int main (int argc, char** argv) -{ - int result = 0, len; - asn1_node definitions = NULL, node1 = NULL; - char errorDescription[ASN1_MAX_ERROR_DESCRIPTION_SIZE]; - const char *choicefile = getenv ("ASN1_MSCAT"); - const char *datafile = getenv ("ASN1_SPC_PE_IMAGE_DATA"); - FILE *fp; - char data[1024]; - int data_size = sizeof (data); - unsigned etype; - int cmp; - - if (choicefile == NULL) { - choicefile = "mscat.asn"; - } - - if (datafile == NULL) { - datafile = "spc_pe_image_data.der"; - } - - result = asn1_parser2tree(choicefile, &definitions, errorDescription); - if (result != ASN1_SUCCESS) { - fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription); - exit (1); - } - - result = asn1_create_element(definitions, - "CATALOG.SpcPEImageData", - &node1); - if (result != ASN1_SUCCESS) { - fprintf(stderr, "error in %d\n", __LINE__); - exit (1); - } - - fp = fopen(datafile, "rb"); - if (fp == NULL) { - fprintf (stderr, "error in %d\n", __LINE__); - exit(1); - } - data_size = fread(data, 1, sizeof(data), fp); - fclose(fp); - - result = asn1_der_decoding2(&node1, - data, - &data_size, - ASN1_DECODE_FLAG_STRICT_DER, - errorDescription); - if (result != ASN1_SUCCESS) { - fprintf(stderr, "error in %d: decoding: %s\n", __LINE__, errorDescription); - exit(1); - } - - len = 0; - result = asn1_read_value_type(node1, - "flags", - NULL, - &len, - &etype); - if (result != ASN1_MEM_ERROR) { - fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription); - exit(1); - } - - if ((size_t)len >= sizeof(data)) { - fprintf(stderr, - "error len=%d, sizeof(data)=%zu\n", - len, - sizeof(data)); - exit(1); - } - - result = asn1_read_value(node1, "flags", data, &len); - if (result != ASN1_SUCCESS) { - fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription); - exit (1); - } - - etype = 0; - len = 0; - result = asn1_read_value_type(node1, "link", NULL, &len, &etype); - if (result != ASN1_MEM_ERROR) - { - fprintf(stderr, - "error in %d: result is: %s\n", - __LINE__, - asn1_strerror(result)); - exit(1); - } - - if (etype != ASN1_ETYPE_CHOICE) { - fprintf(stderr, - "error in %d: The type (%u) doesn't match choice.\n", - __LINE__, - etype); - exit(1); - } - - if (len != 5) { - fprintf (stderr, "length doesn't match the expected (got: %d, should be: 20)\n", len); - exit (1); - } - - len = sizeof(data); - result = asn1_read_value(node1, "link", data, &len); - if (result != ASN1_SUCCESS) { - fprintf(stderr, "error in %d: %s\n", __LINE__, errorDescription); - exit (1); - } - - cmp = memcmp(data, "file", len); - if (cmp != 0) { - fprintf(stderr, "contents don't match\n"); - exit(1); - } - - printf("SUCCESS\n"); - - asn1_delete_structure (&node1); - asn1_delete_structure (&definitions); - - return 0; -} |