1
2
3
4
5
6
7
8
9
10
11#ifndef _ZCRYPT_CEX2A_H_
12#define _ZCRYPT_CEX2A_H_
13
14
15
16
17
18
19
20
21
22
23
24struct type50_hdr {
25 unsigned char reserved1;
26 unsigned char msg_type_code;
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
43struct type50_meb1_msg {
44 struct type50_hdr header;
45 unsigned short keyblock_type;
46 unsigned char reserved[6];
47 unsigned char exponent[128];
48 unsigned char modulus[128];
49 unsigned char message[128];
50} __packed;
51
52
53struct type50_meb2_msg {
54 struct type50_hdr header;
55 unsigned short keyblock_type;
56 unsigned char reserved[6];
57 unsigned char exponent[256];
58 unsigned char modulus[256];
59 unsigned char message[256];
60} __packed;
61
62
63struct type50_meb3_msg {
64 struct type50_hdr header;
65 unsigned short keyblock_type;
66 unsigned char reserved[6];
67 unsigned char exponent[512];
68 unsigned char modulus[512];
69 unsigned char message[512];
70} __packed;
71
72
73struct type50_crb1_msg {
74 struct type50_hdr header;
75 unsigned short keyblock_type;
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
86struct type50_crb2_msg {
87 struct type50_hdr header;
88 unsigned short keyblock_type;
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
99struct type50_crb3_msg {
100 struct type50_hdr header;
101 unsigned short keyblock_type;
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
113
114
115
116
117
118
119
120#define TYPE80_RSP_CODE 0x80
121
122struct type80_hdr {
123 unsigned char reserved1;
124 unsigned char type;
125 unsigned short len;
126 unsigned char code;
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
135