oleavr-rgl-a500-mini-linux-.../include/uapi/linux/sunxi_ss_kl_ioctl.h
Ole André Vadla Ravnås 169c65d57e Initial commit
2022-05-07 01:01:45 +02:00

59 lines
1.5 KiB
C

/*
* The ioctl interface of sunxi key ladder.
*
* Copyright (C) 2017-2020 Allwinner.
*
* zhouhuacai <zhouhuacai@allwinnertech.com>
*
* This file is licensed under the terms of the GNU General Public
* License version 2. This program is licensed "as is" without any
* warranty of any kind, whether express or implied.
*/
#ifndef _SUNXI_SS_KL_IOCTRL_H
#define _SUNXI_SS_KL_IOCTRL_H
#include <linux/types.h>
#define KL_MAX_KEY_LEVEL (5)
#define KL_KEY_SIZE (16) /*byte in unit:128bits*/
enum {
CMD_SET_INFO = 0,
CMD_SET_KEY_INFO,
CMD_GET_INFO,
CMD_GEN_ALL,
};
struct ss_kl_status {
unsigned int kl_level:8; /*0:no kl; 1: 3stage; 2: 5stage*/
unsigned int kl_alg_type:8; /*0:AES; 1:DES; 2:TDES*/
unsigned int kl_encrypt:8; /*0: decrypt; 1: encrypt*/
unsigned int kl_stu:8;
} ss_kl_status_s;
enum {
SS_NO_KL = 0,
SS_KL_LEVEL3,
SS_KL_LEVEL5,
};
struct ss_kl_s {
struct ss_kl_status status;
unsigned char vid[KL_KEY_SIZE];
unsigned char mid[KL_KEY_SIZE];
unsigned char ek[KL_MAX_KEY_LEVEL][KL_KEY_SIZE]; /*ecw,ek1,ek2...ekn*/
unsigned char nonce[KL_KEY_SIZE];
unsigned char da_nonce[KL_KEY_SIZE]; /*challenge response output */
};
#define KL_IOCTL 0xfb
#define KL_SET_INFO _IOWR(KL_IOCTL, CMD_SET_INFO, struct ss_kl_s)
#define KL_SET_KEY_INFO _IOWR(KL_IOCTL, CMD_SET_KEY_INFO, struct ss_kl_s)
#define KL_GET_INFO _IOWR(KL_IOCTL, CMD_GET_INFO, struct ss_kl_s)
#define KL_GEN_ALL _IOWR(KL_IOCTL, CMD_GEN_ALL, struct ss_kl_s)
#endif /* _SUNXI_SS_KL_IOCTRL_H */