blob: f98f5e143bfa547986d6132a7bd3e320e8989f30 [file] [edit]
/*
* Copyright (C) 2006, 2007, 2008, 2009 Free Software Foundation
* Copyright (C) 2002 Fabio Fiorina
*
* 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/>.
*
*/
/*****************************************************/
/* File: Test_tree.c */
/* Description: Test sequences for these functions: */
/* asn1_visit_tree, */
/* asn1_create_structure, */
/* asn1_delete_structure, */
/* asn1_write_value, */
/* asn1_read_value, */
/*****************************************************/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "libtasn1.h"
int
main(int argc,char *argv[])
{
asn1_retCode result;
char buffer[10*1024];
ASN1_TYPE definitions=ASN1_TYPE_EMPTY;
ASN1_TYPE asn1_element=ASN1_TYPE_EMPTY;
char errorDescription[MAX_ERROR_DESCRIPTION_SIZE];
FILE *out, *fd;
ssize_t size;
const char *treefile = getenv ("ASN1PKIX");
const char *indeffile = getenv ("ASN1INDEF");
if (!treefile)
treefile = "pkix.asn";
if (!indeffile)
indeffile = "TestIndef.p12";
printf("\n\n/****************************************/\n");
printf( "/* Test sequence : Test_indefinite */\n");
printf( "/****************************************/\n\n");
printf("ASN1TREE: %s\n", treefile);
/* Check version */
if(asn1_check_version("0.2.11")==NULL)
printf("\nLibrary version check ERROR:\n actual version: %s\n\n",asn1_check_version(NULL));
result=asn1_parser2tree(treefile,&definitions,errorDescription);
if(result!=ASN1_SUCCESS){
asn1_perror(result);
printf("ErrorDescription = %s\n\n",errorDescription);
exit(1);
}
out=stdout;
fd = fopen(indeffile, "rb");
if (fd == NULL) {
printf("Cannot read file %s\n", indeffile);
exit(1);
}
size = fread(buffer, 1, sizeof(buffer), fd);
if (size <= 0) {
printf("Cannot read from file %s\n", indeffile);
exit(1);
}
fclose(fd);
result=asn1_create_element(definitions,"PKIX1.pkcs-12-PFX",&asn1_element);
if (result != ASN1_SUCCESS) {
asn1_perror(result);
printf("Cannot create PKCS12 element\n");
exit(1);
}
result=asn1_der_decoding(&asn1_element,buffer,size,
errorDescription);
if (result != ASN1_SUCCESS) {
asn1_perror(result);
printf("Cannot decode BER data (size %d)\n", size);
exit(1);
}
/* Clear the definition structures */
asn1_delete_structure(&definitions);
asn1_delete_structure(&asn1_element);
if(out != stdout) fclose(out);
exit(0);
}