[libvirt] [PATCH 2/4] Convert lock driver plugins to use new crypto APIs

2014-03-05 Thread Daniel P. Berrange
Conver the sanlock and lockd lock driver plugins over to use
the new virCryptoHashString APIs instead of having their own
duplicated code.

Signed-off-by: Daniel P. Berrange berra...@redhat.com
---
 src/locking/lock_driver_lockd.c   | 32 ++---
 src/locking/lock_driver_sanlock.c | 42 ++-
 2 files changed, 12 insertions(+), 62 deletions(-)

diff --git a/src/locking/lock_driver_lockd.c b/src/locking/lock_driver_lockd.c
index f3b9467..1b92d68 100644
--- a/src/locking/lock_driver_lockd.c
+++ b/src/locking/lock_driver_lockd.c
@@ -24,6 +24,7 @@
 #include lock_driver.h
 #include virconf.h
 #include viralloc.h
+#include vircrypto.h
 #include virlog.h
 #include viruuid.h
 #include virfile.h
@@ -31,7 +32,6 @@
 #include rpc/virnetclient.h
 #include lock_protocol.h
 #include configmake.h
-#include sha256.h
 #include virstring.h
 
 #define VIR_FROM_THIS VIR_FROM_LOCKING
@@ -505,34 +505,6 @@ static int virLockManagerLockDaemonNew(virLockManagerPtr 
lock,
 }
 
 
-static const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7',
-'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
-static char *virLockManagerLockDaemonDiskLeaseName(const char *path)
-{
-unsigned char buf[SHA256_DIGEST_SIZE];
-char *ret;
-size_t i;
-
-if (!(sha256_buffer(path, strlen(path), buf))) {
-virReportError(VIR_ERR_INTERNAL_ERROR, %s,
-   _(Unable to compute sha256 checksum));
-return NULL;
-}
-
-if (VIR_ALLOC_N(ret, (SHA256_DIGEST_SIZE * 2) + 1)  0)
-return NULL;
-
-for (i = 0; i  SHA256_DIGEST_SIZE; i++) {
-ret[i*2] = hex[(buf[i]  4)  0xf];
-ret[(i*2)+1] = hex[buf[i]  0xf];
-}
-ret[(SHA256_DIGEST_SIZE * 2) + 1] = '\0';
-
-return ret;
-}
-
-
 static int virLockManagerLockDaemonAddResource(virLockManagerPtr lock,
unsigned int type,
const char *name,
@@ -605,7 +577,7 @@ static int 
virLockManagerLockDaemonAddResource(virLockManagerPtr lock,
 if (driver-fileLockSpaceDir) {
 if (VIR_STRDUP(newLockspace, driver-fileLockSpaceDir)  0)
 goto error;
-if (!(newName = virLockManagerLockDaemonDiskLeaseName(name)))
+if (virCryptoHashString(VIR_CRYPTO_HASH_SHA256, name, newName)  
0)
 goto error;
 autoCreate = true;
 VIR_DEBUG(Using indirect lease %s for %s, newName, name);
diff --git a/src/locking/lock_driver_sanlock.c 
b/src/locking/lock_driver_sanlock.c
index f11f3c6..0c87048 100644
--- a/src/locking/lock_driver_sanlock.c
+++ b/src/locking/lock_driver_sanlock.c
@@ -40,8 +40,8 @@
 #include virlog.h
 #include virerror.h
 #include viralloc.h
+#include vircrypto.h
 #include virfile.h
-#include md5.h
 #include virconf.h
 #include virstring.h
 
@@ -509,36 +509,6 @@ static void virLockManagerSanlockFree(virLockManagerPtr 
lock)
 }
 
 
-static const char hex[] = { '0', '1', '2', '3', '4', '5', '6', '7',
-'8', '9', 'a', 'b', 'c', 'd', 'e', 'f' };
-
-static int virLockManagerSanlockDiskLeaseName(const char *path,
-  char *str,
-  size_t strbuflen)
-{
-unsigned char buf[MD5_DIGEST_SIZE];
-size_t i;
-
-if (strbuflen  ((MD5_DIGEST_SIZE * 2) + 1)) {
-virReportError(VIR_ERR_INTERNAL_ERROR, %s,
-   _(String length too small to store md5 checksum));
-return -1;
-}
-
-if (!(md5_buffer(path, strlen(path), buf))) {
-virReportError(VIR_ERR_INTERNAL_ERROR, %s,
-   _(Unable to compute md5 checksum));
-return -1;
-}
-
-for (i = 0; i  MD5_DIGEST_SIZE; i++) {
-str[i*2] = hex[(buf[i]  4)  0xf];
-str[(i*2)+1] = hex[buf[i]  0xf];
-}
-str[(MD5_DIGEST_SIZE*2)+1] = '\0';
-return 0;
-}
-
 static int virLockManagerSanlockAddLease(virLockManagerPtr lock,
  const char *name,
  size_t nparams,
@@ -606,6 +576,7 @@ static int virLockManagerSanlockAddDisk(virLockManagerPtr 
lock,
 int ret = -1;
 struct sanlk_resource *res = NULL;
 char *path = NULL;
+char *hash = NULL;
 
 if (nparams) {
 virReportError(VIR_ERR_INTERNAL_ERROR, %s,
@@ -618,8 +589,14 @@ static int virLockManagerSanlockAddDisk(virLockManagerPtr 
lock,
 
 res-flags = shared ? SANLK_RES_SHARED : 0;
 res-num_disks = 1;
-if (virLockManagerSanlockDiskLeaseName(name, res-name, SANLK_NAME_LEN)  
0)
+if (virCryptoHashString(VIR_CRYPTO_HASH_MD5, name, hash)  0)
+goto cleanup;
+if (!virStrcpy(res-name, hash, SANLK_NAME_LEN)) {
+virReportError(VIR_ERR_INTERNAL_ERROR,
+   _(MD5 hash '%s' unexpectedly larger than %d 
characters),
+   hash, (SANLK_NAME_LEN - 

Re: [libvirt] [PATCH 2/4] Convert lock driver plugins to use new crypto APIs

2014-03-05 Thread Eric Blake
On 03/05/2014 10:53 AM, Daniel P. Berrange wrote:
 Conver the sanlock and lockd lock driver plugins over to use

s/Conver/Convert/

 the new virCryptoHashString APIs instead of having their own
 duplicated code.
 
 Signed-off-by: Daniel P. Berrange berra...@redhat.com
 ---
  src/locking/lock_driver_lockd.c   | 32 ++---
  src/locking/lock_driver_sanlock.c | 42 
 ++-
  2 files changed, 12 insertions(+), 62 deletions(-)

ACK

-- 
Eric Blake   eblake redhat com+1-919-301-3266
Libvirt virtualization library http://libvirt.org



signature.asc
Description: OpenPGP digital signature
--
libvir-list mailing list
libvir-list@redhat.com
https://www.redhat.com/mailman/listinfo/libvir-list