-int cp_rewrap_key(cp_cred_t access, uint32_t dp_class,
- const cp_wrapped_key_t wrapped_key_in,
- cp_wrapped_key_t wrapped_key_out)
-{
- if (!g_cp_wrap_func.rewrapper)
- return ENXIO;
- return g_cp_wrap_func.rewrapper(access, dp_class, wrapped_key_in,
- wrapped_key_out);
-}
-
-int cp_new_key(cp_cred_t access, uint32_t dp_class, cp_raw_key_t key_out,
- cp_wrapped_key_t wrapped_key_out)
-{
- if (!g_cp_wrap_func.new_key)
- return ENXIO;
- return g_cp_wrap_func.new_key(access, dp_class, key_out, wrapped_key_out);
-}
-
-int cp_unwrap_key(cp_cred_t access, const cp_wrapped_key_t wrapped_key_in,
- cp_raw_key_t key_out)
-{
- if (!g_cp_wrap_func.unwrapper)
- return ENXIO;
- return g_cp_wrap_func.unwrapper(access, wrapped_key_in, key_out);
-}
-
-int cp_get_backup_key(cp_cred_t access, const cp_wrapped_key_t wrapped_key_in,
- cp_wrapped_key_t wrapped_key_out)
-{
- if (!g_cp_wrap_func.backup_key)
- return ENXIO;
- return g_cp_wrap_func.backup_key(access, wrapped_key_in, wrapped_key_out);
+ switch (action) {
+ case CP_ACTION_LOCKED:
+ case CP_ACTION_UNLOCKED:
+ callback_arg.state = (action == CP_ACTION_LOCKED ? CP_LOCKED_STATE : CP_UNLOCKED_STATE);
+ memcpy(callback_arg.volume_uuid, volume_uuid, sizeof(uuid_t));
+ callback_arg.valid_uuid = 1;
+ return vfs_iterate(0, cp_lock_vfs_callback, (void *)&callback_arg);
+ default:
+ return -1;
+ }