aboutsummaryrefslogtreecommitdiff
path: root/keymaster/keymaster_qcom.h
diff options
context:
space:
mode:
Diffstat (limited to 'keymaster/keymaster_qcom.h')
-rw-r--r--keymaster/keymaster_qcom.h222
1 files changed, 0 insertions, 222 deletions
diff --git a/keymaster/keymaster_qcom.h b/keymaster/keymaster_qcom.h
deleted file mode 100644
index c6dd4e5..0000000
--- a/keymaster/keymaster_qcom.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * Copyright (C) 2012 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License"); you
- * may not use this file except in compliance with the License. You may
- * obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- * implied. See the License for the specific language governing
- * permissions and limitations under the License.
- */
-
-#ifndef ANDROID_HARDWARE_QCOM_KEYMASTER_H
-#define ANDROID_HARDWARE_QCOM_KEYMASTER_H
-
-#include <stdint.h>
-#include <sys/cdefs.h>
-#include <sys/types.h>
-
-__BEGIN_DECLS
-
-#ifdef _ION_HEAP_MASK_COMPATIBILITY_WA
-#define ION_HEAP_MASK heap_mask
-#else
-#define ION_HEAP_MASK heap_id_mask
-#endif
-
-/**
- * The id of this module
- */
-#define QCOM_KEYSTORE_KEYMASTER "qcom_keymaster"
-/**
- * Operation result
- */
-#define KEYMATER_SUCCESS 0
-#define KEYMASTER_FAILURE -1
-
-/**
- * The API level of this version of the header. The allows the implementing
- * module to recognize which API level of the client it is dealing with in
- * the case of pre-compiled binary clients.
- */
-#define QCOM_KEYMASTER_API_VERSION KEYMASTER_MODULE_API_VERSION_0_3
-
-#define KM_MAGIC_NUM (0x4B4D4B42) /* "KMKB" Key Master Key Blob in hex */
-#define KM_KEY_SIZE_MAX (512) /* 4096 bits */
-#define KM_IV_LENGTH (16) /* AES128 CBC IV */
-#define KM_HMAC_LENGTH (32) /* SHA2 will be used for HMAC */
-
-struct qcom_km_key_blob {
- uint32_t magic_num;
- uint32_t version_num;
- uint8_t modulus[KM_KEY_SIZE_MAX];
- uint32_t modulus_size;
- uint8_t public_exponent[KM_KEY_SIZE_MAX];
- uint32_t public_exponent_size;
- uint8_t iv[KM_IV_LENGTH];
- uint8_t encrypted_private_exponent[KM_KEY_SIZE_MAX];
- uint32_t encrypted_private_exponent_size;
- uint8_t hmac[KM_HMAC_LENGTH];
-};
-typedef struct qcom_km_key_blob qcom_km_key_blob_t;
-/**
- * Commands supported
- */
-enum keymaster_cmd_t {
- /*
- * List the commands supportedin by the hardware.
- */
- KEYMASTER_GENERATE_KEYPAIR = 0x00000001,
- KEYMASTER_IMPORT_KEYPAIR = 0x00000002,
- KEYMASTER_SIGN_DATA = 0x00000003,
- KEYMASTER_VERIFY_DATA = 0x00000004,
-};
-
-
-/**
- * Command to Generate a public and private key. The key data returned
- * (by secure app) is in shared buffer at offset of "key_blob" and is opaque
- *
- * cmd_id : Command issue to secure app
- * key_type : Currently on RSA_TYPE is supported
- * rsa_params : Parameters needed to generate an RSA key
- */
- struct keymaster_gen_keypair_cmd {
- keymaster_cmd_t cmd_id;
- keymaster_keypair_t key_type;
- keymaster_rsa_keygen_params_t rsa_params;
-};
-typedef struct keymaster_gen_keypair_cmd keymaster_gen_keypair_cmd_t;
-
-/**
- * Response to Generate a public and private key. The key data returned
- * (by secure app) is in shared buffer at offset of "key_blob" and is opaque
- *
- * cmd_id : Command issue to secure app
- * key_blob : key blob data
- * key_blob_len : Total length of key blob information
- * status : Result (success 0, or failure -1)
- */
-struct keymaster_gen_keypair_resp {
- keymaster_cmd_t cmd_id;
- qcom_km_key_blob_t key_blob;
- uint32_t key_blob_len;
- int32_t status;
-};
-typedef struct keymaster_gen_keypair_resp keymaster_gen_keypair_resp_t;
-
-
-/**
- * Command to import a public and private key pair. The imported keys
- * will be in PKCS#8 format with DER encoding (Java standard). The key
- * data returned (by secure app) is in shared buffer at offset of
- * "key_blob" and is opaque
- *
- * cmd_id : Command issue to secure app
- * pkcs8_key : Pointer to pkcs8 formatted key information
- * pkcs8_key_len: PKCS8 formatted key length
- */
-struct keymaster_import_keypair_cmd {
- keymaster_cmd_t cmd_id;
- uint32_t pkcs8_key;
- uint32_t pkcs8_key_len;
-};
-typedef struct keymaster_import_keypair_cmd keymaster_import_keypair_cmd_t;
-
-/**
- * Response to import a public and private key. The key data returned
- * (by secure app) is in shared buffer at offset of "key_blob" and is opaque
- *
- * cmd_id : Command issue to secure app
- * key_blob : key blob data
- * key_blob_len : Total length of key blob information
- * status : Result (success 0, or failure -1)
- */
-struct keymaster_import_keypair_resp {
- keymaster_cmd_t cmd_id;
- qcom_km_key_blob_t key_blob;
- uint32_t key_blob_len;
- int32_t status;
-};
-typedef struct keymaster_import_keypair_resp keymaster_import_keypair_resp_t;
-
-/**
- * Command to sign data using a key info generated before. This can use either
- * an asymmetric key or a secret key.
- * The signed data is returned (by secure app) at offset of data + dlen.
- *
- * cmd_id : Command issue to secure app
- * sign_param :
- * key_blob : Key data information (in shared buffer)
- * data : Pointer to plain data buffer
- * dlen : Plain data length
- */
-struct keymaster_sign_data_cmd {
- keymaster_cmd_t cmd_id;
- keymaster_rsa_sign_params_t sign_param;
- qcom_km_key_blob_t key_blob;
- uint32_t data;
- uint32_t dlen;
-};
-typedef struct keymaster_sign_data_cmd keymaster_sign_data_cmd_t;
-
-/**
- * Response to sign data response
- *
- * cmd_id : Command issue to secure app
- * signed_data : signature
- * sig_len : Signed data length
- * status : Result (success 0, or failure -1)
- */
-struct keymaster_sign_data_resp {
- keymaster_cmd_t cmd_id;
- uint8_t signed_data[KM_KEY_SIZE_MAX];
- uint32_t sig_len;
- int32_t status;
-};
-
-typedef struct keymaster_sign_data_resp keymaster_sign_data_resp_t;
-
-/**
- * Command to verify data using a key info generated before. This can use either
- * an asymmetric key or a secret key.
- *
- * cmd_id : Command issue to secure app
- * sign_param :
- * key_blob : Key data information (in shared buffer)
- * key_blob_len: Total key length
- * signed_data : Pointer to signed data buffer
- * signed_dlen : Signed data length
- * signature : Offset to the signature data buffer (from signed data buffer)
- * slen : Signature data length
- */
-struct keymaster_verify_data_cmd {
- keymaster_cmd_t cmd_id;
- keymaster_rsa_sign_params_t sign_param;
- qcom_km_key_blob_t key_blob;
- uint32_t signed_data;
- uint32_t signed_dlen;
- uint32_t signature;
- uint32_t slen;
-};
-typedef struct keymaster_verify_data_cmd keymaster_verify_data_cmd_t;
-/**
- * Response to verify data
- *
- * cmd_id : Command issue to secure app
- * status : Result (success 0, or failure -1)
- */
-struct keymaster_verify_data_resp {
- keymaster_cmd_t cmd_id;
- int32_t status;
-};
-typedef struct keymaster_verify_data_resp keymaster_verify_data_resp_t;
-
-__END_DECLS
-
-#endif // ANDROID_HARDWARE_QCOM_KEYMASTER_H