diff --git a/doc/tools/pkcs15-crypt.1.xml b/doc/tools/pkcs15-crypt.1.xml index 40dd262b..5418d4b1 100644 --- a/doc/tools/pkcs15-crypt.1.xml +++ b/doc/tools/pkcs15-crypt.1.xml @@ -62,7 +62,8 @@ file, file - Specifies the input file to use. + Specifies the input file to use. Defaults to stdin if + not specified. @@ -78,7 +79,8 @@ file, file - Any output will be sent to the specified file. + Any output will be sent to the specified file. Defaults + to stdout if not specified. diff --git a/src/tools/pkcs15-crypt.c b/src/tools/pkcs15-crypt.c index 9bdd2c3a..76b72737 100644 --- a/src/tools/pkcs15-crypt.c +++ b/src/tools/pkcs15-crypt.c @@ -88,8 +88,8 @@ static const char *option_help[] = { "Decipher operation", "Selects the private key ID to use", "Uses reader number ", - "Selects the input file to use", - "Outputs to file ", + "Selects the input file to use (defaults to stdin)", + "Outputs to file (defaults to stdout)", "Format for ECDSA signature : 'rs' (default), 'sequence', 'openssl'", "Outputs raw 8 bit data", "Input file is a SHA-1 hash", @@ -157,13 +157,19 @@ static int read_input(u8 *buf, int buflen) FILE *inf; int c; - inf = fopen(opt_input, "rb"); - if (inf == NULL) { - fprintf(stderr, "Unable to open '%s' for reading.\n", opt_input); - return -1; + if (opt_input==NULL) { + inf = stdin; + } else { + inf = fopen(opt_input, "rb"); + if (inf == NULL) { + fprintf(stderr, "Unable to open '%s' for reading.\n", opt_input); + return -1; + } } c = fread(buf, 1, buflen, inf); - fclose(inf); + if (inf!=stdin) { + fclose(inf); + } if (c < 0) { perror("read"); return -1; @@ -203,8 +209,7 @@ static int sign(struct sc_pkcs15_object *obj) int r, c, len; if (opt_input == NULL) { - fprintf(stderr, "No input file specified.\n"); - return 2; + fprintf(stderr, "No input file specified. Reading from stdin\n"); } c = read_input(buf, sizeof(buf)); @@ -258,8 +263,7 @@ static int decipher(struct sc_pkcs15_object *obj) int r, c, len; if (opt_input == NULL) { - fprintf(stderr, "No input file specified.\n"); - return 2; + fprintf(stderr, "No input file specified. Reading from stdin\n"); } c = read_input(buf, sizeof(buf)); if (c < 0)