fs-crypt-common.c revision 6d1218e68ce883735ffde9d7907e626ab81b9fb5
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainen/* Copyright (c) 2015-2017 Dovecot authors, see the included COPYING file */
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen/* defined outside this file */
a443e5aaf632257bfd1e7aa9b3c42c09512bbe43Timo Sirainenint fs_crypt_load_keys(struct crypt_fs *fs, const char **error_r);
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainenfs_crypt_init(struct fs *_fs, const char *args, const
4da8c6cdefabd31262318c32da3c13de1d9ea953Timo Sirainen const char *p, *arg, *value, *error, *parent_name, *parent_args;
d80f37f025593d959bdfa9c378915e4322f4f504Timo Sirainen const char *public_key_path = "", *private_key_path = "", *password = "";
2fb9ae42f9e36388ec6db24188b9108434043fd0Timo Sirainen if (!dcrypt_initialize("openssl", NULL, &error))
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen /* [algo=<s>:][set_prefix=<n>:][public_key_path=<s>:]
a64adf62fa33f2463a86f990217b0c9078531a40Timo Sirainen [private_key_path=<s>:[password=<s>:]]<parent fs> */
67c47dbb3fde79218320fd38a45c33f61bbf3012Timo Sirainen else if (strcmp(arg, "private_key_path") == 0)
dd7cbb32412c2f4d2d223af66672535bc1237246Timo Sirainen fs_set_error(_fs, "Invalid parameter '%s'", arg);
94ce7e7700cda14a8342cb08e7285507b4b531daTimo Sirainen parent_name = t_strdup_until(args, parent_args);
3398d5e2b883812de5d569721c8294b581e1d9e6Timo Sirainen if (fs_init(parent_name, parent_args, set, &_fs->parent, &error) < 0) {
4654f788834c9d7920a351306b89cf5d1c21772eTimo Sirainen fs_set_error(_fs, "%s: %s", parent_name, error);
6c2ce1d5bf17b21e804a079eb0f973b7ab83e0d8Timo Sirainen fs->public_key_path = i_strdup_empty(public_key_path);
6c2ce1d5bf17b21e804a079eb0f973b7ab83e0d8Timo Sirainen fs->private_key_path = i_strdup_empty(private_key_path);
int ret;
ret = 0;
return ret;
char *key_data;
error_r) < 0) {
error_r) < 0) {
static struct istream *
const char *error;
flags);
int ret;
if (!success) {
return ret;