mirror of
https://github.com/haiwen/seafile-server.git
synced 2025-09-07 02:10:05 +00:00
Encrypted library version 3: use different salt for each library.
This commit is contained in:
@@ -650,8 +650,10 @@ commit_to_json_object (SeafCommit *commit)
|
||||
json_object_set_int_member (object, "enc_version", commit->enc_version);
|
||||
if (commit->enc_version >= 1)
|
||||
json_object_set_string_member (object, "magic", commit->magic);
|
||||
if (commit->enc_version == 2)
|
||||
if (commit->enc_version >= 2)
|
||||
json_object_set_string_member (object, "key", commit->random_key);
|
||||
if (commit->enc_version >= 3)
|
||||
json_object_set_string_member (object, "salt", commit->salt);
|
||||
}
|
||||
if (commit->no_local_history)
|
||||
json_object_set_int_member (object, "no_local_history", 1);
|
||||
@@ -687,6 +689,7 @@ commit_from_json_object (const char *commit_id, json_t *object)
|
||||
int enc_version = 0;
|
||||
const char *magic = NULL;
|
||||
const char *random_key = NULL;
|
||||
const char *salt = NULL;
|
||||
int no_local_history = 0;
|
||||
int version = 0;
|
||||
int conflict = 0, new_merge = 0;
|
||||
@@ -723,8 +726,10 @@ commit_from_json_object (const char *commit_id, json_t *object)
|
||||
magic = json_object_get_string_member (object, "magic");
|
||||
}
|
||||
|
||||
if (enc_version == 2)
|
||||
if (enc_version >= 2)
|
||||
random_key = json_object_get_string_member (object, "key");
|
||||
if (enc_version >= 3)
|
||||
salt = json_object_get_string_member (object, "salt");
|
||||
|
||||
if (json_object_has_member (object, "no_local_history"))
|
||||
no_local_history = json_object_get_int_member (object, "no_local_history");
|
||||
@@ -762,6 +767,14 @@ commit_from_json_object (const char *commit_id, json_t *object)
|
||||
if (!random_key || strlen(random_key) != 96)
|
||||
return NULL;
|
||||
break;
|
||||
case 3:
|
||||
if (!magic || strlen(magic) != 64)
|
||||
return NULL;
|
||||
if (!random_key || strlen(random_key) != 96)
|
||||
return NULL;
|
||||
if (!salt || strlen(salt) != 64)
|
||||
return NULL;
|
||||
break;
|
||||
default:
|
||||
seaf_warning ("Unknown encryption version %d.\n", enc_version);
|
||||
return NULL;
|
||||
@@ -790,8 +803,10 @@ commit_from_json_object (const char *commit_id, json_t *object)
|
||||
commit->enc_version = enc_version;
|
||||
if (enc_version >= 1)
|
||||
commit->magic = g_strdup(magic);
|
||||
if (enc_version == 2)
|
||||
if (enc_version >= 2)
|
||||
commit->random_key = g_strdup (random_key);
|
||||
if (enc_version >= 3)
|
||||
commit->salt = g_strdup(salt);
|
||||
}
|
||||
if (no_local_history)
|
||||
commit->no_local_history = TRUE;
|
||||
|
Reference in New Issue
Block a user