mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-02-18 18:18:06 -05:00
LMDB: Add a separate mlm_setup0() to separate loading from setup
This commit is contained in:
parent
6cbb42aae0
commit
acab3df034
2 changed files with 21 additions and 15 deletions
|
|
@ -76,26 +76,31 @@ void mlm_unload(void *mlm)
|
|||
#endif
|
||||
}
|
||||
|
||||
void mlm_setup0(MDB_env *env, MDB_crypto_funcs *cf, const char *password)
|
||||
{
|
||||
MDB_val enckey = {0};
|
||||
if (cf->mcf_sumfunc) {
|
||||
mdb_env_set_checksum(env, cf->mcf_sumfunc, cf->mcf_sumsize);
|
||||
}
|
||||
if (cf->mcf_encfunc && password) {
|
||||
char keybuf[2048];
|
||||
enckey.mv_data = keybuf;
|
||||
enckey.mv_size = cf->mcf_keysize;
|
||||
if (cf->mcf_str2key)
|
||||
cf->mcf_str2key(password, &enckey);
|
||||
else
|
||||
strncpy(enckey.mv_data, password, enckey.mv_size);
|
||||
mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize);
|
||||
memset(enckey.mv_data, 0, enckey.mv_size);
|
||||
}
|
||||
}
|
||||
|
||||
void *mlm_setup(MDB_env *env, const char *file, const char *password, char **errmsg)
|
||||
{
|
||||
MDB_crypto_funcs *cf;
|
||||
MDB_val enckey = {0};
|
||||
void *mlm = mlm_load(file, NULL, &cf, errmsg);
|
||||
if (mlm) {
|
||||
if (cf->mcf_sumfunc) {
|
||||
mdb_env_set_checksum(env, cf->mcf_sumfunc, cf->mcf_sumsize);
|
||||
}
|
||||
if (cf->mcf_encfunc && password) {
|
||||
char keybuf[2048];
|
||||
enckey.mv_data = keybuf;
|
||||
enckey.mv_size = cf->mcf_keysize;
|
||||
if (cf->mcf_str2key)
|
||||
cf->mcf_str2key(password, &enckey);
|
||||
else
|
||||
strncpy(enckey.mv_data, password, enckey.mv_size);
|
||||
mdb_env_set_encrypt(env, cf->mcf_encfunc, &enckey, cf->mcf_esumsize);
|
||||
memset(enckey.mv_data, 0, enckey.mv_size);
|
||||
}
|
||||
mlm_setup0(env, cf, password);
|
||||
}
|
||||
return mlm;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,3 +14,4 @@
|
|||
void *mlm_load(const char *file, const char *name, MDB_crypto_funcs **mcf_ptr, char **errmsg);
|
||||
void mlm_unload(void *lm);
|
||||
void *mlm_setup(MDB_env *env, const char *file, const char *password, char **errmsg);
|
||||
void mlm_setup0(MDB_env *env, MDB_crypto_funcs *cf, const char *password);
|
||||
|
|
|
|||
Loading…
Reference in a new issue