create_enc_repo add key_iter parameter

This commit is contained in:
杨赫然 2023-07-05 18:11:08 +08:00
parent 79402526ca
commit 63b4a6eaf8
8 changed files with 24 additions and 9 deletions

View file

@ -3056,6 +3056,7 @@ seafile_create_enc_repo (const char *repo_id,
const char *random_key,
const char *salt,
int enc_version,
int key_iter,
GError **error)
{
if (!repo_id || !repo_name || !repo_desc || !owner_email) {
@ -3069,6 +3070,7 @@ seafile_create_enc_repo (const char *repo_id,
repo_id, repo_name, repo_desc,
owner_email,
magic, random_key, salt, enc_version,
key_iter,
error);
return ret;
}

View file

@ -923,6 +923,7 @@ seafile_create_enc_repo (const char *repo_id,
const char *random_key,
const char *salt,
int enc_version,
int key_iter,
GError **error);
char *

View file

@ -66,6 +66,7 @@ func_table = [
[ "string", ["string", "string", "string", "string", "string", "string", "int64", "int"] ],
[ "string", ["string", "string", "string", "string", "string", "string", "string"] ],
[ "string", ["string", "string", "string", "string", "string", "string", "string", "int"] ],
[ "string", ["string", "string", "string", "string", "string", "string", "string", "int", "int"] ],
[ "string", ["string", "string", "string", "string", "string", "string", "string", "int64"] ],
[ "string", ["string", "string", "string", "string", "string", "string", "string", "string", "string"] ],
[ "string", ["string", "int", "string", "string", "string", "string", "string", "string", "string", "string", "string", "string", "int", "string"] ],

View file

@ -11,8 +11,8 @@ class SeafServerThreadedRpcClient(NamedPipeClient):
pass
create_repo = seafile_create_repo
@searpc_func("string", ["string", "string", "string", "string", "string", "string", "string", "int"])
def seafile_create_enc_repo(repo_id, name, desc, owner_email, magic, random_key, salt, enc_version):
@searpc_func("string", ["string", "string", "string", "string", "string", "string", "string", "int", "int"])
def seafile_create_enc_repo(repo_id, name, desc, owner_email, magic, random_key, salt, enc_version, key_iter):
pass
create_enc_repo = seafile_create_enc_repo

View file

@ -89,8 +89,8 @@ class SeafileAPI(object):
def create_repo(self, name, desc, username, passwd=None, enc_version=2, storage_id=None):
return seafserv_threaded_rpc.create_repo(name, desc, username, passwd, enc_version)
def create_enc_repo(self, repo_id, name, desc, username, magic, random_key, salt, enc_version):
return seafserv_threaded_rpc.create_enc_repo(repo_id, name, desc, username, magic, random_key, salt, enc_version)
def create_enc_repo(self, repo_id, name, desc, username, magic, random_key, salt, enc_version, key_iter=1000):
return seafserv_threaded_rpc.create_enc_repo(repo_id, name, desc, username, magic, random_key, salt, enc_version, key_iter)
def get_repos_by_id_prefix(self, id_prefix, start=-1, limit=-1):
"""

View file

@ -3744,6 +3744,7 @@ create_repo_common (SeafRepoManager *mgr,
const char *random_key,
const char *salt,
int enc_version,
int key_iter,
GError **error)
{
SeafRepo *repo = NULL;
@ -3780,6 +3781,14 @@ create_repo_common (SeafRepoManager *mgr,
return -1;
}
}
if (enc_version >= 5) {
if (key_iter <= 0) {
seaf_warning ("Bad key iteration times.\n");
g_set_error (error, SEAFILE_DOMAIN, SEAF_ERR_BAD_ARGS,
"Bad key iteration times");
return -1;
}
}
repo = seaf_repo_new (repo_id, repo_name, repo_desc);
@ -3793,7 +3802,7 @@ create_repo_common (SeafRepoManager *mgr,
if (enc_version >= 3)
memcpy (repo->salt, salt, 64);
if (enc_version >= 5) {
repo->key_iter = seaf->key_iter;
repo->key_iter = key_iter;
}
repo->version = CURRENT_REPO_VERSION;
@ -3877,10 +3886,10 @@ seaf_repo_manager_create_new_repo (SeafRepoManager *mgr,
int rc;
if (passwd)
rc = create_repo_common (mgr, repo_id, repo_name, repo_desc, owner_email,
magic, random_key, salt, enc_version, error);
magic, random_key, salt, enc_version, seaf->key_iter, error);
else
rc = create_repo_common (mgr, repo_id, repo_name, repo_desc, owner_email,
NULL, NULL, NULL, -1, error);
NULL, NULL, NULL, -1, -1, error);
if (rc < 0)
goto bad;
@ -3909,6 +3918,7 @@ seaf_repo_manager_create_enc_repo (SeafRepoManager *mgr,
const char *random_key,
const char *salt,
int enc_version,
int key_iter,
GError **error)
{
if (!repo_id || !is_uuid_valid (repo_id)) {
@ -3926,7 +3936,7 @@ seaf_repo_manager_create_enc_repo (SeafRepoManager *mgr,
}
if (create_repo_common (mgr, repo_id, repo_name, repo_desc, owner_email,
magic, random_key, salt, enc_version, error) < 0)
magic, random_key, salt, enc_version, key_iter, error) < 0)
return NULL;
if (seaf_repo_manager_set_repo_owner (mgr, repo_id, owner_email) < 0) {

View file

@ -514,6 +514,7 @@ seaf_repo_manager_create_enc_repo (SeafRepoManager *mgr,
const char *random_key,
const char *salt,
int enc_version,
int key_iter,
GError **error);
/* Give a repo and a path in this repo, returns a list of commits, where every

View file

@ -227,7 +227,7 @@ static void start_rpc_service (const char *seafile_dir,
searpc_server_register_function ("seafserv-threaded-rpcserver",
seafile_create_enc_repo,
"seafile_create_enc_repo",
searpc_signature_string__string_string_string_string_string_string_string_int());
searpc_signature_string__string_string_string_string_string_string_string_int_int());
searpc_server_register_function ("seafserv-threaded-rpcserver",
seafile_get_commit,