SUBDIRS = srp x509 openpgp cfg
-INCLUDES = -I../lib -I../libtasn1/lib -I../includes $(LIBOPENCDK_CFLAGS) -Icfg/
+INCLUDES = -I../lib -I../libtasn1/lib -I../includes $(LIBOPENCDK_CFLAGS) \
+ -I../gl -Icfg/
bin_PROGRAMS = gnutls-serv gnutls-cli srptool gnutls-cli-debug certtool
gnutls_serv_SOURCES = serv-gaa.c serv.c common.c
/*
+ * Copyright (C) 2004 Simon Josefsson
* Copyright (C) 2003 Nikos Mavroyanopoulos
* Copyright (C) 2004 Free Software Foundation
*
#include <getpass.h>
#include <certtool-cfg.h>
+/* Gnulib portability files. */
+#include <getline.h>
+#include <error.h>
+#include <exit.h>
+
static void print_crl_info(gnutls_x509_crl crl, FILE * out, int all);
int generate_prime(int bits);
void pkcs7_info(void);
+void smime_to_pkcs7(void);
void pkcs12_info(void);
void generate_pkcs12(void);
void verify_chain(void);
case 14:
verify_crl();
break;
+ case 15:
+ smime_to_pkcs7();
+ break;
default:
fprintf(stderr, "GnuTLS' certtool utility.\n");
fprintf(stderr,
}
+void smime_to_pkcs7(void)
+{
+ size_t linesize = 0;
+ char *lineptr = NULL;
+ ssize_t len;
+
+ /* Find body. FIXME: Handle non-b64 Content-Transfer-Encoding.
+ Reject non-S/MIME tagged Content-Type's? */
+ do
+ {
+ len = getline (&lineptr, &linesize, infile);
+ if (len == -1)
+ error (EXIT_FAILURE, 0, "Cannot find RFC 2822 header/body separator");
+ }
+ while (strcmp (lineptr, "\r\n") != 0);
+
+ do
+ {
+ len = getline (&lineptr, &linesize, infile);
+ if (len == -1)
+ error (EXIT_FAILURE, 0, "Message has RFC 2822 header but no body");
+ }
+ while (strcmp (lineptr, "\r\n") == 0);
+
+ printf ("-----BEGIN PKCS7-----\n");
+
+ do
+ {
+ if (strcmp (lineptr, "\r\n") != 0)
+ printf("%s", lineptr);
+ len = getline (&lineptr, &linesize, infile);
+ }
+ while (len != -1);
+
+ printf ("-----END PKCS7-----\n");
+
+ free (lineptr);
+}
+
#else /* ENABLE_PKI */
#include <stdio.h>
option (p7-info) { $action = 12; } "Print information on a PKCS #7 structure."
+option (smime-to-p7) { $action = 15; } "Convert S/MIME to PKCS #7 structure."
+
option (k, key-info) { $action = 6; } "Print information on a private key."
option (to-p12) { $action = 8; } "Generate a PKCS #12 structure."