123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117 |
- /* 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_*/
|