Hi,

This patch adds a -hex option to the rand app. E.g.

$ openssl rand -hex 8
d203552d5eb39e76

Patch is from Matthieu Herrb (matth...@openbsd.org) via OpenBSD CVS.

-d

Index: apps/rand.c
===================================================================
RCS file: /cvs/src/lib/libssl/src/apps/rand.c,v
retrieving revision 1.1.1.3
retrieving revision 1.6
diff -u -p -r1.1.1.3 -r1.6
--- apps/rand.c 6 Sep 2008 12:15:38 -0000       1.1.1.3
+++ apps/rand.c 6 Sep 2008 12:17:47 -0000       1.6
@@ -69,6 +69,7 @@
 /* -out file         - write to file
  * -rand file:file   - PRNG seed files
  * -base64           - encode output
+ * -hex                     - hex encode output
  * num               - write 'num' bytes
  */
 
@@ -84,6 +85,7 @@ int MAIN(int argc, char **argv)
        char *outfile = NULL;
        char *inrand = NULL;
        int base64 = 0;
+       int hex = 0;
        BIO *out = NULL;
        int num = -1;
 #ifndef OPENSSL_NO_ENGINE
@@ -133,6 +135,13 @@ int MAIN(int argc, char **argv)
                        else
                                badopt = 1;
                        }
+               else if (strcmp(argv[i], "-hex") == 0)
+                       {
+                       if (!hex)
+                               hex = 1;
+                       else
+                               badopt = 1;
+                       }
                else if (isdigit((unsigned char)argv[i][0]))
                        {
                        if (num < 0)
@@ -148,6 +157,9 @@ int MAIN(int argc, char **argv)
                        badopt = 1;
                }
 
+       if (hex && base64)
+               badopt = 1;
+
        if (num < 0)
                badopt = 1;
        
@@ -161,6 +173,7 @@ int MAIN(int argc, char **argv)
 #endif
                BIO_printf(bio_err, "-rand file%cfile%c... - seed PRNG from 
files\n", LIST_SEPARATOR_CHAR, LIST_SEPARATOR_CHAR);
                BIO_printf(bio_err, "-base64               - encode output\n");
+               BIO_printf(bio_err, "-hex                  - hex encode 
output\n");
                goto err;
                }
 
@@ -210,7 +223,13 @@ int MAIN(int argc, char **argv)
                r = RAND_bytes(buf, chunk);
                if (r <= 0)
                        goto err;
-               BIO_write(out, buf, chunk);
+               if (!hex) 
+                       BIO_write(out, buf, chunk);
+               else {
+                       int i;
+                       for (i = 0; i < chunk; i++)
+                               BIO_printf(out, "%02x", buf[i]);
+               }
                num -= chunk;
                }
        (void)BIO_flush(out);

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to