1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /* 3 * Copyright (c) 2014, Linaro Limited 4 */ 5 6 #ifndef TEE_API_DEFINES_EXTENSIONS_H 7 #define TEE_API_DEFINES_EXTENSIONS_H 8 9 /* 10 * HMAC-based Extract-and-Expand Key Derivation Function (HKDF) 11 */ 12 13 #define TEE_ALG_HKDF_MD5_DERIVE_KEY 0x800010C0 14 #define TEE_ALG_HKDF_SHA1_DERIVE_KEY 0x800020C0 15 #define TEE_ALG_HKDF_SHA224_DERIVE_KEY 0x800030C0 16 #define TEE_ALG_HKDF_SHA256_DERIVE_KEY 0x800040C0 17 #define TEE_ALG_HKDF_SHA384_DERIVE_KEY 0x800050C0 18 #define TEE_ALG_HKDF_SHA512_DERIVE_KEY 0x800060C0 19 20 #define TEE_TYPE_HKDF_IKM 0xA10000C0 21 22 #define TEE_ATTR_HKDF_IKM 0xC00001C0 23 #define TEE_ATTR_HKDF_SALT 0xD00002C0 24 #define TEE_ATTR_HKDF_INFO 0xD00003C0 25 #define TEE_ATTR_HKDF_OKM_LENGTH 0xF00004C0 26 27 /* 28 * Concatenation Key Derivation Function (Concat KDF) 29 * NIST SP 800-56A section 5.8.1 30 */ 31 32 #define TEE_ALG_CONCAT_KDF_SHA1_DERIVE_KEY 0x800020C1 33 #define TEE_ALG_CONCAT_KDF_SHA224_DERIVE_KEY 0x800030C1 34 #define TEE_ALG_CONCAT_KDF_SHA256_DERIVE_KEY 0x800040C1 35 #define TEE_ALG_CONCAT_KDF_SHA384_DERIVE_KEY 0x800050C1 36 #define TEE_ALG_CONCAT_KDF_SHA512_DERIVE_KEY 0x800060C1 37 38 #define TEE_TYPE_CONCAT_KDF_Z 0xA10000C1 39 40 #define TEE_ATTR_CONCAT_KDF_Z 0xC00001C1 41 #define TEE_ATTR_CONCAT_KDF_OTHER_INFO 0xD00002C1 42 #define TEE_ATTR_CONCAT_KDF_DKM_LENGTH 0xF00003C1 43 44 /* 45 * PKCS #5 v2.0 Key Derivation Function 2 (PBKDF2) 46 * RFC 2898 section 5.2 47 * https://www.ietf.org/rfc/rfc2898.txt 48 */ 49 50 #define TEE_ALG_PBKDF2_HMAC_SHA1_DERIVE_KEY 0x800020C2 51 52 #define TEE_TYPE_PBKDF2_PASSWORD 0xA10000C2 53 54 #define TEE_ATTR_PBKDF2_PASSWORD 0xC00001C2 55 #define TEE_ATTR_PBKDF2_SALT 0xD00002C2 56 #define TEE_ATTR_PBKDF2_ITERATION_COUNT 0xF00003C2 57 #define TEE_ATTR_PBKDF2_DKM_LENGTH 0xF00004C2 58 59 /* 60 * PKCS#1 v1.5 RSASSA pre-hashed sign/verify 61 */ 62 63 #define TEE_ALG_RSASSA_PKCS1_V1_5 0xF0000830 64 65 /* 66 * Implementation-specific object storage constants 67 */ 68 69 /* Storage is provided by the Rich Execution Environment (REE) */ 70 #define TEE_STORAGE_PRIVATE_REE 0x80000000 71 /* Storage is the Replay Protected Memory Block partition of an eMMC device */ 72 #define TEE_STORAGE_PRIVATE_RPMB 0x80000100 73 /* Was TEE_STORAGE_PRIVATE_SQL, which isn't supported any longer */ 74 #define TEE_STORAGE_PRIVATE_SQL_RESERVED 0x80000200 75 76 /* 77 * Extension of "Memory Access Rights Constants" 78 * #define TEE_MEMORY_ACCESS_READ 0x00000001 79 * #define TEE_MEMORY_ACCESS_WRITE 0x00000002 80 * #define TEE_MEMORY_ACCESS_ANY_OWNER 0x00000004 81 * 82 * TEE_MEMORY_ACCESS_NONSECURE : if set TEE_CheckMemoryAccessRights() 83 * successfully returns only if target vmem range is mapped non-secure. 84 * 85 * TEE_MEMORY_ACCESS_SECURE : if set TEE_CheckMemoryAccessRights() 86 * successfully returns only if target vmem range is mapped secure. 87 88 */ 89 #define TEE_MEMORY_ACCESS_NONSECURE 0x10000000 90 #define TEE_MEMORY_ACCESS_SECURE 0x20000000 91 92 #endif /* TEE_API_DEFINES_EXTENSIONS_H */ 93