18854d3c6SJerome Forissier /* 28854d3c6SJerome Forissier * Copyright (c) 2014, Linaro Limited 38854d3c6SJerome Forissier * All rights reserved. 48854d3c6SJerome Forissier * 58854d3c6SJerome Forissier * Redistribution and use in source and binary forms, with or without 68854d3c6SJerome Forissier * modification, are permitted provided that the following conditions are met: 78854d3c6SJerome Forissier * 88854d3c6SJerome Forissier * 1. Redistributions of source code must retain the above copyright notice, 98854d3c6SJerome Forissier * this list of conditions and the following disclaimer. 108854d3c6SJerome Forissier * 118854d3c6SJerome Forissier * 2. Redistributions in binary form must reproduce the above copyright notice, 128854d3c6SJerome Forissier * this list of conditions and the following disclaimer in the documentation 138854d3c6SJerome Forissier * and/or other materials provided with the distribution. 148854d3c6SJerome Forissier * 158854d3c6SJerome Forissier * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 168854d3c6SJerome Forissier * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 178854d3c6SJerome Forissier * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 188854d3c6SJerome Forissier * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 198854d3c6SJerome Forissier * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 208854d3c6SJerome Forissier * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 218854d3c6SJerome Forissier * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 228854d3c6SJerome Forissier * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 238854d3c6SJerome Forissier * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 248854d3c6SJerome Forissier * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 258854d3c6SJerome Forissier * POSSIBILITY OF SUCH DAMAGE. 268854d3c6SJerome Forissier */ 278854d3c6SJerome Forissier 288854d3c6SJerome Forissier #ifndef TEE_API_DEFINES_EXTENSIONS_H 298854d3c6SJerome Forissier #define TEE_API_DEFINES_EXTENSIONS_H 308854d3c6SJerome Forissier 318854d3c6SJerome Forissier /* 32cdb198a7SJerome Forissier * HMAC-based Extract-and-Expand Key Derivation Function (HKDF) 33cdb198a7SJerome Forissier */ 34cdb198a7SJerome Forissier 35cdb198a7SJerome Forissier #define TEE_ALG_HKDF_MD5_DERIVE_KEY 0x800010C0 36cdb198a7SJerome Forissier #define TEE_ALG_HKDF_SHA1_DERIVE_KEY 0x800020C0 37cdb198a7SJerome Forissier #define TEE_ALG_HKDF_SHA224_DERIVE_KEY 0x800030C0 38cdb198a7SJerome Forissier #define TEE_ALG_HKDF_SHA256_DERIVE_KEY 0x800040C0 39cdb198a7SJerome Forissier #define TEE_ALG_HKDF_SHA384_DERIVE_KEY 0x800050C0 40cdb198a7SJerome Forissier #define TEE_ALG_HKDF_SHA512_DERIVE_KEY 0x800060C0 41cdb198a7SJerome Forissier 42cdb198a7SJerome Forissier #define TEE_TYPE_HKDF_IKM 0xA10000C0 43cdb198a7SJerome Forissier 44cdb198a7SJerome Forissier #define TEE_ATTR_HKDF_IKM 0xC00001C0 45cdb198a7SJerome Forissier #define TEE_ATTR_HKDF_SALT 0xD00002C0 46cdb198a7SJerome Forissier #define TEE_ATTR_HKDF_INFO 0xD00003C0 47cdb198a7SJerome Forissier #define TEE_ATTR_HKDF_OKM_LENGTH 0xF00004C0 48cdb198a7SJerome Forissier 49cdb198a7SJerome Forissier /* 508854d3c6SJerome Forissier * Concatenation Key Derivation Function (Concat KDF) 518854d3c6SJerome Forissier * NIST SP 800-56A section 5.8.1 528854d3c6SJerome Forissier */ 538854d3c6SJerome Forissier 548854d3c6SJerome Forissier #define TEE_ALG_CONCAT_KDF_SHA1_DERIVE_KEY 0x800020C1 558854d3c6SJerome Forissier #define TEE_ALG_CONCAT_KDF_SHA224_DERIVE_KEY 0x800030C1 568854d3c6SJerome Forissier #define TEE_ALG_CONCAT_KDF_SHA256_DERIVE_KEY 0x800040C1 578854d3c6SJerome Forissier #define TEE_ALG_CONCAT_KDF_SHA384_DERIVE_KEY 0x800050C1 588854d3c6SJerome Forissier #define TEE_ALG_CONCAT_KDF_SHA512_DERIVE_KEY 0x800060C1 598854d3c6SJerome Forissier 608854d3c6SJerome Forissier #define TEE_TYPE_CONCAT_KDF_Z 0xA10000C1 618854d3c6SJerome Forissier 628854d3c6SJerome Forissier #define TEE_ATTR_CONCAT_KDF_Z 0xC00001C1 638854d3c6SJerome Forissier #define TEE_ATTR_CONCAT_KDF_OTHER_INFO 0xD00002C1 648854d3c6SJerome Forissier #define TEE_ATTR_CONCAT_KDF_DKM_LENGTH 0xF00003C1 658854d3c6SJerome Forissier 660f2293b7SJerome Forissier /* 670f2293b7SJerome Forissier * PKCS #5 v2.0 Key Derivation Function 2 (PBKDF2) 680f2293b7SJerome Forissier * RFC 2898 section 5.2 690f2293b7SJerome Forissier * https://www.ietf.org/rfc/rfc2898.txt 700f2293b7SJerome Forissier */ 710f2293b7SJerome Forissier 720f2293b7SJerome Forissier #define TEE_ALG_PBKDF2_HMAC_SHA1_DERIVE_KEY 0x800020C2 730f2293b7SJerome Forissier 740f2293b7SJerome Forissier #define TEE_TYPE_PBKDF2_PASSWORD 0xA10000C2 750f2293b7SJerome Forissier 760f2293b7SJerome Forissier #define TEE_ATTR_PBKDF2_PASSWORD 0xC00001C2 770f2293b7SJerome Forissier #define TEE_ATTR_PBKDF2_SALT 0xD00002C2 780f2293b7SJerome Forissier #define TEE_ATTR_PBKDF2_ITERATION_COUNT 0xF00003C2 790f2293b7SJerome Forissier #define TEE_ATTR_PBKDF2_DKM_LENGTH 0xF00004C2 800f2293b7SJerome Forissier 81b44708c1SJerome Forissier /* 82b44708c1SJerome Forissier * Implementation-specific object storage constants 83b44708c1SJerome Forissier */ 84b44708c1SJerome Forissier 85b44708c1SJerome Forissier /* Storage is provided by the Rich Execution Environment (REE) */ 86b44708c1SJerome Forissier #define TEE_STORAGE_PRIVATE_REE 0x80000000 87b44708c1SJerome Forissier /* Storage is the Replay Protected Memory Block partition of an eMMC device */ 88b44708c1SJerome Forissier #define TEE_STORAGE_PRIVATE_RPMB 0x80000100 89*455856d4SJens Wiklander /* Was TEE_STORAGE_PRIVATE_SQL, which isn't supported any longer */ 90*455856d4SJens Wiklander #define TEE_STORAGE_PRIVATE_SQL_RESERVED 0x80000200 91b44708c1SJerome Forissier 92dd3247beSEtienne Carriere /* 93dd3247beSEtienne Carriere * Extension of "Memory Access Rights Constants" 94dd3247beSEtienne Carriere * #define TEE_MEMORY_ACCESS_READ 0x00000001 95dd3247beSEtienne Carriere * #define TEE_MEMORY_ACCESS_WRITE 0x00000002 96dd3247beSEtienne Carriere * #define TEE_MEMORY_ACCESS_ANY_OWNER 0x00000004 97dd3247beSEtienne Carriere * 98dd3247beSEtienne Carriere * TEE_MEMORY_ACCESS_NONSECURE : if set TEE_CheckMemoryAccessRights() 99dd3247beSEtienne Carriere * successfully returns only if target vmem range is mapped non-secure. 100dd3247beSEtienne Carriere * 101dd3247beSEtienne Carriere * TEE_MEMORY_ACCESS_SECURE : if set TEE_CheckMemoryAccessRights() 102dd3247beSEtienne Carriere * successfully returns only if target vmem range is mapped secure. 103dd3247beSEtienne Carriere 104dd3247beSEtienne Carriere */ 105dd3247beSEtienne Carriere #define TEE_MEMORY_ACCESS_NONSECURE 0x10000000 106dd3247beSEtienne Carriere #define TEE_MEMORY_ACCESS_SECURE 0x20000000 107dd3247beSEtienne Carriere 1088854d3c6SJerome Forissier #endif /* TEE_API_DEFINES_EXTENSIONS_H */ 109