diff options
author | Ben Laurie <ben@openssl.org> | 1999-11-30 21:15:19 +0100 |
---|---|---|
committer | Ben Laurie <ben@openssl.org> | 1999-11-30 21:15:19 +0100 |
commit | fea9afbfc7005fb85ab470546fb15f8a76055e7e (patch) | |
tree | c21cdd5e7807d990c7fc12765ad37d7f11528aad /apps/enc.c | |
parent | Document the extension tests performed by the -purpose test (diff) | |
download | openssl-fea9afbfc7005fb85ab470546fb15f8a76055e7e.tar.xz openssl-fea9afbfc7005fb85ab470546fb15f8a76055e7e.zip |
Make salting the default. Fail gracefully if the input is not salted.
Diffstat (limited to 'apps/enc.c')
-rw-r--r-- | apps/enc.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/apps/enc.c b/apps/enc.c index d2d8aa0c37..e584241bf1 100644 --- a/apps/enc.c +++ b/apps/enc.c @@ -82,6 +82,8 @@ int set_hex(char *in,unsigned char *out,int size); int MAIN(int argc, char **argv) { + static const char magic[]="Salted__"; + char mbuf[8]; /* should be 1 smaller than magic */ char *strbuf=NULL; unsigned char *buff=NULL,*bufsize=NULL; int bsize=BSIZE,verbose=0; @@ -91,7 +93,7 @@ int MAIN(int argc, char **argv) char *str=NULL; char *hkey=NULL,*hiv=NULL,*hsalt = NULL; int enc=1,printkey=0,i,base64=0; - int debug=0,olb64=0,nosalt=1; + int debug=0,olb64=0,nosalt=0; const EVP_CIPHER *cipher=NULL,*c; char *inf=NULL,*outf=NULL; BIO *in=NULL,*out=NULL,*b64=NULL,*benc=NULL,*rbio=NULL,*wbio=NULL; @@ -448,17 +450,26 @@ bad: } } else RAND_bytes(salt, PKCS5_SALT_LEN); /* If -P option then don't bother writing */ - if((printkey != 2) && (BIO_write(wbio, - (char *)salt, - PKCS5_SALT_LEN) != PKCS5_SALT_LEN)) { + if((printkey != 2) + && (BIO_write(wbio,magic, + sizeof magic-1) != sizeof magic-1 + || BIO_write(wbio, + (char *)salt, + PKCS5_SALT_LEN) != PKCS5_SALT_LEN)) { BIO_printf(bio_err,"error writing output file\n"); goto end; } - } else if(BIO_read(rbio, (unsigned char *)salt, + } else if(BIO_read(rbio,mbuf,sizeof mbuf) != sizeof mbuf + || BIO_read(rbio, + (unsigned char *)salt, PKCS5_SALT_LEN) != PKCS5_SALT_LEN) { BIO_printf(bio_err,"error reading input file\n"); goto end; + } else if(memcmp(mbuf,magic,sizeof magic-1)) { + BIO_printf(bio_err,"bad magic number\n"); + goto end; } + sptr = salt; } |