Index: openssl/apps/enc.c |
=================================================================== |
--- openssl/apps/enc.c (revision 105093) |
+++ openssl/apps/enc.c (working copy) |
@@ -67,6 +67,7 @@ |
#include <openssl/x509.h> |
#include <openssl/rand.h> |
#include <openssl/pem.h> |
+#include <openssl/comp.h> |
#include <ctype.h> |
int set_hex(char *in,unsigned char *out,int size); |
@@ -100,9 +101,6 @@ |
int MAIN(int argc, char **argv) |
{ |
-#ifndef OPENSSL_NO_ENGINE |
- ENGINE *e = NULL; |
-#endif |
static const char magic[]="Salted__"; |
char mbuf[sizeof magic-1]; |
char *strbuf=NULL; |
@@ -116,6 +114,10 @@ |
char *hkey=NULL,*hiv=NULL,*hsalt = NULL; |
char *md=NULL; |
int enc=1,printkey=0,i,base64=0; |
+#ifdef ZLIB |
+ int do_zlib=0; |
+ BIO *bzl = NULL; |
+#endif |
int debug=0,olb64=0,nosalt=0; |
const EVP_CIPHER *cipher=NULL,*c; |
EVP_CIPHER_CTX *ctx = NULL; |
@@ -127,7 +129,6 @@ |
char *engine = NULL; |
#endif |
const EVP_MD *dgst=NULL; |
- int non_fips_allow = 0; |
apps_startup(); |
@@ -142,9 +143,18 @@ |
program_name(argv[0],pname,sizeof pname); |
if (strcmp(pname,"base64") == 0) |
base64=1; |
+#ifdef ZLIB |
+ if (strcmp(pname,"zlib") == 0) |
+ do_zlib=1; |
+#endif |
cipher=EVP_get_cipherbyname(pname); |
+#ifdef ZLIB |
+ if (!do_zlib && !base64 && (cipher == NULL) |
+ && (strcmp(pname,"enc") != 0)) |
+#else |
if (!base64 && (cipher == NULL) && (strcmp(pname,"enc") != 0)) |
+#endif |
{ |
BIO_printf(bio_err,"%s is an unknown cipher\n",pname); |
goto bad; |
@@ -200,6 +210,10 @@ |
base64=1; |
else if (strcmp(*argv,"-base64") == 0) |
base64=1; |
+#ifdef ZLIB |
+ else if (strcmp(*argv,"-z") == 0) |
+ do_zlib=1; |
+#endif |
else if (strcmp(*argv,"-bufsize") == 0) |
{ |
if (--argc < 1) goto bad; |
@@ -267,8 +281,6 @@ |
if (--argc < 1) goto bad; |
md= *(++argv); |
} |
- else if (strcmp(*argv,"-non-fips-allow") == 0) |
- non_fips_allow = 1; |
else if ((argv[0][0] == '-') && |
((c=EVP_get_cipherbyname(&(argv[0][1]))) != NULL)) |
{ |
@@ -291,9 +303,11 @@ |
BIO_printf(bio_err,"%-14s passphrase is the first line of the file argument\n","-kfile"); |
BIO_printf(bio_err,"%-14s the next argument is the md to use to create a key\n","-md"); |
BIO_printf(bio_err,"%-14s from a passphrase. One of md2, md5, sha or sha1\n",""); |
+ BIO_printf(bio_err,"%-14s salt in hex is the next argument\n","-S"); |
BIO_printf(bio_err,"%-14s key/iv in hex is the next argument\n","-K/-iv"); |
BIO_printf(bio_err,"%-14s print the iv/key (then exit if -P)\n","-[pP]"); |
BIO_printf(bio_err,"%-14s buffer size\n","-bufsize <n>"); |
+ BIO_printf(bio_err,"%-14s disable standard block padding\n","-nopad"); |
#ifndef OPENSSL_NO_ENGINE |
BIO_printf(bio_err,"%-14s use engine e, possibly a hardware device.\n","-engine e"); |
#endif |
@@ -311,7 +325,7 @@ |
} |
#ifndef OPENSSL_NO_ENGINE |
- e = setup_engine(bio_err, engine, 0); |
+ setup_engine(bio_err, engine, 0); |
#endif |
if (md && (dgst=EVP_get_digestbyname(md)) == NULL) |
@@ -322,10 +336,7 @@ |
if (dgst == NULL) |
{ |
- if (in_FIPS_mode) |
- dgst = EVP_sha1(); |
- else |
- dgst = EVP_md5(); |
+ dgst = EVP_md5(); |
} |
if (bufsize != NULL) |
@@ -382,8 +393,10 @@ |
if (inf == NULL) |
{ |
+#ifndef OPENSSL_NO_SETVBUF_IONBF |
if (bufsize != NULL) |
setvbuf(stdin, (char *)NULL, _IONBF, 0); |
+#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */ |
BIO_set_fp(in,stdin,BIO_NOCLOSE); |
} |
else |
@@ -436,8 +449,10 @@ |
if (outf == NULL) |
{ |
BIO_set_fp(out,stdout,BIO_NOCLOSE); |
+#ifndef OPENSSL_NO_SETVBUF_IONBF |
if (bufsize != NULL) |
setvbuf(stdout, (char *)NULL, _IONBF, 0); |
+#endif /* ndef OPENSSL_NO_SETVBUF_IONBF */ |
#ifdef OPENSSL_SYS_VMS |
{ |
BIO *tmpbio = BIO_new(BIO_f_linebuffer()); |
@@ -457,6 +472,19 @@ |
rbio=in; |
wbio=out; |
+#ifdef ZLIB |
+ |
+ if (do_zlib) |
+ { |
+ if ((bzl=BIO_new(BIO_f_zlib())) == NULL) |
+ goto end; |
+ if (enc) |
+ wbio=BIO_push(bzl,wbio); |
+ else |
+ rbio=BIO_push(bzl,rbio); |
+ } |
+#endif |
+ |
if (base64) |
{ |
if ((b64=BIO_new(BIO_f_base64())) == NULL) |
@@ -561,11 +589,6 @@ |
*/ |
BIO_get_cipher_ctx(benc, &ctx); |
- |
- if (non_fips_allow) |
- EVP_CIPHER_CTX_set_flags(ctx, |
- EVP_CIPH_FLAG_NON_FIPS_ALLOW); |
- |
if (!EVP_CipherInit_ex(ctx, cipher, NULL, NULL, NULL, enc)) |
{ |
BIO_printf(bio_err, "Error setting cipher %s\n", |
@@ -656,6 +679,9 @@ |
if (out != NULL) BIO_free_all(out); |
if (benc != NULL) BIO_free(benc); |
if (b64 != NULL) BIO_free(b64); |
+#ifdef ZLIB |
+ if (bzl != NULL) BIO_free(bzl); |
+#endif |
if(pass) OPENSSL_free(pass); |
apps_shutdown(); |
OPENSSL_EXIT(ret); |