mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
117 lines
1.9 KiB
117 lines
1.9 KiB
/* SPDX-License-Identifier: GPL-2.0-only */ |
|
/* |
|
* Copyright (C) 2016 Cavium, Inc. |
|
*/ |
|
|
|
#ifndef _CPTVF_ALGS_H_ |
|
#define _CPTVF_ALGS_H_ |
|
|
|
#include "request_manager.h" |
|
|
|
#define MAX_DEVICES 16 |
|
#define MAJOR_OP_FC 0x33 |
|
#define MAX_ENC_KEY_SIZE 32 |
|
#define MAX_HASH_KEY_SIZE 64 |
|
#define MAX_KEY_SIZE (MAX_ENC_KEY_SIZE + MAX_HASH_KEY_SIZE) |
|
#define CONTROL_WORD_LEN 8 |
|
#define KEY2_OFFSET 48 |
|
|
|
#define DMA_MODE_FLAG(dma_mode) \ |
|
(((dma_mode) == DMA_GATHER_SCATTER) ? (1 << 7) : 0) |
|
|
|
enum req_type { |
|
AE_CORE_REQ, |
|
SE_CORE_REQ, |
|
}; |
|
|
|
enum cipher_type { |
|
DES3_CBC = 0x1, |
|
DES3_ECB = 0x2, |
|
AES_CBC = 0x3, |
|
AES_ECB = 0x4, |
|
AES_CFB = 0x5, |
|
AES_CTR = 0x6, |
|
AES_GCM = 0x7, |
|
AES_XTS = 0x8 |
|
}; |
|
|
|
enum aes_type { |
|
AES_128_BIT = 0x1, |
|
AES_192_BIT = 0x2, |
|
AES_256_BIT = 0x3 |
|
}; |
|
|
|
union encr_ctrl { |
|
u64 flags; |
|
struct { |
|
#if defined(__BIG_ENDIAN_BITFIELD) |
|
u64 enc_cipher:4; |
|
u64 reserved1:1; |
|
u64 aes_key:2; |
|
u64 iv_source:1; |
|
u64 hash_type:4; |
|
u64 reserved2:3; |
|
u64 auth_input_type:1; |
|
u64 mac_len:8; |
|
u64 reserved3:8; |
|
u64 encr_offset:16; |
|
u64 iv_offset:8; |
|
u64 auth_offset:8; |
|
#else |
|
u64 auth_offset:8; |
|
u64 iv_offset:8; |
|
u64 encr_offset:16; |
|
u64 reserved3:8; |
|
u64 mac_len:8; |
|
u64 auth_input_type:1; |
|
u64 reserved2:3; |
|
u64 hash_type:4; |
|
u64 iv_source:1; |
|
u64 aes_key:2; |
|
u64 reserved1:1; |
|
u64 enc_cipher:4; |
|
#endif |
|
} e; |
|
}; |
|
|
|
struct cvm_cipher { |
|
const char *name; |
|
u8 value; |
|
}; |
|
|
|
struct enc_context { |
|
union encr_ctrl enc_ctrl; |
|
u8 encr_key[32]; |
|
u8 encr_iv[16]; |
|
}; |
|
|
|
struct fchmac_context { |
|
u8 ipad[64]; |
|
u8 opad[64]; /* or OPAD */ |
|
}; |
|
|
|
struct fc_context { |
|
struct enc_context enc; |
|
struct fchmac_context hmac; |
|
}; |
|
|
|
struct cvm_enc_ctx { |
|
u32 key_len; |
|
u8 enc_key[MAX_KEY_SIZE]; |
|
u8 cipher_type:4; |
|
u8 key_type:2; |
|
}; |
|
|
|
struct cvm_des3_ctx { |
|
u32 key_len; |
|
u8 des3_key[MAX_KEY_SIZE]; |
|
}; |
|
|
|
struct cvm_req_ctx { |
|
struct cpt_request_info cpt_req; |
|
u64 control_word; |
|
struct fc_context fctx; |
|
}; |
|
|
|
int cptvf_do_request(void *cptvf, struct cpt_request_info *req); |
|
#endif /*_CPTVF_ALGS_H_*/
|
|
|