118 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/*3 * Copyright (C) 2016 Cavium, Inc.4 */5 6#ifndef _CPTVF_ALGS_H_7#define _CPTVF_ALGS_H_8 9#include "request_manager.h"10 11#define MAX_DEVICES 1612#define MAJOR_OP_FC 0x3313#define MAX_ENC_KEY_SIZE 3214#define MAX_HASH_KEY_SIZE 6415#define MAX_KEY_SIZE (MAX_ENC_KEY_SIZE + MAX_HASH_KEY_SIZE)16#define CONTROL_WORD_LEN 817#define KEY2_OFFSET 4818 19#define DMA_MODE_FLAG(dma_mode) \20 (((dma_mode) == DMA_GATHER_SCATTER) ? (1 << 7) : 0)21 22enum req_type {23 AE_CORE_REQ,24 SE_CORE_REQ,25};26 27enum cipher_type {28 DES3_CBC = 0x1,29 DES3_ECB = 0x2,30 AES_CBC = 0x3,31 AES_ECB = 0x4,32 AES_CFB = 0x5,33 AES_CTR = 0x6,34 AES_GCM = 0x7,35 AES_XTS = 0x836};37 38enum aes_type {39 AES_128_BIT = 0x1,40 AES_192_BIT = 0x2,41 AES_256_BIT = 0x342};43 44union encr_ctrl {45 u64 flags;46 struct {47#if defined(__BIG_ENDIAN_BITFIELD)48 u64 enc_cipher:4;49 u64 reserved1:1;50 u64 aes_key:2;51 u64 iv_source:1;52 u64 hash_type:4;53 u64 reserved2:3;54 u64 auth_input_type:1;55 u64 mac_len:8;56 u64 reserved3:8;57 u64 encr_offset:16;58 u64 iv_offset:8;59 u64 auth_offset:8;60#else61 u64 auth_offset:8;62 u64 iv_offset:8;63 u64 encr_offset:16;64 u64 reserved3:8;65 u64 mac_len:8;66 u64 auth_input_type:1;67 u64 reserved2:3;68 u64 hash_type:4;69 u64 iv_source:1;70 u64 aes_key:2;71 u64 reserved1:1;72 u64 enc_cipher:4;73#endif74 } e;75};76 77struct cvm_cipher {78 const char *name;79 u8 value;80};81 82struct enc_context {83 union encr_ctrl enc_ctrl;84 u8 encr_key[32];85 u8 encr_iv[16];86};87 88struct fchmac_context {89 u8 ipad[64];90 u8 opad[64]; /* or OPAD */91};92 93struct fc_context {94 struct enc_context enc;95 struct fchmac_context hmac;96};97 98struct cvm_enc_ctx {99 u32 key_len;100 u8 enc_key[MAX_KEY_SIZE];101 u8 cipher_type:4;102 u8 key_type:2;103};104 105struct cvm_des3_ctx {106 u32 key_len;107 u8 des3_key[MAX_KEY_SIZE];108};109 110struct cvm_req_ctx {111 struct cpt_request_info cpt_req;112 u64 control_word;113 struct fc_context fctx;114};115 116int cptvf_do_request(void *cptvf, struct cpt_request_info *req);117#endif /*_CPTVF_ALGS_H_*/118