1/* 2 * linux/drivers/s390/crypto/zcrypt_pcixcc.h 3 * 4 * zcrypt 2.1.0 5 * 6 * Copyright (C) 2001, 2006 IBM Corporation 7 * Author(s): Robert Burroughs 8 * Eric Rossman (edrossma@us.ibm.com) 9 * 10 * Hotplug & misc device support: Jochen Roehrig (roehrig@de.ibm.com) 11 * Major cleanup & driver split: Martin Schwidefsky <schwidefsky@de.ibm.com> 12 * 13 * This program is free software; you can redistribute it and/or modify 14 * it under the terms of the GNU General Public License as published by 15 * the Free Software Foundation; either version 2, or (at your option) 16 * any later version. 17 * 18 * This program is distributed in the hope that it will be useful, 19 * but WITHOUT ANY WARRANTY; without even the implied warranty of 20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 21 * GNU General Public License for more details. 22 * 23 * You should have received a copy of the GNU General Public License 24 * along with this program; if not, write to the Free Software 25 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 26 */ 27 28#ifndef _ZCRYPT_PCIXCC_H_ 29#define _ZCRYPT_PCIXCC_H_ 30 31/** 32 * CPRBX 33 * Note that all shorts and ints are big-endian. 34 * All pointer fields are 16 bytes long, and mean nothing. 35 * 36 * A request CPRB is followed by a request_parameter_block. 37 * 38 * The request (or reply) parameter block is organized thus: 39 * function code 40 * VUD block 41 * key block 42 */ 43struct CPRBX { 44 unsigned short cprb_len; /* CPRB length 220 */ 45 unsigned char cprb_ver_id; /* CPRB version id. 0x02 */ 46 unsigned char pad_000[3]; /* Alignment pad bytes */ 47 unsigned char func_id[2]; /* function id 0x5432 */ 48 unsigned char cprb_flags[4]; /* Flags */ 49 unsigned int req_parml; /* request parameter buffer len */ 50 unsigned int req_datal; /* request data buffer */ 51 unsigned int rpl_msgbl; /* reply message block length */ 52 unsigned int rpld_parml; /* replied parameter block len */ 53 unsigned int rpl_datal; /* reply data block len */ 54 unsigned int rpld_datal; /* replied data block len */ 55 unsigned int req_extbl; /* request extension block len */ 56 unsigned char pad_001[4]; /* reserved */ 57 unsigned int rpld_extbl; /* replied extension block len */ 58 unsigned char req_parmb[16]; /* request parm block 'address' */ 59 unsigned char req_datab[16]; /* request data block 'address' */ 60 unsigned char rpl_parmb[16]; /* reply parm block 'address' */ 61 unsigned char rpl_datab[16]; /* reply data block 'address' */ 62 unsigned char req_extb[16]; /* request extension block 'addr'*/ 63 unsigned char rpl_extb[16]; /* reply extension block 'addres'*/ 64 unsigned short ccp_rtcode; /* server return code */ 65 unsigned short ccp_rscode; /* server reason code */ 66 unsigned int mac_data_len; /* Mac Data Length */ 67 unsigned char logon_id[8]; /* Logon Identifier */ 68 unsigned char mac_value[8]; /* Mac Value */ 69 unsigned char mac_content_flgs;/* Mac content flag byte */ 70 unsigned char pad_002; /* Alignment */ 71 unsigned short domain; /* Domain */ 72 unsigned char pad_003[12]; /* Domain masks */ 73 unsigned char pad_004[36]; /* reserved */ 74} __attribute__((packed)); 75 76int zcrypt_pcixcc_init(void); 77void zcrypt_pcixcc_exit(void); 78 79#endif /* _ZCRYPT_PCIXCC_H_ */ 80