Add missing '#ifndef OPENSSL_NO_DSA'.
[openssl.git] / apps / enc.c
index c319f546d8c9ab04d92f8dfb558dca1cf68dd284..332c2ba9dae4194954dd9b6da11c31d5c2a7ffe8 100644 (file)
 #include <openssl/objects.h>
 #include <openssl/x509.h>
 #include <openssl/rand.h>
-#ifndef NO_MD5
+#ifndef OPENSSL_NO_MD5
 #include <openssl/md5.h>
 #endif
 #include <openssl/pem.h>
 #include <openssl/engine.h>
+#include <ctype.h>
 
 int set_hex(char *in,unsigned char *out,int size);
 #undef SIZE
@@ -81,6 +82,24 @@ int set_hex(char *in,unsigned char *out,int size);
 #define BSIZE  (8*1024)
 #define        PROG    enc_main
 
+void show_ciphers(const OBJ_NAME *name,void *bio_)
+       {
+       BIO *bio=bio_;
+       static int n;
+
+       if(!islower((unsigned char)*name->name))
+               return;
+
+       BIO_printf(bio,"-%-25s",name->name);
+       if(++n == 3)
+               {
+               BIO_printf(bio,"\n");
+               n=0;
+               }
+       else
+               BIO_printf(bio," ");
+       }
+
 int MAIN(int, char **);
 
 int MAIN(int argc, char **argv)
@@ -92,6 +111,7 @@ int MAIN(int argc, char **argv)
        unsigned char *buff=NULL,*bufsize=NULL;
        int bsize=BSIZE,verbose=0;
        int ret=1,inl;
+       int nopad = 0;
        unsigned char key[EVP_MAX_KEY_LENGTH],iv[EVP_MAX_IV_LENGTH];
        unsigned char salt[PKCS5_SALT_LEN];
        char *str=NULL, *passarg = NULL, *pass = NULL;
@@ -155,6 +175,8 @@ int MAIN(int argc, char **argv)
                        printkey=1;
                else if (strcmp(*argv,"-v") == 0)
                        verbose=1;
+               else if (strcmp(*argv,"-nopad") == 0)
+                       nopad=1;
                else if (strcmp(*argv,"-salt") == 0)
                        nosalt=0;
                else if (strcmp(*argv,"-nosalt") == 0)
@@ -252,76 +274,11 @@ bad:
                        BIO_printf(bio_err,"%-14s use engine e, possibly a hardware device.\n","-engine e");
 
                        BIO_printf(bio_err,"Cipher Types\n");
-                       BIO_printf(bio_err,"des     : 56 bit key DES encryption\n");
-                       BIO_printf(bio_err,"des_ede :112 bit key ede DES encryption\n");
-                       BIO_printf(bio_err,"des_ede3:168 bit key ede DES encryption\n");
-#ifndef NO_IDEA
-                       BIO_printf(bio_err,"idea    :128 bit key IDEA encryption\n");
-#endif
-#ifndef NO_RC4
-                       BIO_printf(bio_err,"rc2     :128 bit key RC2 encryption\n");
-#endif
-#ifndef NO_BF
-                       BIO_printf(bio_err,"bf      :128 bit key Blowfish encryption\n");
-#endif
-#ifndef NO_RC4
-                       BIO_printf(bio_err," -%-5s :128 bit key RC4 encryption\n",
-                               LN_rc4);
-#endif
+                       OBJ_NAME_do_all_sorted(OBJ_NAME_TYPE_CIPHER_METH,
+                                              show_ciphers,
+                                              bio_err);
+                       BIO_printf(bio_err,"\n");
 
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_des_ecb,LN_des_cbc,
-                               LN_des_cfb64,LN_des_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n",
-                               "des", LN_des_cbc);
-
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_des_ede,LN_des_ede_cbc,
-                               LN_des_ede_cfb64,LN_des_ede_ofb64);
-                       BIO_printf(bio_err," -desx -none\n");
-
-
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_des_ede3,LN_des_ede3_cbc,
-                               LN_des_ede3_cfb64,LN_des_ede3_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n",
-                               "des3", LN_des_ede3_cbc);
-
-#ifndef NO_IDEA
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_idea_ecb, LN_idea_cbc,
-                               LN_idea_cfb64, LN_idea_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n","idea",LN_idea_cbc);
-#endif
-#ifndef NO_RC2
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_rc2_ecb, LN_rc2_cbc,
-                               LN_rc2_cfb64, LN_rc2_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n","rc2", LN_rc2_cbc);
-#endif
-#ifndef NO_BF
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_bf_ecb, LN_bf_cbc,
-                               LN_bf_cfb64, LN_bf_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n","bf", LN_bf_cbc);
-#endif
-#ifndef NO_CAST
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_cast5_ecb, LN_cast5_cbc,
-                               LN_cast5_cfb64, LN_cast5_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n","cast", LN_cast5_cbc);
-#endif
-#ifndef NO_RC5
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s",
-                               LN_rc5_ecb, LN_rc5_cbc,
-                               LN_rc5_cfb64, LN_rc5_ofb64);
-                       BIO_printf(bio_err," -%-4s (%s)\n","rc5", LN_rc5_cbc);
-#endif
-#ifndef NO_RIJNDAEL
-                       BIO_printf(bio_err," -%-12s -%-12s -%-12s -%-12s\n",
-                                  LN_rijndael_ecb_k128_b128,"","","","");
-#endif
-                       
                        goto end;
                        }
                argc--;
@@ -450,7 +407,7 @@ bad:
        if (outf == NULL)
                {
                BIO_set_fp(out,stdout,BIO_NOCLOSE);
-#ifdef VMS
+#ifdef OPENSSL_SYS_VMS
                {
                BIO *tmpbio = BIO_new(BIO_f_linebuffer());
                out = BIO_push(tmpbio, out);
@@ -488,6 +445,9 @@ bad:
 
        if (cipher != NULL)
                {
+               /* Note that str is NULL if a key was passed on the command
+                * line, so we get no salt in that case. Is this a bug?
+                */
                if (str != NULL)
                        {
                        /* Salt handling: if encrypting generate a salt and
@@ -556,6 +516,12 @@ bad:
                if ((benc=BIO_new(BIO_f_cipher())) == NULL)
                        goto end;
                BIO_set_cipher(benc,cipher,key,iv,enc);
+               if (nopad)
+                       {
+                       EVP_CIPHER_CTX *ctx;
+                       BIO_get_cipher_ctx(benc, &ctx);
+                       EVP_CIPHER_CTX_set_padding(ctx, 0);
+                       }
                if (debug)
                        {
                        BIO_set_callback(benc,BIO_debug_callback);