]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9364 use crypto table properly
authorHoward Chu <hyc@openldap.org>
Mon, 12 Oct 2020 02:09:48 +0000 (03:09 +0100)
committerHoward Chu <hyc@openldap.org>
Mon, 12 Oct 2020 02:09:48 +0000 (03:09 +0100)
libraries/liblmdb/mtest_enc2.c

index c99663d15b27fb7c2be89939ff7cd5b4aced5858..e8e8b1aee2cfaa901456417e6e0ab46b3686f095 100644 (file)
@@ -11,6 +11,7 @@
  * source distribution.
  */
 #include <stdio.h>
+#include <string.h>
 #include <stdlib.h>
 #include <time.h>
 #include "lmdb.h"
@@ -37,8 +38,8 @@ int main(int argc,char * argv[])
        int count;
        int *values;
        char sval[32] = "";
-       char password[] = "This is my passphrase for now";
-       char ekey[32];
+       char password[] = "This is my passphrase for now...";
+       char *ekey;
 
        srand(time(NULL));
 
@@ -50,14 +51,23 @@ int main(int argc,char * argv[])
            }
     
                cf = MDB_crypto();
-               enckey.mv_data = ekey;
-               enckey.mv_size = sizeof(ekey);
-               cf->mcf_str2key(password, &enckey);
 
                E(mdb_env_create(&env));
                E(mdb_env_set_maxreaders(env, 1));
                E(mdb_env_set_mapsize(env, 10485760));
-               E(mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize));
+               if (cf->mcf_sumfunc) {
+                       E(mdb_env_set_checksum(env, cf->mcf_sumfunc, cf->mcf_sumsize));
+               }
+               if (cf->mcf_encfunc) {
+                       ekey = malloc(cf->mcf_keysize);
+                       enckey.mv_data = ekey;
+                       enckey.mv_size = cf->mcf_keysize;
+                       if (cf->mcf_str2key)
+                               cf->mcf_str2key(password, &enckey);
+                       else
+                               strncpy(ekey, password, cf->mcf_keysize);
+                       E(mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize));
+               }
                E(mdb_env_open(env, "./testdb", 0 /*|MDB_NOSYNC*/, 0664));
 
                E(mdb_txn_begin(env, NULL, 0, &txn));