123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- /* Copyright (c) 2014, The Linux Foundation. All rights reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 and
- * only version 2 as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- */
- #ifndef MSM_PFT_H_
- #define MSM_PFT_H_
- #include <linux/types.h>
- /**
- * enum pft_command_opcode - PFT driver command ID
- *
- * @PFT_CMD_OPCODE_SET_STATE -
- * command ID to set PFT driver state
- * @PFT_CMD_OPCODE_UPDATE_REG_APP_UID -
- * command ID to update the list of registered application
- * UID
- * @PFT_CMD_OPCODE_PERFORM_IN_PLACE_FILE_ENC -
- * command ID to perfrom in-place file encryption
- */
- enum pft_command_opcode {
- PFT_CMD_OPCODE_SET_STATE,
- PFT_CMD_OPCODE_UPDATE_REG_APP_UID,
- PFT_CMD_OPCODE_PERFORM_IN_PLACE_FILE_ENC,
- /* */
- PFT_CMD_OPCODE_MAX_COMMAND_INDEX
- };
- /**
- * enum pft_state - PFT driver operational states
- *
- * @PFT_STATE_DEACTIVATED - driver is deativated.
- * @PFT_STATE_DEACTIVATING - driver is in the process of being deativated.
- * @PFT_STATE_KEY_REMOVED - driver is active but no encryption key is loaded.
- * @PFT_STATE_REMOVING_KEY - driver is active, but the encryption key is being
- * removed.
- * @PFT_STATE_KEY_LOADED - driver is active, and the encryption key is loaded
- * to encryption block, hence registered apps can perform file operations
- * on encrypted files.
- */
- enum pft_state {
- PFT_STATE_DEACTIVATED,
- PFT_STATE_DEACTIVATING,
- PFT_STATE_KEY_REMOVED,
- PFT_STATE_REMOVING_KEY,
- PFT_STATE_KEY_LOADED,
- /* Internal */
- PFT_STATE_MAX_INDEX
- };
- /**
- * enum pft_command_response_code - PFT response on the previous
- * command
- *
- * @PFT_CMD_RESP_SUCCESS - The command was properly processed
- * without an error.
- * @PFT_CMD_RESP_GENERAL_ERROR -
- * Indicates an error that cannot be better described by a
- * more specific errors below.
- * @PFT_CMD_RESP_INVALID_COMMAND - Invalid or unsupported
- * command id.
- * @PFT_CMD_RESP_INVALID_CMD_PARAMS - Invalid command
- * parameters.
- * @PFT_CMD_RESP_INVALID_STATE - Invalid state
- * @PFT_CMD_RESP_ALREADY_IN_STATE - Used to indicates that
- * the new state is equal to the existing one.
- * @PFT_CMD_RESP_INPLACE_FILE_IS_OPEN - Used to indicates
- * that the file that should be encrypted is already open
- * and can be encrypted.
- * @PFT_CMD_RESP_ENT_FILES_CLOSING_FAILURE
- * Indicates about failure of the PFT to close Enterprise files
- * @PFT_CMD_RESP_MAX_INDEX
- */
- enum pft_command_response_code {
- PFT_CMD_RESP_SUCCESS,
- PFT_CMD_RESP_GENERAL_ERROR,
- PFT_CMD_RESP_INVALID_COMMAND,
- PFT_CMD_RESP_INVALID_CMD_PARAMS,
- PFT_CMD_RESP_INVALID_STATE,
- PFT_CMD_RESP_ALREADY_IN_STATE,
- PFT_CMD_RESP_INPLACE_FILE_IS_OPEN,
- PFT_CMD_RESP_ENT_FILES_CLOSING_FAILURE,
- /* Internal */
- PFT_CMD_RESP_MAX_INDEX
- };
- /**
- * struct pft_command_response - response structure
- *
- * @command_id - see enum pft_command_response_code
- * @error_codee - see enum pft_command_response_code
- */
- struct pft_command_response {
- __u32 command_id;
- __u32 error_code;
- };
- /**
- * struct pft_command - pft command
- *
- * @opcode - see enum pft_command_opcode.
- * @set_state.state - see enum pft_state.
- * @update_app_list.count - number of items in the
- * registered applications list.
- * @update_app_list.table - registered applications array
- * @preform_in_place_file_enc.file_descriptor - file descriptor
- * of the opened file to be in-placed encrypted.
- */
- struct pft_command {
- __u32 opcode;
- union {
- struct {
- /* @see pft_state */
- __u32 state;
- } set_state;
- struct {
- __u32 items_count; /* number of items */
- __u32 table[0]; /* array of UIDs */
- } update_app_list;
- struct {
- __u32 file_descriptor;
- } preform_in_place_file_enc;
- };
- };
- #endif /* MSM_PFT_H_ */
|