From e8dae74ccb9d32959f2d10ddaed97f0216842882 Mon Sep 17 00:00:00 2001 From: Peter Palfrader Date: Thu, 19 Oct 2006 12:52:53 +0000 Subject: [PATCH] id_to_fp: Support reading from stdin svn:r8751 --- contrib/id_to_fp.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/contrib/id_to_fp.c b/contrib/id_to_fp.c index e6f9f46279..73395e16c1 100644 --- a/contrib/id_to_fp.c +++ b/contrib/id_to_fp.c @@ -13,6 +13,7 @@ #include #include +#include #define die(s) do { fprintf(stderr, "%s\n", s); goto err; } while (0) @@ -26,11 +27,24 @@ main(int argc, char **argv) unsigned char digest[20]; int status = 1; - if (argc != 2) - die("I want a filename"); - if (!(b = BIO_new_file(argv[1], "r"))) - die("couldn't open file"); - + if (argc < 2) { + fprintf(stderr, "Reading key from stdin...\n"); + if (!(b = BIO_new_fp(stdin, BIO_NOCLOSE))) + die("couldn't read from stdin"); + } else if (argc == 2) { + if (strcmp(argv[1], "-h") == 0 || + strcmp(argv[1], "--help") == 0) { + fprintf(stdout, "Usage: %s [keyfile]\n", argv[0]); + status = 0; + goto err; + } else { + if (!(b = BIO_new_file(argv[1], "r"))) + die("couldn't open file"); + } + } else { + fprintf(stderr, "Usage: %s [keyfile]\n", argv[0]); + goto err; + } if (!(key = PEM_read_bio_RSAPrivateKey(b, NULL, NULL, NULL))) die("couldn't parse key");