1 /* t-reader.c - basic tests for the reader object
2 * Copyright (C) 2017 g10 Code GmbH
4 * This file is part of KSBA.
6 * KSBA is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
11 * KSBA is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, see <http://www.gnu.org/licenses/>.
28 #include <sys/types.h>
31 #include <gpg-error.h>
33 #include "../src/ksba.h"
37 test_fd(const char* path)
39 int fd = open (path, O_RDONLY);
46 perror ("open() failed");
50 if ((err = ksba_reader_new (&reader)))
52 fprintf (stderr, "ksba_reader_new() failed: %s\n", gpg_strerror (err));
56 if ((err = ksba_reader_set_fd (reader, fd)))
58 fprintf (stderr, "ksba_reader_set_fd() failed: %s\n", gpg_strerror (err));
62 if ((err = ksba_cert_new (&cert)))
64 fprintf (stderr, "ksba_cert_new() failed: %s\n", gpg_strerror (err));
68 if ((err = ksba_cert_read_der (cert, reader)))
70 fprintf(stderr, "ksba_cert_read_der() failed: %s\n", gpg_strerror (err));
74 ksba_cert_release (cert);
75 ksba_reader_release (reader);
80 test_file(const char* path)
82 FILE* fp = fopen (path, "r");
89 perror ("fopen() failed");
93 if ((err = ksba_reader_new (&reader)))
95 fprintf (stderr, "ksba_reader_new() failed: %s\n", gpg_strerror (err));
99 if ((err = ksba_reader_set_file (reader, fp)))
101 fprintf (stderr, "ksba_reader_set_fd() failed: %s\n", gpg_strerror (err));
105 if ((err = ksba_cert_new (&cert)))
107 fprintf (stderr, "ksba_cert_new() failed: %s\n", gpg_strerror (err));
111 if ((err = ksba_cert_read_der (cert, reader)))
113 fprintf(stderr, "ksba_cert_read_der() failed: %s\n", gpg_strerror (err));
117 ksba_cert_release (cert);
118 ksba_reader_release (reader);
123 test_mem(const char* path)
125 int fd = open (path, O_RDONLY);
127 ksba_reader_t reader;
136 perror ("fopen() failed");
142 fprintf (stderr, "fstat() failed: %s\n", gpg_strerror (err));
146 mem = xmalloc(st.st_size);
148 while (p < st.st_size && (ret = read(fd, mem + p, st.st_size - p)))
152 fprintf (stderr, "read() failed: %s\n", gpg_strerror (err));
158 if ((err = ksba_reader_new (&reader)))
163 if ((err = ksba_reader_set_mem (reader, mem, st.st_size)))
165 fprintf (stderr, "ksba_reader_set_mem() failed: %s\n", gpg_strerror (err));
169 if ((err = ksba_cert_new (&cert)))
171 fprintf (stderr, "ksba_cert_new() failed: %s\n", gpg_strerror (err));
175 if ((err = ksba_cert_read_der (cert, reader)))
177 fprintf(stderr, "ksba_cert_read_der() failed: %s\n", gpg_strerror (err));
181 ksba_cert_release (cert);
182 ksba_reader_release (reader);
188 main (int argc, char **argv)
192 char *fname = prepend_srcdir ("samples/cert_g10code_test1.der");
202 for (i = 1; i < argc; ++i)