sgx_isa/
large_array_impl.rs

1/* Copyright (c) Jethro G. Beekman and Fortanix, Inc.
2 *
3 * This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6
7use super::*;
8
9macro_rules! impl_default_clone_eq {
10    ($t:ident) => {
11        impl Default for $t {
12            fn default() -> $t {
13                unsafe { ::core::mem::zeroed() }
14            }
15        }
16        impl Clone for $t {
17            fn clone(&self) -> $t {
18                unsafe { ::core::ptr::read(self) }
19            }
20        }
21        impl PartialEq for $t {
22            fn eq(&self, other: &$t) -> bool {
23                unsafe {
24                    let lhs: &[u8; Self::UNPADDED_SIZE] = ::core::mem::transmute(self);
25                    let rhs: &[u8; Self::UNPADDED_SIZE] = ::core::mem::transmute(other);
26                    lhs.get(..) == rhs.get(..)
27                }
28            }
29        }
30        // This cannot be derived because the derivation asserts that the members are Eq.
31        impl Eq for $t {}
32    }
33}
34
35impl ::core::fmt::Debug for Secs {
36    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
37        match *self {
38            Secs {
39                size: ref __self_0_0,
40                baseaddr: ref __self_0_1,
41                ssaframesize: ref __self_0_2,
42                miscselect: ref __self_0_3,
43                attributes: ref __self_0_5,
44                mrenclave: ref __self_0_6,
45                mrsigner: ref __self_0_8,
46                isvprodid: ref __self_0_10,
47                isvsvn: ref __self_0_11,
48                ..
49            } => {
50                let mut builder = __arg_0.debug_struct("Secs");
51                let _ = builder.field("size", &&(*__self_0_0));
52                let _ = builder.field("baseaddr", &&(*__self_0_1));
53                let _ = builder.field("ssaframesize", &&(*__self_0_2));
54                let _ = builder.field("miscselect", &&(*__self_0_3));
55                let _ = builder.field("attributes", &&(*__self_0_5));
56                let _ = builder.field("mrenclave", &&(*__self_0_6));
57                let _ = builder.field("mrsigner", &&(*__self_0_8));
58                let _ = builder.field("isvprodid", &&(*__self_0_10));
59                let _ = builder.field("isvsvn", &&(*__self_0_11));
60                builder.finish()
61            }
62        }
63    }
64}
65
66impl ::core::fmt::Debug for Tcs {
67    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
68        match *self {
69            Tcs {
70                flags: ref __self_0_1,
71                ossa: ref __self_0_2,
72                cssa: ref __self_0_3,
73                nssa: ref __self_0_4,
74                oentry: ref __self_0_5,
75                ofsbasgx: ref __self_0_7,
76                ogsbasgx: ref __self_0_8,
77                fslimit: ref __self_0_9,
78                gslimit: ref __self_0_10,
79                ..
80            } => {
81                let mut builder = __arg_0.debug_struct("Tcs");
82                let _ = builder.field("flags", &&(*__self_0_1));
83                let _ = builder.field("ossa", &&(*__self_0_2));
84                let _ = builder.field("cssa", &&(*__self_0_3));
85                let _ = builder.field("nssa", &&(*__self_0_4));
86                let _ = builder.field("oentry", &&(*__self_0_5));
87                let _ = builder.field("ofsbasgx", &&(*__self_0_7));
88                let _ = builder.field("ogsbasgx", &&(*__self_0_8));
89                let _ = builder.field("fslimit", &&(*__self_0_9));
90                let _ = builder.field("gslimit", &&(*__self_0_10));
91                builder.finish()
92            }
93        }
94    }
95}
96
97impl ::core::fmt::Debug for Secinfo {
98    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
99        match *self {
100            Secinfo {
101                flags: ref __self_0_0,
102                ..
103            } => {
104                let mut builder = __arg_0.debug_struct("Secinfo");
105                let _ = builder.field("flags", &&(*__self_0_0));
106                builder.finish()
107            }
108        }
109    }
110}
111
112impl ::core::fmt::Debug for Pcmd {
113    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
114        match *self {
115            Pcmd {
116                secinfo: ref __self_0_0,
117                enclaveid: ref __self_0_1,
118                mac: ref __self_0_3,
119                ..
120            } => {
121                let mut builder = __arg_0.debug_struct("Pcmd");
122                let _ = builder.field("secinfo", &&(*__self_0_0));
123                let _ = builder.field("enclaveid", &&(*__self_0_1));
124                let _ = builder.field("mac", &&(*__self_0_3));
125                builder.finish()
126            }
127        }
128    }
129}
130
131impl ::core::fmt::Debug for Sigstruct {
132    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
133        match *self {
134            Sigstruct {
135                header: ref __self_0_0,
136                vendor: ref __self_0_1,
137                date: ref __self_0_2,
138                header2: ref __self_0_3,
139                swdefined: ref __self_0_4,
140                modulus: ref __self_0_6,
141                exponent: ref __self_0_7,
142                signature: ref __self_0_8,
143                miscselect: ref __self_0_9,
144                miscmask: ref __self_0_10,
145                attributes: ref __self_0_12,
146                attributemask: ref __self_0_13,
147                enclavehash: ref __self_0_14,
148                isvprodid: ref __self_0_16,
149                isvsvn: ref __self_0_17,
150                q1: ref __self_0_19,
151                q2: ref __self_0_20,
152                ..
153            } => {
154                let mut builder = __arg_0.debug_struct("Sigstruct");
155                let _ = builder.field("header", &&(*__self_0_0));
156                let _ = builder.field("vendor", &&(*__self_0_1));
157                let _ = builder.field("date", &&(*__self_0_2));
158                let _ = builder.field("header2", &&(*__self_0_3));
159                let _ = builder.field("swdefined", &&(*__self_0_4));
160                let _ = builder.field("modulus", &"(384 bytes)");
161                let _ = builder.field("exponent", &&(*__self_0_7));
162                let _ = builder.field("signature", &"(384 bytes)");
163                let _ = builder.field("miscselect", &&(*__self_0_9));
164                let _ = builder.field("miscmask", &&(*__self_0_10));
165                let _ = builder.field("attributes", &&(*__self_0_12));
166                let _ = builder.field("attributemask", &&(*__self_0_13));
167                let _ = builder.field("enclavehash", &&(*__self_0_14));
168                let _ = builder.field("isvprodid", &&(*__self_0_16));
169                let _ = builder.field("isvsvn", &&(*__self_0_17));
170                let _ = builder.field("q1", &"(384 bytes)");
171                let _ = builder.field("q2", &"(384 bytes)");
172                builder.finish()
173            }
174        }
175    }
176}
177
178impl ::core::fmt::Debug for Einittoken {
179    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
180        match *self {
181            Einittoken {
182                valid: ref __self_0_0,
183                attributes: ref __self_0_2,
184                mrenclave: ref __self_0_3,
185                mrsigner: ref __self_0_5,
186                cpusvnle: ref __self_0_7,
187                isvprodidle: ref __self_0_8,
188                isvsvnle: ref __self_0_9,
189                maskedmiscselectle: ref __self_0_11,
190                maskedattributesle: ref __self_0_12,
191                keyid: ref __self_0_13,
192                mac: ref __self_0_14,
193                ..
194            } => {
195                let mut builder = __arg_0.debug_struct("Einittoken");
196                let _ = builder.field("valid", &&(*__self_0_0));
197                let _ = builder.field("attributes", &&(*__self_0_2));
198                let _ = builder.field("mrenclave", &&(*__self_0_3));
199                let _ = builder.field("mrsigner", &&(*__self_0_5));
200                let _ = builder.field("cpusvnle", &&(*__self_0_7));
201                let _ = builder.field("isvprodidle", &&(*__self_0_8));
202                let _ = builder.field("isvsvnle", &&(*__self_0_9));
203                let _ = builder.field("maskedmiscselectle", &&(*__self_0_11));
204                let _ = builder.field("maskedattributesle", &&(*__self_0_12));
205                let _ = builder.field("keyid", &&(*__self_0_13));
206                let _ = builder.field("mac", &&(*__self_0_14));
207                builder.finish()
208            }
209        }
210    }
211}
212
213impl ::core::fmt::Debug for Report {
214    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
215        match *self {
216            Report {
217                cpusvn: ref __self_0_0,
218                miscselect: ref __self_0_1,
219                attributes: ref __self_0_3,
220                mrenclave: ref __self_0_4,
221                mrsigner: ref __self_0_6,
222                isvprodid: ref __self_0_8,
223                isvsvn: ref __self_0_9,
224                reportdata: ref __self_0_11,
225                keyid: ref __self_0_12,
226                mac: ref __self_0_13,
227                ..
228            } => {
229                let mut builder = __arg_0.debug_struct("Report");
230                let _ = builder.field("cpusvn", &&(*__self_0_0));
231                let _ = builder.field("miscselect", &&(*__self_0_1));
232                let _ = builder.field("attributes", &&(*__self_0_3));
233                let _ = builder.field("mrenclave", &&(*__self_0_4));
234                let _ = builder.field("mrsigner", &&(*__self_0_6));
235                let _ = builder.field("isvprodid", &&(*__self_0_8));
236                let _ = builder.field("isvsvn", &&(*__self_0_9));
237                let _ = builder.field("reportdata", &"(64 bytes)");
238                let _ = builder.field("keyid", &"(32 bytes)");
239                let _ = builder.field("mac", &&(*__self_0_13));
240                builder.finish()
241            }
242        }
243    }
244}
245
246impl ::core::fmt::Debug for Targetinfo {
247    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
248        match *self {
249            Targetinfo {
250                measurement: ref __self_0_0,
251                attributes: ref __self_0_1,
252                miscselect: ref __self_0_3,
253                ..
254            } => {
255                let mut builder = __arg_0.debug_struct("Targetinfo");
256                let _ = builder.field("measurement", &&(*__self_0_0));
257                let _ = builder.field("attributes", &&(*__self_0_1));
258                let _ = builder.field("miscselect", &&(*__self_0_3));
259                builder.finish()
260            }
261        }
262    }
263}
264
265impl ::core::fmt::Debug for Keyrequest {
266    fn fmt(&self, __arg_0: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
267        match *self {
268            Keyrequest {
269                keyname: ref __self_0_0,
270                keypolicy: ref __self_0_1,
271                isvsvn: ref __self_0_2,
272                cpusvn: ref __self_0_4,
273                attributemask: ref __self_0_5,
274                keyid: ref __self_0_6,
275                miscmask: ref __self_0_7,
276                ..
277            } => {
278                let mut builder = __arg_0.debug_struct("Keyrequest");
279                let _ = builder.field("keyname", &&(*__self_0_0));
280                let _ = builder.field("keypolicy", &&(*__self_0_1));
281                let _ = builder.field("isvsvn", &&(*__self_0_2));
282                let _ = builder.field("cpusvn", &&(*__self_0_4));
283                let _ = builder.field("attributemask", &&(*__self_0_5));
284                let _ = builder.field("keyid", &&(*__self_0_6));
285                let _ = builder.field("miscmask", &&(*__self_0_7));
286                builder.finish()
287            }
288        }
289    }
290}