diff options
| author | Sebastian Leske <sebastian.leske@sleske.name> | 2017-11-02 08:04:10 +0100 |
|---|---|---|
| committer | Sebastian Leske <sebastian.leske@sleske.name> | 2017-11-03 00:04:24 +0100 |
| commit | 0621e4d79f5d89518d451969cc6b4b280ff0ab79 (patch) | |
| tree | 77880f61bee039d7be05f618002248346b5ad6a8 /navit/maptool | |
| parent | 2b6c039494b54c4ef88f69e2b89388a1050912e3 (diff) | |
| download | navit-0621e4d79f5d89518d451969cc6b4b280ff0ab79.tar.gz | |
Fix:core:Remove binfile map encryption support
Remove support for decrypting an encrypted binfile map. The feature is
not used, and removing it will let us remove the problematic dependency
on OpenSSL (see trac 1350).
Diffstat (limited to 'navit/maptool')
| -rw-r--r-- | navit/maptool/zip.c | 89 |
1 files changed, 2 insertions, 87 deletions
diff --git a/navit/maptool/zip.c b/navit/maptool/zip.c index f352e6353..1a66e083a 100644 --- a/navit/maptool/zip.c +++ b/navit/maptool/zip.c @@ -26,11 +26,6 @@ #include "zipfile.h" #ifdef HAVE_LIBCRYPTO -#include <openssl/sha.h> -#include <openssl/hmac.h> -#include <openssl/aes.h> -#include <openssl/evp.h> -#include <openssl/rand.h> #include <openssl/md5.h> #endif @@ -43,7 +38,6 @@ struct zip_info { int zip64; short date; short time; - char *passwd; FILE *res2; FILE *index; FILE *dir; @@ -139,17 +133,6 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, 0x8, zip_info->offset, }; -#ifdef HAVE_LIBCRYPTO - struct zip_enc enc = { - 0x9901, - 0x7, - 0x2, - 'A','E', - 0x1, - 0x0, - }; - unsigned char salt[8], key[34], verify[2], mac[10]; -#endif char *filename; int crc=0,len,comp_size=data_size; uLongf destlen=data_size+data_size/500+12; @@ -160,19 +143,8 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, fprintf(stderr, "No more memory.\n"); exit (1); } -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - RAND_bytes(salt, sizeof(salt)); - PKCS5_PBKDF2_HMAC_SHA1(zip_info->passwd, strlen(zip_info->passwd), salt, sizeof(salt), 1000, sizeof(key), key); - verify[0]=key[32]; - verify[1]=key[33]; - } else { -#endif - crc=crc32(0, NULL, 0); - crc=crc32(crc, (unsigned char *)data, data_size); -#ifdef HAVE_LIBCRYPTO - } -#endif + crc=crc32(0, NULL, 0); + crc=crc32(crc, (unsigned char *)data, data_size); lfh.zipmthd=zip_info->compression_level ? 8:0; #ifdef HAVE_ZLIB if (zip_info->compression_level) { @@ -191,15 +163,6 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, lfh.zipcrc=crc; lfh.zipsize=comp_size; lfh.zipuncmp=data_size; -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - enc.compress_method=lfh.zipmthd; - lfh.zipmthd=99; - lfh.zipxtraln+=sizeof(enc); - lfh.zipgenfld|=1; - lfh.zipsize+=sizeof(salt)+sizeof(verify)+sizeof(mac); - } -#endif cd.zipccrc=crc; cd.zipcsiz=lfh.zipsize; cd.zipcunc=data_size; @@ -208,13 +171,6 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, cd.zipofst=0xffffffff; cd.zipcxtl+=sizeof(cd_ext); } -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - cd.zipcmthd=99; - cd.zipcxtl+=sizeof(enc); - cd.zipcflg|=1; - } -#endif filename=g_alloca(filelen+1); strcpy(filename, name); len=strlen(filename); @@ -225,43 +181,8 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, zip_write(zip_info, &lfh, sizeof(lfh)); zip_write(zip_info, filename, filelen); zip_info->offset+=sizeof(lfh)+filelen; -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - unsigned char counter[16], xor[16], *datap=(unsigned char *)data; - int size=comp_size; - AES_KEY aeskey; - zip_write(zip_info, &enc, sizeof(enc)); - zip_write(zip_info, salt, sizeof(salt)); - zip_write(zip_info, verify, sizeof(verify)); - zip_info->offset+=sizeof(enc)+sizeof(salt)+sizeof(verify); - AES_set_encrypt_key(key, 128, &aeskey); - memset(counter, 0, sizeof(counter)); - while (size > 0) { - int i,curr_size,idx=0; - do { - counter[idx]++; - } while (!counter[idx++]); - AES_encrypt(counter, xor, &aeskey); - curr_size=size; - if (curr_size > sizeof(xor)) - curr_size=sizeof(xor); - for (i = 0 ; i < curr_size ; i++) - *datap++^=xor[i]; - size-=curr_size; - } - } -#endif zip_write(zip_info, data, comp_size); zip_info->offset+=comp_size; -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - unsigned int maclen=sizeof(mac); - unsigned char mactmp[maclen*2]; - HMAC(EVP_sha1(), key+16, 16, (unsigned char *)data, comp_size, mactmp, &maclen); - zip_write(zip_info, mactmp, sizeof(mac)); - zip_info->offset+=sizeof(mac); - } -#endif dbg_assert(fwrite(&cd, sizeof(cd), 1, zip_info->dir)==1); dbg_assert(fwrite(filename, filelen, 1, zip_info->dir)==1); zip_info->dir_size+=sizeof(cd)+filelen; @@ -269,12 +190,6 @@ write_zipmember(struct zip_info *zip_info, char *name, int filelen, char *data, dbg_assert(fwrite(&cd_ext, sizeof(cd_ext), 1, zip_info->dir)==1); zip_info->dir_size+=sizeof(cd_ext); } -#ifdef HAVE_LIBCRYPTO - if (zip_info->passwd) { - dbg_assert(fwrite(&enc, sizeof(enc), 1, zip_info->dir)==1); - zip_info->dir_size+=sizeof(enc); - } -#endif free(compbuffer); } |
