xref: /optee_os/core/drivers/crypto/hisilicon/sec_pbkdf2.h (revision 7122f387301bdbb7b5ebbb9922197059c295117a)
1*7122f387Sleisen /* SPDX-License-Identifier: BSD-2-Clause */
2*7122f387Sleisen /* Copyright (c) 2022-2024 HiSilicon Limited. */
3*7122f387Sleisen 
4*7122f387Sleisen #ifndef __SEC_PBKDF2_H__
5*7122f387Sleisen #define __SEC_PBKDF2_H__
6*7122f387Sleisen 
7*7122f387Sleisen #define SEC_MAX_SALT_LEN		1024
8*7122f387Sleisen #define SEC_MAX_PASSWORD_LEN		128
9*7122f387Sleisen #define SEC_MAX_DK_LEN			512
10*7122f387Sleisen #define SEC_MAX_ITERATION_NUM		16777215
11*7122f387Sleisen #define SEC_HMAC_SHA1			0x10
12*7122f387Sleisen #define SEC_HMAC_SHA256			0x11
13*7122f387Sleisen #define SEC_HMAC_SHA224			0x13
14*7122f387Sleisen #define SEC_HMAC_SHA384			0x14
15*7122f387Sleisen #define SEC_HMAC_SHA512			0x15
16*7122f387Sleisen #define SEC_HMAC_SM3			0x26
17*7122f387Sleisen #define SEC_HUK_ENABLE			0x1
18*7122f387Sleisen #define SEC_IMG_ROTKEY_AP		0x6
19*7122f387Sleisen #define SEC_CRITICAL_ITERATION_NUM	1000000
20*7122f387Sleisen #define SEC_PER_BLOCK_TIME1_NS		(3 * 48)
21*7122f387Sleisen #define SEC_PER_BLOCK_TIME2_NS		(3 * 68)
22*7122f387Sleisen #define SEC_MAX_TIMEOUT_NS		4000000000
23*7122f387Sleisen 
24*7122f387Sleisen struct sec_pbkdf2_msg {
25*7122f387Sleisen 	uint8_t salt[SEC_MAX_SALT_LEN];
26*7122f387Sleisen 	uint8_t base_key[SEC_MAX_PASSWORD_LEN];
27*7122f387Sleisen 	uint8_t out[SEC_MAX_DK_LEN];
28*7122f387Sleisen 	uintptr_t salt_dma;
29*7122f387Sleisen 	uintptr_t key_dma;
30*7122f387Sleisen 	uintptr_t out_dma;
31*7122f387Sleisen 	uint32_t salt_len;
32*7122f387Sleisen 	uint32_t key_len;
33*7122f387Sleisen 	uint32_t out_len;
34*7122f387Sleisen 	uint32_t c_num;
35*7122f387Sleisen 	uint32_t derive_type;
36*7122f387Sleisen };
37*7122f387Sleisen 
38*7122f387Sleisen #endif
39