return r;
}
- struct ceph_fscrypt_key_identifier kid;
-
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 0);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 0);
if (r < 0) {
std::clog << __func__ << "() ceph_mount add_fscrypt_key r=" << r << std::endl;
return r;
return string("ceph_test_libcephfs_fscrypt.") + stringify(mypid) + "." + stringify(rand());
}
-void generate_remove_key_arg(ceph_fscrypt_key_identifier kid, fscrypt_remove_key_arg* arg){
+void generate_remove_key_arg(char *keyid, fscrypt_remove_key_arg* arg){
fscrypt_key_specifier key_spec;
key_spec.type = FSCRYPT_KEY_SPEC_TYPE_IDENTIFIER;
key_spec.__reserved = 0;
- memcpy(key_spec.u.identifier, kid.raw, 16);
+ memcpy(key_spec.u.identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
arg->removal_status_flags = 0;
arg->key_spec = key_spec;
}
-void populate_policy(struct ceph_fscrypt_key_identifier kid, struct fscrypt_policy_v2* policy) {
+void populate_policy(char *keyid, struct fscrypt_policy_v2* policy) {
memset(policy, 0, sizeof(*policy));
policy->version = 2;
policy->contents_encryption_mode = FSCRYPT_MODE_AES_256_XTS;
policy->filenames_encryption_mode = FSCRYPT_MODE_AES_256_CTS;
policy->flags = FSCRYPT_POLICY_FLAGS_PAD_32;
- memcpy(policy->master_key_identifier, kid.raw, FSCRYPT_KEY_IDENTIFIER_SIZE);
+ memcpy(policy->master_key_identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
}
int init_mount(struct ceph_mount_info** cmount){
ceph_close(cmount, key_fd);
- struct ceph_fscrypt_key_identifier kid;
-
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 0);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 0);
if (r < 0) {
std::clog << __func__ << "(): ceph_add_fscrypt_key() r=" << r << std::endl;
return r;
policy.contents_encryption_mode = FSCRYPT_MODE_AES_256_XTS;
policy.filenames_encryption_mode = FSCRYPT_MODE_AES_256_CTS;
policy.flags = FSCRYPT_POLICY_FLAGS_PAD_32;
- memcpy(policy.master_key_identifier, kid.raw, FSCRYPT_KEY_IDENTIFIER_SIZE);
+ memcpy(policy.master_key_identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
if (fd < 0) {
}
TEST(FSCrypt, MultipleUnlockLockClaims) {
- struct ceph_fscrypt_key_identifier kid;
- struct ceph_fscrypt_key_identifier kid2;
-
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1091);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1091);
ASSERT_EQ(0, r);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid2, 1299);
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
ASSERT_EQ(0, r);
if (r < 0) {
std::clog << __func__ << "() 1ceph_mount add_fscrypt_key r=" << r << std::endl;
//remove user 1 of 2, should return 0, but 0x2 status_flag
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
//remove suser 2 of 2, ret 0, 0x0 status_flag
fscrypt_remove_key_arg arg2;
- generate_remove_key_arg(kid2, &arg2);
+ generate_remove_key_arg(keyid, &arg2);
r = ceph_remove_fscrypt_key(cmount, &arg2, 1091);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, UnlockKeyUserDNE) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1091);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1091);
ASSERT_EQ(0, r);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, UnlockKeyDNE) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
ASSERT_EQ(0, r);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
ceph_shutdown(cmount);
}
-#warning key_remove todo: 'EINVAL: invalid key specifier type, or reserved bits were set' case
+//#warning key_remove todo: 'EINVAL: invalid key specifier type, or reserved bits were set' case
TEST(FSCrypt, SetPolicyEmptyDir) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
ASSERT_EQ(0, r);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, SetPolicyNotEmptyDir) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd2 = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd2, &policy);
ASSERT_EQ(-ENOTEMPTY, r);
ASSERT_EQ(0, ceph_rmdir(cmount, dir2_path.c_str()));
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, SetPolicyAlreadyExistSamePolicy) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, SetPolicyAlreadyExistDifferentPolicy) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ASSERT_EQ(0, r);
for (int i = 0; i < (int)sizeof(fscrypt_key2); ++i) {
fscrypt_key2[i] = (char)rand();
}
- struct ceph_fscrypt_key_identifier kid2;
- r = ceph_add_fscrypt_key(cmount, fscrypt_key2, sizeof(fscrypt_key2), &kid2, 1299);
+ char keyid2[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key2, sizeof(fscrypt_key2), keyid2, 1299);
struct fscrypt_policy_v2 policy2;
- populate_policy(kid2, &policy2);
+ populate_policy(keyid2, &policy2);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy2);
ASSERT_EQ(-EEXIST, r);
TEST(FSCrypt, SetPolicyNonDir) {
//can be file, symlink, device file etc
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
//setup policy
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ memset(keyid, 0, sizeof(keyid));
+ populate_policy(keyid, &policy);
//file
string file_path = "file1";
}
TEST(FSCrypt, SetPolicyNotSupported) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
policy.version = 2;
policy.filenames_encryption_mode = FSCRYPT_MODE_AES_256_XTS;
policy.flags = FSCRYPT_POLICY_FLAGS_PAD_32;
memset(policy.__reserved, 0, sizeof(policy.__reserved));
- memcpy(policy.master_key_identifier, kid.raw, FSCRYPT_KEY_IDENTIFIER_SIZE);
+ memcpy(policy.master_key_identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ASSERT_EQ(-EINVAL, r);
policy.filenames_encryption_mode = FSCRYPT_MODE_AES_256_CTS;
policy.flags = FSCRYPT_POLICY_FLAGS_PAD_32;
memset(policy.__reserved, 0, sizeof(policy.__reserved));
- memcpy(policy.master_key_identifier, kid.raw, FSCRYPT_KEY_IDENTIFIER_SIZE);
+ memcpy(policy.master_key_identifier, keyid, FSCRYPT_KEY_IDENTIFIER_SIZE);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ASSERT_EQ(-EINVAL, r);
TEST(FSCrypt, LockedListDir) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string file_path = "dir1/file5";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
}
}
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, ReadLockedDir) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string file_path = "dir1/file5";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
}
}
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, WriteLockedDir) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string file_path = "dir1/file5";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
}
}
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, LockedCreateSnap) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string file_path = "dir1/file5";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ASSERT_EQ(0, ceph_unlink(cmount, file_path.c_str()));
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, RenameLockedSource) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string src_path = "dir1/file5";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
}
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, RenameLockedDest) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
string dest_path = "dir1/file_dest";
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ceph_close(cmount, fd2);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, RemoveBusyFile) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ceph_close(cmount, fd);
ASSERT_EQ(32, r);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
ASSERT_EQ(0, ceph_unlink(cmount, path.c_str()));
//actually remove the key
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
ASSERT_EQ(0, arg.removal_status_flags);
}
TEST(FSCrypt, RemoveBusyCreate) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
ASSERT_EQ(0, ceph_mkdir(cmount, dir_path.c_str(), 0777));
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ceph_close(cmount, fd);
ASSERT_EQ(32, r);
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
ASSERT_EQ(0, ceph_unlink(cmount, path.c_str()));
//actually remove the key
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
ASSERT_EQ(0, arg.removal_status_flags);
// if this test fails, it means that these ops has been impleneted AND we must reject these ops for encrypted files
// see https://www.kernel.org/doc/html/v4.18/filesystems/fscrypt.html Access Semantics section
TEST(FSCrypt, FallocateNotImplemented) {
- struct ceph_fscrypt_key_identifier kid;
struct ceph_mount_info *cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
ASSERT_EQ(0, ceph_mkdir(cmount, dir_path.c_str(), 0777));
int fd = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd, &policy);
ceph_close(cmount, fd);
}
TEST(FSCrypt, SetPolicyAlreadyExistSamePolicyNotEmpty) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd2 = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd2, &policy);
ASSERT_EQ(0, ceph_unlink(cmount, file_path.c_str()));
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);
}
TEST(FSCrypt, SetPolicyAlreadyExistDifferentPolicyNotEmpty) {
- struct ceph_fscrypt_key_identifier kid;
-
struct ceph_mount_info* cmount;
int r = init_mount(&cmount);
ASSERT_EQ(0, r);
int fd2 = ceph_open(cmount, dir_path.c_str(), O_DIRECTORY, 0);
- r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), &kid, 1299);
+ char keyid[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key, sizeof(fscrypt_key), keyid, 1299);
struct fscrypt_policy_v2 policy;
- populate_policy(kid, &policy);
+ populate_policy(keyid, &policy);
r = ceph_set_fscrypt_policy_v2(cmount, fd2, &policy);
for (int i = 0; i < (int)sizeof(fscrypt_key2); ++i) {
fscrypt_key2[i] = (char)rand();
}
- struct ceph_fscrypt_key_identifier kid2;
- r = ceph_add_fscrypt_key(cmount, fscrypt_key2, sizeof(fscrypt_key2), &kid2, 1299);
+ char keyid2[FSCRYPT_KEY_IDENTIFIER_SIZE];
+ r = ceph_add_fscrypt_key(cmount, fscrypt_key2, sizeof(fscrypt_key2), keyid2, 1299);
struct fscrypt_policy_v2 policy2;
- populate_policy(kid2, &policy2);
+ populate_policy(keyid2, &policy2);
r = ceph_set_fscrypt_policy_v2(cmount, fd2, &policy2);
ASSERT_EQ(0, ceph_unlink(cmount, file_path.c_str()));
fscrypt_remove_key_arg arg;
- generate_remove_key_arg(kid, &arg);
+ generate_remove_key_arg(keyid, &arg);
r = ceph_remove_fscrypt_key(cmount, &arg, 1299);
ASSERT_EQ(0, r);