123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- /* SPDX-License-Identifier: GPL-2.0+ */
- /*
- * Copyright IBM Corp. 2001, 2006
- * Author(s): Robert Burroughs
- * Eric Rossman ([email protected])
- *
- * Hotplug & misc device support: Jochen Roehrig ([email protected])
- * Major cleanup & driver split: Martin Schwidefsky <[email protected]>
- */
- #ifndef _ZCRYPT_CEX2A_H_
- #define _ZCRYPT_CEX2A_H_
- /**
- * The type 50 message family is associated with CEXxA cards.
- *
- * The four members of the family are described below.
- *
- * Note that all unsigned char arrays are right-justified and left-padded
- * with zeroes.
- *
- * Note that all reserved fields must be zeroes.
- */
- struct type50_hdr {
- unsigned char reserved1;
- unsigned char msg_type_code; /* 0x50 */
- unsigned short msg_len;
- unsigned char reserved2;
- unsigned char ignored;
- unsigned short reserved3;
- } __packed;
- #define TYPE50_TYPE_CODE 0x50
- #define TYPE50_MEB1_FMT 0x0001
- #define TYPE50_MEB2_FMT 0x0002
- #define TYPE50_MEB3_FMT 0x0003
- #define TYPE50_CRB1_FMT 0x0011
- #define TYPE50_CRB2_FMT 0x0012
- #define TYPE50_CRB3_FMT 0x0013
- /* Mod-Exp, with a small modulus */
- struct type50_meb1_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0001 */
- unsigned char reserved[6];
- unsigned char exponent[128];
- unsigned char modulus[128];
- unsigned char message[128];
- } __packed;
- /* Mod-Exp, with a large modulus */
- struct type50_meb2_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0002 */
- unsigned char reserved[6];
- unsigned char exponent[256];
- unsigned char modulus[256];
- unsigned char message[256];
- } __packed;
- /* Mod-Exp, with a larger modulus */
- struct type50_meb3_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0003 */
- unsigned char reserved[6];
- unsigned char exponent[512];
- unsigned char modulus[512];
- unsigned char message[512];
- } __packed;
- /* CRT, with a small modulus */
- struct type50_crb1_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0011 */
- unsigned char reserved[6];
- unsigned char p[64];
- unsigned char q[64];
- unsigned char dp[64];
- unsigned char dq[64];
- unsigned char u[64];
- unsigned char message[128];
- } __packed;
- /* CRT, with a large modulus */
- struct type50_crb2_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0012 */
- unsigned char reserved[6];
- unsigned char p[128];
- unsigned char q[128];
- unsigned char dp[128];
- unsigned char dq[128];
- unsigned char u[128];
- unsigned char message[256];
- } __packed;
- /* CRT, with a larger modulus */
- struct type50_crb3_msg {
- struct type50_hdr header;
- unsigned short keyblock_type; /* 0x0013 */
- unsigned char reserved[6];
- unsigned char p[256];
- unsigned char q[256];
- unsigned char dp[256];
- unsigned char dq[256];
- unsigned char u[256];
- unsigned char message[512];
- } __packed;
- /**
- * The type 80 response family is associated with a CEXxA cards.
- *
- * Note that all unsigned char arrays are right-justified and left-padded
- * with zeroes.
- *
- * Note that all reserved fields must be zeroes.
- */
- #define TYPE80_RSP_CODE 0x80
- struct type80_hdr {
- unsigned char reserved1;
- unsigned char type; /* 0x80 */
- unsigned short len;
- unsigned char code; /* 0x00 */
- unsigned char reserved2[3];
- unsigned char reserved3[8];
- } __packed;
- int zcrypt_cex2a_init(void);
- void zcrypt_cex2a_exit(void);
- #endif /* _ZCRYPT_CEX2A_H_ */
|