1/*
2 * parseCrl.cpp - CL-based cert parser.
3 *
4 * See oidParser.h for info on config file.
5 */
6#include <security_cdsa_utils/cuPrintCert.h>
7#include <security_cdsa_utils/cuFileIo.h>
8#include <stdlib.h>
9#include <stdio.h>
10#include <string.h>
11
12static void usage(char **argv)
13{
14	printf("Usage: %s crlFile [l=loops]\n", argv[0]);
15	exit(1);
16}
17
18int main(int argc, char **argv)
19{
20	unsigned char *rawCrl = NULL;
21	unsigned rawCrlSize;
22	int rtn;
23	int loops = 1;
24	int loop;
25	CSSM_BOOL verbose = CSSM_FALSE;
26
27	if(argc < 2) {
28		usage(argv);
29	}
30
31	for(int arg=2; arg<argc; arg++) {
32		switch(argv[arg][0]) {
33			case 'l':
34				loops = atoi(&argv[arg][2]);
35				break;
36			case 'v':
37				verbose = CSSM_TRUE;
38				break;
39			default:
40				usage(argv);
41		}
42	}
43
44	rtn = readFile(argv[1], &rawCrl, &rawCrlSize);
45	if(rtn) {
46		printf("Error reading %s; %s\n", argv[1], strerror(rtn));
47		exit(1);
48	}
49
50	/* optional loop for malloc debug */
51	for(loop=0; loop<loops; loop++) {
52		printCrl(rawCrl, rawCrlSize, verbose);
53		if(loops != 1) {
54			fpurge(stdin);
55			printf("CR to continue, q to quit: ");
56			char c = getchar();
57			if(c == 'q') {
58				break;
59			}
60		}
61	}
62	return 0;
63}
64
65