1b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales/* 2b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * Copyright (C) 2012 The Android Open Source Project 3b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * 4b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * Licensed under the Apache License, Version 2.0 (the "License"); 5b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * you may not use this file except in compliance with the License. 6b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * You may obtain a copy of the License at 7b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * 8b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * http://www.apache.org/licenses/LICENSE-2.0 9b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * 10b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * Unless required by applicable law or agreed to in writing, software 11b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * distributed under the License is distributed on an "AS IS" BASIS, 12b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * See the License for the specific language governing permissions and 14b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * limitations under the License. 15b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales */ 16b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 17b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales#pragma once 18b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 19b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales#define KEYMASTER_PORT "com.android.trusty.keymaster" 20b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales#define KEYMASTER_MAX_BUFFER_LENGTH 4096 21b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 22b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales// Commands 23b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Moralesenum keymaster_command { 24b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KEYMASTER_RESP_BIT = 1, 25b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KEYMASTER_REQ_SHIFT = 1, 26b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 27b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GENERATE_KEY = (0 << KEYMASTER_REQ_SHIFT), 28b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_BEGIN_OPERATION = (1 << KEYMASTER_REQ_SHIFT), 29b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_UPDATE_OPERATION = (2 << KEYMASTER_REQ_SHIFT), 30b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_FINISH_OPERATION = (3 << KEYMASTER_REQ_SHIFT), 31b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_ABORT_OPERATION = (4 << KEYMASTER_REQ_SHIFT), 32b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_IMPORT_KEY = (5 << KEYMASTER_REQ_SHIFT), 33b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_EXPORT_KEY = (6 << KEYMASTER_REQ_SHIFT), 34b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_VERSION = (7 << KEYMASTER_REQ_SHIFT), 35b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_ADD_RNG_ENTROPY = (8 << KEYMASTER_REQ_SHIFT), 36b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_ALGORITHMS = (9 << KEYMASTER_REQ_SHIFT), 37b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_BLOCK_MODES = (10 << KEYMASTER_REQ_SHIFT), 38b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_PADDING_MODES = (11 << KEYMASTER_REQ_SHIFT), 39b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_DIGESTS = (12 << KEYMASTER_REQ_SHIFT), 40b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_IMPORT_FORMATS = (13 << KEYMASTER_REQ_SHIFT), 41b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_SUPPORTED_EXPORT_FORMATS = (14 << KEYMASTER_REQ_SHIFT), 42b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales KM_GET_KEY_CHARACTERISTICS = (15 << KEYMASTER_REQ_SHIFT), 43b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales}; 44b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 45b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales#ifdef __ANDROID__ 46b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 47b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales/** 48b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * keymaster_message - Serial header for communicating with KM server 49b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * @cmd: the command, one of keymaster_command. 50b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales * @payload: start of the serialized command specific payload 51b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales */ 52b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Moralesstruct keymaster_message { 53b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales uint32_t cmd; 54b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales uint8_t payload[0]; 55b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales}; 56b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales 57b33c9b8ffa5e687a08311eae917c50fd615020d0Andres Morales#endif 58