cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

zcrypt_cex2a.h (3330B)


      1/* SPDX-License-Identifier: GPL-2.0+ */
      2/*
      3 *  Copyright IBM Corp. 2001, 2006
      4 *  Author(s): Robert Burroughs
      5 *	       Eric Rossman (edrossma@us.ibm.com)
      6 *
      7 *  Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com)
      8 *  Major cleanup & driver split: Martin Schwidefsky <schwidefsky@de.ibm.com>
      9 */
     10
     11#ifndef _ZCRYPT_CEX2A_H_
     12#define _ZCRYPT_CEX2A_H_
     13
     14/**
     15 * The type 50 message family is associated with CEXxA cards.
     16 *
     17 * The four members of the family are described below.
     18 *
     19 * Note that all unsigned char arrays are right-justified and left-padded
     20 * with zeroes.
     21 *
     22 * Note that all reserved fields must be zeroes.
     23 */
     24struct type50_hdr {
     25	unsigned char	reserved1;
     26	unsigned char	msg_type_code;	/* 0x50 */
     27	unsigned short	msg_len;
     28	unsigned char	reserved2;
     29	unsigned char	ignored;
     30	unsigned short	reserved3;
     31} __packed;
     32
     33#define TYPE50_TYPE_CODE	0x50
     34
     35#define TYPE50_MEB1_FMT		0x0001
     36#define TYPE50_MEB2_FMT		0x0002
     37#define TYPE50_MEB3_FMT		0x0003
     38#define TYPE50_CRB1_FMT		0x0011
     39#define TYPE50_CRB2_FMT		0x0012
     40#define TYPE50_CRB3_FMT		0x0013
     41
     42/* Mod-Exp, with a small modulus */
     43struct type50_meb1_msg {
     44	struct type50_hdr header;
     45	unsigned short	keyblock_type;	/* 0x0001 */
     46	unsigned char	reserved[6];
     47	unsigned char	exponent[128];
     48	unsigned char	modulus[128];
     49	unsigned char	message[128];
     50} __packed;
     51
     52/* Mod-Exp, with a large modulus */
     53struct type50_meb2_msg {
     54	struct type50_hdr header;
     55	unsigned short	keyblock_type;	/* 0x0002 */
     56	unsigned char	reserved[6];
     57	unsigned char	exponent[256];
     58	unsigned char	modulus[256];
     59	unsigned char	message[256];
     60} __packed;
     61
     62/* Mod-Exp, with a larger modulus */
     63struct type50_meb3_msg {
     64	struct type50_hdr header;
     65	unsigned short	keyblock_type;	/* 0x0003 */
     66	unsigned char	reserved[6];
     67	unsigned char	exponent[512];
     68	unsigned char	modulus[512];
     69	unsigned char	message[512];
     70} __packed;
     71
     72/* CRT, with a small modulus */
     73struct type50_crb1_msg {
     74	struct type50_hdr header;
     75	unsigned short	keyblock_type;	/* 0x0011 */
     76	unsigned char	reserved[6];
     77	unsigned char	p[64];
     78	unsigned char	q[64];
     79	unsigned char	dp[64];
     80	unsigned char	dq[64];
     81	unsigned char	u[64];
     82	unsigned char	message[128];
     83} __packed;
     84
     85/* CRT, with a large modulus */
     86struct type50_crb2_msg {
     87	struct type50_hdr header;
     88	unsigned short	keyblock_type;	/* 0x0012 */
     89	unsigned char	reserved[6];
     90	unsigned char	p[128];
     91	unsigned char	q[128];
     92	unsigned char	dp[128];
     93	unsigned char	dq[128];
     94	unsigned char	u[128];
     95	unsigned char	message[256];
     96} __packed;
     97
     98/* CRT, with a larger modulus */
     99struct type50_crb3_msg {
    100	struct type50_hdr header;
    101	unsigned short	keyblock_type;	/* 0x0013 */
    102	unsigned char	reserved[6];
    103	unsigned char	p[256];
    104	unsigned char	q[256];
    105	unsigned char	dp[256];
    106	unsigned char	dq[256];
    107	unsigned char	u[256];
    108	unsigned char	message[512];
    109} __packed;
    110
    111/**
    112 * The type 80 response family is associated with a CEXxA cards.
    113 *
    114 * Note that all unsigned char arrays are right-justified and left-padded
    115 * with zeroes.
    116 *
    117 * Note that all reserved fields must be zeroes.
    118 */
    119
    120#define TYPE80_RSP_CODE 0x80
    121
    122struct type80_hdr {
    123	unsigned char	reserved1;
    124	unsigned char	type;		/* 0x80 */
    125	unsigned short	len;
    126	unsigned char	code;		/* 0x00 */
    127	unsigned char	reserved2[3];
    128	unsigned char	reserved3[8];
    129} __packed;
    130
    131int zcrypt_cex2a_init(void);
    132void zcrypt_cex2a_exit(void);
    133
    134#endif /* _ZCRYPT_CEX2A_H_ */