blktap: link against libgcrypt rather than libcrypto
authorKeir Fraser <keir.fraser@citrix.com>
Mon, 30 Jun 2008 09:00:53 +0000 (10:00 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Mon, 30 Jun 2008 09:00:53 +0000 (10:00 +0100)
tapdisk, part of blktap, links against libcrypto. tapdisk includes
GPLv2 (tapaio.c) and other licensed code (block-qcow.c). The license
of OpenSSL is considered incompatible with the GPL by many
people. This patch changes them to link against libgcrypt, which is
LGPL.

Signed-off-by: Bastian Blank <waldi@debian.org>
tools/blktap/drivers/Makefile
tools/blktap/drivers/block-qcow.c

index b2318f0e8dbedc5883be213d52ad5e84cea2cc33..548f080e7c7e5f36cc395a3ae64ab7d8ebbf592b 100644 (file)
@@ -18,7 +18,7 @@ CFLAGS   += -Wp,-MD,.$(@F).d
 DEPS      = .*.d
 
 LDFLAGS_blktapctrl := $(LDFLAGS_libxenctrl) $(LDFLAGS_libxenstore) -L../lib -lblktap
-LDFLAGS_img := $(LIBAIO_DIR)/libaio.a -lcrypto -lpthread -lz
+LDFLAGS_img := $(LIBAIO_DIR)/libaio.a -lgcrypt -lpthread -lz
 
 BLK-OBJS-y  := block-aio.o
 BLK-OBJS-y  += block-sync.o
index 549cc7c793fcbd1f0a4bb3c7867bd888ea09ce22..dd6c6c7c076ac391f9a17e5aad0fa8134ddc6b64 100644 (file)
@@ -33,7 +33,7 @@
 #include <zlib.h>
 #include <inttypes.h>
 #include <libaio.h>
-#include <openssl/md5.h>
+#include <gcrypt.h>
 #include "bswap.h"
 #include "aes.h"
 #include "tapdisk.h"
@@ -149,31 +149,22 @@ static int decompress_cluster(struct tdqcow_state *s, uint64_t cluster_offset);
 static uint32_t gen_cksum(char *ptr, int len)
 {
        int i;
-       unsigned char *md;
-       uint32_t ret;
+       uint32_t md[4];
 
-       md = malloc(MD5_DIGEST_LENGTH);
-
-       if(!md) return 0;
-       
        /* Convert L1 table to big endian */
        for(i = 0; i < len / sizeof(uint64_t); i++) {
                cpu_to_be64s(&((uint64_t*) ptr)[i]);
        }
 
        /* Generate checksum */
-       if (MD5((unsigned char *)ptr, len, md) != md)
-               ret = 0;
-       else
-               memcpy(&ret, md, sizeof(uint32_t));
+       gcry_md_hash_buffer(GCRY_MD_MD5, md, ptr, len);
 
        /* Convert L1 table back to native endianess */
        for(i = 0; i < len / sizeof(uint64_t); i++) {
                be64_to_cpus(&((uint64_t*) ptr)[i]);
        }
 
-       free(md);
-       return ret;
+       return md[0];
 }
 
 static int get_filesize(char *filename, uint64_t *size, struct stat *st)