Skip to main content

tss_esapi_sys/opt/rustwide/workdir/src/bindings/
aarch64-unknown-linux-gnu.rs

1/* automatically generated by rust-bindgen 0.72.0 */
2/* TPM2_TSS_VERSION="4.1.3" */
3
4pub const _STDINT_H: u32 = 1;
5pub const _FEATURES_H: u32 = 1;
6pub const _DEFAULT_SOURCE: u32 = 1;
7pub const __GLIBC_USE_ISOC2X: u32 = 0;
8pub const __USE_ISOC11: u32 = 1;
9pub const __USE_ISOC99: u32 = 1;
10pub const __USE_ISOC95: u32 = 1;
11pub const __USE_POSIX_IMPLICITLY: u32 = 1;
12pub const _POSIX_SOURCE: u32 = 1;
13pub const _POSIX_C_SOURCE: u32 = 200809;
14pub const __USE_POSIX: u32 = 1;
15pub const __USE_POSIX2: u32 = 1;
16pub const __USE_POSIX199309: u32 = 1;
17pub const __USE_POSIX199506: u32 = 1;
18pub const __USE_XOPEN2K: u32 = 1;
19pub const __USE_XOPEN2K8: u32 = 1;
20pub const _ATFILE_SOURCE: u32 = 1;
21pub const __WORDSIZE: u32 = 64;
22pub const __WORDSIZE_TIME64_COMPAT32: u32 = 0;
23pub const __TIMESIZE: u32 = 64;
24pub const __USE_MISC: u32 = 1;
25pub const __USE_ATFILE: u32 = 1;
26pub const __USE_FORTIFY_LEVEL: u32 = 0;
27pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
28pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
29pub const _STDC_PREDEF_H: u32 = 1;
30pub const __STDC_IEC_559__: u32 = 1;
31pub const __STDC_IEC_60559_BFP__: u32 = 201404;
32pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
33pub const __STDC_IEC_60559_COMPLEX__: u32 = 201404;
34pub const __STDC_ISO_10646__: u32 = 201706;
35pub const __GNU_LIBRARY__: u32 = 6;
36pub const __GLIBC__: u32 = 2;
37pub const __GLIBC_MINOR__: u32 = 35;
38pub const _SYS_CDEFS_H: u32 = 1;
39pub const __glibc_c99_flexarr_available: u32 = 1;
40pub const __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI: u32 = 0;
41pub const __HAVE_GENERIC_SELECTION: u32 = 1;
42pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
43pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
44pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
45pub const __GLIBC_USE_IEC_60559_EXT: u32 = 0;
46pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
47pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
48pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
49pub const _BITS_TYPES_H: u32 = 1;
50pub const _BITS_TYPESIZES_H: u32 = 1;
51pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
52pub const __INO_T_MATCHES_INO64_T: u32 = 1;
53pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
54pub const __STATFS_MATCHES_STATFS64: u32 = 1;
55pub const __FD_SETSIZE: u32 = 1024;
56pub const _BITS_TIME64_H: u32 = 1;
57pub const _BITS_WCHAR_H: u32 = 1;
58pub const _BITS_STDINT_INTN_H: u32 = 1;
59pub const _BITS_STDINT_UINTN_H: u32 = 1;
60pub const INT8_MIN: i32 = -128;
61pub const INT16_MIN: i32 = -32768;
62pub const INT32_MIN: i32 = -2147483648;
63pub const INT8_MAX: u32 = 127;
64pub const INT16_MAX: u32 = 32767;
65pub const INT32_MAX: u32 = 2147483647;
66pub const UINT8_MAX: u32 = 255;
67pub const UINT16_MAX: u32 = 65535;
68pub const UINT32_MAX: u32 = 4294967295;
69pub const INT_LEAST8_MIN: i32 = -128;
70pub const INT_LEAST16_MIN: i32 = -32768;
71pub const INT_LEAST32_MIN: i32 = -2147483648;
72pub const INT_LEAST8_MAX: u32 = 127;
73pub const INT_LEAST16_MAX: u32 = 32767;
74pub const INT_LEAST32_MAX: u32 = 2147483647;
75pub const UINT_LEAST8_MAX: u32 = 255;
76pub const UINT_LEAST16_MAX: u32 = 65535;
77pub const UINT_LEAST32_MAX: u32 = 4294967295;
78pub const INT_FAST8_MIN: i32 = -128;
79pub const INT_FAST16_MIN: i64 = -9223372036854775808;
80pub const INT_FAST32_MIN: i64 = -9223372036854775808;
81pub const INT_FAST8_MAX: u32 = 127;
82pub const INT_FAST16_MAX: u64 = 9223372036854775807;
83pub const INT_FAST32_MAX: u64 = 9223372036854775807;
84pub const UINT_FAST8_MAX: u32 = 255;
85pub const UINT_FAST16_MAX: i32 = -1;
86pub const UINT_FAST32_MAX: i32 = -1;
87pub const INTPTR_MIN: i64 = -9223372036854775808;
88pub const INTPTR_MAX: u64 = 9223372036854775807;
89pub const UINTPTR_MAX: i32 = -1;
90pub const PTRDIFF_MIN: i64 = -9223372036854775808;
91pub const PTRDIFF_MAX: u64 = 9223372036854775807;
92pub const SIG_ATOMIC_MIN: i32 = -2147483648;
93pub const SIG_ATOMIC_MAX: u32 = 2147483647;
94pub const SIZE_MAX: i32 = -1;
95pub const WINT_MIN: u32 = 0;
96pub const WINT_MAX: u32 = 4294967295;
97pub const TSS2_RC_LAYER_SHIFT: u32 = 16;
98pub const TSS2_BASE_RC_GENERAL_FAILURE: u32 = 1;
99pub const TSS2_BASE_RC_NOT_IMPLEMENTED: u32 = 2;
100pub const TSS2_BASE_RC_BAD_CONTEXT: u32 = 3;
101pub const TSS2_BASE_RC_ABI_MISMATCH: u32 = 4;
102pub const TSS2_BASE_RC_BAD_REFERENCE: u32 = 5;
103pub const TSS2_BASE_RC_INSUFFICIENT_BUFFER: u32 = 6;
104pub const TSS2_BASE_RC_BAD_SEQUENCE: u32 = 7;
105pub const TSS2_BASE_RC_NO_CONNECTION: u32 = 8;
106pub const TSS2_BASE_RC_TRY_AGAIN: u32 = 9;
107pub const TSS2_BASE_RC_IO_ERROR: u32 = 10;
108pub const TSS2_BASE_RC_BAD_VALUE: u32 = 11;
109pub const TSS2_BASE_RC_NOT_PERMITTED: u32 = 12;
110pub const TSS2_BASE_RC_INVALID_SESSIONS: u32 = 13;
111pub const TSS2_BASE_RC_NO_DECRYPT_PARAM: u32 = 14;
112pub const TSS2_BASE_RC_NO_ENCRYPT_PARAM: u32 = 15;
113pub const TSS2_BASE_RC_BAD_SIZE: u32 = 16;
114pub const TSS2_BASE_RC_MALFORMED_RESPONSE: u32 = 17;
115pub const TSS2_BASE_RC_INSUFFICIENT_CONTEXT: u32 = 18;
116pub const TSS2_BASE_RC_INSUFFICIENT_RESPONSE: u32 = 19;
117pub const TSS2_BASE_RC_INCOMPATIBLE_TCTI: u32 = 20;
118pub const TSS2_BASE_RC_NOT_SUPPORTED: u32 = 21;
119pub const TSS2_BASE_RC_BAD_TCTI_STRUCTURE: u32 = 22;
120pub const TSS2_BASE_RC_MEMORY: u32 = 23;
121pub const TSS2_BASE_RC_BAD_TR: u32 = 24;
122pub const TSS2_BASE_RC_MULTIPLE_DECRYPT_SESSIONS: u32 = 25;
123pub const TSS2_BASE_RC_MULTIPLE_ENCRYPT_SESSIONS: u32 = 26;
124pub const TSS2_BASE_RC_RSP_AUTH_FAILED: u32 = 27;
125pub const TSS2_BASE_RC_NO_CONFIG: u32 = 28;
126pub const TSS2_BASE_RC_BAD_PATH: u32 = 29;
127pub const TSS2_BASE_RC_NOT_DELETABLE: u32 = 30;
128pub const TSS2_BASE_RC_PATH_ALREADY_EXISTS: u32 = 31;
129pub const TSS2_BASE_RC_KEY_NOT_FOUND: u32 = 32;
130pub const TSS2_BASE_RC_SIGNATURE_VERIFICATION_FAILED: u32 = 33;
131pub const TSS2_BASE_RC_HASH_MISMATCH: u32 = 34;
132pub const TSS2_BASE_RC_KEY_NOT_DUPLICABLE: u32 = 35;
133pub const TSS2_BASE_RC_PATH_NOT_FOUND: u32 = 36;
134pub const TSS2_BASE_RC_NO_CERT: u32 = 37;
135pub const TSS2_BASE_RC_NO_PCR: u32 = 38;
136pub const TSS2_BASE_RC_PCR_NOT_RESETTABLE: u32 = 39;
137pub const TSS2_BASE_RC_BAD_TEMPLATE: u32 = 40;
138pub const TSS2_BASE_RC_AUTHORIZATION_FAILED: u32 = 41;
139pub const TSS2_BASE_RC_AUTHORIZATION_UNKNOWN: u32 = 42;
140pub const TSS2_BASE_RC_NV_NOT_READABLE: u32 = 43;
141pub const TSS2_BASE_RC_NV_TOO_SMALL: u32 = 44;
142pub const TSS2_BASE_RC_NV_NOT_WRITEABLE: u32 = 45;
143pub const TSS2_BASE_RC_POLICY_UNKNOWN: u32 = 46;
144pub const TSS2_BASE_RC_NV_WRONG_TYPE: u32 = 47;
145pub const TSS2_BASE_RC_NAME_ALREADY_EXISTS: u32 = 48;
146pub const TSS2_BASE_RC_NO_TPM: u32 = 49;
147pub const TSS2_BASE_RC_BAD_KEY: u32 = 50;
148pub const TSS2_BASE_RC_NO_HANDLE: u32 = 51;
149pub const TSS2_BASE_RC_NOT_PROVISIONED: u32 = 52;
150pub const TSS2_BASE_RC_ALREADY_PROVISIONED: u32 = 53;
151pub const TSS2_BASE_RC_CALLBACK_NULL: u32 = 54;
152pub const TSS2_LAYER_IMPLEMENTATION_SPECIFIC_OFFSET: u32 = 63488;
153pub const TSS2_LEVEL_IMPLEMENTATION_SPECIFIC_SHIFT: u32 = 11;
154pub const TPM2_MAX_COMMAND_SIZE: u32 = 4096;
155pub const TPM2_MAX_RESPONSE_SIZE: u32 = 4096;
156pub const TPM2_NUM_PCR_BANKS: u32 = 16;
157pub const TPM2_MAX_DIGEST_BUFFER: u32 = 1024;
158pub const TPM2_MAX_NV_BUFFER_SIZE: u32 = 2048;
159pub const TPM2_MAX_PCRS: u32 = 32;
160pub const TPM2_MAX_ALG_LIST_SIZE: u32 = 128;
161pub const TPM2_MAX_CAP_CC: u32 = 256;
162pub const TPM2_MAX_CAP_BUFFER: u32 = 1024;
163pub const TPM2_MAX_CONTEXT_SIZE: u32 = 5120;
164pub const TPM2_SHA_DIGEST_SIZE: u32 = 20;
165pub const TPM2_SHA1_DIGEST_SIZE: u32 = 20;
166pub const TPM2_SHA256_DIGEST_SIZE: u32 = 32;
167pub const TPM2_SHA384_DIGEST_SIZE: u32 = 48;
168pub const TPM2_SHA512_DIGEST_SIZE: u32 = 64;
169pub const TPM2_SM3_256_DIGEST_SIZE: u32 = 32;
170pub const TPM2_MAX_SYM_BLOCK_SIZE: u32 = 16;
171pub const TPM2_MAX_SYM_DATA: u32 = 256;
172pub const TPM2_MAX_ECC_KEY_BYTES: u32 = 128;
173pub const TPM2_MAX_SYM_KEY_BYTES: u32 = 32;
174pub const TPM2_MAX_RSA_KEY_BYTES: u32 = 512;
175pub const TPM2_LABEL_MAX_BUFFER: u32 = 32;
176pub const TPM2_PCR_SELECT_MAX: u32 = 4;
177pub const TPM2_PRIVATE_VENDOR_SPECIFIC_BYTES: u32 = 1280;
178pub const TPMA_LOCALITY_EXTENDED_SHIFT: u32 = 5;
179pub const TPMA_CC_COMMANDINDEX_SHIFT: u32 = 0;
180pub const TPMA_CC_CHANDLES_SHIFT: u32 = 25;
181pub const TPMA_CC_RES_SHIFT: u32 = 30;
182pub const TPM2_NO: u32 = 0;
183pub const TPM2_YES: u32 = 1;
184pub const TPM2_NV_INDEX_INDEX_SHIFT: u32 = 0;
185pub const TPM2_NV_INDEX_RH_NV_SHIFT: u32 = 24;
186pub const TPMA_NV_TPM2_NT_SHIFT: u32 = 4;
187pub const _SYS_POLL_H: u32 = 1;
188pub const POLLIN: u32 = 1;
189pub const POLLPRI: u32 = 2;
190pub const POLLOUT: u32 = 4;
191pub const POLLRDNORM: u32 = 64;
192pub const POLLRDBAND: u32 = 128;
193pub const POLLWRNORM: u32 = 256;
194pub const POLLWRBAND: u32 = 512;
195pub const POLLERR: u32 = 8;
196pub const POLLHUP: u32 = 16;
197pub const POLLNVAL: u32 = 32;
198pub const TSS2_TCTI_TIMEOUT_BLOCK: i32 = -1;
199pub const TSS2_TCTI_TIMEOUT_NONE: u32 = 0;
200pub const TSS2_TCTI_INFO_SYMBOL: &[u8; 15] = b"Tss2_Tcti_Info\0";
201pub const TSS2_SYS_MAX_SESSIONS: u32 = 3;
202pub const ESYS_TR_NONE: u32 = 4095;
203pub const ESYS_TR_PASSWORD: u32 = 255;
204pub const ESYS_TR_PCR0: u32 = 0;
205pub const ESYS_TR_PCR1: u32 = 1;
206pub const ESYS_TR_PCR2: u32 = 2;
207pub const ESYS_TR_PCR3: u32 = 3;
208pub const ESYS_TR_PCR4: u32 = 4;
209pub const ESYS_TR_PCR5: u32 = 5;
210pub const ESYS_TR_PCR6: u32 = 6;
211pub const ESYS_TR_PCR7: u32 = 7;
212pub const ESYS_TR_PCR8: u32 = 8;
213pub const ESYS_TR_PCR9: u32 = 9;
214pub const ESYS_TR_PCR10: u32 = 10;
215pub const ESYS_TR_PCR11: u32 = 11;
216pub const ESYS_TR_PCR12: u32 = 12;
217pub const ESYS_TR_PCR13: u32 = 13;
218pub const ESYS_TR_PCR14: u32 = 14;
219pub const ESYS_TR_PCR15: u32 = 15;
220pub const ESYS_TR_PCR16: u32 = 16;
221pub const ESYS_TR_PCR17: u32 = 17;
222pub const ESYS_TR_PCR18: u32 = 18;
223pub const ESYS_TR_PCR19: u32 = 19;
224pub const ESYS_TR_PCR20: u32 = 20;
225pub const ESYS_TR_PCR21: u32 = 21;
226pub const ESYS_TR_PCR22: u32 = 22;
227pub const ESYS_TR_PCR23: u32 = 23;
228pub const ESYS_TR_PCR24: u32 = 24;
229pub const ESYS_TR_PCR25: u32 = 25;
230pub const ESYS_TR_PCR26: u32 = 26;
231pub const ESYS_TR_PCR27: u32 = 27;
232pub const ESYS_TR_PCR28: u32 = 28;
233pub const ESYS_TR_PCR29: u32 = 29;
234pub const ESYS_TR_PCR30: u32 = 30;
235pub const ESYS_TR_PCR31: u32 = 31;
236pub const ESYS_TR_RH_OWNER: u32 = 257;
237pub const ESYS_TR_RH_NULL: u32 = 263;
238pub const ESYS_TR_RH_LOCKOUT: u32 = 266;
239pub const ESYS_TR_RH_ENDORSEMENT: u32 = 267;
240pub const ESYS_TR_RH_PLATFORM: u32 = 268;
241pub const ESYS_TR_RH_PLATFORM_NV: u32 = 269;
242pub const ESYS_TR_RH_FW_OWNER: u32 = 270;
243pub const ESYS_TR_RH_FW_ENDORSEMENT: u32 = 271;
244pub const ESYS_TR_RH_FW_PLATFORM: u32 = 272;
245pub const ESYS_TR_RH_FW_NULL: u32 = 273;
246pub const ESYS_TR_RH_SVN_OWNER_BASE: u32 = 16842752;
247pub const ESYS_TR_RH_SVN_ENDORSEMENT_BASE: u32 = 16908288;
248pub const ESYS_TR_RH_SVN_PLATFORM_BASE: u32 = 16973824;
249pub const ESYS_TR_RH_SVN_NULL_BASE: u32 = 17039360;
250pub const ESYS_TR_RH_AUTH_FIRST: u32 = 272;
251pub const ESYS_TR_RH_ACT_FIRST: u32 = 288;
252pub const ESYS_TR_RH_ACT_0: u32 = 288;
253pub const ESYS_TR_RH_ACT_1: u32 = 289;
254pub const ESYS_TR_RH_ACT_2: u32 = 290;
255pub const ESYS_TR_RH_ACT_3: u32 = 291;
256pub const ESYS_TR_RH_ACT_4: u32 = 292;
257pub const ESYS_TR_RH_ACT_5: u32 = 293;
258pub const ESYS_TR_RH_ACT_6: u32 = 294;
259pub const ESYS_TR_RH_ACT_7: u32 = 295;
260pub const ESYS_TR_RH_ACT_8: u32 = 296;
261pub const ESYS_TR_RH_ACT_9: u32 = 297;
262pub const ESYS_TR_RH_ACT_A: u32 = 298;
263pub const ESYS_TR_RH_ACT_B: u32 = 299;
264pub const ESYS_TR_RH_ACT_C: u32 = 300;
265pub const ESYS_TR_RH_ACT_D: u32 = 301;
266pub const ESYS_TR_RH_ACT_E: u32 = 302;
267pub const ESYS_TR_RH_ACT_F: u32 = 303;
268pub const ESYS_TR_RH_ACT_LAST: u32 = 303;
269pub const ESYS_TR_RH_AC_FIRST: u32 = 320;
270pub const ESYS_TR_RH_AC_LAST: u32 = 65855;
271pub const _INTTYPES_H: u32 = 1;
272pub const ____gwchar_t_defined: u32 = 1;
273pub const __PRI64_PREFIX: &[u8; 2] = b"l\0";
274pub const __PRIPTR_PREFIX: &[u8; 2] = b"l\0";
275pub const PRId8: &[u8; 2] = b"d\0";
276pub const PRId16: &[u8; 2] = b"d\0";
277pub const PRId32: &[u8; 2] = b"d\0";
278pub const PRId64: &[u8; 3] = b"ld\0";
279pub const PRIdLEAST8: &[u8; 2] = b"d\0";
280pub const PRIdLEAST16: &[u8; 2] = b"d\0";
281pub const PRIdLEAST32: &[u8; 2] = b"d\0";
282pub const PRIdLEAST64: &[u8; 3] = b"ld\0";
283pub const PRIdFAST8: &[u8; 2] = b"d\0";
284pub const PRIdFAST16: &[u8; 3] = b"ld\0";
285pub const PRIdFAST32: &[u8; 3] = b"ld\0";
286pub const PRIdFAST64: &[u8; 3] = b"ld\0";
287pub const PRIi8: &[u8; 2] = b"i\0";
288pub const PRIi16: &[u8; 2] = b"i\0";
289pub const PRIi32: &[u8; 2] = b"i\0";
290pub const PRIi64: &[u8; 3] = b"li\0";
291pub const PRIiLEAST8: &[u8; 2] = b"i\0";
292pub const PRIiLEAST16: &[u8; 2] = b"i\0";
293pub const PRIiLEAST32: &[u8; 2] = b"i\0";
294pub const PRIiLEAST64: &[u8; 3] = b"li\0";
295pub const PRIiFAST8: &[u8; 2] = b"i\0";
296pub const PRIiFAST16: &[u8; 3] = b"li\0";
297pub const PRIiFAST32: &[u8; 3] = b"li\0";
298pub const PRIiFAST64: &[u8; 3] = b"li\0";
299pub const PRIo8: &[u8; 2] = b"o\0";
300pub const PRIo16: &[u8; 2] = b"o\0";
301pub const PRIo32: &[u8; 2] = b"o\0";
302pub const PRIo64: &[u8; 3] = b"lo\0";
303pub const PRIoLEAST8: &[u8; 2] = b"o\0";
304pub const PRIoLEAST16: &[u8; 2] = b"o\0";
305pub const PRIoLEAST32: &[u8; 2] = b"o\0";
306pub const PRIoLEAST64: &[u8; 3] = b"lo\0";
307pub const PRIoFAST8: &[u8; 2] = b"o\0";
308pub const PRIoFAST16: &[u8; 3] = b"lo\0";
309pub const PRIoFAST32: &[u8; 3] = b"lo\0";
310pub const PRIoFAST64: &[u8; 3] = b"lo\0";
311pub const PRIu8: &[u8; 2] = b"u\0";
312pub const PRIu16: &[u8; 2] = b"u\0";
313pub const PRIu32: &[u8; 2] = b"u\0";
314pub const PRIu64: &[u8; 3] = b"lu\0";
315pub const PRIuLEAST8: &[u8; 2] = b"u\0";
316pub const PRIuLEAST16: &[u8; 2] = b"u\0";
317pub const PRIuLEAST32: &[u8; 2] = b"u\0";
318pub const PRIuLEAST64: &[u8; 3] = b"lu\0";
319pub const PRIuFAST8: &[u8; 2] = b"u\0";
320pub const PRIuFAST16: &[u8; 3] = b"lu\0";
321pub const PRIuFAST32: &[u8; 3] = b"lu\0";
322pub const PRIuFAST64: &[u8; 3] = b"lu\0";
323pub const PRIx8: &[u8; 2] = b"x\0";
324pub const PRIx16: &[u8; 2] = b"x\0";
325pub const PRIx32: &[u8; 2] = b"x\0";
326pub const PRIx64: &[u8; 3] = b"lx\0";
327pub const PRIxLEAST8: &[u8; 2] = b"x\0";
328pub const PRIxLEAST16: &[u8; 2] = b"x\0";
329pub const PRIxLEAST32: &[u8; 2] = b"x\0";
330pub const PRIxLEAST64: &[u8; 3] = b"lx\0";
331pub const PRIxFAST8: &[u8; 2] = b"x\0";
332pub const PRIxFAST16: &[u8; 3] = b"lx\0";
333pub const PRIxFAST32: &[u8; 3] = b"lx\0";
334pub const PRIxFAST64: &[u8; 3] = b"lx\0";
335pub const PRIX8: &[u8; 2] = b"X\0";
336pub const PRIX16: &[u8; 2] = b"X\0";
337pub const PRIX32: &[u8; 2] = b"X\0";
338pub const PRIX64: &[u8; 3] = b"lX\0";
339pub const PRIXLEAST8: &[u8; 2] = b"X\0";
340pub const PRIXLEAST16: &[u8; 2] = b"X\0";
341pub const PRIXLEAST32: &[u8; 2] = b"X\0";
342pub const PRIXLEAST64: &[u8; 3] = b"lX\0";
343pub const PRIXFAST8: &[u8; 2] = b"X\0";
344pub const PRIXFAST16: &[u8; 3] = b"lX\0";
345pub const PRIXFAST32: &[u8; 3] = b"lX\0";
346pub const PRIXFAST64: &[u8; 3] = b"lX\0";
347pub const PRIdMAX: &[u8; 3] = b"ld\0";
348pub const PRIiMAX: &[u8; 3] = b"li\0";
349pub const PRIoMAX: &[u8; 3] = b"lo\0";
350pub const PRIuMAX: &[u8; 3] = b"lu\0";
351pub const PRIxMAX: &[u8; 3] = b"lx\0";
352pub const PRIXMAX: &[u8; 3] = b"lX\0";
353pub const PRIdPTR: &[u8; 3] = b"ld\0";
354pub const PRIiPTR: &[u8; 3] = b"li\0";
355pub const PRIoPTR: &[u8; 3] = b"lo\0";
356pub const PRIuPTR: &[u8; 3] = b"lu\0";
357pub const PRIxPTR: &[u8; 3] = b"lx\0";
358pub const PRIXPTR: &[u8; 3] = b"lX\0";
359pub const SCNd8: &[u8; 4] = b"hhd\0";
360pub const SCNd16: &[u8; 3] = b"hd\0";
361pub const SCNd32: &[u8; 2] = b"d\0";
362pub const SCNd64: &[u8; 3] = b"ld\0";
363pub const SCNdLEAST8: &[u8; 4] = b"hhd\0";
364pub const SCNdLEAST16: &[u8; 3] = b"hd\0";
365pub const SCNdLEAST32: &[u8; 2] = b"d\0";
366pub const SCNdLEAST64: &[u8; 3] = b"ld\0";
367pub const SCNdFAST8: &[u8; 4] = b"hhd\0";
368pub const SCNdFAST16: &[u8; 3] = b"ld\0";
369pub const SCNdFAST32: &[u8; 3] = b"ld\0";
370pub const SCNdFAST64: &[u8; 3] = b"ld\0";
371pub const SCNi8: &[u8; 4] = b"hhi\0";
372pub const SCNi16: &[u8; 3] = b"hi\0";
373pub const SCNi32: &[u8; 2] = b"i\0";
374pub const SCNi64: &[u8; 3] = b"li\0";
375pub const SCNiLEAST8: &[u8; 4] = b"hhi\0";
376pub const SCNiLEAST16: &[u8; 3] = b"hi\0";
377pub const SCNiLEAST32: &[u8; 2] = b"i\0";
378pub const SCNiLEAST64: &[u8; 3] = b"li\0";
379pub const SCNiFAST8: &[u8; 4] = b"hhi\0";
380pub const SCNiFAST16: &[u8; 3] = b"li\0";
381pub const SCNiFAST32: &[u8; 3] = b"li\0";
382pub const SCNiFAST64: &[u8; 3] = b"li\0";
383pub const SCNu8: &[u8; 4] = b"hhu\0";
384pub const SCNu16: &[u8; 3] = b"hu\0";
385pub const SCNu32: &[u8; 2] = b"u\0";
386pub const SCNu64: &[u8; 3] = b"lu\0";
387pub const SCNuLEAST8: &[u8; 4] = b"hhu\0";
388pub const SCNuLEAST16: &[u8; 3] = b"hu\0";
389pub const SCNuLEAST32: &[u8; 2] = b"u\0";
390pub const SCNuLEAST64: &[u8; 3] = b"lu\0";
391pub const SCNuFAST8: &[u8; 4] = b"hhu\0";
392pub const SCNuFAST16: &[u8; 3] = b"lu\0";
393pub const SCNuFAST32: &[u8; 3] = b"lu\0";
394pub const SCNuFAST64: &[u8; 3] = b"lu\0";
395pub const SCNo8: &[u8; 4] = b"hho\0";
396pub const SCNo16: &[u8; 3] = b"ho\0";
397pub const SCNo32: &[u8; 2] = b"o\0";
398pub const SCNo64: &[u8; 3] = b"lo\0";
399pub const SCNoLEAST8: &[u8; 4] = b"hho\0";
400pub const SCNoLEAST16: &[u8; 3] = b"ho\0";
401pub const SCNoLEAST32: &[u8; 2] = b"o\0";
402pub const SCNoLEAST64: &[u8; 3] = b"lo\0";
403pub const SCNoFAST8: &[u8; 4] = b"hho\0";
404pub const SCNoFAST16: &[u8; 3] = b"lo\0";
405pub const SCNoFAST32: &[u8; 3] = b"lo\0";
406pub const SCNoFAST64: &[u8; 3] = b"lo\0";
407pub const SCNx8: &[u8; 4] = b"hhx\0";
408pub const SCNx16: &[u8; 3] = b"hx\0";
409pub const SCNx32: &[u8; 2] = b"x\0";
410pub const SCNx64: &[u8; 3] = b"lx\0";
411pub const SCNxLEAST8: &[u8; 4] = b"hhx\0";
412pub const SCNxLEAST16: &[u8; 3] = b"hx\0";
413pub const SCNxLEAST32: &[u8; 2] = b"x\0";
414pub const SCNxLEAST64: &[u8; 3] = b"lx\0";
415pub const SCNxFAST8: &[u8; 4] = b"hhx\0";
416pub const SCNxFAST16: &[u8; 3] = b"lx\0";
417pub const SCNxFAST32: &[u8; 3] = b"lx\0";
418pub const SCNxFAST64: &[u8; 3] = b"lx\0";
419pub const SCNdMAX: &[u8; 3] = b"ld\0";
420pub const SCNiMAX: &[u8; 3] = b"li\0";
421pub const SCNoMAX: &[u8; 3] = b"lo\0";
422pub const SCNuMAX: &[u8; 3] = b"lu\0";
423pub const SCNxMAX: &[u8; 3] = b"lx\0";
424pub const SCNdPTR: &[u8; 3] = b"ld\0";
425pub const SCNiPTR: &[u8; 3] = b"li\0";
426pub const SCNoPTR: &[u8; 3] = b"lo\0";
427pub const SCNuPTR: &[u8; 3] = b"lu\0";
428pub const SCNxPTR: &[u8; 3] = b"lx\0";
429pub const _STDLIB_H: u32 = 1;
430pub const WNOHANG: u32 = 1;
431pub const WUNTRACED: u32 = 2;
432pub const WSTOPPED: u32 = 2;
433pub const WEXITED: u32 = 4;
434pub const WCONTINUED: u32 = 8;
435pub const WNOWAIT: u32 = 16777216;
436pub const __WNOTHREAD: u32 = 536870912;
437pub const __WALL: u32 = 1073741824;
438pub const __WCLONE: u32 = 2147483648;
439pub const __W_CONTINUED: u32 = 65535;
440pub const __WCOREFLAG: u32 = 128;
441pub const __HAVE_FLOAT128: u32 = 1;
442pub const __HAVE_DISTINCT_FLOAT128: u32 = 0;
443pub const __HAVE_FLOAT64X: u32 = 1;
444pub const __HAVE_FLOAT64X_LONG_DOUBLE: u32 = 1;
445pub const __HAVE_FLOAT16: u32 = 0;
446pub const __HAVE_FLOAT32: u32 = 1;
447pub const __HAVE_FLOAT64: u32 = 1;
448pub const __HAVE_FLOAT32X: u32 = 1;
449pub const __HAVE_FLOAT128X: u32 = 0;
450pub const __HAVE_DISTINCT_FLOAT16: u32 = 0;
451pub const __HAVE_DISTINCT_FLOAT32: u32 = 0;
452pub const __HAVE_DISTINCT_FLOAT64: u32 = 0;
453pub const __HAVE_DISTINCT_FLOAT32X: u32 = 0;
454pub const __HAVE_DISTINCT_FLOAT64X: u32 = 0;
455pub const __HAVE_DISTINCT_FLOAT128X: u32 = 0;
456pub const __HAVE_FLOATN_NOT_TYPEDEF: u32 = 0;
457pub const __ldiv_t_defined: u32 = 1;
458pub const __lldiv_t_defined: u32 = 1;
459pub const RAND_MAX: u32 = 2147483647;
460pub const EXIT_FAILURE: u32 = 1;
461pub const EXIT_SUCCESS: u32 = 0;
462pub const _SYS_TYPES_H: u32 = 1;
463pub const __clock_t_defined: u32 = 1;
464pub const __clockid_t_defined: u32 = 1;
465pub const __time_t_defined: u32 = 1;
466pub const __timer_t_defined: u32 = 1;
467pub const __BIT_TYPES_DEFINED__: u32 = 1;
468pub const _ENDIAN_H: u32 = 1;
469pub const _BITS_ENDIAN_H: u32 = 1;
470pub const __LITTLE_ENDIAN: u32 = 1234;
471pub const __BIG_ENDIAN: u32 = 4321;
472pub const __PDP_ENDIAN: u32 = 3412;
473pub const _BITS_ENDIANNESS_H: u32 = 1;
474pub const __BYTE_ORDER: u32 = 1234;
475pub const __FLOAT_WORD_ORDER: u32 = 1234;
476pub const LITTLE_ENDIAN: u32 = 1234;
477pub const BIG_ENDIAN: u32 = 4321;
478pub const PDP_ENDIAN: u32 = 3412;
479pub const BYTE_ORDER: u32 = 1234;
480pub const _BITS_BYTESWAP_H: u32 = 1;
481pub const _BITS_UINTN_IDENTITY_H: u32 = 1;
482pub const _SYS_SELECT_H: u32 = 1;
483pub const __sigset_t_defined: u32 = 1;
484pub const __timeval_defined: u32 = 1;
485pub const _STRUCT_TIMESPEC: u32 = 1;
486pub const FD_SETSIZE: u32 = 1024;
487pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1;
488pub const _THREAD_SHARED_TYPES_H: u32 = 1;
489pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1;
490pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 64;
491pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 48;
492pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 8;
493pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 8;
494pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56;
495pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32;
496pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 8;
497pub const __SIZEOF_PTHREAD_COND_T: u32 = 48;
498pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8;
499pub const _THREAD_MUTEX_INTERNAL_H: u32 = 1;
500pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1;
501pub const __have_pthread_attr_t: u32 = 1;
502pub const _ALLOCA_H: u32 = 1;
503pub type __u_char = ::std::os::raw::c_uchar;
504pub type __u_short = ::std::os::raw::c_ushort;
505pub type __u_int = ::std::os::raw::c_uint;
506pub type __u_long = ::std::os::raw::c_ulong;
507pub type __int8_t = ::std::os::raw::c_schar;
508pub type __uint8_t = ::std::os::raw::c_uchar;
509pub type __int16_t = ::std::os::raw::c_short;
510pub type __uint16_t = ::std::os::raw::c_ushort;
511pub type __int32_t = ::std::os::raw::c_int;
512pub type __uint32_t = ::std::os::raw::c_uint;
513pub type __int64_t = ::std::os::raw::c_long;
514pub type __uint64_t = ::std::os::raw::c_ulong;
515pub type __int_least8_t = __int8_t;
516pub type __uint_least8_t = __uint8_t;
517pub type __int_least16_t = __int16_t;
518pub type __uint_least16_t = __uint16_t;
519pub type __int_least32_t = __int32_t;
520pub type __uint_least32_t = __uint32_t;
521pub type __int_least64_t = __int64_t;
522pub type __uint_least64_t = __uint64_t;
523pub type __quad_t = ::std::os::raw::c_long;
524pub type __u_quad_t = ::std::os::raw::c_ulong;
525pub type __intmax_t = ::std::os::raw::c_long;
526pub type __uintmax_t = ::std::os::raw::c_ulong;
527pub type __dev_t = ::std::os::raw::c_ulong;
528pub type __uid_t = ::std::os::raw::c_uint;
529pub type __gid_t = ::std::os::raw::c_uint;
530pub type __ino_t = ::std::os::raw::c_ulong;
531pub type __ino64_t = ::std::os::raw::c_ulong;
532pub type __mode_t = ::std::os::raw::c_uint;
533pub type __nlink_t = ::std::os::raw::c_uint;
534pub type __off_t = ::std::os::raw::c_long;
535pub type __off64_t = ::std::os::raw::c_long;
536pub type __pid_t = ::std::os::raw::c_int;
537#[repr(C)]
538#[derive(Debug, Default, Copy, Clone)]
539pub struct __fsid_t {
540    pub __val: [::std::os::raw::c_int; 2usize],
541}
542#[test]
543fn bindgen_test_layout___fsid_t() {
544    const UNINIT: ::std::mem::MaybeUninit<__fsid_t> = ::std::mem::MaybeUninit::uninit();
545    let ptr = UNINIT.as_ptr();
546    assert_eq!(
547        ::std::mem::size_of::<__fsid_t>(),
548        8usize,
549        "Size of __fsid_t"
550    );
551    assert_eq!(
552        ::std::mem::align_of::<__fsid_t>(),
553        4usize,
554        "Alignment of __fsid_t"
555    );
556    assert_eq!(
557        unsafe { ::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize },
558        0usize,
559        "Offset of field: __fsid_t::__val"
560    );
561}
562pub type __clock_t = ::std::os::raw::c_long;
563pub type __rlim_t = ::std::os::raw::c_ulong;
564pub type __rlim64_t = ::std::os::raw::c_ulong;
565pub type __id_t = ::std::os::raw::c_uint;
566pub type __time_t = ::std::os::raw::c_long;
567pub type __useconds_t = ::std::os::raw::c_uint;
568pub type __suseconds_t = ::std::os::raw::c_long;
569pub type __suseconds64_t = ::std::os::raw::c_long;
570pub type __daddr_t = ::std::os::raw::c_int;
571pub type __key_t = ::std::os::raw::c_int;
572pub type __clockid_t = ::std::os::raw::c_int;
573pub type __timer_t = *mut ::std::os::raw::c_void;
574pub type __blksize_t = ::std::os::raw::c_int;
575pub type __blkcnt_t = ::std::os::raw::c_long;
576pub type __blkcnt64_t = ::std::os::raw::c_long;
577pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
578pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
579pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
580pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
581pub type __fsword_t = ::std::os::raw::c_long;
582pub type __ssize_t = ::std::os::raw::c_long;
583pub type __syscall_slong_t = ::std::os::raw::c_long;
584pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
585pub type __loff_t = __off64_t;
586pub type __caddr_t = *mut ::std::os::raw::c_char;
587pub type __intptr_t = ::std::os::raw::c_long;
588pub type __socklen_t = ::std::os::raw::c_uint;
589pub type __sig_atomic_t = ::std::os::raw::c_int;
590pub type int_least8_t = __int_least8_t;
591pub type int_least16_t = __int_least16_t;
592pub type int_least32_t = __int_least32_t;
593pub type int_least64_t = __int_least64_t;
594pub type uint_least8_t = __uint_least8_t;
595pub type uint_least16_t = __uint_least16_t;
596pub type uint_least32_t = __uint_least32_t;
597pub type uint_least64_t = __uint_least64_t;
598pub type int_fast8_t = ::std::os::raw::c_schar;
599pub type int_fast16_t = ::std::os::raw::c_long;
600pub type int_fast32_t = ::std::os::raw::c_long;
601pub type int_fast64_t = ::std::os::raw::c_long;
602pub type uint_fast8_t = ::std::os::raw::c_uchar;
603pub type uint_fast16_t = ::std::os::raw::c_ulong;
604pub type uint_fast32_t = ::std::os::raw::c_ulong;
605pub type uint_fast64_t = ::std::os::raw::c_ulong;
606pub type intmax_t = __intmax_t;
607pub type uintmax_t = __uintmax_t;
608pub type size_t = ::std::os::raw::c_ulong;
609pub type wchar_t = ::std::os::raw::c_uint;
610pub type UINT8 = u8;
611pub type BYTE = u8;
612pub type INT8 = i8;
613pub type BOOL = ::std::os::raw::c_int;
614pub type UINT16 = u16;
615pub type INT16 = i16;
616pub type UINT32 = u32;
617pub type INT32 = i32;
618pub type UINT64 = u64;
619pub type INT64 = i64;
620#[repr(C)]
621#[derive(Debug, Default, Copy, Clone)]
622pub struct TSS2_ABI_VERSION {
623    pub tssCreator: u32,
624    pub tssFamily: u32,
625    pub tssLevel: u32,
626    pub tssVersion: u32,
627}
628#[test]
629fn bindgen_test_layout_TSS2_ABI_VERSION() {
630    const UNINIT: ::std::mem::MaybeUninit<TSS2_ABI_VERSION> = ::std::mem::MaybeUninit::uninit();
631    let ptr = UNINIT.as_ptr();
632    assert_eq!(
633        ::std::mem::size_of::<TSS2_ABI_VERSION>(),
634        16usize,
635        "Size of TSS2_ABI_VERSION"
636    );
637    assert_eq!(
638        ::std::mem::align_of::<TSS2_ABI_VERSION>(),
639        4usize,
640        "Alignment of TSS2_ABI_VERSION"
641    );
642    assert_eq!(
643        unsafe { ::std::ptr::addr_of!((*ptr).tssCreator) as usize - ptr as usize },
644        0usize,
645        "Offset of field: TSS2_ABI_VERSION::tssCreator"
646    );
647    assert_eq!(
648        unsafe { ::std::ptr::addr_of!((*ptr).tssFamily) as usize - ptr as usize },
649        4usize,
650        "Offset of field: TSS2_ABI_VERSION::tssFamily"
651    );
652    assert_eq!(
653        unsafe { ::std::ptr::addr_of!((*ptr).tssLevel) as usize - ptr as usize },
654        8usize,
655        "Offset of field: TSS2_ABI_VERSION::tssLevel"
656    );
657    assert_eq!(
658        unsafe { ::std::ptr::addr_of!((*ptr).tssVersion) as usize - ptr as usize },
659        12usize,
660        "Offset of field: TSS2_ABI_VERSION::tssVersion"
661    );
662}
663pub type TSS2_RC = u32;
664pub type TPM2_ALG_ID = UINT16;
665pub type TPM2_ECC_CURVE = UINT16;
666pub type TPM2_CC = UINT32;
667pub type TPM2_ALGORITHM_ID = UINT32;
668pub type TPM2_MODIFIER_INDICATOR = UINT32;
669pub type TPM2_AUTHORIZATION_SIZE = UINT32;
670pub type TPM2_PARAMETER_SIZE = UINT32;
671pub type TPM2_KEY_SIZE = UINT16;
672pub type TPM2_KEY_BITS = UINT16;
673pub type TPM2_SPEC = UINT32;
674pub type TPM2_GENERATED = UINT32;
675pub type TPM2_RC = UINT32;
676pub type TPM2_CLOCK_ADJUST = INT8;
677pub type TPM2_EO = UINT16;
678pub type TPM2_ST = UINT16;
679pub type TPM2_SU = UINT16;
680pub type TPM2_SE = UINT8;
681pub type TPM2_CAP = UINT32;
682pub type TPM2_PT = UINT32;
683pub type TPM2_PT_PCR = UINT32;
684pub type TPM2_PS = UINT32;
685pub type TPM2_HANDLE = UINT32;
686pub type TPM2_HT = UINT8;
687pub type TPM2_RH = TPM2_HANDLE;
688pub type TPM2_HC = TPM2_HANDLE;
689pub type TPMA_ALGORITHM = u32;
690pub type TPMA_OBJECT = u32;
691pub type TPMA_SESSION = UINT8;
692pub type TPMA_LOCALITY = UINT8;
693pub type TPMA_PERMANENT = u32;
694pub type TPMA_STARTUP_CLEAR = u32;
695pub type TPMA_MEMORY = u32;
696pub type TPMA_CC = u32;
697pub type TPMA_MODES = u32;
698pub type TPMA_X509_KEY_USAGE = u32;
699pub type TPMA_ACT = u32;
700pub type TPMI_YES_NO = BYTE;
701pub type TPMI_DH_OBJECT = TPM2_HANDLE;
702pub type TPMI_DH_PARENT = TPM2_HANDLE;
703pub type TPMI_DH_PERSISTENT = TPM2_HANDLE;
704pub type TPMI_DH_ENTITY = TPM2_HANDLE;
705pub type TPMI_DH_PCR = TPM2_HANDLE;
706pub type TPMI_SH_AUTH_SESSION = TPM2_HANDLE;
707pub type TPMI_SH_HMAC = TPM2_HANDLE;
708pub type TPMI_SH_POLICY = TPM2_HANDLE;
709pub type TPMI_DH_CONTEXT = TPM2_HANDLE;
710pub type TPMI_DH_SAVED = TPM2_HANDLE;
711pub type TPMI_RH_HIERARCHY = TPM2_HANDLE;
712pub type TPMI_RH_ENABLES = TPM2_HANDLE;
713pub type TPMI_RH_HIERARCHY_AUTH = TPM2_HANDLE;
714pub type TPMI_RH_HIERARCHY_POLICY = TPM2_HANDLE;
715pub type TPMI_RH_PLATFORM = TPM2_HANDLE;
716pub type TPMI_RH_OWNER = TPM2_HANDLE;
717pub type TPMI_RH_ENDORSEMENT = TPM2_HANDLE;
718pub type TPMI_RH_PROVISION = TPM2_HANDLE;
719pub type TPMI_RH_CLEAR = TPM2_HANDLE;
720pub type TPMI_RH_NV_AUTH = TPM2_HANDLE;
721pub type TPMI_RH_LOCKOUT = TPM2_HANDLE;
722pub type TPMI_RH_NV_INDEX = TPM2_HANDLE;
723pub type TPMI_RH_AC = TPM2_HANDLE;
724pub type TPMI_RH_ACT = TPM2_HANDLE;
725pub type TPMI_ALG_HASH = TPM2_ALG_ID;
726pub type TPMI_ALG_ASYM = TPM2_ALG_ID;
727pub type TPMI_ALG_SYM = TPM2_ALG_ID;
728pub type TPMI_ALG_SYM_OBJECT = TPM2_ALG_ID;
729pub type TPMI_ALG_SYM_MODE = TPM2_ALG_ID;
730pub type TPMI_ALG_KDF = TPM2_ALG_ID;
731pub type TPMI_ALG_SIG_SCHEME = TPM2_ALG_ID;
732pub type TPMI_ECC_KEY_EXCHANGE = TPM2_ALG_ID;
733pub type TPMI_ST_COMMAND_TAG = TPM2_ST;
734pub type TPMI_ALG_MAC_SCHEME = TPM2_ALG_ID;
735pub type TPMI_ALG_CIPHER_MODE = TPM2_ALG_ID;
736#[repr(C)]
737#[derive(Debug, Default, Copy, Clone)]
738pub struct TPMS_EMPTY {
739    pub empty: [UINT8; 1usize],
740}
741#[test]
742fn bindgen_test_layout_TPMS_EMPTY() {
743    const UNINIT: ::std::mem::MaybeUninit<TPMS_EMPTY> = ::std::mem::MaybeUninit::uninit();
744    let ptr = UNINIT.as_ptr();
745    assert_eq!(
746        ::std::mem::size_of::<TPMS_EMPTY>(),
747        1usize,
748        "Size of TPMS_EMPTY"
749    );
750    assert_eq!(
751        ::std::mem::align_of::<TPMS_EMPTY>(),
752        1usize,
753        "Alignment of TPMS_EMPTY"
754    );
755    assert_eq!(
756        unsafe { ::std::ptr::addr_of!((*ptr).empty) as usize - ptr as usize },
757        0usize,
758        "Offset of field: TPMS_EMPTY::empty"
759    );
760}
761#[repr(C)]
762#[derive(Copy, Clone)]
763pub union TPMU_HA {
764    pub sha: [BYTE; 20usize],
765    pub sha1: [BYTE; 20usize],
766    pub sha256: [BYTE; 32usize],
767    pub sha384: [BYTE; 48usize],
768    pub sha512: [BYTE; 64usize],
769    pub sm3_256: [BYTE; 32usize],
770}
771#[test]
772fn bindgen_test_layout_TPMU_HA() {
773    const UNINIT: ::std::mem::MaybeUninit<TPMU_HA> = ::std::mem::MaybeUninit::uninit();
774    let ptr = UNINIT.as_ptr();
775    assert_eq!(::std::mem::size_of::<TPMU_HA>(), 64usize, "Size of TPMU_HA");
776    assert_eq!(
777        ::std::mem::align_of::<TPMU_HA>(),
778        1usize,
779        "Alignment of TPMU_HA"
780    );
781    assert_eq!(
782        unsafe { ::std::ptr::addr_of!((*ptr).sha) as usize - ptr as usize },
783        0usize,
784        "Offset of field: TPMU_HA::sha"
785    );
786    assert_eq!(
787        unsafe { ::std::ptr::addr_of!((*ptr).sha1) as usize - ptr as usize },
788        0usize,
789        "Offset of field: TPMU_HA::sha1"
790    );
791    assert_eq!(
792        unsafe { ::std::ptr::addr_of!((*ptr).sha256) as usize - ptr as usize },
793        0usize,
794        "Offset of field: TPMU_HA::sha256"
795    );
796    assert_eq!(
797        unsafe { ::std::ptr::addr_of!((*ptr).sha384) as usize - ptr as usize },
798        0usize,
799        "Offset of field: TPMU_HA::sha384"
800    );
801    assert_eq!(
802        unsafe { ::std::ptr::addr_of!((*ptr).sha512) as usize - ptr as usize },
803        0usize,
804        "Offset of field: TPMU_HA::sha512"
805    );
806    assert_eq!(
807        unsafe { ::std::ptr::addr_of!((*ptr).sm3_256) as usize - ptr as usize },
808        0usize,
809        "Offset of field: TPMU_HA::sm3_256"
810    );
811}
812impl Default for TPMU_HA {
813    fn default() -> Self {
814        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
815        unsafe {
816            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
817            s.assume_init()
818        }
819    }
820}
821#[repr(C)]
822#[derive(Copy, Clone)]
823pub struct TPMT_HA {
824    pub hashAlg: TPMI_ALG_HASH,
825    pub digest: TPMU_HA,
826}
827#[test]
828fn bindgen_test_layout_TPMT_HA() {
829    const UNINIT: ::std::mem::MaybeUninit<TPMT_HA> = ::std::mem::MaybeUninit::uninit();
830    let ptr = UNINIT.as_ptr();
831    assert_eq!(::std::mem::size_of::<TPMT_HA>(), 66usize, "Size of TPMT_HA");
832    assert_eq!(
833        ::std::mem::align_of::<TPMT_HA>(),
834        2usize,
835        "Alignment of TPMT_HA"
836    );
837    assert_eq!(
838        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
839        0usize,
840        "Offset of field: TPMT_HA::hashAlg"
841    );
842    assert_eq!(
843        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
844        2usize,
845        "Offset of field: TPMT_HA::digest"
846    );
847}
848impl Default for TPMT_HA {
849    fn default() -> Self {
850        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
851        unsafe {
852            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
853            s.assume_init()
854        }
855    }
856}
857#[repr(C)]
858#[derive(Debug, Copy, Clone)]
859pub struct TPM2B_DIGEST {
860    pub size: UINT16,
861    pub buffer: [BYTE; 64usize],
862}
863#[test]
864fn bindgen_test_layout_TPM2B_DIGEST() {
865    const UNINIT: ::std::mem::MaybeUninit<TPM2B_DIGEST> = ::std::mem::MaybeUninit::uninit();
866    let ptr = UNINIT.as_ptr();
867    assert_eq!(
868        ::std::mem::size_of::<TPM2B_DIGEST>(),
869        66usize,
870        "Size of TPM2B_DIGEST"
871    );
872    assert_eq!(
873        ::std::mem::align_of::<TPM2B_DIGEST>(),
874        2usize,
875        "Alignment of TPM2B_DIGEST"
876    );
877    assert_eq!(
878        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
879        0usize,
880        "Offset of field: TPM2B_DIGEST::size"
881    );
882    assert_eq!(
883        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
884        2usize,
885        "Offset of field: TPM2B_DIGEST::buffer"
886    );
887}
888impl Default for TPM2B_DIGEST {
889    fn default() -> Self {
890        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
891        unsafe {
892            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
893            s.assume_init()
894        }
895    }
896}
897#[repr(C)]
898#[derive(Debug, Copy, Clone)]
899pub struct TPM2B_DATA {
900    pub size: UINT16,
901    pub buffer: [BYTE; 64usize],
902}
903#[test]
904fn bindgen_test_layout_TPM2B_DATA() {
905    const UNINIT: ::std::mem::MaybeUninit<TPM2B_DATA> = ::std::mem::MaybeUninit::uninit();
906    let ptr = UNINIT.as_ptr();
907    assert_eq!(
908        ::std::mem::size_of::<TPM2B_DATA>(),
909        66usize,
910        "Size of TPM2B_DATA"
911    );
912    assert_eq!(
913        ::std::mem::align_of::<TPM2B_DATA>(),
914        2usize,
915        "Alignment of TPM2B_DATA"
916    );
917    assert_eq!(
918        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
919        0usize,
920        "Offset of field: TPM2B_DATA::size"
921    );
922    assert_eq!(
923        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
924        2usize,
925        "Offset of field: TPM2B_DATA::buffer"
926    );
927}
928impl Default for TPM2B_DATA {
929    fn default() -> Self {
930        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
931        unsafe {
932            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
933            s.assume_init()
934        }
935    }
936}
937pub type TPM2B_NONCE = TPM2B_DIGEST;
938pub type TPM2B_AUTH = TPM2B_DIGEST;
939pub type TPM2B_OPERAND = TPM2B_DIGEST;
940#[repr(C)]
941#[derive(Debug, Copy, Clone)]
942pub struct TPM2B_EVENT {
943    pub size: UINT16,
944    pub buffer: [BYTE; 1024usize],
945}
946#[test]
947fn bindgen_test_layout_TPM2B_EVENT() {
948    const UNINIT: ::std::mem::MaybeUninit<TPM2B_EVENT> = ::std::mem::MaybeUninit::uninit();
949    let ptr = UNINIT.as_ptr();
950    assert_eq!(
951        ::std::mem::size_of::<TPM2B_EVENT>(),
952        1026usize,
953        "Size of TPM2B_EVENT"
954    );
955    assert_eq!(
956        ::std::mem::align_of::<TPM2B_EVENT>(),
957        2usize,
958        "Alignment of TPM2B_EVENT"
959    );
960    assert_eq!(
961        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
962        0usize,
963        "Offset of field: TPM2B_EVENT::size"
964    );
965    assert_eq!(
966        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
967        2usize,
968        "Offset of field: TPM2B_EVENT::buffer"
969    );
970}
971impl Default for TPM2B_EVENT {
972    fn default() -> Self {
973        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
974        unsafe {
975            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
976            s.assume_init()
977        }
978    }
979}
980#[repr(C)]
981#[derive(Debug, Copy, Clone)]
982pub struct TPM2B_MAX_BUFFER {
983    pub size: UINT16,
984    pub buffer: [BYTE; 1024usize],
985}
986#[test]
987fn bindgen_test_layout_TPM2B_MAX_BUFFER() {
988    const UNINIT: ::std::mem::MaybeUninit<TPM2B_MAX_BUFFER> = ::std::mem::MaybeUninit::uninit();
989    let ptr = UNINIT.as_ptr();
990    assert_eq!(
991        ::std::mem::size_of::<TPM2B_MAX_BUFFER>(),
992        1026usize,
993        "Size of TPM2B_MAX_BUFFER"
994    );
995    assert_eq!(
996        ::std::mem::align_of::<TPM2B_MAX_BUFFER>(),
997        2usize,
998        "Alignment of TPM2B_MAX_BUFFER"
999    );
1000    assert_eq!(
1001        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1002        0usize,
1003        "Offset of field: TPM2B_MAX_BUFFER::size"
1004    );
1005    assert_eq!(
1006        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1007        2usize,
1008        "Offset of field: TPM2B_MAX_BUFFER::buffer"
1009    );
1010}
1011impl Default for TPM2B_MAX_BUFFER {
1012    fn default() -> Self {
1013        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1014        unsafe {
1015            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1016            s.assume_init()
1017        }
1018    }
1019}
1020#[repr(C)]
1021#[derive(Debug, Copy, Clone)]
1022pub struct TPM2B_MAX_NV_BUFFER {
1023    pub size: UINT16,
1024    pub buffer: [BYTE; 2048usize],
1025}
1026#[test]
1027fn bindgen_test_layout_TPM2B_MAX_NV_BUFFER() {
1028    const UNINIT: ::std::mem::MaybeUninit<TPM2B_MAX_NV_BUFFER> = ::std::mem::MaybeUninit::uninit();
1029    let ptr = UNINIT.as_ptr();
1030    assert_eq!(
1031        ::std::mem::size_of::<TPM2B_MAX_NV_BUFFER>(),
1032        2050usize,
1033        "Size of TPM2B_MAX_NV_BUFFER"
1034    );
1035    assert_eq!(
1036        ::std::mem::align_of::<TPM2B_MAX_NV_BUFFER>(),
1037        2usize,
1038        "Alignment of TPM2B_MAX_NV_BUFFER"
1039    );
1040    assert_eq!(
1041        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1042        0usize,
1043        "Offset of field: TPM2B_MAX_NV_BUFFER::size"
1044    );
1045    assert_eq!(
1046        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1047        2usize,
1048        "Offset of field: TPM2B_MAX_NV_BUFFER::buffer"
1049    );
1050}
1051impl Default for TPM2B_MAX_NV_BUFFER {
1052    fn default() -> Self {
1053        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1054        unsafe {
1055            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1056            s.assume_init()
1057        }
1058    }
1059}
1060pub type TPM2B_TIMEOUT = TPM2B_DIGEST;
1061#[repr(C)]
1062#[derive(Debug, Default, Copy, Clone)]
1063pub struct TPM2B_IV {
1064    pub size: UINT16,
1065    pub buffer: [BYTE; 16usize],
1066}
1067#[test]
1068fn bindgen_test_layout_TPM2B_IV() {
1069    const UNINIT: ::std::mem::MaybeUninit<TPM2B_IV> = ::std::mem::MaybeUninit::uninit();
1070    let ptr = UNINIT.as_ptr();
1071    assert_eq!(
1072        ::std::mem::size_of::<TPM2B_IV>(),
1073        18usize,
1074        "Size of TPM2B_IV"
1075    );
1076    assert_eq!(
1077        ::std::mem::align_of::<TPM2B_IV>(),
1078        2usize,
1079        "Alignment of TPM2B_IV"
1080    );
1081    assert_eq!(
1082        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1083        0usize,
1084        "Offset of field: TPM2B_IV::size"
1085    );
1086    assert_eq!(
1087        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
1088        2usize,
1089        "Offset of field: TPM2B_IV::buffer"
1090    );
1091}
1092#[repr(C)]
1093#[derive(Copy, Clone)]
1094pub union TPMU_NAME {
1095    pub digest: TPMT_HA,
1096    pub handle: TPM2_HANDLE,
1097}
1098#[test]
1099fn bindgen_test_layout_TPMU_NAME() {
1100    const UNINIT: ::std::mem::MaybeUninit<TPMU_NAME> = ::std::mem::MaybeUninit::uninit();
1101    let ptr = UNINIT.as_ptr();
1102    assert_eq!(
1103        ::std::mem::size_of::<TPMU_NAME>(),
1104        68usize,
1105        "Size of TPMU_NAME"
1106    );
1107    assert_eq!(
1108        ::std::mem::align_of::<TPMU_NAME>(),
1109        4usize,
1110        "Alignment of TPMU_NAME"
1111    );
1112    assert_eq!(
1113        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1114        0usize,
1115        "Offset of field: TPMU_NAME::digest"
1116    );
1117    assert_eq!(
1118        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1119        0usize,
1120        "Offset of field: TPMU_NAME::handle"
1121    );
1122}
1123impl Default for TPMU_NAME {
1124    fn default() -> Self {
1125        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1126        unsafe {
1127            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1128            s.assume_init()
1129        }
1130    }
1131}
1132#[repr(C)]
1133#[derive(Debug, Copy, Clone)]
1134pub struct TPM2B_NAME {
1135    pub size: UINT16,
1136    pub name: [BYTE; 68usize],
1137}
1138#[test]
1139fn bindgen_test_layout_TPM2B_NAME() {
1140    const UNINIT: ::std::mem::MaybeUninit<TPM2B_NAME> = ::std::mem::MaybeUninit::uninit();
1141    let ptr = UNINIT.as_ptr();
1142    assert_eq!(
1143        ::std::mem::size_of::<TPM2B_NAME>(),
1144        70usize,
1145        "Size of TPM2B_NAME"
1146    );
1147    assert_eq!(
1148        ::std::mem::align_of::<TPM2B_NAME>(),
1149        2usize,
1150        "Alignment of TPM2B_NAME"
1151    );
1152    assert_eq!(
1153        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
1154        0usize,
1155        "Offset of field: TPM2B_NAME::size"
1156    );
1157    assert_eq!(
1158        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
1159        2usize,
1160        "Offset of field: TPM2B_NAME::name"
1161    );
1162}
1163impl Default for TPM2B_NAME {
1164    fn default() -> Self {
1165        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1166        unsafe {
1167            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1168            s.assume_init()
1169        }
1170    }
1171}
1172#[repr(C)]
1173#[derive(Debug, Default, Copy, Clone)]
1174pub struct TPMS_PCR_SELECT {
1175    pub sizeofSelect: UINT8,
1176    pub pcrSelect: [BYTE; 4usize],
1177}
1178#[test]
1179fn bindgen_test_layout_TPMS_PCR_SELECT() {
1180    const UNINIT: ::std::mem::MaybeUninit<TPMS_PCR_SELECT> = ::std::mem::MaybeUninit::uninit();
1181    let ptr = UNINIT.as_ptr();
1182    assert_eq!(
1183        ::std::mem::size_of::<TPMS_PCR_SELECT>(),
1184        5usize,
1185        "Size of TPMS_PCR_SELECT"
1186    );
1187    assert_eq!(
1188        ::std::mem::align_of::<TPMS_PCR_SELECT>(),
1189        1usize,
1190        "Alignment of TPMS_PCR_SELECT"
1191    );
1192    assert_eq!(
1193        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1194        0usize,
1195        "Offset of field: TPMS_PCR_SELECT::sizeofSelect"
1196    );
1197    assert_eq!(
1198        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1199        1usize,
1200        "Offset of field: TPMS_PCR_SELECT::pcrSelect"
1201    );
1202}
1203#[repr(C)]
1204#[derive(Debug, Default, Copy, Clone)]
1205pub struct TPMS_PCR_SELECTION {
1206    pub hash: TPMI_ALG_HASH,
1207    pub sizeofSelect: UINT8,
1208    pub pcrSelect: [BYTE; 4usize],
1209}
1210#[test]
1211fn bindgen_test_layout_TPMS_PCR_SELECTION() {
1212    const UNINIT: ::std::mem::MaybeUninit<TPMS_PCR_SELECTION> = ::std::mem::MaybeUninit::uninit();
1213    let ptr = UNINIT.as_ptr();
1214    assert_eq!(
1215        ::std::mem::size_of::<TPMS_PCR_SELECTION>(),
1216        8usize,
1217        "Size of TPMS_PCR_SELECTION"
1218    );
1219    assert_eq!(
1220        ::std::mem::align_of::<TPMS_PCR_SELECTION>(),
1221        2usize,
1222        "Alignment of TPMS_PCR_SELECTION"
1223    );
1224    assert_eq!(
1225        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
1226        0usize,
1227        "Offset of field: TPMS_PCR_SELECTION::hash"
1228    );
1229    assert_eq!(
1230        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1231        2usize,
1232        "Offset of field: TPMS_PCR_SELECTION::sizeofSelect"
1233    );
1234    assert_eq!(
1235        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1236        3usize,
1237        "Offset of field: TPMS_PCR_SELECTION::pcrSelect"
1238    );
1239}
1240#[repr(C)]
1241#[derive(Debug, Copy, Clone)]
1242pub struct TPMT_TK_CREATION {
1243    pub tag: TPM2_ST,
1244    pub hierarchy: TPMI_RH_HIERARCHY,
1245    pub digest: TPM2B_DIGEST,
1246}
1247#[test]
1248fn bindgen_test_layout_TPMT_TK_CREATION() {
1249    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_CREATION> = ::std::mem::MaybeUninit::uninit();
1250    let ptr = UNINIT.as_ptr();
1251    assert_eq!(
1252        ::std::mem::size_of::<TPMT_TK_CREATION>(),
1253        76usize,
1254        "Size of TPMT_TK_CREATION"
1255    );
1256    assert_eq!(
1257        ::std::mem::align_of::<TPMT_TK_CREATION>(),
1258        4usize,
1259        "Alignment of TPMT_TK_CREATION"
1260    );
1261    assert_eq!(
1262        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1263        0usize,
1264        "Offset of field: TPMT_TK_CREATION::tag"
1265    );
1266    assert_eq!(
1267        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1268        4usize,
1269        "Offset of field: TPMT_TK_CREATION::hierarchy"
1270    );
1271    assert_eq!(
1272        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1273        8usize,
1274        "Offset of field: TPMT_TK_CREATION::digest"
1275    );
1276}
1277impl Default for TPMT_TK_CREATION {
1278    fn default() -> Self {
1279        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1280        unsafe {
1281            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1282            s.assume_init()
1283        }
1284    }
1285}
1286#[repr(C)]
1287#[derive(Debug, Copy, Clone)]
1288pub struct TPMT_TK_VERIFIED {
1289    pub tag: TPM2_ST,
1290    pub hierarchy: TPMI_RH_HIERARCHY,
1291    pub digest: TPM2B_DIGEST,
1292}
1293#[test]
1294fn bindgen_test_layout_TPMT_TK_VERIFIED() {
1295    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_VERIFIED> = ::std::mem::MaybeUninit::uninit();
1296    let ptr = UNINIT.as_ptr();
1297    assert_eq!(
1298        ::std::mem::size_of::<TPMT_TK_VERIFIED>(),
1299        76usize,
1300        "Size of TPMT_TK_VERIFIED"
1301    );
1302    assert_eq!(
1303        ::std::mem::align_of::<TPMT_TK_VERIFIED>(),
1304        4usize,
1305        "Alignment of TPMT_TK_VERIFIED"
1306    );
1307    assert_eq!(
1308        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1309        0usize,
1310        "Offset of field: TPMT_TK_VERIFIED::tag"
1311    );
1312    assert_eq!(
1313        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1314        4usize,
1315        "Offset of field: TPMT_TK_VERIFIED::hierarchy"
1316    );
1317    assert_eq!(
1318        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1319        8usize,
1320        "Offset of field: TPMT_TK_VERIFIED::digest"
1321    );
1322}
1323impl Default for TPMT_TK_VERIFIED {
1324    fn default() -> Self {
1325        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1326        unsafe {
1327            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1328            s.assume_init()
1329        }
1330    }
1331}
1332#[repr(C)]
1333#[derive(Debug, Copy, Clone)]
1334pub struct TPMT_TK_AUTH {
1335    pub tag: TPM2_ST,
1336    pub hierarchy: TPMI_RH_HIERARCHY,
1337    pub digest: TPM2B_DIGEST,
1338}
1339#[test]
1340fn bindgen_test_layout_TPMT_TK_AUTH() {
1341    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_AUTH> = ::std::mem::MaybeUninit::uninit();
1342    let ptr = UNINIT.as_ptr();
1343    assert_eq!(
1344        ::std::mem::size_of::<TPMT_TK_AUTH>(),
1345        76usize,
1346        "Size of TPMT_TK_AUTH"
1347    );
1348    assert_eq!(
1349        ::std::mem::align_of::<TPMT_TK_AUTH>(),
1350        4usize,
1351        "Alignment of TPMT_TK_AUTH"
1352    );
1353    assert_eq!(
1354        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1355        0usize,
1356        "Offset of field: TPMT_TK_AUTH::tag"
1357    );
1358    assert_eq!(
1359        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1360        4usize,
1361        "Offset of field: TPMT_TK_AUTH::hierarchy"
1362    );
1363    assert_eq!(
1364        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1365        8usize,
1366        "Offset of field: TPMT_TK_AUTH::digest"
1367    );
1368}
1369impl Default for TPMT_TK_AUTH {
1370    fn default() -> Self {
1371        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1372        unsafe {
1373            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1374            s.assume_init()
1375        }
1376    }
1377}
1378#[repr(C)]
1379#[derive(Debug, Copy, Clone)]
1380pub struct TPMT_TK_HASHCHECK {
1381    pub tag: TPM2_ST,
1382    pub hierarchy: TPMI_RH_HIERARCHY,
1383    pub digest: TPM2B_DIGEST,
1384}
1385#[test]
1386fn bindgen_test_layout_TPMT_TK_HASHCHECK() {
1387    const UNINIT: ::std::mem::MaybeUninit<TPMT_TK_HASHCHECK> = ::std::mem::MaybeUninit::uninit();
1388    let ptr = UNINIT.as_ptr();
1389    assert_eq!(
1390        ::std::mem::size_of::<TPMT_TK_HASHCHECK>(),
1391        76usize,
1392        "Size of TPMT_TK_HASHCHECK"
1393    );
1394    assert_eq!(
1395        ::std::mem::align_of::<TPMT_TK_HASHCHECK>(),
1396        4usize,
1397        "Alignment of TPMT_TK_HASHCHECK"
1398    );
1399    assert_eq!(
1400        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1401        0usize,
1402        "Offset of field: TPMT_TK_HASHCHECK::tag"
1403    );
1404    assert_eq!(
1405        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
1406        4usize,
1407        "Offset of field: TPMT_TK_HASHCHECK::hierarchy"
1408    );
1409    assert_eq!(
1410        unsafe { ::std::ptr::addr_of!((*ptr).digest) as usize - ptr as usize },
1411        8usize,
1412        "Offset of field: TPMT_TK_HASHCHECK::digest"
1413    );
1414}
1415impl Default for TPMT_TK_HASHCHECK {
1416    fn default() -> Self {
1417        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1418        unsafe {
1419            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1420            s.assume_init()
1421        }
1422    }
1423}
1424#[repr(C)]
1425#[derive(Debug, Default, Copy, Clone)]
1426pub struct TPMS_ALG_PROPERTY {
1427    pub alg: TPM2_ALG_ID,
1428    pub algProperties: TPMA_ALGORITHM,
1429}
1430#[test]
1431fn bindgen_test_layout_TPMS_ALG_PROPERTY() {
1432    const UNINIT: ::std::mem::MaybeUninit<TPMS_ALG_PROPERTY> = ::std::mem::MaybeUninit::uninit();
1433    let ptr = UNINIT.as_ptr();
1434    assert_eq!(
1435        ::std::mem::size_of::<TPMS_ALG_PROPERTY>(),
1436        8usize,
1437        "Size of TPMS_ALG_PROPERTY"
1438    );
1439    assert_eq!(
1440        ::std::mem::align_of::<TPMS_ALG_PROPERTY>(),
1441        4usize,
1442        "Alignment of TPMS_ALG_PROPERTY"
1443    );
1444    assert_eq!(
1445        unsafe { ::std::ptr::addr_of!((*ptr).alg) as usize - ptr as usize },
1446        0usize,
1447        "Offset of field: TPMS_ALG_PROPERTY::alg"
1448    );
1449    assert_eq!(
1450        unsafe { ::std::ptr::addr_of!((*ptr).algProperties) as usize - ptr as usize },
1451        4usize,
1452        "Offset of field: TPMS_ALG_PROPERTY::algProperties"
1453    );
1454}
1455#[repr(C)]
1456#[derive(Debug, Default, Copy, Clone)]
1457pub struct TPMS_TAGGED_PROPERTY {
1458    pub property: TPM2_PT,
1459    pub value: UINT32,
1460}
1461#[test]
1462fn bindgen_test_layout_TPMS_TAGGED_PROPERTY() {
1463    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_PROPERTY> = ::std::mem::MaybeUninit::uninit();
1464    let ptr = UNINIT.as_ptr();
1465    assert_eq!(
1466        ::std::mem::size_of::<TPMS_TAGGED_PROPERTY>(),
1467        8usize,
1468        "Size of TPMS_TAGGED_PROPERTY"
1469    );
1470    assert_eq!(
1471        ::std::mem::align_of::<TPMS_TAGGED_PROPERTY>(),
1472        4usize,
1473        "Alignment of TPMS_TAGGED_PROPERTY"
1474    );
1475    assert_eq!(
1476        unsafe { ::std::ptr::addr_of!((*ptr).property) as usize - ptr as usize },
1477        0usize,
1478        "Offset of field: TPMS_TAGGED_PROPERTY::property"
1479    );
1480    assert_eq!(
1481        unsafe { ::std::ptr::addr_of!((*ptr).value) as usize - ptr as usize },
1482        4usize,
1483        "Offset of field: TPMS_TAGGED_PROPERTY::value"
1484    );
1485}
1486#[repr(C)]
1487#[derive(Debug, Default, Copy, Clone)]
1488pub struct TPMS_TAGGED_PCR_SELECT {
1489    pub tag: TPM2_PT_PCR,
1490    pub sizeofSelect: UINT8,
1491    pub pcrSelect: [BYTE; 4usize],
1492}
1493#[test]
1494fn bindgen_test_layout_TPMS_TAGGED_PCR_SELECT() {
1495    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_PCR_SELECT> =
1496        ::std::mem::MaybeUninit::uninit();
1497    let ptr = UNINIT.as_ptr();
1498    assert_eq!(
1499        ::std::mem::size_of::<TPMS_TAGGED_PCR_SELECT>(),
1500        12usize,
1501        "Size of TPMS_TAGGED_PCR_SELECT"
1502    );
1503    assert_eq!(
1504        ::std::mem::align_of::<TPMS_TAGGED_PCR_SELECT>(),
1505        4usize,
1506        "Alignment of TPMS_TAGGED_PCR_SELECT"
1507    );
1508    assert_eq!(
1509        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
1510        0usize,
1511        "Offset of field: TPMS_TAGGED_PCR_SELECT::tag"
1512    );
1513    assert_eq!(
1514        unsafe { ::std::ptr::addr_of!((*ptr).sizeofSelect) as usize - ptr as usize },
1515        4usize,
1516        "Offset of field: TPMS_TAGGED_PCR_SELECT::sizeofSelect"
1517    );
1518    assert_eq!(
1519        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
1520        5usize,
1521        "Offset of field: TPMS_TAGGED_PCR_SELECT::pcrSelect"
1522    );
1523}
1524#[repr(C)]
1525#[derive(Copy, Clone)]
1526pub struct TPMS_TAGGED_POLICY {
1527    pub handle: TPM2_HANDLE,
1528    pub policyHash: TPMT_HA,
1529}
1530#[test]
1531fn bindgen_test_layout_TPMS_TAGGED_POLICY() {
1532    const UNINIT: ::std::mem::MaybeUninit<TPMS_TAGGED_POLICY> = ::std::mem::MaybeUninit::uninit();
1533    let ptr = UNINIT.as_ptr();
1534    assert_eq!(
1535        ::std::mem::size_of::<TPMS_TAGGED_POLICY>(),
1536        72usize,
1537        "Size of TPMS_TAGGED_POLICY"
1538    );
1539    assert_eq!(
1540        ::std::mem::align_of::<TPMS_TAGGED_POLICY>(),
1541        4usize,
1542        "Alignment of TPMS_TAGGED_POLICY"
1543    );
1544    assert_eq!(
1545        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1546        0usize,
1547        "Offset of field: TPMS_TAGGED_POLICY::handle"
1548    );
1549    assert_eq!(
1550        unsafe { ::std::ptr::addr_of!((*ptr).policyHash) as usize - ptr as usize },
1551        4usize,
1552        "Offset of field: TPMS_TAGGED_POLICY::policyHash"
1553    );
1554}
1555impl Default for TPMS_TAGGED_POLICY {
1556    fn default() -> Self {
1557        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1558        unsafe {
1559            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1560            s.assume_init()
1561        }
1562    }
1563}
1564#[repr(C)]
1565#[derive(Debug, Default, Copy, Clone)]
1566pub struct TPMS_ACT_DATA {
1567    pub handle: TPM2_HANDLE,
1568    pub timeout: UINT32,
1569    pub attributes: TPMA_ACT,
1570}
1571#[test]
1572fn bindgen_test_layout_TPMS_ACT_DATA() {
1573    const UNINIT: ::std::mem::MaybeUninit<TPMS_ACT_DATA> = ::std::mem::MaybeUninit::uninit();
1574    let ptr = UNINIT.as_ptr();
1575    assert_eq!(
1576        ::std::mem::size_of::<TPMS_ACT_DATA>(),
1577        12usize,
1578        "Size of TPMS_ACT_DATA"
1579    );
1580    assert_eq!(
1581        ::std::mem::align_of::<TPMS_ACT_DATA>(),
1582        4usize,
1583        "Alignment of TPMS_ACT_DATA"
1584    );
1585    assert_eq!(
1586        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1587        0usize,
1588        "Offset of field: TPMS_ACT_DATA::handle"
1589    );
1590    assert_eq!(
1591        unsafe { ::std::ptr::addr_of!((*ptr).timeout) as usize - ptr as usize },
1592        4usize,
1593        "Offset of field: TPMS_ACT_DATA::timeout"
1594    );
1595    assert_eq!(
1596        unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize },
1597        8usize,
1598        "Offset of field: TPMS_ACT_DATA::attributes"
1599    );
1600}
1601#[repr(C)]
1602#[derive(Debug, Copy, Clone)]
1603pub struct TPML_CC {
1604    pub count: UINT32,
1605    pub commandCodes: [TPM2_CC; 256usize],
1606}
1607#[test]
1608fn bindgen_test_layout_TPML_CC() {
1609    const UNINIT: ::std::mem::MaybeUninit<TPML_CC> = ::std::mem::MaybeUninit::uninit();
1610    let ptr = UNINIT.as_ptr();
1611    assert_eq!(
1612        ::std::mem::size_of::<TPML_CC>(),
1613        1028usize,
1614        "Size of TPML_CC"
1615    );
1616    assert_eq!(
1617        ::std::mem::align_of::<TPML_CC>(),
1618        4usize,
1619        "Alignment of TPML_CC"
1620    );
1621    assert_eq!(
1622        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1623        0usize,
1624        "Offset of field: TPML_CC::count"
1625    );
1626    assert_eq!(
1627        unsafe { ::std::ptr::addr_of!((*ptr).commandCodes) as usize - ptr as usize },
1628        4usize,
1629        "Offset of field: TPML_CC::commandCodes"
1630    );
1631}
1632impl Default for TPML_CC {
1633    fn default() -> Self {
1634        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1635        unsafe {
1636            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1637            s.assume_init()
1638        }
1639    }
1640}
1641#[repr(C)]
1642#[derive(Debug, Copy, Clone)]
1643pub struct TPML_CCA {
1644    pub count: UINT32,
1645    pub commandAttributes: [TPMA_CC; 256usize],
1646}
1647#[test]
1648fn bindgen_test_layout_TPML_CCA() {
1649    const UNINIT: ::std::mem::MaybeUninit<TPML_CCA> = ::std::mem::MaybeUninit::uninit();
1650    let ptr = UNINIT.as_ptr();
1651    assert_eq!(
1652        ::std::mem::size_of::<TPML_CCA>(),
1653        1028usize,
1654        "Size of TPML_CCA"
1655    );
1656    assert_eq!(
1657        ::std::mem::align_of::<TPML_CCA>(),
1658        4usize,
1659        "Alignment of TPML_CCA"
1660    );
1661    assert_eq!(
1662        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1663        0usize,
1664        "Offset of field: TPML_CCA::count"
1665    );
1666    assert_eq!(
1667        unsafe { ::std::ptr::addr_of!((*ptr).commandAttributes) as usize - ptr as usize },
1668        4usize,
1669        "Offset of field: TPML_CCA::commandAttributes"
1670    );
1671}
1672impl Default for TPML_CCA {
1673    fn default() -> Self {
1674        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1675        unsafe {
1676            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1677            s.assume_init()
1678        }
1679    }
1680}
1681#[repr(C)]
1682#[derive(Debug, Copy, Clone)]
1683pub struct TPML_ALG {
1684    pub count: UINT32,
1685    pub algorithms: [TPM2_ALG_ID; 128usize],
1686}
1687#[test]
1688fn bindgen_test_layout_TPML_ALG() {
1689    const UNINIT: ::std::mem::MaybeUninit<TPML_ALG> = ::std::mem::MaybeUninit::uninit();
1690    let ptr = UNINIT.as_ptr();
1691    assert_eq!(
1692        ::std::mem::size_of::<TPML_ALG>(),
1693        260usize,
1694        "Size of TPML_ALG"
1695    );
1696    assert_eq!(
1697        ::std::mem::align_of::<TPML_ALG>(),
1698        4usize,
1699        "Alignment of TPML_ALG"
1700    );
1701    assert_eq!(
1702        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1703        0usize,
1704        "Offset of field: TPML_ALG::count"
1705    );
1706    assert_eq!(
1707        unsafe { ::std::ptr::addr_of!((*ptr).algorithms) as usize - ptr as usize },
1708        4usize,
1709        "Offset of field: TPML_ALG::algorithms"
1710    );
1711}
1712impl Default for TPML_ALG {
1713    fn default() -> Self {
1714        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1715        unsafe {
1716            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1717            s.assume_init()
1718        }
1719    }
1720}
1721#[repr(C)]
1722#[derive(Debug, Copy, Clone)]
1723pub struct TPML_HANDLE {
1724    pub count: UINT32,
1725    pub handle: [TPM2_HANDLE; 254usize],
1726}
1727#[test]
1728fn bindgen_test_layout_TPML_HANDLE() {
1729    const UNINIT: ::std::mem::MaybeUninit<TPML_HANDLE> = ::std::mem::MaybeUninit::uninit();
1730    let ptr = UNINIT.as_ptr();
1731    assert_eq!(
1732        ::std::mem::size_of::<TPML_HANDLE>(),
1733        1020usize,
1734        "Size of TPML_HANDLE"
1735    );
1736    assert_eq!(
1737        ::std::mem::align_of::<TPML_HANDLE>(),
1738        4usize,
1739        "Alignment of TPML_HANDLE"
1740    );
1741    assert_eq!(
1742        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1743        0usize,
1744        "Offset of field: TPML_HANDLE::count"
1745    );
1746    assert_eq!(
1747        unsafe { ::std::ptr::addr_of!((*ptr).handle) as usize - ptr as usize },
1748        4usize,
1749        "Offset of field: TPML_HANDLE::handle"
1750    );
1751}
1752impl Default for TPML_HANDLE {
1753    fn default() -> Self {
1754        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1755        unsafe {
1756            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1757            s.assume_init()
1758        }
1759    }
1760}
1761#[repr(C)]
1762#[derive(Debug, Copy, Clone)]
1763pub struct TPML_DIGEST {
1764    pub count: UINT32,
1765    pub digests: [TPM2B_DIGEST; 8usize],
1766}
1767#[test]
1768fn bindgen_test_layout_TPML_DIGEST() {
1769    const UNINIT: ::std::mem::MaybeUninit<TPML_DIGEST> = ::std::mem::MaybeUninit::uninit();
1770    let ptr = UNINIT.as_ptr();
1771    assert_eq!(
1772        ::std::mem::size_of::<TPML_DIGEST>(),
1773        532usize,
1774        "Size of TPML_DIGEST"
1775    );
1776    assert_eq!(
1777        ::std::mem::align_of::<TPML_DIGEST>(),
1778        4usize,
1779        "Alignment of TPML_DIGEST"
1780    );
1781    assert_eq!(
1782        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1783        0usize,
1784        "Offset of field: TPML_DIGEST::count"
1785    );
1786    assert_eq!(
1787        unsafe { ::std::ptr::addr_of!((*ptr).digests) as usize - ptr as usize },
1788        4usize,
1789        "Offset of field: TPML_DIGEST::digests"
1790    );
1791}
1792impl Default for TPML_DIGEST {
1793    fn default() -> Self {
1794        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1795        unsafe {
1796            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1797            s.assume_init()
1798        }
1799    }
1800}
1801#[repr(C)]
1802#[derive(Copy, Clone)]
1803pub struct TPML_DIGEST_VALUES {
1804    pub count: UINT32,
1805    pub digests: [TPMT_HA; 16usize],
1806}
1807#[test]
1808fn bindgen_test_layout_TPML_DIGEST_VALUES() {
1809    const UNINIT: ::std::mem::MaybeUninit<TPML_DIGEST_VALUES> = ::std::mem::MaybeUninit::uninit();
1810    let ptr = UNINIT.as_ptr();
1811    assert_eq!(
1812        ::std::mem::size_of::<TPML_DIGEST_VALUES>(),
1813        1060usize,
1814        "Size of TPML_DIGEST_VALUES"
1815    );
1816    assert_eq!(
1817        ::std::mem::align_of::<TPML_DIGEST_VALUES>(),
1818        4usize,
1819        "Alignment of TPML_DIGEST_VALUES"
1820    );
1821    assert_eq!(
1822        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1823        0usize,
1824        "Offset of field: TPML_DIGEST_VALUES::count"
1825    );
1826    assert_eq!(
1827        unsafe { ::std::ptr::addr_of!((*ptr).digests) as usize - ptr as usize },
1828        4usize,
1829        "Offset of field: TPML_DIGEST_VALUES::digests"
1830    );
1831}
1832impl Default for TPML_DIGEST_VALUES {
1833    fn default() -> Self {
1834        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1835        unsafe {
1836            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1837            s.assume_init()
1838        }
1839    }
1840}
1841#[repr(C)]
1842#[derive(Debug, Default, Copy, Clone)]
1843pub struct TPML_PCR_SELECTION {
1844    pub count: UINT32,
1845    pub pcrSelections: [TPMS_PCR_SELECTION; 16usize],
1846}
1847#[test]
1848fn bindgen_test_layout_TPML_PCR_SELECTION() {
1849    const UNINIT: ::std::mem::MaybeUninit<TPML_PCR_SELECTION> = ::std::mem::MaybeUninit::uninit();
1850    let ptr = UNINIT.as_ptr();
1851    assert_eq!(
1852        ::std::mem::size_of::<TPML_PCR_SELECTION>(),
1853        132usize,
1854        "Size of TPML_PCR_SELECTION"
1855    );
1856    assert_eq!(
1857        ::std::mem::align_of::<TPML_PCR_SELECTION>(),
1858        4usize,
1859        "Alignment of TPML_PCR_SELECTION"
1860    );
1861    assert_eq!(
1862        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1863        0usize,
1864        "Offset of field: TPML_PCR_SELECTION::count"
1865    );
1866    assert_eq!(
1867        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelections) as usize - ptr as usize },
1868        4usize,
1869        "Offset of field: TPML_PCR_SELECTION::pcrSelections"
1870    );
1871}
1872#[repr(C)]
1873#[derive(Debug, Copy, Clone)]
1874pub struct TPML_ALG_PROPERTY {
1875    pub count: UINT32,
1876    pub algProperties: [TPMS_ALG_PROPERTY; 127usize],
1877}
1878#[test]
1879fn bindgen_test_layout_TPML_ALG_PROPERTY() {
1880    const UNINIT: ::std::mem::MaybeUninit<TPML_ALG_PROPERTY> = ::std::mem::MaybeUninit::uninit();
1881    let ptr = UNINIT.as_ptr();
1882    assert_eq!(
1883        ::std::mem::size_of::<TPML_ALG_PROPERTY>(),
1884        1020usize,
1885        "Size of TPML_ALG_PROPERTY"
1886    );
1887    assert_eq!(
1888        ::std::mem::align_of::<TPML_ALG_PROPERTY>(),
1889        4usize,
1890        "Alignment of TPML_ALG_PROPERTY"
1891    );
1892    assert_eq!(
1893        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1894        0usize,
1895        "Offset of field: TPML_ALG_PROPERTY::count"
1896    );
1897    assert_eq!(
1898        unsafe { ::std::ptr::addr_of!((*ptr).algProperties) as usize - ptr as usize },
1899        4usize,
1900        "Offset of field: TPML_ALG_PROPERTY::algProperties"
1901    );
1902}
1903impl Default for TPML_ALG_PROPERTY {
1904    fn default() -> Self {
1905        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1906        unsafe {
1907            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1908            s.assume_init()
1909        }
1910    }
1911}
1912#[repr(C)]
1913#[derive(Debug, Copy, Clone)]
1914pub struct TPML_TAGGED_TPM_PROPERTY {
1915    pub count: UINT32,
1916    pub tpmProperty: [TPMS_TAGGED_PROPERTY; 127usize],
1917}
1918#[test]
1919fn bindgen_test_layout_TPML_TAGGED_TPM_PROPERTY() {
1920    const UNINIT: ::std::mem::MaybeUninit<TPML_TAGGED_TPM_PROPERTY> =
1921        ::std::mem::MaybeUninit::uninit();
1922    let ptr = UNINIT.as_ptr();
1923    assert_eq!(
1924        ::std::mem::size_of::<TPML_TAGGED_TPM_PROPERTY>(),
1925        1020usize,
1926        "Size of TPML_TAGGED_TPM_PROPERTY"
1927    );
1928    assert_eq!(
1929        ::std::mem::align_of::<TPML_TAGGED_TPM_PROPERTY>(),
1930        4usize,
1931        "Alignment of TPML_TAGGED_TPM_PROPERTY"
1932    );
1933    assert_eq!(
1934        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1935        0usize,
1936        "Offset of field: TPML_TAGGED_TPM_PROPERTY::count"
1937    );
1938    assert_eq!(
1939        unsafe { ::std::ptr::addr_of!((*ptr).tpmProperty) as usize - ptr as usize },
1940        4usize,
1941        "Offset of field: TPML_TAGGED_TPM_PROPERTY::tpmProperty"
1942    );
1943}
1944impl Default for TPML_TAGGED_TPM_PROPERTY {
1945    fn default() -> Self {
1946        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1947        unsafe {
1948            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1949            s.assume_init()
1950        }
1951    }
1952}
1953#[repr(C)]
1954#[derive(Debug, Copy, Clone)]
1955pub struct TPML_TAGGED_PCR_PROPERTY {
1956    pub count: UINT32,
1957    pub pcrProperty: [TPMS_TAGGED_PCR_SELECT; 84usize],
1958}
1959#[test]
1960fn bindgen_test_layout_TPML_TAGGED_PCR_PROPERTY() {
1961    const UNINIT: ::std::mem::MaybeUninit<TPML_TAGGED_PCR_PROPERTY> =
1962        ::std::mem::MaybeUninit::uninit();
1963    let ptr = UNINIT.as_ptr();
1964    assert_eq!(
1965        ::std::mem::size_of::<TPML_TAGGED_PCR_PROPERTY>(),
1966        1012usize,
1967        "Size of TPML_TAGGED_PCR_PROPERTY"
1968    );
1969    assert_eq!(
1970        ::std::mem::align_of::<TPML_TAGGED_PCR_PROPERTY>(),
1971        4usize,
1972        "Alignment of TPML_TAGGED_PCR_PROPERTY"
1973    );
1974    assert_eq!(
1975        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
1976        0usize,
1977        "Offset of field: TPML_TAGGED_PCR_PROPERTY::count"
1978    );
1979    assert_eq!(
1980        unsafe { ::std::ptr::addr_of!((*ptr).pcrProperty) as usize - ptr as usize },
1981        4usize,
1982        "Offset of field: TPML_TAGGED_PCR_PROPERTY::pcrProperty"
1983    );
1984}
1985impl Default for TPML_TAGGED_PCR_PROPERTY {
1986    fn default() -> Self {
1987        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
1988        unsafe {
1989            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
1990            s.assume_init()
1991        }
1992    }
1993}
1994#[repr(C)]
1995#[derive(Debug, Copy, Clone)]
1996pub struct TPML_ECC_CURVE {
1997    pub count: UINT32,
1998    pub eccCurves: [TPM2_ECC_CURVE; 508usize],
1999}
2000#[test]
2001fn bindgen_test_layout_TPML_ECC_CURVE() {
2002    const UNINIT: ::std::mem::MaybeUninit<TPML_ECC_CURVE> = ::std::mem::MaybeUninit::uninit();
2003    let ptr = UNINIT.as_ptr();
2004    assert_eq!(
2005        ::std::mem::size_of::<TPML_ECC_CURVE>(),
2006        1020usize,
2007        "Size of TPML_ECC_CURVE"
2008    );
2009    assert_eq!(
2010        ::std::mem::align_of::<TPML_ECC_CURVE>(),
2011        4usize,
2012        "Alignment of TPML_ECC_CURVE"
2013    );
2014    assert_eq!(
2015        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2016        0usize,
2017        "Offset of field: TPML_ECC_CURVE::count"
2018    );
2019    assert_eq!(
2020        unsafe { ::std::ptr::addr_of!((*ptr).eccCurves) as usize - ptr as usize },
2021        4usize,
2022        "Offset of field: TPML_ECC_CURVE::eccCurves"
2023    );
2024}
2025impl Default for TPML_ECC_CURVE {
2026    fn default() -> Self {
2027        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2028        unsafe {
2029            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2030            s.assume_init()
2031        }
2032    }
2033}
2034#[repr(C)]
2035#[derive(Copy, Clone)]
2036pub struct TPML_TAGGED_POLICY {
2037    pub count: UINT32,
2038    pub policies: [TPMS_TAGGED_POLICY; 14usize],
2039}
2040#[test]
2041fn bindgen_test_layout_TPML_TAGGED_POLICY() {
2042    const UNINIT: ::std::mem::MaybeUninit<TPML_TAGGED_POLICY> = ::std::mem::MaybeUninit::uninit();
2043    let ptr = UNINIT.as_ptr();
2044    assert_eq!(
2045        ::std::mem::size_of::<TPML_TAGGED_POLICY>(),
2046        1012usize,
2047        "Size of TPML_TAGGED_POLICY"
2048    );
2049    assert_eq!(
2050        ::std::mem::align_of::<TPML_TAGGED_POLICY>(),
2051        4usize,
2052        "Alignment of TPML_TAGGED_POLICY"
2053    );
2054    assert_eq!(
2055        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2056        0usize,
2057        "Offset of field: TPML_TAGGED_POLICY::count"
2058    );
2059    assert_eq!(
2060        unsafe { ::std::ptr::addr_of!((*ptr).policies) as usize - ptr as usize },
2061        4usize,
2062        "Offset of field: TPML_TAGGED_POLICY::policies"
2063    );
2064}
2065impl Default for TPML_TAGGED_POLICY {
2066    fn default() -> Self {
2067        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2068        unsafe {
2069            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2070            s.assume_init()
2071        }
2072    }
2073}
2074#[repr(C)]
2075#[derive(Debug, Copy, Clone)]
2076pub struct TPML_ACT_DATA {
2077    pub count: UINT32,
2078    pub actData: [TPMS_ACT_DATA; 84usize],
2079}
2080#[test]
2081fn bindgen_test_layout_TPML_ACT_DATA() {
2082    const UNINIT: ::std::mem::MaybeUninit<TPML_ACT_DATA> = ::std::mem::MaybeUninit::uninit();
2083    let ptr = UNINIT.as_ptr();
2084    assert_eq!(
2085        ::std::mem::size_of::<TPML_ACT_DATA>(),
2086        1012usize,
2087        "Size of TPML_ACT_DATA"
2088    );
2089    assert_eq!(
2090        ::std::mem::align_of::<TPML_ACT_DATA>(),
2091        4usize,
2092        "Alignment of TPML_ACT_DATA"
2093    );
2094    assert_eq!(
2095        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
2096        0usize,
2097        "Offset of field: TPML_ACT_DATA::count"
2098    );
2099    assert_eq!(
2100        unsafe { ::std::ptr::addr_of!((*ptr).actData) as usize - ptr as usize },
2101        4usize,
2102        "Offset of field: TPML_ACT_DATA::actData"
2103    );
2104}
2105impl Default for TPML_ACT_DATA {
2106    fn default() -> Self {
2107        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2108        unsafe {
2109            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2110            s.assume_init()
2111        }
2112    }
2113}
2114#[repr(C)]
2115#[derive(Debug, Copy, Clone)]
2116pub struct TPM2B_MAX_CAP_BUFFER {
2117    pub size: UINT16,
2118    pub buffer: [BYTE; 1024usize],
2119}
2120#[test]
2121fn bindgen_test_layout_TPM2B_MAX_CAP_BUFFER() {
2122    const UNINIT: ::std::mem::MaybeUninit<TPM2B_MAX_CAP_BUFFER> = ::std::mem::MaybeUninit::uninit();
2123    let ptr = UNINIT.as_ptr();
2124    assert_eq!(
2125        ::std::mem::size_of::<TPM2B_MAX_CAP_BUFFER>(),
2126        1026usize,
2127        "Size of TPM2B_MAX_CAP_BUFFER"
2128    );
2129    assert_eq!(
2130        ::std::mem::align_of::<TPM2B_MAX_CAP_BUFFER>(),
2131        2usize,
2132        "Alignment of TPM2B_MAX_CAP_BUFFER"
2133    );
2134    assert_eq!(
2135        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
2136        0usize,
2137        "Offset of field: TPM2B_MAX_CAP_BUFFER::size"
2138    );
2139    assert_eq!(
2140        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
2141        2usize,
2142        "Offset of field: TPM2B_MAX_CAP_BUFFER::buffer"
2143    );
2144}
2145impl Default for TPM2B_MAX_CAP_BUFFER {
2146    fn default() -> Self {
2147        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2148        unsafe {
2149            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2150            s.assume_init()
2151        }
2152    }
2153}
2154#[repr(C)]
2155#[derive(Copy, Clone)]
2156pub union TPMU_CAPABILITIES {
2157    pub algorithms: TPML_ALG_PROPERTY,
2158    pub handles: TPML_HANDLE,
2159    pub command: TPML_CCA,
2160    pub ppCommands: TPML_CC,
2161    pub auditCommands: TPML_CC,
2162    pub assignedPCR: TPML_PCR_SELECTION,
2163    pub tpmProperties: TPML_TAGGED_TPM_PROPERTY,
2164    pub pcrProperties: TPML_TAGGED_PCR_PROPERTY,
2165    pub eccCurves: TPML_ECC_CURVE,
2166    pub authPolicies: TPML_TAGGED_POLICY,
2167    pub actData: TPML_ACT_DATA,
2168    pub vendor: TPM2B_MAX_CAP_BUFFER,
2169}
2170#[test]
2171fn bindgen_test_layout_TPMU_CAPABILITIES() {
2172    const UNINIT: ::std::mem::MaybeUninit<TPMU_CAPABILITIES> = ::std::mem::MaybeUninit::uninit();
2173    let ptr = UNINIT.as_ptr();
2174    assert_eq!(
2175        ::std::mem::size_of::<TPMU_CAPABILITIES>(),
2176        1028usize,
2177        "Size of TPMU_CAPABILITIES"
2178    );
2179    assert_eq!(
2180        ::std::mem::align_of::<TPMU_CAPABILITIES>(),
2181        4usize,
2182        "Alignment of TPMU_CAPABILITIES"
2183    );
2184    assert_eq!(
2185        unsafe { ::std::ptr::addr_of!((*ptr).algorithms) as usize - ptr as usize },
2186        0usize,
2187        "Offset of field: TPMU_CAPABILITIES::algorithms"
2188    );
2189    assert_eq!(
2190        unsafe { ::std::ptr::addr_of!((*ptr).handles) as usize - ptr as usize },
2191        0usize,
2192        "Offset of field: TPMU_CAPABILITIES::handles"
2193    );
2194    assert_eq!(
2195        unsafe { ::std::ptr::addr_of!((*ptr).command) as usize - ptr as usize },
2196        0usize,
2197        "Offset of field: TPMU_CAPABILITIES::command"
2198    );
2199    assert_eq!(
2200        unsafe { ::std::ptr::addr_of!((*ptr).ppCommands) as usize - ptr as usize },
2201        0usize,
2202        "Offset of field: TPMU_CAPABILITIES::ppCommands"
2203    );
2204    assert_eq!(
2205        unsafe { ::std::ptr::addr_of!((*ptr).auditCommands) as usize - ptr as usize },
2206        0usize,
2207        "Offset of field: TPMU_CAPABILITIES::auditCommands"
2208    );
2209    assert_eq!(
2210        unsafe { ::std::ptr::addr_of!((*ptr).assignedPCR) as usize - ptr as usize },
2211        0usize,
2212        "Offset of field: TPMU_CAPABILITIES::assignedPCR"
2213    );
2214    assert_eq!(
2215        unsafe { ::std::ptr::addr_of!((*ptr).tpmProperties) as usize - ptr as usize },
2216        0usize,
2217        "Offset of field: TPMU_CAPABILITIES::tpmProperties"
2218    );
2219    assert_eq!(
2220        unsafe { ::std::ptr::addr_of!((*ptr).pcrProperties) as usize - ptr as usize },
2221        0usize,
2222        "Offset of field: TPMU_CAPABILITIES::pcrProperties"
2223    );
2224    assert_eq!(
2225        unsafe { ::std::ptr::addr_of!((*ptr).eccCurves) as usize - ptr as usize },
2226        0usize,
2227        "Offset of field: TPMU_CAPABILITIES::eccCurves"
2228    );
2229    assert_eq!(
2230        unsafe { ::std::ptr::addr_of!((*ptr).authPolicies) as usize - ptr as usize },
2231        0usize,
2232        "Offset of field: TPMU_CAPABILITIES::authPolicies"
2233    );
2234    assert_eq!(
2235        unsafe { ::std::ptr::addr_of!((*ptr).actData) as usize - ptr as usize },
2236        0usize,
2237        "Offset of field: TPMU_CAPABILITIES::actData"
2238    );
2239    assert_eq!(
2240        unsafe { ::std::ptr::addr_of!((*ptr).vendor) as usize - ptr as usize },
2241        0usize,
2242        "Offset of field: TPMU_CAPABILITIES::vendor"
2243    );
2244}
2245impl Default for TPMU_CAPABILITIES {
2246    fn default() -> Self {
2247        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2248        unsafe {
2249            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2250            s.assume_init()
2251        }
2252    }
2253}
2254#[repr(C)]
2255#[derive(Copy, Clone)]
2256pub struct TPMS_CAPABILITY_DATA {
2257    pub capability: TPM2_CAP,
2258    pub data: TPMU_CAPABILITIES,
2259}
2260#[test]
2261fn bindgen_test_layout_TPMS_CAPABILITY_DATA() {
2262    const UNINIT: ::std::mem::MaybeUninit<TPMS_CAPABILITY_DATA> = ::std::mem::MaybeUninit::uninit();
2263    let ptr = UNINIT.as_ptr();
2264    assert_eq!(
2265        ::std::mem::size_of::<TPMS_CAPABILITY_DATA>(),
2266        1032usize,
2267        "Size of TPMS_CAPABILITY_DATA"
2268    );
2269    assert_eq!(
2270        ::std::mem::align_of::<TPMS_CAPABILITY_DATA>(),
2271        4usize,
2272        "Alignment of TPMS_CAPABILITY_DATA"
2273    );
2274    assert_eq!(
2275        unsafe { ::std::ptr::addr_of!((*ptr).capability) as usize - ptr as usize },
2276        0usize,
2277        "Offset of field: TPMS_CAPABILITY_DATA::capability"
2278    );
2279    assert_eq!(
2280        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
2281        4usize,
2282        "Offset of field: TPMS_CAPABILITY_DATA::data"
2283    );
2284}
2285impl Default for TPMS_CAPABILITY_DATA {
2286    fn default() -> Self {
2287        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2288        unsafe {
2289            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2290            s.assume_init()
2291        }
2292    }
2293}
2294#[repr(C)]
2295#[derive(Debug, Default, Copy, Clone)]
2296pub struct TPMS_CLOCK_INFO {
2297    pub clock: UINT64,
2298    pub resetCount: UINT32,
2299    pub restartCount: UINT32,
2300    pub safe: TPMI_YES_NO,
2301}
2302#[test]
2303fn bindgen_test_layout_TPMS_CLOCK_INFO() {
2304    const UNINIT: ::std::mem::MaybeUninit<TPMS_CLOCK_INFO> = ::std::mem::MaybeUninit::uninit();
2305    let ptr = UNINIT.as_ptr();
2306    assert_eq!(
2307        ::std::mem::size_of::<TPMS_CLOCK_INFO>(),
2308        24usize,
2309        "Size of TPMS_CLOCK_INFO"
2310    );
2311    assert_eq!(
2312        ::std::mem::align_of::<TPMS_CLOCK_INFO>(),
2313        8usize,
2314        "Alignment of TPMS_CLOCK_INFO"
2315    );
2316    assert_eq!(
2317        unsafe { ::std::ptr::addr_of!((*ptr).clock) as usize - ptr as usize },
2318        0usize,
2319        "Offset of field: TPMS_CLOCK_INFO::clock"
2320    );
2321    assert_eq!(
2322        unsafe { ::std::ptr::addr_of!((*ptr).resetCount) as usize - ptr as usize },
2323        8usize,
2324        "Offset of field: TPMS_CLOCK_INFO::resetCount"
2325    );
2326    assert_eq!(
2327        unsafe { ::std::ptr::addr_of!((*ptr).restartCount) as usize - ptr as usize },
2328        12usize,
2329        "Offset of field: TPMS_CLOCK_INFO::restartCount"
2330    );
2331    assert_eq!(
2332        unsafe { ::std::ptr::addr_of!((*ptr).safe) as usize - ptr as usize },
2333        16usize,
2334        "Offset of field: TPMS_CLOCK_INFO::safe"
2335    );
2336}
2337#[repr(C)]
2338#[derive(Debug, Default, Copy, Clone)]
2339pub struct TPMS_TIME_INFO {
2340    pub time: UINT64,
2341    pub clockInfo: TPMS_CLOCK_INFO,
2342}
2343#[test]
2344fn bindgen_test_layout_TPMS_TIME_INFO() {
2345    const UNINIT: ::std::mem::MaybeUninit<TPMS_TIME_INFO> = ::std::mem::MaybeUninit::uninit();
2346    let ptr = UNINIT.as_ptr();
2347    assert_eq!(
2348        ::std::mem::size_of::<TPMS_TIME_INFO>(),
2349        32usize,
2350        "Size of TPMS_TIME_INFO"
2351    );
2352    assert_eq!(
2353        ::std::mem::align_of::<TPMS_TIME_INFO>(),
2354        8usize,
2355        "Alignment of TPMS_TIME_INFO"
2356    );
2357    assert_eq!(
2358        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
2359        0usize,
2360        "Offset of field: TPMS_TIME_INFO::time"
2361    );
2362    assert_eq!(
2363        unsafe { ::std::ptr::addr_of!((*ptr).clockInfo) as usize - ptr as usize },
2364        8usize,
2365        "Offset of field: TPMS_TIME_INFO::clockInfo"
2366    );
2367}
2368#[repr(C)]
2369#[derive(Debug, Default, Copy, Clone)]
2370pub struct TPMS_TIME_ATTEST_INFO {
2371    pub time: TPMS_TIME_INFO,
2372    pub firmwareVersion: UINT64,
2373}
2374#[test]
2375fn bindgen_test_layout_TPMS_TIME_ATTEST_INFO() {
2376    const UNINIT: ::std::mem::MaybeUninit<TPMS_TIME_ATTEST_INFO> =
2377        ::std::mem::MaybeUninit::uninit();
2378    let ptr = UNINIT.as_ptr();
2379    assert_eq!(
2380        ::std::mem::size_of::<TPMS_TIME_ATTEST_INFO>(),
2381        40usize,
2382        "Size of TPMS_TIME_ATTEST_INFO"
2383    );
2384    assert_eq!(
2385        ::std::mem::align_of::<TPMS_TIME_ATTEST_INFO>(),
2386        8usize,
2387        "Alignment of TPMS_TIME_ATTEST_INFO"
2388    );
2389    assert_eq!(
2390        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
2391        0usize,
2392        "Offset of field: TPMS_TIME_ATTEST_INFO::time"
2393    );
2394    assert_eq!(
2395        unsafe { ::std::ptr::addr_of!((*ptr).firmwareVersion) as usize - ptr as usize },
2396        32usize,
2397        "Offset of field: TPMS_TIME_ATTEST_INFO::firmwareVersion"
2398    );
2399}
2400#[repr(C)]
2401#[derive(Debug, Copy, Clone)]
2402pub struct TPMS_CERTIFY_INFO {
2403    pub name: TPM2B_NAME,
2404    pub qualifiedName: TPM2B_NAME,
2405}
2406#[test]
2407fn bindgen_test_layout_TPMS_CERTIFY_INFO() {
2408    const UNINIT: ::std::mem::MaybeUninit<TPMS_CERTIFY_INFO> = ::std::mem::MaybeUninit::uninit();
2409    let ptr = UNINIT.as_ptr();
2410    assert_eq!(
2411        ::std::mem::size_of::<TPMS_CERTIFY_INFO>(),
2412        140usize,
2413        "Size of TPMS_CERTIFY_INFO"
2414    );
2415    assert_eq!(
2416        ::std::mem::align_of::<TPMS_CERTIFY_INFO>(),
2417        2usize,
2418        "Alignment of TPMS_CERTIFY_INFO"
2419    );
2420    assert_eq!(
2421        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
2422        0usize,
2423        "Offset of field: TPMS_CERTIFY_INFO::name"
2424    );
2425    assert_eq!(
2426        unsafe { ::std::ptr::addr_of!((*ptr).qualifiedName) as usize - ptr as usize },
2427        70usize,
2428        "Offset of field: TPMS_CERTIFY_INFO::qualifiedName"
2429    );
2430}
2431impl Default for TPMS_CERTIFY_INFO {
2432    fn default() -> Self {
2433        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2434        unsafe {
2435            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2436            s.assume_init()
2437        }
2438    }
2439}
2440#[repr(C)]
2441#[derive(Debug, Copy, Clone)]
2442pub struct TPMS_QUOTE_INFO {
2443    pub pcrSelect: TPML_PCR_SELECTION,
2444    pub pcrDigest: TPM2B_DIGEST,
2445}
2446#[test]
2447fn bindgen_test_layout_TPMS_QUOTE_INFO() {
2448    const UNINIT: ::std::mem::MaybeUninit<TPMS_QUOTE_INFO> = ::std::mem::MaybeUninit::uninit();
2449    let ptr = UNINIT.as_ptr();
2450    assert_eq!(
2451        ::std::mem::size_of::<TPMS_QUOTE_INFO>(),
2452        200usize,
2453        "Size of TPMS_QUOTE_INFO"
2454    );
2455    assert_eq!(
2456        ::std::mem::align_of::<TPMS_QUOTE_INFO>(),
2457        4usize,
2458        "Alignment of TPMS_QUOTE_INFO"
2459    );
2460    assert_eq!(
2461        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
2462        0usize,
2463        "Offset of field: TPMS_QUOTE_INFO::pcrSelect"
2464    );
2465    assert_eq!(
2466        unsafe { ::std::ptr::addr_of!((*ptr).pcrDigest) as usize - ptr as usize },
2467        132usize,
2468        "Offset of field: TPMS_QUOTE_INFO::pcrDigest"
2469    );
2470}
2471impl Default for TPMS_QUOTE_INFO {
2472    fn default() -> Self {
2473        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2474        unsafe {
2475            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2476            s.assume_init()
2477        }
2478    }
2479}
2480#[repr(C)]
2481#[derive(Debug, Copy, Clone)]
2482pub struct TPMS_COMMAND_AUDIT_INFO {
2483    pub auditCounter: UINT64,
2484    pub digestAlg: TPM2_ALG_ID,
2485    pub auditDigest: TPM2B_DIGEST,
2486    pub commandDigest: TPM2B_DIGEST,
2487}
2488#[test]
2489fn bindgen_test_layout_TPMS_COMMAND_AUDIT_INFO() {
2490    const UNINIT: ::std::mem::MaybeUninit<TPMS_COMMAND_AUDIT_INFO> =
2491        ::std::mem::MaybeUninit::uninit();
2492    let ptr = UNINIT.as_ptr();
2493    assert_eq!(
2494        ::std::mem::size_of::<TPMS_COMMAND_AUDIT_INFO>(),
2495        144usize,
2496        "Size of TPMS_COMMAND_AUDIT_INFO"
2497    );
2498    assert_eq!(
2499        ::std::mem::align_of::<TPMS_COMMAND_AUDIT_INFO>(),
2500        8usize,
2501        "Alignment of TPMS_COMMAND_AUDIT_INFO"
2502    );
2503    assert_eq!(
2504        unsafe { ::std::ptr::addr_of!((*ptr).auditCounter) as usize - ptr as usize },
2505        0usize,
2506        "Offset of field: TPMS_COMMAND_AUDIT_INFO::auditCounter"
2507    );
2508    assert_eq!(
2509        unsafe { ::std::ptr::addr_of!((*ptr).digestAlg) as usize - ptr as usize },
2510        8usize,
2511        "Offset of field: TPMS_COMMAND_AUDIT_INFO::digestAlg"
2512    );
2513    assert_eq!(
2514        unsafe { ::std::ptr::addr_of!((*ptr).auditDigest) as usize - ptr as usize },
2515        10usize,
2516        "Offset of field: TPMS_COMMAND_AUDIT_INFO::auditDigest"
2517    );
2518    assert_eq!(
2519        unsafe { ::std::ptr::addr_of!((*ptr).commandDigest) as usize - ptr as usize },
2520        76usize,
2521        "Offset of field: TPMS_COMMAND_AUDIT_INFO::commandDigest"
2522    );
2523}
2524impl Default for TPMS_COMMAND_AUDIT_INFO {
2525    fn default() -> Self {
2526        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2527        unsafe {
2528            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2529            s.assume_init()
2530        }
2531    }
2532}
2533#[repr(C)]
2534#[derive(Debug, Copy, Clone)]
2535pub struct TPMS_SESSION_AUDIT_INFO {
2536    pub exclusiveSession: TPMI_YES_NO,
2537    pub sessionDigest: TPM2B_DIGEST,
2538}
2539#[test]
2540fn bindgen_test_layout_TPMS_SESSION_AUDIT_INFO() {
2541    const UNINIT: ::std::mem::MaybeUninit<TPMS_SESSION_AUDIT_INFO> =
2542        ::std::mem::MaybeUninit::uninit();
2543    let ptr = UNINIT.as_ptr();
2544    assert_eq!(
2545        ::std::mem::size_of::<TPMS_SESSION_AUDIT_INFO>(),
2546        68usize,
2547        "Size of TPMS_SESSION_AUDIT_INFO"
2548    );
2549    assert_eq!(
2550        ::std::mem::align_of::<TPMS_SESSION_AUDIT_INFO>(),
2551        2usize,
2552        "Alignment of TPMS_SESSION_AUDIT_INFO"
2553    );
2554    assert_eq!(
2555        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveSession) as usize - ptr as usize },
2556        0usize,
2557        "Offset of field: TPMS_SESSION_AUDIT_INFO::exclusiveSession"
2558    );
2559    assert_eq!(
2560        unsafe { ::std::ptr::addr_of!((*ptr).sessionDigest) as usize - ptr as usize },
2561        2usize,
2562        "Offset of field: TPMS_SESSION_AUDIT_INFO::sessionDigest"
2563    );
2564}
2565impl Default for TPMS_SESSION_AUDIT_INFO {
2566    fn default() -> Self {
2567        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2568        unsafe {
2569            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2570            s.assume_init()
2571        }
2572    }
2573}
2574#[repr(C)]
2575#[derive(Debug, Copy, Clone)]
2576pub struct TPMS_CREATION_INFO {
2577    pub objectName: TPM2B_NAME,
2578    pub creationHash: TPM2B_DIGEST,
2579}
2580#[test]
2581fn bindgen_test_layout_TPMS_CREATION_INFO() {
2582    const UNINIT: ::std::mem::MaybeUninit<TPMS_CREATION_INFO> = ::std::mem::MaybeUninit::uninit();
2583    let ptr = UNINIT.as_ptr();
2584    assert_eq!(
2585        ::std::mem::size_of::<TPMS_CREATION_INFO>(),
2586        136usize,
2587        "Size of TPMS_CREATION_INFO"
2588    );
2589    assert_eq!(
2590        ::std::mem::align_of::<TPMS_CREATION_INFO>(),
2591        2usize,
2592        "Alignment of TPMS_CREATION_INFO"
2593    );
2594    assert_eq!(
2595        unsafe { ::std::ptr::addr_of!((*ptr).objectName) as usize - ptr as usize },
2596        0usize,
2597        "Offset of field: TPMS_CREATION_INFO::objectName"
2598    );
2599    assert_eq!(
2600        unsafe { ::std::ptr::addr_of!((*ptr).creationHash) as usize - ptr as usize },
2601        70usize,
2602        "Offset of field: TPMS_CREATION_INFO::creationHash"
2603    );
2604}
2605impl Default for TPMS_CREATION_INFO {
2606    fn default() -> Self {
2607        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2608        unsafe {
2609            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2610            s.assume_init()
2611        }
2612    }
2613}
2614#[repr(C)]
2615#[derive(Debug, Copy, Clone)]
2616pub struct TPMS_NV_CERTIFY_INFO {
2617    pub indexName: TPM2B_NAME,
2618    pub offset: UINT16,
2619    pub nvContents: TPM2B_MAX_NV_BUFFER,
2620}
2621#[test]
2622fn bindgen_test_layout_TPMS_NV_CERTIFY_INFO() {
2623    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_CERTIFY_INFO> = ::std::mem::MaybeUninit::uninit();
2624    let ptr = UNINIT.as_ptr();
2625    assert_eq!(
2626        ::std::mem::size_of::<TPMS_NV_CERTIFY_INFO>(),
2627        2122usize,
2628        "Size of TPMS_NV_CERTIFY_INFO"
2629    );
2630    assert_eq!(
2631        ::std::mem::align_of::<TPMS_NV_CERTIFY_INFO>(),
2632        2usize,
2633        "Alignment of TPMS_NV_CERTIFY_INFO"
2634    );
2635    assert_eq!(
2636        unsafe { ::std::ptr::addr_of!((*ptr).indexName) as usize - ptr as usize },
2637        0usize,
2638        "Offset of field: TPMS_NV_CERTIFY_INFO::indexName"
2639    );
2640    assert_eq!(
2641        unsafe { ::std::ptr::addr_of!((*ptr).offset) as usize - ptr as usize },
2642        70usize,
2643        "Offset of field: TPMS_NV_CERTIFY_INFO::offset"
2644    );
2645    assert_eq!(
2646        unsafe { ::std::ptr::addr_of!((*ptr).nvContents) as usize - ptr as usize },
2647        72usize,
2648        "Offset of field: TPMS_NV_CERTIFY_INFO::nvContents"
2649    );
2650}
2651impl Default for TPMS_NV_CERTIFY_INFO {
2652    fn default() -> Self {
2653        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2654        unsafe {
2655            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2656            s.assume_init()
2657        }
2658    }
2659}
2660#[repr(C)]
2661#[derive(Debug, Copy, Clone)]
2662pub struct TPMS_NV_DIGEST_CERTIFY_INFO {
2663    pub indexName: TPM2B_NAME,
2664    pub nvDigest: TPM2B_DIGEST,
2665}
2666#[test]
2667fn bindgen_test_layout_TPMS_NV_DIGEST_CERTIFY_INFO() {
2668    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_DIGEST_CERTIFY_INFO> =
2669        ::std::mem::MaybeUninit::uninit();
2670    let ptr = UNINIT.as_ptr();
2671    assert_eq!(
2672        ::std::mem::size_of::<TPMS_NV_DIGEST_CERTIFY_INFO>(),
2673        136usize,
2674        "Size of TPMS_NV_DIGEST_CERTIFY_INFO"
2675    );
2676    assert_eq!(
2677        ::std::mem::align_of::<TPMS_NV_DIGEST_CERTIFY_INFO>(),
2678        2usize,
2679        "Alignment of TPMS_NV_DIGEST_CERTIFY_INFO"
2680    );
2681    assert_eq!(
2682        unsafe { ::std::ptr::addr_of!((*ptr).indexName) as usize - ptr as usize },
2683        0usize,
2684        "Offset of field: TPMS_NV_DIGEST_CERTIFY_INFO::indexName"
2685    );
2686    assert_eq!(
2687        unsafe { ::std::ptr::addr_of!((*ptr).nvDigest) as usize - ptr as usize },
2688        70usize,
2689        "Offset of field: TPMS_NV_DIGEST_CERTIFY_INFO::nvDigest"
2690    );
2691}
2692impl Default for TPMS_NV_DIGEST_CERTIFY_INFO {
2693    fn default() -> Self {
2694        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2695        unsafe {
2696            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2697            s.assume_init()
2698        }
2699    }
2700}
2701pub type TPMI_ST_ATTEST = TPM2_ST;
2702#[repr(C)]
2703#[derive(Copy, Clone)]
2704pub union TPMU_ATTEST {
2705    pub certify: TPMS_CERTIFY_INFO,
2706    pub creation: TPMS_CREATION_INFO,
2707    pub quote: TPMS_QUOTE_INFO,
2708    pub commandAudit: TPMS_COMMAND_AUDIT_INFO,
2709    pub sessionAudit: TPMS_SESSION_AUDIT_INFO,
2710    pub time: TPMS_TIME_ATTEST_INFO,
2711    pub nv: TPMS_NV_CERTIFY_INFO,
2712}
2713#[test]
2714fn bindgen_test_layout_TPMU_ATTEST() {
2715    const UNINIT: ::std::mem::MaybeUninit<TPMU_ATTEST> = ::std::mem::MaybeUninit::uninit();
2716    let ptr = UNINIT.as_ptr();
2717    assert_eq!(
2718        ::std::mem::size_of::<TPMU_ATTEST>(),
2719        2128usize,
2720        "Size of TPMU_ATTEST"
2721    );
2722    assert_eq!(
2723        ::std::mem::align_of::<TPMU_ATTEST>(),
2724        8usize,
2725        "Alignment of TPMU_ATTEST"
2726    );
2727    assert_eq!(
2728        unsafe { ::std::ptr::addr_of!((*ptr).certify) as usize - ptr as usize },
2729        0usize,
2730        "Offset of field: TPMU_ATTEST::certify"
2731    );
2732    assert_eq!(
2733        unsafe { ::std::ptr::addr_of!((*ptr).creation) as usize - ptr as usize },
2734        0usize,
2735        "Offset of field: TPMU_ATTEST::creation"
2736    );
2737    assert_eq!(
2738        unsafe { ::std::ptr::addr_of!((*ptr).quote) as usize - ptr as usize },
2739        0usize,
2740        "Offset of field: TPMU_ATTEST::quote"
2741    );
2742    assert_eq!(
2743        unsafe { ::std::ptr::addr_of!((*ptr).commandAudit) as usize - ptr as usize },
2744        0usize,
2745        "Offset of field: TPMU_ATTEST::commandAudit"
2746    );
2747    assert_eq!(
2748        unsafe { ::std::ptr::addr_of!((*ptr).sessionAudit) as usize - ptr as usize },
2749        0usize,
2750        "Offset of field: TPMU_ATTEST::sessionAudit"
2751    );
2752    assert_eq!(
2753        unsafe { ::std::ptr::addr_of!((*ptr).time) as usize - ptr as usize },
2754        0usize,
2755        "Offset of field: TPMU_ATTEST::time"
2756    );
2757    assert_eq!(
2758        unsafe { ::std::ptr::addr_of!((*ptr).nv) as usize - ptr as usize },
2759        0usize,
2760        "Offset of field: TPMU_ATTEST::nv"
2761    );
2762}
2763impl Default for TPMU_ATTEST {
2764    fn default() -> Self {
2765        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2766        unsafe {
2767            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2768            s.assume_init()
2769        }
2770    }
2771}
2772#[repr(C)]
2773#[derive(Copy, Clone)]
2774pub struct TPMS_ATTEST {
2775    pub magic: TPM2_GENERATED,
2776    pub type_: TPMI_ST_ATTEST,
2777    pub qualifiedSigner: TPM2B_NAME,
2778    pub extraData: TPM2B_DATA,
2779    pub clockInfo: TPMS_CLOCK_INFO,
2780    pub firmwareVersion: UINT64,
2781    pub attested: TPMU_ATTEST,
2782}
2783#[test]
2784fn bindgen_test_layout_TPMS_ATTEST() {
2785    const UNINIT: ::std::mem::MaybeUninit<TPMS_ATTEST> = ::std::mem::MaybeUninit::uninit();
2786    let ptr = UNINIT.as_ptr();
2787    assert_eq!(
2788        ::std::mem::size_of::<TPMS_ATTEST>(),
2789        2304usize,
2790        "Size of TPMS_ATTEST"
2791    );
2792    assert_eq!(
2793        ::std::mem::align_of::<TPMS_ATTEST>(),
2794        8usize,
2795        "Alignment of TPMS_ATTEST"
2796    );
2797    assert_eq!(
2798        unsafe { ::std::ptr::addr_of!((*ptr).magic) as usize - ptr as usize },
2799        0usize,
2800        "Offset of field: TPMS_ATTEST::magic"
2801    );
2802    assert_eq!(
2803        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
2804        4usize,
2805        "Offset of field: TPMS_ATTEST::type_"
2806    );
2807    assert_eq!(
2808        unsafe { ::std::ptr::addr_of!((*ptr).qualifiedSigner) as usize - ptr as usize },
2809        6usize,
2810        "Offset of field: TPMS_ATTEST::qualifiedSigner"
2811    );
2812    assert_eq!(
2813        unsafe { ::std::ptr::addr_of!((*ptr).extraData) as usize - ptr as usize },
2814        76usize,
2815        "Offset of field: TPMS_ATTEST::extraData"
2816    );
2817    assert_eq!(
2818        unsafe { ::std::ptr::addr_of!((*ptr).clockInfo) as usize - ptr as usize },
2819        144usize,
2820        "Offset of field: TPMS_ATTEST::clockInfo"
2821    );
2822    assert_eq!(
2823        unsafe { ::std::ptr::addr_of!((*ptr).firmwareVersion) as usize - ptr as usize },
2824        168usize,
2825        "Offset of field: TPMS_ATTEST::firmwareVersion"
2826    );
2827    assert_eq!(
2828        unsafe { ::std::ptr::addr_of!((*ptr).attested) as usize - ptr as usize },
2829        176usize,
2830        "Offset of field: TPMS_ATTEST::attested"
2831    );
2832}
2833impl Default for TPMS_ATTEST {
2834    fn default() -> Self {
2835        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2836        unsafe {
2837            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2838            s.assume_init()
2839        }
2840    }
2841}
2842#[repr(C)]
2843#[derive(Debug, Copy, Clone)]
2844pub struct TPM2B_ATTEST {
2845    pub size: UINT16,
2846    pub attestationData: [BYTE; 2304usize],
2847}
2848#[test]
2849fn bindgen_test_layout_TPM2B_ATTEST() {
2850    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ATTEST> = ::std::mem::MaybeUninit::uninit();
2851    let ptr = UNINIT.as_ptr();
2852    assert_eq!(
2853        ::std::mem::size_of::<TPM2B_ATTEST>(),
2854        2306usize,
2855        "Size of TPM2B_ATTEST"
2856    );
2857    assert_eq!(
2858        ::std::mem::align_of::<TPM2B_ATTEST>(),
2859        2usize,
2860        "Alignment of TPM2B_ATTEST"
2861    );
2862    assert_eq!(
2863        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
2864        0usize,
2865        "Offset of field: TPM2B_ATTEST::size"
2866    );
2867    assert_eq!(
2868        unsafe { ::std::ptr::addr_of!((*ptr).attestationData) as usize - ptr as usize },
2869        2usize,
2870        "Offset of field: TPM2B_ATTEST::attestationData"
2871    );
2872}
2873impl Default for TPM2B_ATTEST {
2874    fn default() -> Self {
2875        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2876        unsafe {
2877            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2878            s.assume_init()
2879        }
2880    }
2881}
2882#[repr(C)]
2883#[derive(Debug, Copy, Clone)]
2884pub struct TPMS_AUTH_COMMAND {
2885    pub sessionHandle: TPMI_SH_AUTH_SESSION,
2886    pub nonce: TPM2B_NONCE,
2887    pub sessionAttributes: TPMA_SESSION,
2888    pub hmac: TPM2B_AUTH,
2889}
2890#[test]
2891fn bindgen_test_layout_TPMS_AUTH_COMMAND() {
2892    const UNINIT: ::std::mem::MaybeUninit<TPMS_AUTH_COMMAND> = ::std::mem::MaybeUninit::uninit();
2893    let ptr = UNINIT.as_ptr();
2894    assert_eq!(
2895        ::std::mem::size_of::<TPMS_AUTH_COMMAND>(),
2896        140usize,
2897        "Size of TPMS_AUTH_COMMAND"
2898    );
2899    assert_eq!(
2900        ::std::mem::align_of::<TPMS_AUTH_COMMAND>(),
2901        4usize,
2902        "Alignment of TPMS_AUTH_COMMAND"
2903    );
2904    assert_eq!(
2905        unsafe { ::std::ptr::addr_of!((*ptr).sessionHandle) as usize - ptr as usize },
2906        0usize,
2907        "Offset of field: TPMS_AUTH_COMMAND::sessionHandle"
2908    );
2909    assert_eq!(
2910        unsafe { ::std::ptr::addr_of!((*ptr).nonce) as usize - ptr as usize },
2911        4usize,
2912        "Offset of field: TPMS_AUTH_COMMAND::nonce"
2913    );
2914    assert_eq!(
2915        unsafe { ::std::ptr::addr_of!((*ptr).sessionAttributes) as usize - ptr as usize },
2916        70usize,
2917        "Offset of field: TPMS_AUTH_COMMAND::sessionAttributes"
2918    );
2919    assert_eq!(
2920        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
2921        72usize,
2922        "Offset of field: TPMS_AUTH_COMMAND::hmac"
2923    );
2924}
2925impl Default for TPMS_AUTH_COMMAND {
2926    fn default() -> Self {
2927        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2928        unsafe {
2929            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2930            s.assume_init()
2931        }
2932    }
2933}
2934#[repr(C)]
2935#[derive(Debug, Copy, Clone)]
2936pub struct TPMS_AUTH_RESPONSE {
2937    pub nonce: TPM2B_NONCE,
2938    pub sessionAttributes: TPMA_SESSION,
2939    pub hmac: TPM2B_AUTH,
2940}
2941#[test]
2942fn bindgen_test_layout_TPMS_AUTH_RESPONSE() {
2943    const UNINIT: ::std::mem::MaybeUninit<TPMS_AUTH_RESPONSE> = ::std::mem::MaybeUninit::uninit();
2944    let ptr = UNINIT.as_ptr();
2945    assert_eq!(
2946        ::std::mem::size_of::<TPMS_AUTH_RESPONSE>(),
2947        134usize,
2948        "Size of TPMS_AUTH_RESPONSE"
2949    );
2950    assert_eq!(
2951        ::std::mem::align_of::<TPMS_AUTH_RESPONSE>(),
2952        2usize,
2953        "Alignment of TPMS_AUTH_RESPONSE"
2954    );
2955    assert_eq!(
2956        unsafe { ::std::ptr::addr_of!((*ptr).nonce) as usize - ptr as usize },
2957        0usize,
2958        "Offset of field: TPMS_AUTH_RESPONSE::nonce"
2959    );
2960    assert_eq!(
2961        unsafe { ::std::ptr::addr_of!((*ptr).sessionAttributes) as usize - ptr as usize },
2962        66usize,
2963        "Offset of field: TPMS_AUTH_RESPONSE::sessionAttributes"
2964    );
2965    assert_eq!(
2966        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
2967        68usize,
2968        "Offset of field: TPMS_AUTH_RESPONSE::hmac"
2969    );
2970}
2971impl Default for TPMS_AUTH_RESPONSE {
2972    fn default() -> Self {
2973        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
2974        unsafe {
2975            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
2976            s.assume_init()
2977        }
2978    }
2979}
2980pub type TPMI_AES_KEY_BITS = TPM2_KEY_BITS;
2981pub type TPMI_SM4_KEY_BITS = TPM2_KEY_BITS;
2982pub type TPMI_CAMELLIA_KEY_BITS = TPM2_KEY_BITS;
2983#[repr(C)]
2984#[derive(Copy, Clone)]
2985pub union TPMU_SYM_KEY_BITS {
2986    pub aes: TPMI_AES_KEY_BITS,
2987    pub sm4: TPMI_SM4_KEY_BITS,
2988    pub camellia: TPMI_CAMELLIA_KEY_BITS,
2989    pub sym: TPM2_KEY_BITS,
2990    pub exclusiveOr: TPMI_ALG_HASH,
2991    pub null: TPMS_EMPTY,
2992}
2993#[test]
2994fn bindgen_test_layout_TPMU_SYM_KEY_BITS() {
2995    const UNINIT: ::std::mem::MaybeUninit<TPMU_SYM_KEY_BITS> = ::std::mem::MaybeUninit::uninit();
2996    let ptr = UNINIT.as_ptr();
2997    assert_eq!(
2998        ::std::mem::size_of::<TPMU_SYM_KEY_BITS>(),
2999        2usize,
3000        "Size of TPMU_SYM_KEY_BITS"
3001    );
3002    assert_eq!(
3003        ::std::mem::align_of::<TPMU_SYM_KEY_BITS>(),
3004        2usize,
3005        "Alignment of TPMU_SYM_KEY_BITS"
3006    );
3007    assert_eq!(
3008        unsafe { ::std::ptr::addr_of!((*ptr).aes) as usize - ptr as usize },
3009        0usize,
3010        "Offset of field: TPMU_SYM_KEY_BITS::aes"
3011    );
3012    assert_eq!(
3013        unsafe { ::std::ptr::addr_of!((*ptr).sm4) as usize - ptr as usize },
3014        0usize,
3015        "Offset of field: TPMU_SYM_KEY_BITS::sm4"
3016    );
3017    assert_eq!(
3018        unsafe { ::std::ptr::addr_of!((*ptr).camellia) as usize - ptr as usize },
3019        0usize,
3020        "Offset of field: TPMU_SYM_KEY_BITS::camellia"
3021    );
3022    assert_eq!(
3023        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3024        0usize,
3025        "Offset of field: TPMU_SYM_KEY_BITS::sym"
3026    );
3027    assert_eq!(
3028        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveOr) as usize - ptr as usize },
3029        0usize,
3030        "Offset of field: TPMU_SYM_KEY_BITS::exclusiveOr"
3031    );
3032    assert_eq!(
3033        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
3034        0usize,
3035        "Offset of field: TPMU_SYM_KEY_BITS::null"
3036    );
3037}
3038impl Default for TPMU_SYM_KEY_BITS {
3039    fn default() -> Self {
3040        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3041        unsafe {
3042            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3043            s.assume_init()
3044        }
3045    }
3046}
3047#[repr(C)]
3048#[derive(Copy, Clone)]
3049pub union TPMU_SYM_MODE {
3050    pub aes: TPMI_ALG_SYM_MODE,
3051    pub sm4: TPMI_ALG_SYM_MODE,
3052    pub camellia: TPMI_ALG_SYM_MODE,
3053    pub sym: TPMI_ALG_SYM_MODE,
3054    pub exclusiveOr: TPMS_EMPTY,
3055    pub null: TPMS_EMPTY,
3056}
3057#[test]
3058fn bindgen_test_layout_TPMU_SYM_MODE() {
3059    const UNINIT: ::std::mem::MaybeUninit<TPMU_SYM_MODE> = ::std::mem::MaybeUninit::uninit();
3060    let ptr = UNINIT.as_ptr();
3061    assert_eq!(
3062        ::std::mem::size_of::<TPMU_SYM_MODE>(),
3063        2usize,
3064        "Size of TPMU_SYM_MODE"
3065    );
3066    assert_eq!(
3067        ::std::mem::align_of::<TPMU_SYM_MODE>(),
3068        2usize,
3069        "Alignment of TPMU_SYM_MODE"
3070    );
3071    assert_eq!(
3072        unsafe { ::std::ptr::addr_of!((*ptr).aes) as usize - ptr as usize },
3073        0usize,
3074        "Offset of field: TPMU_SYM_MODE::aes"
3075    );
3076    assert_eq!(
3077        unsafe { ::std::ptr::addr_of!((*ptr).sm4) as usize - ptr as usize },
3078        0usize,
3079        "Offset of field: TPMU_SYM_MODE::sm4"
3080    );
3081    assert_eq!(
3082        unsafe { ::std::ptr::addr_of!((*ptr).camellia) as usize - ptr as usize },
3083        0usize,
3084        "Offset of field: TPMU_SYM_MODE::camellia"
3085    );
3086    assert_eq!(
3087        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3088        0usize,
3089        "Offset of field: TPMU_SYM_MODE::sym"
3090    );
3091    assert_eq!(
3092        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveOr) as usize - ptr as usize },
3093        0usize,
3094        "Offset of field: TPMU_SYM_MODE::exclusiveOr"
3095    );
3096    assert_eq!(
3097        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
3098        0usize,
3099        "Offset of field: TPMU_SYM_MODE::null"
3100    );
3101}
3102impl Default for TPMU_SYM_MODE {
3103    fn default() -> Self {
3104        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3105        unsafe {
3106            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3107            s.assume_init()
3108        }
3109    }
3110}
3111#[repr(C)]
3112#[derive(Copy, Clone)]
3113pub struct TPMT_SYM_DEF {
3114    pub algorithm: TPMI_ALG_SYM,
3115    pub keyBits: TPMU_SYM_KEY_BITS,
3116    pub mode: TPMU_SYM_MODE,
3117}
3118#[test]
3119fn bindgen_test_layout_TPMT_SYM_DEF() {
3120    const UNINIT: ::std::mem::MaybeUninit<TPMT_SYM_DEF> = ::std::mem::MaybeUninit::uninit();
3121    let ptr = UNINIT.as_ptr();
3122    assert_eq!(
3123        ::std::mem::size_of::<TPMT_SYM_DEF>(),
3124        6usize,
3125        "Size of TPMT_SYM_DEF"
3126    );
3127    assert_eq!(
3128        ::std::mem::align_of::<TPMT_SYM_DEF>(),
3129        2usize,
3130        "Alignment of TPMT_SYM_DEF"
3131    );
3132    assert_eq!(
3133        unsafe { ::std::ptr::addr_of!((*ptr).algorithm) as usize - ptr as usize },
3134        0usize,
3135        "Offset of field: TPMT_SYM_DEF::algorithm"
3136    );
3137    assert_eq!(
3138        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
3139        2usize,
3140        "Offset of field: TPMT_SYM_DEF::keyBits"
3141    );
3142    assert_eq!(
3143        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
3144        4usize,
3145        "Offset of field: TPMT_SYM_DEF::mode"
3146    );
3147}
3148impl Default for TPMT_SYM_DEF {
3149    fn default() -> Self {
3150        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3151        unsafe {
3152            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3153            s.assume_init()
3154        }
3155    }
3156}
3157#[repr(C)]
3158#[derive(Copy, Clone)]
3159pub struct TPMT_SYM_DEF_OBJECT {
3160    pub algorithm: TPMI_ALG_SYM_OBJECT,
3161    pub keyBits: TPMU_SYM_KEY_BITS,
3162    pub mode: TPMU_SYM_MODE,
3163}
3164#[test]
3165fn bindgen_test_layout_TPMT_SYM_DEF_OBJECT() {
3166    const UNINIT: ::std::mem::MaybeUninit<TPMT_SYM_DEF_OBJECT> = ::std::mem::MaybeUninit::uninit();
3167    let ptr = UNINIT.as_ptr();
3168    assert_eq!(
3169        ::std::mem::size_of::<TPMT_SYM_DEF_OBJECT>(),
3170        6usize,
3171        "Size of TPMT_SYM_DEF_OBJECT"
3172    );
3173    assert_eq!(
3174        ::std::mem::align_of::<TPMT_SYM_DEF_OBJECT>(),
3175        2usize,
3176        "Alignment of TPMT_SYM_DEF_OBJECT"
3177    );
3178    assert_eq!(
3179        unsafe { ::std::ptr::addr_of!((*ptr).algorithm) as usize - ptr as usize },
3180        0usize,
3181        "Offset of field: TPMT_SYM_DEF_OBJECT::algorithm"
3182    );
3183    assert_eq!(
3184        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
3185        2usize,
3186        "Offset of field: TPMT_SYM_DEF_OBJECT::keyBits"
3187    );
3188    assert_eq!(
3189        unsafe { ::std::ptr::addr_of!((*ptr).mode) as usize - ptr as usize },
3190        4usize,
3191        "Offset of field: TPMT_SYM_DEF_OBJECT::mode"
3192    );
3193}
3194impl Default for TPMT_SYM_DEF_OBJECT {
3195    fn default() -> Self {
3196        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3197        unsafe {
3198            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3199            s.assume_init()
3200        }
3201    }
3202}
3203#[repr(C)]
3204#[derive(Debug, Default, Copy, Clone)]
3205pub struct TPM2B_SYM_KEY {
3206    pub size: UINT16,
3207    pub buffer: [BYTE; 32usize],
3208}
3209#[test]
3210fn bindgen_test_layout_TPM2B_SYM_KEY() {
3211    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SYM_KEY> = ::std::mem::MaybeUninit::uninit();
3212    let ptr = UNINIT.as_ptr();
3213    assert_eq!(
3214        ::std::mem::size_of::<TPM2B_SYM_KEY>(),
3215        34usize,
3216        "Size of TPM2B_SYM_KEY"
3217    );
3218    assert_eq!(
3219        ::std::mem::align_of::<TPM2B_SYM_KEY>(),
3220        2usize,
3221        "Alignment of TPM2B_SYM_KEY"
3222    );
3223    assert_eq!(
3224        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3225        0usize,
3226        "Offset of field: TPM2B_SYM_KEY::size"
3227    );
3228    assert_eq!(
3229        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3230        2usize,
3231        "Offset of field: TPM2B_SYM_KEY::buffer"
3232    );
3233}
3234#[repr(C)]
3235#[derive(Copy, Clone)]
3236pub struct TPMS_SYMCIPHER_PARMS {
3237    pub sym: TPMT_SYM_DEF_OBJECT,
3238}
3239#[test]
3240fn bindgen_test_layout_TPMS_SYMCIPHER_PARMS() {
3241    const UNINIT: ::std::mem::MaybeUninit<TPMS_SYMCIPHER_PARMS> = ::std::mem::MaybeUninit::uninit();
3242    let ptr = UNINIT.as_ptr();
3243    assert_eq!(
3244        ::std::mem::size_of::<TPMS_SYMCIPHER_PARMS>(),
3245        6usize,
3246        "Size of TPMS_SYMCIPHER_PARMS"
3247    );
3248    assert_eq!(
3249        ::std::mem::align_of::<TPMS_SYMCIPHER_PARMS>(),
3250        2usize,
3251        "Alignment of TPMS_SYMCIPHER_PARMS"
3252    );
3253    assert_eq!(
3254        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
3255        0usize,
3256        "Offset of field: TPMS_SYMCIPHER_PARMS::sym"
3257    );
3258}
3259impl Default for TPMS_SYMCIPHER_PARMS {
3260    fn default() -> Self {
3261        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3262        unsafe {
3263            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3264            s.assume_init()
3265        }
3266    }
3267}
3268#[repr(C)]
3269#[derive(Debug, Default, Copy, Clone)]
3270pub struct TPM2B_LABEL {
3271    pub size: UINT16,
3272    pub buffer: [BYTE; 32usize],
3273}
3274#[test]
3275fn bindgen_test_layout_TPM2B_LABEL() {
3276    const UNINIT: ::std::mem::MaybeUninit<TPM2B_LABEL> = ::std::mem::MaybeUninit::uninit();
3277    let ptr = UNINIT.as_ptr();
3278    assert_eq!(
3279        ::std::mem::size_of::<TPM2B_LABEL>(),
3280        34usize,
3281        "Size of TPM2B_LABEL"
3282    );
3283    assert_eq!(
3284        ::std::mem::align_of::<TPM2B_LABEL>(),
3285        2usize,
3286        "Alignment of TPM2B_LABEL"
3287    );
3288    assert_eq!(
3289        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3290        0usize,
3291        "Offset of field: TPM2B_LABEL::size"
3292    );
3293    assert_eq!(
3294        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3295        2usize,
3296        "Offset of field: TPM2B_LABEL::buffer"
3297    );
3298}
3299#[repr(C)]
3300#[derive(Debug, Default, Copy, Clone)]
3301pub struct TPMS_DERIVE {
3302    pub label: TPM2B_LABEL,
3303    pub context: TPM2B_LABEL,
3304}
3305#[test]
3306fn bindgen_test_layout_TPMS_DERIVE() {
3307    const UNINIT: ::std::mem::MaybeUninit<TPMS_DERIVE> = ::std::mem::MaybeUninit::uninit();
3308    let ptr = UNINIT.as_ptr();
3309    assert_eq!(
3310        ::std::mem::size_of::<TPMS_DERIVE>(),
3311        68usize,
3312        "Size of TPMS_DERIVE"
3313    );
3314    assert_eq!(
3315        ::std::mem::align_of::<TPMS_DERIVE>(),
3316        2usize,
3317        "Alignment of TPMS_DERIVE"
3318    );
3319    assert_eq!(
3320        unsafe { ::std::ptr::addr_of!((*ptr).label) as usize - ptr as usize },
3321        0usize,
3322        "Offset of field: TPMS_DERIVE::label"
3323    );
3324    assert_eq!(
3325        unsafe { ::std::ptr::addr_of!((*ptr).context) as usize - ptr as usize },
3326        34usize,
3327        "Offset of field: TPMS_DERIVE::context"
3328    );
3329}
3330#[repr(C)]
3331#[derive(Debug, Copy, Clone)]
3332pub struct TPM2B_DERIVE {
3333    pub size: UINT16,
3334    pub buffer: [BYTE; 68usize],
3335}
3336#[test]
3337fn bindgen_test_layout_TPM2B_DERIVE() {
3338    const UNINIT: ::std::mem::MaybeUninit<TPM2B_DERIVE> = ::std::mem::MaybeUninit::uninit();
3339    let ptr = UNINIT.as_ptr();
3340    assert_eq!(
3341        ::std::mem::size_of::<TPM2B_DERIVE>(),
3342        70usize,
3343        "Size of TPM2B_DERIVE"
3344    );
3345    assert_eq!(
3346        ::std::mem::align_of::<TPM2B_DERIVE>(),
3347        2usize,
3348        "Alignment of TPM2B_DERIVE"
3349    );
3350    assert_eq!(
3351        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3352        0usize,
3353        "Offset of field: TPM2B_DERIVE::size"
3354    );
3355    assert_eq!(
3356        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3357        2usize,
3358        "Offset of field: TPM2B_DERIVE::buffer"
3359    );
3360}
3361impl Default for TPM2B_DERIVE {
3362    fn default() -> Self {
3363        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3364        unsafe {
3365            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3366            s.assume_init()
3367        }
3368    }
3369}
3370#[repr(C)]
3371#[derive(Copy, Clone)]
3372pub union TPMU_SENSITIVE_CREATE {
3373    pub create: [BYTE; 256usize],
3374    pub derive: TPMS_DERIVE,
3375}
3376#[test]
3377fn bindgen_test_layout_TPMU_SENSITIVE_CREATE() {
3378    const UNINIT: ::std::mem::MaybeUninit<TPMU_SENSITIVE_CREATE> =
3379        ::std::mem::MaybeUninit::uninit();
3380    let ptr = UNINIT.as_ptr();
3381    assert_eq!(
3382        ::std::mem::size_of::<TPMU_SENSITIVE_CREATE>(),
3383        256usize,
3384        "Size of TPMU_SENSITIVE_CREATE"
3385    );
3386    assert_eq!(
3387        ::std::mem::align_of::<TPMU_SENSITIVE_CREATE>(),
3388        2usize,
3389        "Alignment of TPMU_SENSITIVE_CREATE"
3390    );
3391    assert_eq!(
3392        unsafe { ::std::ptr::addr_of!((*ptr).create) as usize - ptr as usize },
3393        0usize,
3394        "Offset of field: TPMU_SENSITIVE_CREATE::create"
3395    );
3396    assert_eq!(
3397        unsafe { ::std::ptr::addr_of!((*ptr).derive) as usize - ptr as usize },
3398        0usize,
3399        "Offset of field: TPMU_SENSITIVE_CREATE::derive"
3400    );
3401}
3402impl Default for TPMU_SENSITIVE_CREATE {
3403    fn default() -> Self {
3404        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3405        unsafe {
3406            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3407            s.assume_init()
3408        }
3409    }
3410}
3411#[repr(C)]
3412#[derive(Debug, Copy, Clone)]
3413pub struct TPM2B_SENSITIVE_DATA {
3414    pub size: UINT16,
3415    pub buffer: [BYTE; 256usize],
3416}
3417#[test]
3418fn bindgen_test_layout_TPM2B_SENSITIVE_DATA() {
3419    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE_DATA> = ::std::mem::MaybeUninit::uninit();
3420    let ptr = UNINIT.as_ptr();
3421    assert_eq!(
3422        ::std::mem::size_of::<TPM2B_SENSITIVE_DATA>(),
3423        258usize,
3424        "Size of TPM2B_SENSITIVE_DATA"
3425    );
3426    assert_eq!(
3427        ::std::mem::align_of::<TPM2B_SENSITIVE_DATA>(),
3428        2usize,
3429        "Alignment of TPM2B_SENSITIVE_DATA"
3430    );
3431    assert_eq!(
3432        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3433        0usize,
3434        "Offset of field: TPM2B_SENSITIVE_DATA::size"
3435    );
3436    assert_eq!(
3437        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
3438        2usize,
3439        "Offset of field: TPM2B_SENSITIVE_DATA::buffer"
3440    );
3441}
3442impl Default for TPM2B_SENSITIVE_DATA {
3443    fn default() -> Self {
3444        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3445        unsafe {
3446            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3447            s.assume_init()
3448        }
3449    }
3450}
3451#[repr(C)]
3452#[derive(Debug, Copy, Clone)]
3453pub struct TPMS_SENSITIVE_CREATE {
3454    pub userAuth: TPM2B_AUTH,
3455    pub data: TPM2B_SENSITIVE_DATA,
3456}
3457#[test]
3458fn bindgen_test_layout_TPMS_SENSITIVE_CREATE() {
3459    const UNINIT: ::std::mem::MaybeUninit<TPMS_SENSITIVE_CREATE> =
3460        ::std::mem::MaybeUninit::uninit();
3461    let ptr = UNINIT.as_ptr();
3462    assert_eq!(
3463        ::std::mem::size_of::<TPMS_SENSITIVE_CREATE>(),
3464        324usize,
3465        "Size of TPMS_SENSITIVE_CREATE"
3466    );
3467    assert_eq!(
3468        ::std::mem::align_of::<TPMS_SENSITIVE_CREATE>(),
3469        2usize,
3470        "Alignment of TPMS_SENSITIVE_CREATE"
3471    );
3472    assert_eq!(
3473        unsafe { ::std::ptr::addr_of!((*ptr).userAuth) as usize - ptr as usize },
3474        0usize,
3475        "Offset of field: TPMS_SENSITIVE_CREATE::userAuth"
3476    );
3477    assert_eq!(
3478        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
3479        66usize,
3480        "Offset of field: TPMS_SENSITIVE_CREATE::data"
3481    );
3482}
3483impl Default for TPMS_SENSITIVE_CREATE {
3484    fn default() -> Self {
3485        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3486        unsafe {
3487            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3488            s.assume_init()
3489        }
3490    }
3491}
3492#[repr(C)]
3493#[derive(Debug, Copy, Clone)]
3494pub struct TPM2B_SENSITIVE_CREATE {
3495    pub size: UINT16,
3496    pub sensitive: TPMS_SENSITIVE_CREATE,
3497}
3498#[test]
3499fn bindgen_test_layout_TPM2B_SENSITIVE_CREATE() {
3500    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE_CREATE> =
3501        ::std::mem::MaybeUninit::uninit();
3502    let ptr = UNINIT.as_ptr();
3503    assert_eq!(
3504        ::std::mem::size_of::<TPM2B_SENSITIVE_CREATE>(),
3505        326usize,
3506        "Size of TPM2B_SENSITIVE_CREATE"
3507    );
3508    assert_eq!(
3509        ::std::mem::align_of::<TPM2B_SENSITIVE_CREATE>(),
3510        2usize,
3511        "Alignment of TPM2B_SENSITIVE_CREATE"
3512    );
3513    assert_eq!(
3514        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
3515        0usize,
3516        "Offset of field: TPM2B_SENSITIVE_CREATE::size"
3517    );
3518    assert_eq!(
3519        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
3520        2usize,
3521        "Offset of field: TPM2B_SENSITIVE_CREATE::sensitive"
3522    );
3523}
3524impl Default for TPM2B_SENSITIVE_CREATE {
3525    fn default() -> Self {
3526        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3527        unsafe {
3528            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3529            s.assume_init()
3530        }
3531    }
3532}
3533#[repr(C)]
3534#[derive(Debug, Default, Copy, Clone)]
3535pub struct TPMS_SCHEME_HASH {
3536    pub hashAlg: TPMI_ALG_HASH,
3537}
3538#[test]
3539fn bindgen_test_layout_TPMS_SCHEME_HASH() {
3540    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_HASH> = ::std::mem::MaybeUninit::uninit();
3541    let ptr = UNINIT.as_ptr();
3542    assert_eq!(
3543        ::std::mem::size_of::<TPMS_SCHEME_HASH>(),
3544        2usize,
3545        "Size of TPMS_SCHEME_HASH"
3546    );
3547    assert_eq!(
3548        ::std::mem::align_of::<TPMS_SCHEME_HASH>(),
3549        2usize,
3550        "Alignment of TPMS_SCHEME_HASH"
3551    );
3552    assert_eq!(
3553        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
3554        0usize,
3555        "Offset of field: TPMS_SCHEME_HASH::hashAlg"
3556    );
3557}
3558#[repr(C)]
3559#[derive(Debug, Default, Copy, Clone)]
3560pub struct TPMS_SCHEME_ECDAA {
3561    pub hashAlg: TPMI_ALG_HASH,
3562    pub count: UINT16,
3563}
3564#[test]
3565fn bindgen_test_layout_TPMS_SCHEME_ECDAA() {
3566    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_ECDAA> = ::std::mem::MaybeUninit::uninit();
3567    let ptr = UNINIT.as_ptr();
3568    assert_eq!(
3569        ::std::mem::size_of::<TPMS_SCHEME_ECDAA>(),
3570        4usize,
3571        "Size of TPMS_SCHEME_ECDAA"
3572    );
3573    assert_eq!(
3574        ::std::mem::align_of::<TPMS_SCHEME_ECDAA>(),
3575        2usize,
3576        "Alignment of TPMS_SCHEME_ECDAA"
3577    );
3578    assert_eq!(
3579        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
3580        0usize,
3581        "Offset of field: TPMS_SCHEME_ECDAA::hashAlg"
3582    );
3583    assert_eq!(
3584        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
3585        2usize,
3586        "Offset of field: TPMS_SCHEME_ECDAA::count"
3587    );
3588}
3589pub type TPMI_ALG_KEYEDHASH_SCHEME = TPM2_ALG_ID;
3590pub type TPMS_SCHEME_HMAC = TPMS_SCHEME_HASH;
3591#[repr(C)]
3592#[derive(Debug, Default, Copy, Clone)]
3593pub struct TPMS_SCHEME_XOR {
3594    pub hashAlg: TPMI_ALG_HASH,
3595    pub kdf: TPMI_ALG_KDF,
3596}
3597#[test]
3598fn bindgen_test_layout_TPMS_SCHEME_XOR() {
3599    const UNINIT: ::std::mem::MaybeUninit<TPMS_SCHEME_XOR> = ::std::mem::MaybeUninit::uninit();
3600    let ptr = UNINIT.as_ptr();
3601    assert_eq!(
3602        ::std::mem::size_of::<TPMS_SCHEME_XOR>(),
3603        4usize,
3604        "Size of TPMS_SCHEME_XOR"
3605    );
3606    assert_eq!(
3607        ::std::mem::align_of::<TPMS_SCHEME_XOR>(),
3608        2usize,
3609        "Alignment of TPMS_SCHEME_XOR"
3610    );
3611    assert_eq!(
3612        unsafe { ::std::ptr::addr_of!((*ptr).hashAlg) as usize - ptr as usize },
3613        0usize,
3614        "Offset of field: TPMS_SCHEME_XOR::hashAlg"
3615    );
3616    assert_eq!(
3617        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
3618        2usize,
3619        "Offset of field: TPMS_SCHEME_XOR::kdf"
3620    );
3621}
3622#[repr(C)]
3623#[derive(Copy, Clone)]
3624pub union TPMU_SCHEME_KEYEDHASH {
3625    pub hmac: TPMS_SCHEME_HMAC,
3626    pub exclusiveOr: TPMS_SCHEME_XOR,
3627    pub null: TPMS_EMPTY,
3628}
3629#[test]
3630fn bindgen_test_layout_TPMU_SCHEME_KEYEDHASH() {
3631    const UNINIT: ::std::mem::MaybeUninit<TPMU_SCHEME_KEYEDHASH> =
3632        ::std::mem::MaybeUninit::uninit();
3633    let ptr = UNINIT.as_ptr();
3634    assert_eq!(
3635        ::std::mem::size_of::<TPMU_SCHEME_KEYEDHASH>(),
3636        4usize,
3637        "Size of TPMU_SCHEME_KEYEDHASH"
3638    );
3639    assert_eq!(
3640        ::std::mem::align_of::<TPMU_SCHEME_KEYEDHASH>(),
3641        2usize,
3642        "Alignment of TPMU_SCHEME_KEYEDHASH"
3643    );
3644    assert_eq!(
3645        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
3646        0usize,
3647        "Offset of field: TPMU_SCHEME_KEYEDHASH::hmac"
3648    );
3649    assert_eq!(
3650        unsafe { ::std::ptr::addr_of!((*ptr).exclusiveOr) as usize - ptr as usize },
3651        0usize,
3652        "Offset of field: TPMU_SCHEME_KEYEDHASH::exclusiveOr"
3653    );
3654    assert_eq!(
3655        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
3656        0usize,
3657        "Offset of field: TPMU_SCHEME_KEYEDHASH::null"
3658    );
3659}
3660impl Default for TPMU_SCHEME_KEYEDHASH {
3661    fn default() -> Self {
3662        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3663        unsafe {
3664            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3665            s.assume_init()
3666        }
3667    }
3668}
3669#[repr(C)]
3670#[derive(Copy, Clone)]
3671pub struct TPMT_KEYEDHASH_SCHEME {
3672    pub scheme: TPMI_ALG_KEYEDHASH_SCHEME,
3673    pub details: TPMU_SCHEME_KEYEDHASH,
3674}
3675#[test]
3676fn bindgen_test_layout_TPMT_KEYEDHASH_SCHEME() {
3677    const UNINIT: ::std::mem::MaybeUninit<TPMT_KEYEDHASH_SCHEME> =
3678        ::std::mem::MaybeUninit::uninit();
3679    let ptr = UNINIT.as_ptr();
3680    assert_eq!(
3681        ::std::mem::size_of::<TPMT_KEYEDHASH_SCHEME>(),
3682        6usize,
3683        "Size of TPMT_KEYEDHASH_SCHEME"
3684    );
3685    assert_eq!(
3686        ::std::mem::align_of::<TPMT_KEYEDHASH_SCHEME>(),
3687        2usize,
3688        "Alignment of TPMT_KEYEDHASH_SCHEME"
3689    );
3690    assert_eq!(
3691        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
3692        0usize,
3693        "Offset of field: TPMT_KEYEDHASH_SCHEME::scheme"
3694    );
3695    assert_eq!(
3696        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
3697        2usize,
3698        "Offset of field: TPMT_KEYEDHASH_SCHEME::details"
3699    );
3700}
3701impl Default for TPMT_KEYEDHASH_SCHEME {
3702    fn default() -> Self {
3703        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3704        unsafe {
3705            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3706            s.assume_init()
3707        }
3708    }
3709}
3710pub type TPMS_SIG_SCHEME_RSASSA = TPMS_SCHEME_HASH;
3711pub type TPMS_SIG_SCHEME_RSAPSS = TPMS_SCHEME_HASH;
3712pub type TPMS_SIG_SCHEME_ECDSA = TPMS_SCHEME_HASH;
3713pub type TPMS_SIG_SCHEME_SM2 = TPMS_SCHEME_HASH;
3714pub type TPMS_SIG_SCHEME_ECSCHNORR = TPMS_SCHEME_HASH;
3715pub type TPMS_SIG_SCHEME_ECDAA = TPMS_SCHEME_ECDAA;
3716#[repr(C)]
3717#[derive(Copy, Clone)]
3718pub union TPMU_SIG_SCHEME {
3719    pub rsassa: TPMS_SIG_SCHEME_RSASSA,
3720    pub rsapss: TPMS_SIG_SCHEME_RSAPSS,
3721    pub ecdsa: TPMS_SIG_SCHEME_ECDSA,
3722    pub ecdaa: TPMS_SIG_SCHEME_ECDAA,
3723    pub sm2: TPMS_SIG_SCHEME_SM2,
3724    pub ecschnorr: TPMS_SIG_SCHEME_ECSCHNORR,
3725    pub hmac: TPMS_SCHEME_HMAC,
3726    pub any: TPMS_SCHEME_HASH,
3727    pub null: TPMS_EMPTY,
3728}
3729#[test]
3730fn bindgen_test_layout_TPMU_SIG_SCHEME() {
3731    const UNINIT: ::std::mem::MaybeUninit<TPMU_SIG_SCHEME> = ::std::mem::MaybeUninit::uninit();
3732    let ptr = UNINIT.as_ptr();
3733    assert_eq!(
3734        ::std::mem::size_of::<TPMU_SIG_SCHEME>(),
3735        4usize,
3736        "Size of TPMU_SIG_SCHEME"
3737    );
3738    assert_eq!(
3739        ::std::mem::align_of::<TPMU_SIG_SCHEME>(),
3740        2usize,
3741        "Alignment of TPMU_SIG_SCHEME"
3742    );
3743    assert_eq!(
3744        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
3745        0usize,
3746        "Offset of field: TPMU_SIG_SCHEME::rsassa"
3747    );
3748    assert_eq!(
3749        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
3750        0usize,
3751        "Offset of field: TPMU_SIG_SCHEME::rsapss"
3752    );
3753    assert_eq!(
3754        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
3755        0usize,
3756        "Offset of field: TPMU_SIG_SCHEME::ecdsa"
3757    );
3758    assert_eq!(
3759        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
3760        0usize,
3761        "Offset of field: TPMU_SIG_SCHEME::ecdaa"
3762    );
3763    assert_eq!(
3764        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
3765        0usize,
3766        "Offset of field: TPMU_SIG_SCHEME::sm2"
3767    );
3768    assert_eq!(
3769        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
3770        0usize,
3771        "Offset of field: TPMU_SIG_SCHEME::ecschnorr"
3772    );
3773    assert_eq!(
3774        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
3775        0usize,
3776        "Offset of field: TPMU_SIG_SCHEME::hmac"
3777    );
3778    assert_eq!(
3779        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
3780        0usize,
3781        "Offset of field: TPMU_SIG_SCHEME::any"
3782    );
3783    assert_eq!(
3784        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
3785        0usize,
3786        "Offset of field: TPMU_SIG_SCHEME::null"
3787    );
3788}
3789impl Default for TPMU_SIG_SCHEME {
3790    fn default() -> Self {
3791        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3792        unsafe {
3793            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3794            s.assume_init()
3795        }
3796    }
3797}
3798#[repr(C)]
3799#[derive(Copy, Clone)]
3800pub struct TPMT_SIG_SCHEME {
3801    pub scheme: TPMI_ALG_SIG_SCHEME,
3802    pub details: TPMU_SIG_SCHEME,
3803}
3804#[test]
3805fn bindgen_test_layout_TPMT_SIG_SCHEME() {
3806    const UNINIT: ::std::mem::MaybeUninit<TPMT_SIG_SCHEME> = ::std::mem::MaybeUninit::uninit();
3807    let ptr = UNINIT.as_ptr();
3808    assert_eq!(
3809        ::std::mem::size_of::<TPMT_SIG_SCHEME>(),
3810        6usize,
3811        "Size of TPMT_SIG_SCHEME"
3812    );
3813    assert_eq!(
3814        ::std::mem::align_of::<TPMT_SIG_SCHEME>(),
3815        2usize,
3816        "Alignment of TPMT_SIG_SCHEME"
3817    );
3818    assert_eq!(
3819        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
3820        0usize,
3821        "Offset of field: TPMT_SIG_SCHEME::scheme"
3822    );
3823    assert_eq!(
3824        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
3825        2usize,
3826        "Offset of field: TPMT_SIG_SCHEME::details"
3827    );
3828}
3829impl Default for TPMT_SIG_SCHEME {
3830    fn default() -> Self {
3831        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3832        unsafe {
3833            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3834            s.assume_init()
3835        }
3836    }
3837}
3838pub type TPMS_ENC_SCHEME_OAEP = TPMS_SCHEME_HASH;
3839pub type TPMS_ENC_SCHEME_RSAES = TPMS_EMPTY;
3840pub type TPMS_KEY_SCHEME_ECDH = TPMS_SCHEME_HASH;
3841pub type TPMS_KEY_SCHEME_ECMQV = TPMS_SCHEME_HASH;
3842pub type TPMS_SCHEME_MGF1 = TPMS_SCHEME_HASH;
3843pub type TPMS_SCHEME_KDF1_SP800_56A = TPMS_SCHEME_HASH;
3844pub type TPMS_SCHEME_KDF2 = TPMS_SCHEME_HASH;
3845pub type TPMS_SCHEME_KDF1_SP800_108 = TPMS_SCHEME_HASH;
3846#[repr(C)]
3847#[derive(Copy, Clone)]
3848pub union TPMU_KDF_SCHEME {
3849    pub mgf1: TPMS_SCHEME_MGF1,
3850    pub kdf1_sp800_56a: TPMS_SCHEME_KDF1_SP800_56A,
3851    pub kdf2: TPMS_SCHEME_KDF2,
3852    pub kdf1_sp800_108: TPMS_SCHEME_KDF1_SP800_108,
3853    pub null: TPMS_EMPTY,
3854}
3855#[test]
3856fn bindgen_test_layout_TPMU_KDF_SCHEME() {
3857    const UNINIT: ::std::mem::MaybeUninit<TPMU_KDF_SCHEME> = ::std::mem::MaybeUninit::uninit();
3858    let ptr = UNINIT.as_ptr();
3859    assert_eq!(
3860        ::std::mem::size_of::<TPMU_KDF_SCHEME>(),
3861        2usize,
3862        "Size of TPMU_KDF_SCHEME"
3863    );
3864    assert_eq!(
3865        ::std::mem::align_of::<TPMU_KDF_SCHEME>(),
3866        2usize,
3867        "Alignment of TPMU_KDF_SCHEME"
3868    );
3869    assert_eq!(
3870        unsafe { ::std::ptr::addr_of!((*ptr).mgf1) as usize - ptr as usize },
3871        0usize,
3872        "Offset of field: TPMU_KDF_SCHEME::mgf1"
3873    );
3874    assert_eq!(
3875        unsafe { ::std::ptr::addr_of!((*ptr).kdf1_sp800_56a) as usize - ptr as usize },
3876        0usize,
3877        "Offset of field: TPMU_KDF_SCHEME::kdf1_sp800_56a"
3878    );
3879    assert_eq!(
3880        unsafe { ::std::ptr::addr_of!((*ptr).kdf2) as usize - ptr as usize },
3881        0usize,
3882        "Offset of field: TPMU_KDF_SCHEME::kdf2"
3883    );
3884    assert_eq!(
3885        unsafe { ::std::ptr::addr_of!((*ptr).kdf1_sp800_108) as usize - ptr as usize },
3886        0usize,
3887        "Offset of field: TPMU_KDF_SCHEME::kdf1_sp800_108"
3888    );
3889    assert_eq!(
3890        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
3891        0usize,
3892        "Offset of field: TPMU_KDF_SCHEME::null"
3893    );
3894}
3895impl Default for TPMU_KDF_SCHEME {
3896    fn default() -> Self {
3897        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3898        unsafe {
3899            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3900            s.assume_init()
3901        }
3902    }
3903}
3904#[repr(C)]
3905#[derive(Copy, Clone)]
3906pub struct TPMT_KDF_SCHEME {
3907    pub scheme: TPMI_ALG_KDF,
3908    pub details: TPMU_KDF_SCHEME,
3909}
3910#[test]
3911fn bindgen_test_layout_TPMT_KDF_SCHEME() {
3912    const UNINIT: ::std::mem::MaybeUninit<TPMT_KDF_SCHEME> = ::std::mem::MaybeUninit::uninit();
3913    let ptr = UNINIT.as_ptr();
3914    assert_eq!(
3915        ::std::mem::size_of::<TPMT_KDF_SCHEME>(),
3916        4usize,
3917        "Size of TPMT_KDF_SCHEME"
3918    );
3919    assert_eq!(
3920        ::std::mem::align_of::<TPMT_KDF_SCHEME>(),
3921        2usize,
3922        "Alignment of TPMT_KDF_SCHEME"
3923    );
3924    assert_eq!(
3925        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
3926        0usize,
3927        "Offset of field: TPMT_KDF_SCHEME::scheme"
3928    );
3929    assert_eq!(
3930        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
3931        2usize,
3932        "Offset of field: TPMT_KDF_SCHEME::details"
3933    );
3934}
3935impl Default for TPMT_KDF_SCHEME {
3936    fn default() -> Self {
3937        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
3938        unsafe {
3939            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
3940            s.assume_init()
3941        }
3942    }
3943}
3944pub type TPMI_ALG_ASYM_SCHEME = TPM2_ALG_ID;
3945#[repr(C)]
3946#[derive(Copy, Clone)]
3947pub union TPMU_ASYM_SCHEME {
3948    pub ecdh: TPMS_KEY_SCHEME_ECDH,
3949    pub ecmqv: TPMS_KEY_SCHEME_ECMQV,
3950    pub rsassa: TPMS_SIG_SCHEME_RSASSA,
3951    pub rsapss: TPMS_SIG_SCHEME_RSAPSS,
3952    pub ecdsa: TPMS_SIG_SCHEME_ECDSA,
3953    pub ecdaa: TPMS_SIG_SCHEME_ECDAA,
3954    pub sm2: TPMS_SIG_SCHEME_SM2,
3955    pub ecschnorr: TPMS_SIG_SCHEME_ECSCHNORR,
3956    pub rsaes: TPMS_ENC_SCHEME_RSAES,
3957    pub oaep: TPMS_ENC_SCHEME_OAEP,
3958    pub anySig: TPMS_SCHEME_HASH,
3959    pub null: TPMS_EMPTY,
3960}
3961#[test]
3962fn bindgen_test_layout_TPMU_ASYM_SCHEME() {
3963    const UNINIT: ::std::mem::MaybeUninit<TPMU_ASYM_SCHEME> = ::std::mem::MaybeUninit::uninit();
3964    let ptr = UNINIT.as_ptr();
3965    assert_eq!(
3966        ::std::mem::size_of::<TPMU_ASYM_SCHEME>(),
3967        4usize,
3968        "Size of TPMU_ASYM_SCHEME"
3969    );
3970    assert_eq!(
3971        ::std::mem::align_of::<TPMU_ASYM_SCHEME>(),
3972        2usize,
3973        "Alignment of TPMU_ASYM_SCHEME"
3974    );
3975    assert_eq!(
3976        unsafe { ::std::ptr::addr_of!((*ptr).ecdh) as usize - ptr as usize },
3977        0usize,
3978        "Offset of field: TPMU_ASYM_SCHEME::ecdh"
3979    );
3980    assert_eq!(
3981        unsafe { ::std::ptr::addr_of!((*ptr).ecmqv) as usize - ptr as usize },
3982        0usize,
3983        "Offset of field: TPMU_ASYM_SCHEME::ecmqv"
3984    );
3985    assert_eq!(
3986        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
3987        0usize,
3988        "Offset of field: TPMU_ASYM_SCHEME::rsassa"
3989    );
3990    assert_eq!(
3991        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
3992        0usize,
3993        "Offset of field: TPMU_ASYM_SCHEME::rsapss"
3994    );
3995    assert_eq!(
3996        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
3997        0usize,
3998        "Offset of field: TPMU_ASYM_SCHEME::ecdsa"
3999    );
4000    assert_eq!(
4001        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
4002        0usize,
4003        "Offset of field: TPMU_ASYM_SCHEME::ecdaa"
4004    );
4005    assert_eq!(
4006        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
4007        0usize,
4008        "Offset of field: TPMU_ASYM_SCHEME::sm2"
4009    );
4010    assert_eq!(
4011        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
4012        0usize,
4013        "Offset of field: TPMU_ASYM_SCHEME::ecschnorr"
4014    );
4015    assert_eq!(
4016        unsafe { ::std::ptr::addr_of!((*ptr).rsaes) as usize - ptr as usize },
4017        0usize,
4018        "Offset of field: TPMU_ASYM_SCHEME::rsaes"
4019    );
4020    assert_eq!(
4021        unsafe { ::std::ptr::addr_of!((*ptr).oaep) as usize - ptr as usize },
4022        0usize,
4023        "Offset of field: TPMU_ASYM_SCHEME::oaep"
4024    );
4025    assert_eq!(
4026        unsafe { ::std::ptr::addr_of!((*ptr).anySig) as usize - ptr as usize },
4027        0usize,
4028        "Offset of field: TPMU_ASYM_SCHEME::anySig"
4029    );
4030    assert_eq!(
4031        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
4032        0usize,
4033        "Offset of field: TPMU_ASYM_SCHEME::null"
4034    );
4035}
4036impl Default for TPMU_ASYM_SCHEME {
4037    fn default() -> Self {
4038        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4039        unsafe {
4040            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4041            s.assume_init()
4042        }
4043    }
4044}
4045#[repr(C)]
4046#[derive(Copy, Clone)]
4047pub struct TPMT_ASYM_SCHEME {
4048    pub scheme: TPMI_ALG_ASYM_SCHEME,
4049    pub details: TPMU_ASYM_SCHEME,
4050}
4051#[test]
4052fn bindgen_test_layout_TPMT_ASYM_SCHEME() {
4053    const UNINIT: ::std::mem::MaybeUninit<TPMT_ASYM_SCHEME> = ::std::mem::MaybeUninit::uninit();
4054    let ptr = UNINIT.as_ptr();
4055    assert_eq!(
4056        ::std::mem::size_of::<TPMT_ASYM_SCHEME>(),
4057        6usize,
4058        "Size of TPMT_ASYM_SCHEME"
4059    );
4060    assert_eq!(
4061        ::std::mem::align_of::<TPMT_ASYM_SCHEME>(),
4062        2usize,
4063        "Alignment of TPMT_ASYM_SCHEME"
4064    );
4065    assert_eq!(
4066        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4067        0usize,
4068        "Offset of field: TPMT_ASYM_SCHEME::scheme"
4069    );
4070    assert_eq!(
4071        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4072        2usize,
4073        "Offset of field: TPMT_ASYM_SCHEME::details"
4074    );
4075}
4076impl Default for TPMT_ASYM_SCHEME {
4077    fn default() -> Self {
4078        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4079        unsafe {
4080            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4081            s.assume_init()
4082        }
4083    }
4084}
4085pub type TPMI_ALG_RSA_SCHEME = TPM2_ALG_ID;
4086#[repr(C)]
4087#[derive(Copy, Clone)]
4088pub struct TPMT_RSA_SCHEME {
4089    pub scheme: TPMI_ALG_RSA_SCHEME,
4090    pub details: TPMU_ASYM_SCHEME,
4091}
4092#[test]
4093fn bindgen_test_layout_TPMT_RSA_SCHEME() {
4094    const UNINIT: ::std::mem::MaybeUninit<TPMT_RSA_SCHEME> = ::std::mem::MaybeUninit::uninit();
4095    let ptr = UNINIT.as_ptr();
4096    assert_eq!(
4097        ::std::mem::size_of::<TPMT_RSA_SCHEME>(),
4098        6usize,
4099        "Size of TPMT_RSA_SCHEME"
4100    );
4101    assert_eq!(
4102        ::std::mem::align_of::<TPMT_RSA_SCHEME>(),
4103        2usize,
4104        "Alignment of TPMT_RSA_SCHEME"
4105    );
4106    assert_eq!(
4107        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4108        0usize,
4109        "Offset of field: TPMT_RSA_SCHEME::scheme"
4110    );
4111    assert_eq!(
4112        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4113        2usize,
4114        "Offset of field: TPMT_RSA_SCHEME::details"
4115    );
4116}
4117impl Default for TPMT_RSA_SCHEME {
4118    fn default() -> Self {
4119        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4120        unsafe {
4121            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4122            s.assume_init()
4123        }
4124    }
4125}
4126pub type TPMI_ALG_RSA_DECRYPT = TPM2_ALG_ID;
4127#[repr(C)]
4128#[derive(Copy, Clone)]
4129pub struct TPMT_RSA_DECRYPT {
4130    pub scheme: TPMI_ALG_RSA_DECRYPT,
4131    pub details: TPMU_ASYM_SCHEME,
4132}
4133#[test]
4134fn bindgen_test_layout_TPMT_RSA_DECRYPT() {
4135    const UNINIT: ::std::mem::MaybeUninit<TPMT_RSA_DECRYPT> = ::std::mem::MaybeUninit::uninit();
4136    let ptr = UNINIT.as_ptr();
4137    assert_eq!(
4138        ::std::mem::size_of::<TPMT_RSA_DECRYPT>(),
4139        6usize,
4140        "Size of TPMT_RSA_DECRYPT"
4141    );
4142    assert_eq!(
4143        ::std::mem::align_of::<TPMT_RSA_DECRYPT>(),
4144        2usize,
4145        "Alignment of TPMT_RSA_DECRYPT"
4146    );
4147    assert_eq!(
4148        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4149        0usize,
4150        "Offset of field: TPMT_RSA_DECRYPT::scheme"
4151    );
4152    assert_eq!(
4153        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4154        2usize,
4155        "Offset of field: TPMT_RSA_DECRYPT::details"
4156    );
4157}
4158impl Default for TPMT_RSA_DECRYPT {
4159    fn default() -> Self {
4160        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4161        unsafe {
4162            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4163            s.assume_init()
4164        }
4165    }
4166}
4167#[repr(C)]
4168#[derive(Debug, Copy, Clone)]
4169pub struct TPM2B_PUBLIC_KEY_RSA {
4170    pub size: UINT16,
4171    pub buffer: [BYTE; 512usize],
4172}
4173#[test]
4174fn bindgen_test_layout_TPM2B_PUBLIC_KEY_RSA() {
4175    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PUBLIC_KEY_RSA> = ::std::mem::MaybeUninit::uninit();
4176    let ptr = UNINIT.as_ptr();
4177    assert_eq!(
4178        ::std::mem::size_of::<TPM2B_PUBLIC_KEY_RSA>(),
4179        514usize,
4180        "Size of TPM2B_PUBLIC_KEY_RSA"
4181    );
4182    assert_eq!(
4183        ::std::mem::align_of::<TPM2B_PUBLIC_KEY_RSA>(),
4184        2usize,
4185        "Alignment of TPM2B_PUBLIC_KEY_RSA"
4186    );
4187    assert_eq!(
4188        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4189        0usize,
4190        "Offset of field: TPM2B_PUBLIC_KEY_RSA::size"
4191    );
4192    assert_eq!(
4193        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4194        2usize,
4195        "Offset of field: TPM2B_PUBLIC_KEY_RSA::buffer"
4196    );
4197}
4198impl Default for TPM2B_PUBLIC_KEY_RSA {
4199    fn default() -> Self {
4200        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4201        unsafe {
4202            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4203            s.assume_init()
4204        }
4205    }
4206}
4207pub type TPMI_RSA_KEY_BITS = TPM2_KEY_BITS;
4208#[repr(C)]
4209#[derive(Debug, Copy, Clone)]
4210pub struct TPM2B_PRIVATE_KEY_RSA {
4211    pub size: UINT16,
4212    pub buffer: [BYTE; 1280usize],
4213}
4214#[test]
4215fn bindgen_test_layout_TPM2B_PRIVATE_KEY_RSA() {
4216    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE_KEY_RSA> =
4217        ::std::mem::MaybeUninit::uninit();
4218    let ptr = UNINIT.as_ptr();
4219    assert_eq!(
4220        ::std::mem::size_of::<TPM2B_PRIVATE_KEY_RSA>(),
4221        1282usize,
4222        "Size of TPM2B_PRIVATE_KEY_RSA"
4223    );
4224    assert_eq!(
4225        ::std::mem::align_of::<TPM2B_PRIVATE_KEY_RSA>(),
4226        2usize,
4227        "Alignment of TPM2B_PRIVATE_KEY_RSA"
4228    );
4229    assert_eq!(
4230        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4231        0usize,
4232        "Offset of field: TPM2B_PRIVATE_KEY_RSA::size"
4233    );
4234    assert_eq!(
4235        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4236        2usize,
4237        "Offset of field: TPM2B_PRIVATE_KEY_RSA::buffer"
4238    );
4239}
4240impl Default for TPM2B_PRIVATE_KEY_RSA {
4241    fn default() -> Self {
4242        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4243        unsafe {
4244            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4245            s.assume_init()
4246        }
4247    }
4248}
4249#[repr(C)]
4250#[derive(Debug, Copy, Clone)]
4251pub struct TPM2B_ECC_PARAMETER {
4252    pub size: UINT16,
4253    pub buffer: [BYTE; 128usize],
4254}
4255#[test]
4256fn bindgen_test_layout_TPM2B_ECC_PARAMETER() {
4257    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ECC_PARAMETER> = ::std::mem::MaybeUninit::uninit();
4258    let ptr = UNINIT.as_ptr();
4259    assert_eq!(
4260        ::std::mem::size_of::<TPM2B_ECC_PARAMETER>(),
4261        130usize,
4262        "Size of TPM2B_ECC_PARAMETER"
4263    );
4264    assert_eq!(
4265        ::std::mem::align_of::<TPM2B_ECC_PARAMETER>(),
4266        2usize,
4267        "Alignment of TPM2B_ECC_PARAMETER"
4268    );
4269    assert_eq!(
4270        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4271        0usize,
4272        "Offset of field: TPM2B_ECC_PARAMETER::size"
4273    );
4274    assert_eq!(
4275        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
4276        2usize,
4277        "Offset of field: TPM2B_ECC_PARAMETER::buffer"
4278    );
4279}
4280impl Default for TPM2B_ECC_PARAMETER {
4281    fn default() -> Self {
4282        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4283        unsafe {
4284            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4285            s.assume_init()
4286        }
4287    }
4288}
4289#[repr(C)]
4290#[derive(Debug, Copy, Clone)]
4291pub struct TPMS_ECC_POINT {
4292    pub x: TPM2B_ECC_PARAMETER,
4293    pub y: TPM2B_ECC_PARAMETER,
4294}
4295#[test]
4296fn bindgen_test_layout_TPMS_ECC_POINT() {
4297    const UNINIT: ::std::mem::MaybeUninit<TPMS_ECC_POINT> = ::std::mem::MaybeUninit::uninit();
4298    let ptr = UNINIT.as_ptr();
4299    assert_eq!(
4300        ::std::mem::size_of::<TPMS_ECC_POINT>(),
4301        260usize,
4302        "Size of TPMS_ECC_POINT"
4303    );
4304    assert_eq!(
4305        ::std::mem::align_of::<TPMS_ECC_POINT>(),
4306        2usize,
4307        "Alignment of TPMS_ECC_POINT"
4308    );
4309    assert_eq!(
4310        unsafe { ::std::ptr::addr_of!((*ptr).x) as usize - ptr as usize },
4311        0usize,
4312        "Offset of field: TPMS_ECC_POINT::x"
4313    );
4314    assert_eq!(
4315        unsafe { ::std::ptr::addr_of!((*ptr).y) as usize - ptr as usize },
4316        130usize,
4317        "Offset of field: TPMS_ECC_POINT::y"
4318    );
4319}
4320impl Default for TPMS_ECC_POINT {
4321    fn default() -> Self {
4322        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4323        unsafe {
4324            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4325            s.assume_init()
4326        }
4327    }
4328}
4329#[repr(C)]
4330#[derive(Debug, Copy, Clone)]
4331pub struct TPM2B_ECC_POINT {
4332    pub size: UINT16,
4333    pub point: TPMS_ECC_POINT,
4334}
4335#[test]
4336fn bindgen_test_layout_TPM2B_ECC_POINT() {
4337    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ECC_POINT> = ::std::mem::MaybeUninit::uninit();
4338    let ptr = UNINIT.as_ptr();
4339    assert_eq!(
4340        ::std::mem::size_of::<TPM2B_ECC_POINT>(),
4341        262usize,
4342        "Size of TPM2B_ECC_POINT"
4343    );
4344    assert_eq!(
4345        ::std::mem::align_of::<TPM2B_ECC_POINT>(),
4346        2usize,
4347        "Alignment of TPM2B_ECC_POINT"
4348    );
4349    assert_eq!(
4350        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4351        0usize,
4352        "Offset of field: TPM2B_ECC_POINT::size"
4353    );
4354    assert_eq!(
4355        unsafe { ::std::ptr::addr_of!((*ptr).point) as usize - ptr as usize },
4356        2usize,
4357        "Offset of field: TPM2B_ECC_POINT::point"
4358    );
4359}
4360impl Default for TPM2B_ECC_POINT {
4361    fn default() -> Self {
4362        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4363        unsafe {
4364            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4365            s.assume_init()
4366        }
4367    }
4368}
4369pub type TPMI_ALG_ECC_SCHEME = TPM2_ALG_ID;
4370pub type TPMI_ECC_CURVE = TPM2_ECC_CURVE;
4371#[repr(C)]
4372#[derive(Copy, Clone)]
4373pub struct TPMT_ECC_SCHEME {
4374    pub scheme: TPMI_ALG_ECC_SCHEME,
4375    pub details: TPMU_ASYM_SCHEME,
4376}
4377#[test]
4378fn bindgen_test_layout_TPMT_ECC_SCHEME() {
4379    const UNINIT: ::std::mem::MaybeUninit<TPMT_ECC_SCHEME> = ::std::mem::MaybeUninit::uninit();
4380    let ptr = UNINIT.as_ptr();
4381    assert_eq!(
4382        ::std::mem::size_of::<TPMT_ECC_SCHEME>(),
4383        6usize,
4384        "Size of TPMT_ECC_SCHEME"
4385    );
4386    assert_eq!(
4387        ::std::mem::align_of::<TPMT_ECC_SCHEME>(),
4388        2usize,
4389        "Alignment of TPMT_ECC_SCHEME"
4390    );
4391    assert_eq!(
4392        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4393        0usize,
4394        "Offset of field: TPMT_ECC_SCHEME::scheme"
4395    );
4396    assert_eq!(
4397        unsafe { ::std::ptr::addr_of!((*ptr).details) as usize - ptr as usize },
4398        2usize,
4399        "Offset of field: TPMT_ECC_SCHEME::details"
4400    );
4401}
4402impl Default for TPMT_ECC_SCHEME {
4403    fn default() -> Self {
4404        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4405        unsafe {
4406            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4407            s.assume_init()
4408        }
4409    }
4410}
4411#[repr(C)]
4412#[derive(Copy, Clone)]
4413pub struct TPMS_ALGORITHM_DETAIL_ECC {
4414    pub curveID: TPM2_ECC_CURVE,
4415    pub keySize: UINT16,
4416    pub kdf: TPMT_KDF_SCHEME,
4417    pub sign: TPMT_ECC_SCHEME,
4418    pub p: TPM2B_ECC_PARAMETER,
4419    pub a: TPM2B_ECC_PARAMETER,
4420    pub b: TPM2B_ECC_PARAMETER,
4421    pub gX: TPM2B_ECC_PARAMETER,
4422    pub gY: TPM2B_ECC_PARAMETER,
4423    pub n: TPM2B_ECC_PARAMETER,
4424    pub h: TPM2B_ECC_PARAMETER,
4425}
4426#[test]
4427fn bindgen_test_layout_TPMS_ALGORITHM_DETAIL_ECC() {
4428    const UNINIT: ::std::mem::MaybeUninit<TPMS_ALGORITHM_DETAIL_ECC> =
4429        ::std::mem::MaybeUninit::uninit();
4430    let ptr = UNINIT.as_ptr();
4431    assert_eq!(
4432        ::std::mem::size_of::<TPMS_ALGORITHM_DETAIL_ECC>(),
4433        924usize,
4434        "Size of TPMS_ALGORITHM_DETAIL_ECC"
4435    );
4436    assert_eq!(
4437        ::std::mem::align_of::<TPMS_ALGORITHM_DETAIL_ECC>(),
4438        2usize,
4439        "Alignment of TPMS_ALGORITHM_DETAIL_ECC"
4440    );
4441    assert_eq!(
4442        unsafe { ::std::ptr::addr_of!((*ptr).curveID) as usize - ptr as usize },
4443        0usize,
4444        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::curveID"
4445    );
4446    assert_eq!(
4447        unsafe { ::std::ptr::addr_of!((*ptr).keySize) as usize - ptr as usize },
4448        2usize,
4449        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::keySize"
4450    );
4451    assert_eq!(
4452        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
4453        4usize,
4454        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::kdf"
4455    );
4456    assert_eq!(
4457        unsafe { ::std::ptr::addr_of!((*ptr).sign) as usize - ptr as usize },
4458        8usize,
4459        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::sign"
4460    );
4461    assert_eq!(
4462        unsafe { ::std::ptr::addr_of!((*ptr).p) as usize - ptr as usize },
4463        14usize,
4464        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::p"
4465    );
4466    assert_eq!(
4467        unsafe { ::std::ptr::addr_of!((*ptr).a) as usize - ptr as usize },
4468        144usize,
4469        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::a"
4470    );
4471    assert_eq!(
4472        unsafe { ::std::ptr::addr_of!((*ptr).b) as usize - ptr as usize },
4473        274usize,
4474        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::b"
4475    );
4476    assert_eq!(
4477        unsafe { ::std::ptr::addr_of!((*ptr).gX) as usize - ptr as usize },
4478        404usize,
4479        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::gX"
4480    );
4481    assert_eq!(
4482        unsafe { ::std::ptr::addr_of!((*ptr).gY) as usize - ptr as usize },
4483        534usize,
4484        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::gY"
4485    );
4486    assert_eq!(
4487        unsafe { ::std::ptr::addr_of!((*ptr).n) as usize - ptr as usize },
4488        664usize,
4489        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::n"
4490    );
4491    assert_eq!(
4492        unsafe { ::std::ptr::addr_of!((*ptr).h) as usize - ptr as usize },
4493        794usize,
4494        "Offset of field: TPMS_ALGORITHM_DETAIL_ECC::h"
4495    );
4496}
4497impl Default for TPMS_ALGORITHM_DETAIL_ECC {
4498    fn default() -> Self {
4499        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4500        unsafe {
4501            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4502            s.assume_init()
4503        }
4504    }
4505}
4506#[repr(C)]
4507#[derive(Debug, Copy, Clone)]
4508pub struct TPMS_SIGNATURE_RSA {
4509    pub hash: TPMI_ALG_HASH,
4510    pub sig: TPM2B_PUBLIC_KEY_RSA,
4511}
4512#[test]
4513fn bindgen_test_layout_TPMS_SIGNATURE_RSA() {
4514    const UNINIT: ::std::mem::MaybeUninit<TPMS_SIGNATURE_RSA> = ::std::mem::MaybeUninit::uninit();
4515    let ptr = UNINIT.as_ptr();
4516    assert_eq!(
4517        ::std::mem::size_of::<TPMS_SIGNATURE_RSA>(),
4518        516usize,
4519        "Size of TPMS_SIGNATURE_RSA"
4520    );
4521    assert_eq!(
4522        ::std::mem::align_of::<TPMS_SIGNATURE_RSA>(),
4523        2usize,
4524        "Alignment of TPMS_SIGNATURE_RSA"
4525    );
4526    assert_eq!(
4527        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
4528        0usize,
4529        "Offset of field: TPMS_SIGNATURE_RSA::hash"
4530    );
4531    assert_eq!(
4532        unsafe { ::std::ptr::addr_of!((*ptr).sig) as usize - ptr as usize },
4533        2usize,
4534        "Offset of field: TPMS_SIGNATURE_RSA::sig"
4535    );
4536}
4537impl Default for TPMS_SIGNATURE_RSA {
4538    fn default() -> Self {
4539        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4540        unsafe {
4541            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4542            s.assume_init()
4543        }
4544    }
4545}
4546pub type TPMS_SIGNATURE_RSASSA = TPMS_SIGNATURE_RSA;
4547pub type TPMS_SIGNATURE_RSAPSS = TPMS_SIGNATURE_RSA;
4548#[repr(C)]
4549#[derive(Debug, Copy, Clone)]
4550pub struct TPMS_SIGNATURE_ECC {
4551    pub hash: TPMI_ALG_HASH,
4552    pub signatureR: TPM2B_ECC_PARAMETER,
4553    pub signatureS: TPM2B_ECC_PARAMETER,
4554}
4555#[test]
4556fn bindgen_test_layout_TPMS_SIGNATURE_ECC() {
4557    const UNINIT: ::std::mem::MaybeUninit<TPMS_SIGNATURE_ECC> = ::std::mem::MaybeUninit::uninit();
4558    let ptr = UNINIT.as_ptr();
4559    assert_eq!(
4560        ::std::mem::size_of::<TPMS_SIGNATURE_ECC>(),
4561        262usize,
4562        "Size of TPMS_SIGNATURE_ECC"
4563    );
4564    assert_eq!(
4565        ::std::mem::align_of::<TPMS_SIGNATURE_ECC>(),
4566        2usize,
4567        "Alignment of TPMS_SIGNATURE_ECC"
4568    );
4569    assert_eq!(
4570        unsafe { ::std::ptr::addr_of!((*ptr).hash) as usize - ptr as usize },
4571        0usize,
4572        "Offset of field: TPMS_SIGNATURE_ECC::hash"
4573    );
4574    assert_eq!(
4575        unsafe { ::std::ptr::addr_of!((*ptr).signatureR) as usize - ptr as usize },
4576        2usize,
4577        "Offset of field: TPMS_SIGNATURE_ECC::signatureR"
4578    );
4579    assert_eq!(
4580        unsafe { ::std::ptr::addr_of!((*ptr).signatureS) as usize - ptr as usize },
4581        132usize,
4582        "Offset of field: TPMS_SIGNATURE_ECC::signatureS"
4583    );
4584}
4585impl Default for TPMS_SIGNATURE_ECC {
4586    fn default() -> Self {
4587        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4588        unsafe {
4589            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4590            s.assume_init()
4591        }
4592    }
4593}
4594pub type TPMS_SIGNATURE_ECDSA = TPMS_SIGNATURE_ECC;
4595pub type TPMS_SIGNATURE_ECDAA = TPMS_SIGNATURE_ECC;
4596pub type TPMS_SIGNATURE_SM2 = TPMS_SIGNATURE_ECC;
4597pub type TPMS_SIGNATURE_ECSCHNORR = TPMS_SIGNATURE_ECC;
4598#[repr(C)]
4599#[derive(Copy, Clone)]
4600pub union TPMU_SIGNATURE {
4601    pub rsassa: TPMS_SIGNATURE_RSASSA,
4602    pub rsapss: TPMS_SIGNATURE_RSAPSS,
4603    pub ecdsa: TPMS_SIGNATURE_ECDSA,
4604    pub ecdaa: TPMS_SIGNATURE_ECDAA,
4605    pub sm2: TPMS_SIGNATURE_SM2,
4606    pub ecschnorr: TPMS_SIGNATURE_ECSCHNORR,
4607    pub hmac: TPMT_HA,
4608    pub any: TPMS_SCHEME_HASH,
4609    pub null: TPMS_EMPTY,
4610}
4611#[test]
4612fn bindgen_test_layout_TPMU_SIGNATURE() {
4613    const UNINIT: ::std::mem::MaybeUninit<TPMU_SIGNATURE> = ::std::mem::MaybeUninit::uninit();
4614    let ptr = UNINIT.as_ptr();
4615    assert_eq!(
4616        ::std::mem::size_of::<TPMU_SIGNATURE>(),
4617        516usize,
4618        "Size of TPMU_SIGNATURE"
4619    );
4620    assert_eq!(
4621        ::std::mem::align_of::<TPMU_SIGNATURE>(),
4622        2usize,
4623        "Alignment of TPMU_SIGNATURE"
4624    );
4625    assert_eq!(
4626        unsafe { ::std::ptr::addr_of!((*ptr).rsassa) as usize - ptr as usize },
4627        0usize,
4628        "Offset of field: TPMU_SIGNATURE::rsassa"
4629    );
4630    assert_eq!(
4631        unsafe { ::std::ptr::addr_of!((*ptr).rsapss) as usize - ptr as usize },
4632        0usize,
4633        "Offset of field: TPMU_SIGNATURE::rsapss"
4634    );
4635    assert_eq!(
4636        unsafe { ::std::ptr::addr_of!((*ptr).ecdsa) as usize - ptr as usize },
4637        0usize,
4638        "Offset of field: TPMU_SIGNATURE::ecdsa"
4639    );
4640    assert_eq!(
4641        unsafe { ::std::ptr::addr_of!((*ptr).ecdaa) as usize - ptr as usize },
4642        0usize,
4643        "Offset of field: TPMU_SIGNATURE::ecdaa"
4644    );
4645    assert_eq!(
4646        unsafe { ::std::ptr::addr_of!((*ptr).sm2) as usize - ptr as usize },
4647        0usize,
4648        "Offset of field: TPMU_SIGNATURE::sm2"
4649    );
4650    assert_eq!(
4651        unsafe { ::std::ptr::addr_of!((*ptr).ecschnorr) as usize - ptr as usize },
4652        0usize,
4653        "Offset of field: TPMU_SIGNATURE::ecschnorr"
4654    );
4655    assert_eq!(
4656        unsafe { ::std::ptr::addr_of!((*ptr).hmac) as usize - ptr as usize },
4657        0usize,
4658        "Offset of field: TPMU_SIGNATURE::hmac"
4659    );
4660    assert_eq!(
4661        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
4662        0usize,
4663        "Offset of field: TPMU_SIGNATURE::any"
4664    );
4665    assert_eq!(
4666        unsafe { ::std::ptr::addr_of!((*ptr).null) as usize - ptr as usize },
4667        0usize,
4668        "Offset of field: TPMU_SIGNATURE::null"
4669    );
4670}
4671impl Default for TPMU_SIGNATURE {
4672    fn default() -> Self {
4673        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4674        unsafe {
4675            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4676            s.assume_init()
4677        }
4678    }
4679}
4680#[repr(C)]
4681#[derive(Copy, Clone)]
4682pub struct TPMT_SIGNATURE {
4683    pub sigAlg: TPMI_ALG_SIG_SCHEME,
4684    pub signature: TPMU_SIGNATURE,
4685}
4686#[test]
4687fn bindgen_test_layout_TPMT_SIGNATURE() {
4688    const UNINIT: ::std::mem::MaybeUninit<TPMT_SIGNATURE> = ::std::mem::MaybeUninit::uninit();
4689    let ptr = UNINIT.as_ptr();
4690    assert_eq!(
4691        ::std::mem::size_of::<TPMT_SIGNATURE>(),
4692        518usize,
4693        "Size of TPMT_SIGNATURE"
4694    );
4695    assert_eq!(
4696        ::std::mem::align_of::<TPMT_SIGNATURE>(),
4697        2usize,
4698        "Alignment of TPMT_SIGNATURE"
4699    );
4700    assert_eq!(
4701        unsafe { ::std::ptr::addr_of!((*ptr).sigAlg) as usize - ptr as usize },
4702        0usize,
4703        "Offset of field: TPMT_SIGNATURE::sigAlg"
4704    );
4705    assert_eq!(
4706        unsafe { ::std::ptr::addr_of!((*ptr).signature) as usize - ptr as usize },
4707        2usize,
4708        "Offset of field: TPMT_SIGNATURE::signature"
4709    );
4710}
4711impl Default for TPMT_SIGNATURE {
4712    fn default() -> Self {
4713        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4714        unsafe {
4715            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4716            s.assume_init()
4717        }
4718    }
4719}
4720#[repr(C)]
4721#[derive(Copy, Clone)]
4722pub union TPMU_ENCRYPTED_SECRET {
4723    pub ecc: [BYTE; 260usize],
4724    pub rsa: [BYTE; 512usize],
4725    pub symmetric: [BYTE; 66usize],
4726    pub keyedHash: [BYTE; 66usize],
4727}
4728#[test]
4729fn bindgen_test_layout_TPMU_ENCRYPTED_SECRET() {
4730    const UNINIT: ::std::mem::MaybeUninit<TPMU_ENCRYPTED_SECRET> =
4731        ::std::mem::MaybeUninit::uninit();
4732    let ptr = UNINIT.as_ptr();
4733    assert_eq!(
4734        ::std::mem::size_of::<TPMU_ENCRYPTED_SECRET>(),
4735        512usize,
4736        "Size of TPMU_ENCRYPTED_SECRET"
4737    );
4738    assert_eq!(
4739        ::std::mem::align_of::<TPMU_ENCRYPTED_SECRET>(),
4740        1usize,
4741        "Alignment of TPMU_ENCRYPTED_SECRET"
4742    );
4743    assert_eq!(
4744        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
4745        0usize,
4746        "Offset of field: TPMU_ENCRYPTED_SECRET::ecc"
4747    );
4748    assert_eq!(
4749        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
4750        0usize,
4751        "Offset of field: TPMU_ENCRYPTED_SECRET::rsa"
4752    );
4753    assert_eq!(
4754        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
4755        0usize,
4756        "Offset of field: TPMU_ENCRYPTED_SECRET::symmetric"
4757    );
4758    assert_eq!(
4759        unsafe { ::std::ptr::addr_of!((*ptr).keyedHash) as usize - ptr as usize },
4760        0usize,
4761        "Offset of field: TPMU_ENCRYPTED_SECRET::keyedHash"
4762    );
4763}
4764impl Default for TPMU_ENCRYPTED_SECRET {
4765    fn default() -> Self {
4766        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4767        unsafe {
4768            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4769            s.assume_init()
4770        }
4771    }
4772}
4773#[repr(C)]
4774#[derive(Debug, Copy, Clone)]
4775pub struct TPM2B_ENCRYPTED_SECRET {
4776    pub size: UINT16,
4777    pub secret: [BYTE; 512usize],
4778}
4779#[test]
4780fn bindgen_test_layout_TPM2B_ENCRYPTED_SECRET() {
4781    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ENCRYPTED_SECRET> =
4782        ::std::mem::MaybeUninit::uninit();
4783    let ptr = UNINIT.as_ptr();
4784    assert_eq!(
4785        ::std::mem::size_of::<TPM2B_ENCRYPTED_SECRET>(),
4786        514usize,
4787        "Size of TPM2B_ENCRYPTED_SECRET"
4788    );
4789    assert_eq!(
4790        ::std::mem::align_of::<TPM2B_ENCRYPTED_SECRET>(),
4791        2usize,
4792        "Alignment of TPM2B_ENCRYPTED_SECRET"
4793    );
4794    assert_eq!(
4795        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
4796        0usize,
4797        "Offset of field: TPM2B_ENCRYPTED_SECRET::size"
4798    );
4799    assert_eq!(
4800        unsafe { ::std::ptr::addr_of!((*ptr).secret) as usize - ptr as usize },
4801        2usize,
4802        "Offset of field: TPM2B_ENCRYPTED_SECRET::secret"
4803    );
4804}
4805impl Default for TPM2B_ENCRYPTED_SECRET {
4806    fn default() -> Self {
4807        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4808        unsafe {
4809            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4810            s.assume_init()
4811        }
4812    }
4813}
4814pub type TPMI_ALG_PUBLIC = TPM2_ALG_ID;
4815#[repr(C)]
4816#[derive(Copy, Clone)]
4817pub union TPMU_PUBLIC_ID {
4818    pub keyedHash: TPM2B_DIGEST,
4819    pub sym: TPM2B_DIGEST,
4820    pub rsa: TPM2B_PUBLIC_KEY_RSA,
4821    pub ecc: TPMS_ECC_POINT,
4822    pub derive: TPMS_DERIVE,
4823}
4824#[test]
4825fn bindgen_test_layout_TPMU_PUBLIC_ID() {
4826    const UNINIT: ::std::mem::MaybeUninit<TPMU_PUBLIC_ID> = ::std::mem::MaybeUninit::uninit();
4827    let ptr = UNINIT.as_ptr();
4828    assert_eq!(
4829        ::std::mem::size_of::<TPMU_PUBLIC_ID>(),
4830        514usize,
4831        "Size of TPMU_PUBLIC_ID"
4832    );
4833    assert_eq!(
4834        ::std::mem::align_of::<TPMU_PUBLIC_ID>(),
4835        2usize,
4836        "Alignment of TPMU_PUBLIC_ID"
4837    );
4838    assert_eq!(
4839        unsafe { ::std::ptr::addr_of!((*ptr).keyedHash) as usize - ptr as usize },
4840        0usize,
4841        "Offset of field: TPMU_PUBLIC_ID::keyedHash"
4842    );
4843    assert_eq!(
4844        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
4845        0usize,
4846        "Offset of field: TPMU_PUBLIC_ID::sym"
4847    );
4848    assert_eq!(
4849        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
4850        0usize,
4851        "Offset of field: TPMU_PUBLIC_ID::rsa"
4852    );
4853    assert_eq!(
4854        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
4855        0usize,
4856        "Offset of field: TPMU_PUBLIC_ID::ecc"
4857    );
4858    assert_eq!(
4859        unsafe { ::std::ptr::addr_of!((*ptr).derive) as usize - ptr as usize },
4860        0usize,
4861        "Offset of field: TPMU_PUBLIC_ID::derive"
4862    );
4863}
4864impl Default for TPMU_PUBLIC_ID {
4865    fn default() -> Self {
4866        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4867        unsafe {
4868            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4869            s.assume_init()
4870        }
4871    }
4872}
4873#[repr(C)]
4874#[derive(Copy, Clone)]
4875pub struct TPMS_KEYEDHASH_PARMS {
4876    pub scheme: TPMT_KEYEDHASH_SCHEME,
4877}
4878#[test]
4879fn bindgen_test_layout_TPMS_KEYEDHASH_PARMS() {
4880    const UNINIT: ::std::mem::MaybeUninit<TPMS_KEYEDHASH_PARMS> = ::std::mem::MaybeUninit::uninit();
4881    let ptr = UNINIT.as_ptr();
4882    assert_eq!(
4883        ::std::mem::size_of::<TPMS_KEYEDHASH_PARMS>(),
4884        6usize,
4885        "Size of TPMS_KEYEDHASH_PARMS"
4886    );
4887    assert_eq!(
4888        ::std::mem::align_of::<TPMS_KEYEDHASH_PARMS>(),
4889        2usize,
4890        "Alignment of TPMS_KEYEDHASH_PARMS"
4891    );
4892    assert_eq!(
4893        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4894        0usize,
4895        "Offset of field: TPMS_KEYEDHASH_PARMS::scheme"
4896    );
4897}
4898impl Default for TPMS_KEYEDHASH_PARMS {
4899    fn default() -> Self {
4900        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4901        unsafe {
4902            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4903            s.assume_init()
4904        }
4905    }
4906}
4907#[repr(C)]
4908#[derive(Copy, Clone)]
4909pub struct TPMS_ASYM_PARMS {
4910    pub symmetric: TPMT_SYM_DEF_OBJECT,
4911    pub scheme: TPMT_ASYM_SCHEME,
4912}
4913#[test]
4914fn bindgen_test_layout_TPMS_ASYM_PARMS() {
4915    const UNINIT: ::std::mem::MaybeUninit<TPMS_ASYM_PARMS> = ::std::mem::MaybeUninit::uninit();
4916    let ptr = UNINIT.as_ptr();
4917    assert_eq!(
4918        ::std::mem::size_of::<TPMS_ASYM_PARMS>(),
4919        12usize,
4920        "Size of TPMS_ASYM_PARMS"
4921    );
4922    assert_eq!(
4923        ::std::mem::align_of::<TPMS_ASYM_PARMS>(),
4924        2usize,
4925        "Alignment of TPMS_ASYM_PARMS"
4926    );
4927    assert_eq!(
4928        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
4929        0usize,
4930        "Offset of field: TPMS_ASYM_PARMS::symmetric"
4931    );
4932    assert_eq!(
4933        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4934        6usize,
4935        "Offset of field: TPMS_ASYM_PARMS::scheme"
4936    );
4937}
4938impl Default for TPMS_ASYM_PARMS {
4939    fn default() -> Self {
4940        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4941        unsafe {
4942            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4943            s.assume_init()
4944        }
4945    }
4946}
4947#[repr(C)]
4948#[derive(Copy, Clone)]
4949pub struct TPMS_RSA_PARMS {
4950    pub symmetric: TPMT_SYM_DEF_OBJECT,
4951    pub scheme: TPMT_RSA_SCHEME,
4952    pub keyBits: TPMI_RSA_KEY_BITS,
4953    pub exponent: UINT32,
4954}
4955#[test]
4956fn bindgen_test_layout_TPMS_RSA_PARMS() {
4957    const UNINIT: ::std::mem::MaybeUninit<TPMS_RSA_PARMS> = ::std::mem::MaybeUninit::uninit();
4958    let ptr = UNINIT.as_ptr();
4959    assert_eq!(
4960        ::std::mem::size_of::<TPMS_RSA_PARMS>(),
4961        20usize,
4962        "Size of TPMS_RSA_PARMS"
4963    );
4964    assert_eq!(
4965        ::std::mem::align_of::<TPMS_RSA_PARMS>(),
4966        4usize,
4967        "Alignment of TPMS_RSA_PARMS"
4968    );
4969    assert_eq!(
4970        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
4971        0usize,
4972        "Offset of field: TPMS_RSA_PARMS::symmetric"
4973    );
4974    assert_eq!(
4975        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
4976        6usize,
4977        "Offset of field: TPMS_RSA_PARMS::scheme"
4978    );
4979    assert_eq!(
4980        unsafe { ::std::ptr::addr_of!((*ptr).keyBits) as usize - ptr as usize },
4981        12usize,
4982        "Offset of field: TPMS_RSA_PARMS::keyBits"
4983    );
4984    assert_eq!(
4985        unsafe { ::std::ptr::addr_of!((*ptr).exponent) as usize - ptr as usize },
4986        16usize,
4987        "Offset of field: TPMS_RSA_PARMS::exponent"
4988    );
4989}
4990impl Default for TPMS_RSA_PARMS {
4991    fn default() -> Self {
4992        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
4993        unsafe {
4994            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
4995            s.assume_init()
4996        }
4997    }
4998}
4999#[repr(C)]
5000#[derive(Copy, Clone)]
5001pub struct TPMS_ECC_PARMS {
5002    pub symmetric: TPMT_SYM_DEF_OBJECT,
5003    pub scheme: TPMT_ECC_SCHEME,
5004    pub curveID: TPMI_ECC_CURVE,
5005    pub kdf: TPMT_KDF_SCHEME,
5006}
5007#[test]
5008fn bindgen_test_layout_TPMS_ECC_PARMS() {
5009    const UNINIT: ::std::mem::MaybeUninit<TPMS_ECC_PARMS> = ::std::mem::MaybeUninit::uninit();
5010    let ptr = UNINIT.as_ptr();
5011    assert_eq!(
5012        ::std::mem::size_of::<TPMS_ECC_PARMS>(),
5013        18usize,
5014        "Size of TPMS_ECC_PARMS"
5015    );
5016    assert_eq!(
5017        ::std::mem::align_of::<TPMS_ECC_PARMS>(),
5018        2usize,
5019        "Alignment of TPMS_ECC_PARMS"
5020    );
5021    assert_eq!(
5022        unsafe { ::std::ptr::addr_of!((*ptr).symmetric) as usize - ptr as usize },
5023        0usize,
5024        "Offset of field: TPMS_ECC_PARMS::symmetric"
5025    );
5026    assert_eq!(
5027        unsafe { ::std::ptr::addr_of!((*ptr).scheme) as usize - ptr as usize },
5028        6usize,
5029        "Offset of field: TPMS_ECC_PARMS::scheme"
5030    );
5031    assert_eq!(
5032        unsafe { ::std::ptr::addr_of!((*ptr).curveID) as usize - ptr as usize },
5033        12usize,
5034        "Offset of field: TPMS_ECC_PARMS::curveID"
5035    );
5036    assert_eq!(
5037        unsafe { ::std::ptr::addr_of!((*ptr).kdf) as usize - ptr as usize },
5038        14usize,
5039        "Offset of field: TPMS_ECC_PARMS::kdf"
5040    );
5041}
5042impl Default for TPMS_ECC_PARMS {
5043    fn default() -> Self {
5044        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5045        unsafe {
5046            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5047            s.assume_init()
5048        }
5049    }
5050}
5051#[repr(C)]
5052#[derive(Copy, Clone)]
5053pub union TPMU_PUBLIC_PARMS {
5054    pub keyedHashDetail: TPMS_KEYEDHASH_PARMS,
5055    pub symDetail: TPMS_SYMCIPHER_PARMS,
5056    pub rsaDetail: TPMS_RSA_PARMS,
5057    pub eccDetail: TPMS_ECC_PARMS,
5058    pub asymDetail: TPMS_ASYM_PARMS,
5059}
5060#[test]
5061fn bindgen_test_layout_TPMU_PUBLIC_PARMS() {
5062    const UNINIT: ::std::mem::MaybeUninit<TPMU_PUBLIC_PARMS> = ::std::mem::MaybeUninit::uninit();
5063    let ptr = UNINIT.as_ptr();
5064    assert_eq!(
5065        ::std::mem::size_of::<TPMU_PUBLIC_PARMS>(),
5066        20usize,
5067        "Size of TPMU_PUBLIC_PARMS"
5068    );
5069    assert_eq!(
5070        ::std::mem::align_of::<TPMU_PUBLIC_PARMS>(),
5071        4usize,
5072        "Alignment of TPMU_PUBLIC_PARMS"
5073    );
5074    assert_eq!(
5075        unsafe { ::std::ptr::addr_of!((*ptr).keyedHashDetail) as usize - ptr as usize },
5076        0usize,
5077        "Offset of field: TPMU_PUBLIC_PARMS::keyedHashDetail"
5078    );
5079    assert_eq!(
5080        unsafe { ::std::ptr::addr_of!((*ptr).symDetail) as usize - ptr as usize },
5081        0usize,
5082        "Offset of field: TPMU_PUBLIC_PARMS::symDetail"
5083    );
5084    assert_eq!(
5085        unsafe { ::std::ptr::addr_of!((*ptr).rsaDetail) as usize - ptr as usize },
5086        0usize,
5087        "Offset of field: TPMU_PUBLIC_PARMS::rsaDetail"
5088    );
5089    assert_eq!(
5090        unsafe { ::std::ptr::addr_of!((*ptr).eccDetail) as usize - ptr as usize },
5091        0usize,
5092        "Offset of field: TPMU_PUBLIC_PARMS::eccDetail"
5093    );
5094    assert_eq!(
5095        unsafe { ::std::ptr::addr_of!((*ptr).asymDetail) as usize - ptr as usize },
5096        0usize,
5097        "Offset of field: TPMU_PUBLIC_PARMS::asymDetail"
5098    );
5099}
5100impl Default for TPMU_PUBLIC_PARMS {
5101    fn default() -> Self {
5102        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5103        unsafe {
5104            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5105            s.assume_init()
5106        }
5107    }
5108}
5109#[repr(C)]
5110#[derive(Copy, Clone)]
5111pub struct TPMT_PUBLIC_PARMS {
5112    pub type_: TPMI_ALG_PUBLIC,
5113    pub parameters: TPMU_PUBLIC_PARMS,
5114}
5115#[test]
5116fn bindgen_test_layout_TPMT_PUBLIC_PARMS() {
5117    const UNINIT: ::std::mem::MaybeUninit<TPMT_PUBLIC_PARMS> = ::std::mem::MaybeUninit::uninit();
5118    let ptr = UNINIT.as_ptr();
5119    assert_eq!(
5120        ::std::mem::size_of::<TPMT_PUBLIC_PARMS>(),
5121        24usize,
5122        "Size of TPMT_PUBLIC_PARMS"
5123    );
5124    assert_eq!(
5125        ::std::mem::align_of::<TPMT_PUBLIC_PARMS>(),
5126        4usize,
5127        "Alignment of TPMT_PUBLIC_PARMS"
5128    );
5129    assert_eq!(
5130        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
5131        0usize,
5132        "Offset of field: TPMT_PUBLIC_PARMS::type_"
5133    );
5134    assert_eq!(
5135        unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize },
5136        4usize,
5137        "Offset of field: TPMT_PUBLIC_PARMS::parameters"
5138    );
5139}
5140impl Default for TPMT_PUBLIC_PARMS {
5141    fn default() -> Self {
5142        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5143        unsafe {
5144            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5145            s.assume_init()
5146        }
5147    }
5148}
5149#[repr(C)]
5150#[derive(Copy, Clone)]
5151pub struct TPMT_PUBLIC {
5152    pub type_: TPMI_ALG_PUBLIC,
5153    pub nameAlg: TPMI_ALG_HASH,
5154    pub objectAttributes: TPMA_OBJECT,
5155    pub authPolicy: TPM2B_DIGEST,
5156    pub parameters: TPMU_PUBLIC_PARMS,
5157    pub unique: TPMU_PUBLIC_ID,
5158}
5159#[test]
5160fn bindgen_test_layout_TPMT_PUBLIC() {
5161    const UNINIT: ::std::mem::MaybeUninit<TPMT_PUBLIC> = ::std::mem::MaybeUninit::uninit();
5162    let ptr = UNINIT.as_ptr();
5163    assert_eq!(
5164        ::std::mem::size_of::<TPMT_PUBLIC>(),
5165        612usize,
5166        "Size of TPMT_PUBLIC"
5167    );
5168    assert_eq!(
5169        ::std::mem::align_of::<TPMT_PUBLIC>(),
5170        4usize,
5171        "Alignment of TPMT_PUBLIC"
5172    );
5173    assert_eq!(
5174        unsafe { ::std::ptr::addr_of!((*ptr).type_) as usize - ptr as usize },
5175        0usize,
5176        "Offset of field: TPMT_PUBLIC::type_"
5177    );
5178    assert_eq!(
5179        unsafe { ::std::ptr::addr_of!((*ptr).nameAlg) as usize - ptr as usize },
5180        2usize,
5181        "Offset of field: TPMT_PUBLIC::nameAlg"
5182    );
5183    assert_eq!(
5184        unsafe { ::std::ptr::addr_of!((*ptr).objectAttributes) as usize - ptr as usize },
5185        4usize,
5186        "Offset of field: TPMT_PUBLIC::objectAttributes"
5187    );
5188    assert_eq!(
5189        unsafe { ::std::ptr::addr_of!((*ptr).authPolicy) as usize - ptr as usize },
5190        8usize,
5191        "Offset of field: TPMT_PUBLIC::authPolicy"
5192    );
5193    assert_eq!(
5194        unsafe { ::std::ptr::addr_of!((*ptr).parameters) as usize - ptr as usize },
5195        76usize,
5196        "Offset of field: TPMT_PUBLIC::parameters"
5197    );
5198    assert_eq!(
5199        unsafe { ::std::ptr::addr_of!((*ptr).unique) as usize - ptr as usize },
5200        96usize,
5201        "Offset of field: TPMT_PUBLIC::unique"
5202    );
5203}
5204impl Default for TPMT_PUBLIC {
5205    fn default() -> Self {
5206        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5207        unsafe {
5208            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5209            s.assume_init()
5210        }
5211    }
5212}
5213#[repr(C)]
5214#[derive(Copy, Clone)]
5215pub struct TPM2B_PUBLIC {
5216    pub size: UINT16,
5217    pub publicArea: TPMT_PUBLIC,
5218}
5219#[test]
5220fn bindgen_test_layout_TPM2B_PUBLIC() {
5221    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PUBLIC> = ::std::mem::MaybeUninit::uninit();
5222    let ptr = UNINIT.as_ptr();
5223    assert_eq!(
5224        ::std::mem::size_of::<TPM2B_PUBLIC>(),
5225        616usize,
5226        "Size of TPM2B_PUBLIC"
5227    );
5228    assert_eq!(
5229        ::std::mem::align_of::<TPM2B_PUBLIC>(),
5230        4usize,
5231        "Alignment of TPM2B_PUBLIC"
5232    );
5233    assert_eq!(
5234        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5235        0usize,
5236        "Offset of field: TPM2B_PUBLIC::size"
5237    );
5238    assert_eq!(
5239        unsafe { ::std::ptr::addr_of!((*ptr).publicArea) as usize - ptr as usize },
5240        4usize,
5241        "Offset of field: TPM2B_PUBLIC::publicArea"
5242    );
5243}
5244impl Default for TPM2B_PUBLIC {
5245    fn default() -> Self {
5246        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5247        unsafe {
5248            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5249            s.assume_init()
5250        }
5251    }
5252}
5253#[repr(C)]
5254#[derive(Debug, Copy, Clone)]
5255pub struct TPM2B_TEMPLATE {
5256    pub size: UINT16,
5257    pub buffer: [BYTE; 612usize],
5258}
5259#[test]
5260fn bindgen_test_layout_TPM2B_TEMPLATE() {
5261    const UNINIT: ::std::mem::MaybeUninit<TPM2B_TEMPLATE> = ::std::mem::MaybeUninit::uninit();
5262    let ptr = UNINIT.as_ptr();
5263    assert_eq!(
5264        ::std::mem::size_of::<TPM2B_TEMPLATE>(),
5265        614usize,
5266        "Size of TPM2B_TEMPLATE"
5267    );
5268    assert_eq!(
5269        ::std::mem::align_of::<TPM2B_TEMPLATE>(),
5270        2usize,
5271        "Alignment of TPM2B_TEMPLATE"
5272    );
5273    assert_eq!(
5274        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5275        0usize,
5276        "Offset of field: TPM2B_TEMPLATE::size"
5277    );
5278    assert_eq!(
5279        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
5280        2usize,
5281        "Offset of field: TPM2B_TEMPLATE::buffer"
5282    );
5283}
5284impl Default for TPM2B_TEMPLATE {
5285    fn default() -> Self {
5286        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5287        unsafe {
5288            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5289            s.assume_init()
5290        }
5291    }
5292}
5293#[repr(C)]
5294#[derive(Debug, Copy, Clone)]
5295pub struct TPM2B_PRIVATE_VENDOR_SPECIFIC {
5296    pub size: UINT16,
5297    pub buffer: [BYTE; 1280usize],
5298}
5299#[test]
5300fn bindgen_test_layout_TPM2B_PRIVATE_VENDOR_SPECIFIC() {
5301    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE_VENDOR_SPECIFIC> =
5302        ::std::mem::MaybeUninit::uninit();
5303    let ptr = UNINIT.as_ptr();
5304    assert_eq!(
5305        ::std::mem::size_of::<TPM2B_PRIVATE_VENDOR_SPECIFIC>(),
5306        1282usize,
5307        "Size of TPM2B_PRIVATE_VENDOR_SPECIFIC"
5308    );
5309    assert_eq!(
5310        ::std::mem::align_of::<TPM2B_PRIVATE_VENDOR_SPECIFIC>(),
5311        2usize,
5312        "Alignment of TPM2B_PRIVATE_VENDOR_SPECIFIC"
5313    );
5314    assert_eq!(
5315        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5316        0usize,
5317        "Offset of field: TPM2B_PRIVATE_VENDOR_SPECIFIC::size"
5318    );
5319    assert_eq!(
5320        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
5321        2usize,
5322        "Offset of field: TPM2B_PRIVATE_VENDOR_SPECIFIC::buffer"
5323    );
5324}
5325impl Default for TPM2B_PRIVATE_VENDOR_SPECIFIC {
5326    fn default() -> Self {
5327        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5328        unsafe {
5329            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5330            s.assume_init()
5331        }
5332    }
5333}
5334#[repr(C)]
5335#[derive(Copy, Clone)]
5336pub union TPMU_SENSITIVE_COMPOSITE {
5337    pub rsa: TPM2B_PRIVATE_KEY_RSA,
5338    pub ecc: TPM2B_ECC_PARAMETER,
5339    pub bits: TPM2B_SENSITIVE_DATA,
5340    pub sym: TPM2B_SYM_KEY,
5341    pub any: TPM2B_PRIVATE_VENDOR_SPECIFIC,
5342}
5343#[test]
5344fn bindgen_test_layout_TPMU_SENSITIVE_COMPOSITE() {
5345    const UNINIT: ::std::mem::MaybeUninit<TPMU_SENSITIVE_COMPOSITE> =
5346        ::std::mem::MaybeUninit::uninit();
5347    let ptr = UNINIT.as_ptr();
5348    assert_eq!(
5349        ::std::mem::size_of::<TPMU_SENSITIVE_COMPOSITE>(),
5350        1282usize,
5351        "Size of TPMU_SENSITIVE_COMPOSITE"
5352    );
5353    assert_eq!(
5354        ::std::mem::align_of::<TPMU_SENSITIVE_COMPOSITE>(),
5355        2usize,
5356        "Alignment of TPMU_SENSITIVE_COMPOSITE"
5357    );
5358    assert_eq!(
5359        unsafe { ::std::ptr::addr_of!((*ptr).rsa) as usize - ptr as usize },
5360        0usize,
5361        "Offset of field: TPMU_SENSITIVE_COMPOSITE::rsa"
5362    );
5363    assert_eq!(
5364        unsafe { ::std::ptr::addr_of!((*ptr).ecc) as usize - ptr as usize },
5365        0usize,
5366        "Offset of field: TPMU_SENSITIVE_COMPOSITE::ecc"
5367    );
5368    assert_eq!(
5369        unsafe { ::std::ptr::addr_of!((*ptr).bits) as usize - ptr as usize },
5370        0usize,
5371        "Offset of field: TPMU_SENSITIVE_COMPOSITE::bits"
5372    );
5373    assert_eq!(
5374        unsafe { ::std::ptr::addr_of!((*ptr).sym) as usize - ptr as usize },
5375        0usize,
5376        "Offset of field: TPMU_SENSITIVE_COMPOSITE::sym"
5377    );
5378    assert_eq!(
5379        unsafe { ::std::ptr::addr_of!((*ptr).any) as usize - ptr as usize },
5380        0usize,
5381        "Offset of field: TPMU_SENSITIVE_COMPOSITE::any"
5382    );
5383}
5384impl Default for TPMU_SENSITIVE_COMPOSITE {
5385    fn default() -> Self {
5386        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5387        unsafe {
5388            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5389            s.assume_init()
5390        }
5391    }
5392}
5393#[repr(C)]
5394#[derive(Copy, Clone)]
5395pub struct TPMT_SENSITIVE {
5396    pub sensitiveType: TPMI_ALG_PUBLIC,
5397    pub authValue: TPM2B_AUTH,
5398    pub seedValue: TPM2B_DIGEST,
5399    pub sensitive: TPMU_SENSITIVE_COMPOSITE,
5400}
5401#[test]
5402fn bindgen_test_layout_TPMT_SENSITIVE() {
5403    const UNINIT: ::std::mem::MaybeUninit<TPMT_SENSITIVE> = ::std::mem::MaybeUninit::uninit();
5404    let ptr = UNINIT.as_ptr();
5405    assert_eq!(
5406        ::std::mem::size_of::<TPMT_SENSITIVE>(),
5407        1416usize,
5408        "Size of TPMT_SENSITIVE"
5409    );
5410    assert_eq!(
5411        ::std::mem::align_of::<TPMT_SENSITIVE>(),
5412        2usize,
5413        "Alignment of TPMT_SENSITIVE"
5414    );
5415    assert_eq!(
5416        unsafe { ::std::ptr::addr_of!((*ptr).sensitiveType) as usize - ptr as usize },
5417        0usize,
5418        "Offset of field: TPMT_SENSITIVE::sensitiveType"
5419    );
5420    assert_eq!(
5421        unsafe { ::std::ptr::addr_of!((*ptr).authValue) as usize - ptr as usize },
5422        2usize,
5423        "Offset of field: TPMT_SENSITIVE::authValue"
5424    );
5425    assert_eq!(
5426        unsafe { ::std::ptr::addr_of!((*ptr).seedValue) as usize - ptr as usize },
5427        68usize,
5428        "Offset of field: TPMT_SENSITIVE::seedValue"
5429    );
5430    assert_eq!(
5431        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
5432        134usize,
5433        "Offset of field: TPMT_SENSITIVE::sensitive"
5434    );
5435}
5436impl Default for TPMT_SENSITIVE {
5437    fn default() -> Self {
5438        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5439        unsafe {
5440            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5441            s.assume_init()
5442        }
5443    }
5444}
5445#[repr(C)]
5446#[derive(Copy, Clone)]
5447pub struct TPM2B_SENSITIVE {
5448    pub size: UINT16,
5449    pub sensitiveArea: TPMT_SENSITIVE,
5450}
5451#[test]
5452fn bindgen_test_layout_TPM2B_SENSITIVE() {
5453    const UNINIT: ::std::mem::MaybeUninit<TPM2B_SENSITIVE> = ::std::mem::MaybeUninit::uninit();
5454    let ptr = UNINIT.as_ptr();
5455    assert_eq!(
5456        ::std::mem::size_of::<TPM2B_SENSITIVE>(),
5457        1418usize,
5458        "Size of TPM2B_SENSITIVE"
5459    );
5460    assert_eq!(
5461        ::std::mem::align_of::<TPM2B_SENSITIVE>(),
5462        2usize,
5463        "Alignment of TPM2B_SENSITIVE"
5464    );
5465    assert_eq!(
5466        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5467        0usize,
5468        "Offset of field: TPM2B_SENSITIVE::size"
5469    );
5470    assert_eq!(
5471        unsafe { ::std::ptr::addr_of!((*ptr).sensitiveArea) as usize - ptr as usize },
5472        2usize,
5473        "Offset of field: TPM2B_SENSITIVE::sensitiveArea"
5474    );
5475}
5476impl Default for TPM2B_SENSITIVE {
5477    fn default() -> Self {
5478        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5479        unsafe {
5480            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5481            s.assume_init()
5482        }
5483    }
5484}
5485#[repr(C)]
5486#[derive(Copy, Clone)]
5487pub struct _PRIVATE {
5488    pub integrityOuter: TPM2B_DIGEST,
5489    pub integrityInner: TPM2B_DIGEST,
5490    pub sensitive: TPM2B_SENSITIVE,
5491}
5492#[test]
5493fn bindgen_test_layout__PRIVATE() {
5494    const UNINIT: ::std::mem::MaybeUninit<_PRIVATE> = ::std::mem::MaybeUninit::uninit();
5495    let ptr = UNINIT.as_ptr();
5496    assert_eq!(
5497        ::std::mem::size_of::<_PRIVATE>(),
5498        1550usize,
5499        "Size of _PRIVATE"
5500    );
5501    assert_eq!(
5502        ::std::mem::align_of::<_PRIVATE>(),
5503        2usize,
5504        "Alignment of _PRIVATE"
5505    );
5506    assert_eq!(
5507        unsafe { ::std::ptr::addr_of!((*ptr).integrityOuter) as usize - ptr as usize },
5508        0usize,
5509        "Offset of field: _PRIVATE::integrityOuter"
5510    );
5511    assert_eq!(
5512        unsafe { ::std::ptr::addr_of!((*ptr).integrityInner) as usize - ptr as usize },
5513        66usize,
5514        "Offset of field: _PRIVATE::integrityInner"
5515    );
5516    assert_eq!(
5517        unsafe { ::std::ptr::addr_of!((*ptr).sensitive) as usize - ptr as usize },
5518        132usize,
5519        "Offset of field: _PRIVATE::sensitive"
5520    );
5521}
5522impl Default for _PRIVATE {
5523    fn default() -> Self {
5524        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5525        unsafe {
5526            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5527            s.assume_init()
5528        }
5529    }
5530}
5531#[repr(C)]
5532#[derive(Debug, Copy, Clone)]
5533pub struct TPM2B_PRIVATE {
5534    pub size: UINT16,
5535    pub buffer: [BYTE; 1550usize],
5536}
5537#[test]
5538fn bindgen_test_layout_TPM2B_PRIVATE() {
5539    const UNINIT: ::std::mem::MaybeUninit<TPM2B_PRIVATE> = ::std::mem::MaybeUninit::uninit();
5540    let ptr = UNINIT.as_ptr();
5541    assert_eq!(
5542        ::std::mem::size_of::<TPM2B_PRIVATE>(),
5543        1552usize,
5544        "Size of TPM2B_PRIVATE"
5545    );
5546    assert_eq!(
5547        ::std::mem::align_of::<TPM2B_PRIVATE>(),
5548        2usize,
5549        "Alignment of TPM2B_PRIVATE"
5550    );
5551    assert_eq!(
5552        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5553        0usize,
5554        "Offset of field: TPM2B_PRIVATE::size"
5555    );
5556    assert_eq!(
5557        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
5558        2usize,
5559        "Offset of field: TPM2B_PRIVATE::buffer"
5560    );
5561}
5562impl Default for TPM2B_PRIVATE {
5563    fn default() -> Self {
5564        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5565        unsafe {
5566            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5567            s.assume_init()
5568        }
5569    }
5570}
5571#[repr(C)]
5572#[derive(Debug, Copy, Clone)]
5573pub struct TPMS_ID_OBJECT {
5574    pub integrityHMAC: TPM2B_DIGEST,
5575    pub encIdentity: TPM2B_DIGEST,
5576}
5577#[test]
5578fn bindgen_test_layout_TPMS_ID_OBJECT() {
5579    const UNINIT: ::std::mem::MaybeUninit<TPMS_ID_OBJECT> = ::std::mem::MaybeUninit::uninit();
5580    let ptr = UNINIT.as_ptr();
5581    assert_eq!(
5582        ::std::mem::size_of::<TPMS_ID_OBJECT>(),
5583        132usize,
5584        "Size of TPMS_ID_OBJECT"
5585    );
5586    assert_eq!(
5587        ::std::mem::align_of::<TPMS_ID_OBJECT>(),
5588        2usize,
5589        "Alignment of TPMS_ID_OBJECT"
5590    );
5591    assert_eq!(
5592        unsafe { ::std::ptr::addr_of!((*ptr).integrityHMAC) as usize - ptr as usize },
5593        0usize,
5594        "Offset of field: TPMS_ID_OBJECT::integrityHMAC"
5595    );
5596    assert_eq!(
5597        unsafe { ::std::ptr::addr_of!((*ptr).encIdentity) as usize - ptr as usize },
5598        66usize,
5599        "Offset of field: TPMS_ID_OBJECT::encIdentity"
5600    );
5601}
5602impl Default for TPMS_ID_OBJECT {
5603    fn default() -> Self {
5604        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5605        unsafe {
5606            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5607            s.assume_init()
5608        }
5609    }
5610}
5611#[repr(C)]
5612#[derive(Debug, Copy, Clone)]
5613pub struct TPM2B_ID_OBJECT {
5614    pub size: UINT16,
5615    pub credential: [BYTE; 132usize],
5616}
5617#[test]
5618fn bindgen_test_layout_TPM2B_ID_OBJECT() {
5619    const UNINIT: ::std::mem::MaybeUninit<TPM2B_ID_OBJECT> = ::std::mem::MaybeUninit::uninit();
5620    let ptr = UNINIT.as_ptr();
5621    assert_eq!(
5622        ::std::mem::size_of::<TPM2B_ID_OBJECT>(),
5623        134usize,
5624        "Size of TPM2B_ID_OBJECT"
5625    );
5626    assert_eq!(
5627        ::std::mem::align_of::<TPM2B_ID_OBJECT>(),
5628        2usize,
5629        "Alignment of TPM2B_ID_OBJECT"
5630    );
5631    assert_eq!(
5632        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5633        0usize,
5634        "Offset of field: TPM2B_ID_OBJECT::size"
5635    );
5636    assert_eq!(
5637        unsafe { ::std::ptr::addr_of!((*ptr).credential) as usize - ptr as usize },
5638        2usize,
5639        "Offset of field: TPM2B_ID_OBJECT::credential"
5640    );
5641}
5642impl Default for TPM2B_ID_OBJECT {
5643    fn default() -> Self {
5644        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5645        unsafe {
5646            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5647            s.assume_init()
5648        }
5649    }
5650}
5651pub type TPM2_NV_INDEX = u32;
5652pub type TPM2_NT = UINT8;
5653#[repr(C)]
5654#[derive(Debug, Default, Copy, Clone)]
5655pub struct TPMS_NV_PIN_COUNTER_PARAMETERS {
5656    pub pinCount: UINT32,
5657    pub pinLimit: UINT32,
5658}
5659#[test]
5660fn bindgen_test_layout_TPMS_NV_PIN_COUNTER_PARAMETERS() {
5661    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_PIN_COUNTER_PARAMETERS> =
5662        ::std::mem::MaybeUninit::uninit();
5663    let ptr = UNINIT.as_ptr();
5664    assert_eq!(
5665        ::std::mem::size_of::<TPMS_NV_PIN_COUNTER_PARAMETERS>(),
5666        8usize,
5667        "Size of TPMS_NV_PIN_COUNTER_PARAMETERS"
5668    );
5669    assert_eq!(
5670        ::std::mem::align_of::<TPMS_NV_PIN_COUNTER_PARAMETERS>(),
5671        4usize,
5672        "Alignment of TPMS_NV_PIN_COUNTER_PARAMETERS"
5673    );
5674    assert_eq!(
5675        unsafe { ::std::ptr::addr_of!((*ptr).pinCount) as usize - ptr as usize },
5676        0usize,
5677        "Offset of field: TPMS_NV_PIN_COUNTER_PARAMETERS::pinCount"
5678    );
5679    assert_eq!(
5680        unsafe { ::std::ptr::addr_of!((*ptr).pinLimit) as usize - ptr as usize },
5681        4usize,
5682        "Offset of field: TPMS_NV_PIN_COUNTER_PARAMETERS::pinLimit"
5683    );
5684}
5685pub type TPMA_NV = u32;
5686#[repr(C)]
5687#[derive(Debug, Copy, Clone)]
5688pub struct TPMS_NV_PUBLIC {
5689    pub nvIndex: TPMI_RH_NV_INDEX,
5690    pub nameAlg: TPMI_ALG_HASH,
5691    pub attributes: TPMA_NV,
5692    pub authPolicy: TPM2B_DIGEST,
5693    pub dataSize: UINT16,
5694}
5695#[test]
5696fn bindgen_test_layout_TPMS_NV_PUBLIC() {
5697    const UNINIT: ::std::mem::MaybeUninit<TPMS_NV_PUBLIC> = ::std::mem::MaybeUninit::uninit();
5698    let ptr = UNINIT.as_ptr();
5699    assert_eq!(
5700        ::std::mem::size_of::<TPMS_NV_PUBLIC>(),
5701        80usize,
5702        "Size of TPMS_NV_PUBLIC"
5703    );
5704    assert_eq!(
5705        ::std::mem::align_of::<TPMS_NV_PUBLIC>(),
5706        4usize,
5707        "Alignment of TPMS_NV_PUBLIC"
5708    );
5709    assert_eq!(
5710        unsafe { ::std::ptr::addr_of!((*ptr).nvIndex) as usize - ptr as usize },
5711        0usize,
5712        "Offset of field: TPMS_NV_PUBLIC::nvIndex"
5713    );
5714    assert_eq!(
5715        unsafe { ::std::ptr::addr_of!((*ptr).nameAlg) as usize - ptr as usize },
5716        4usize,
5717        "Offset of field: TPMS_NV_PUBLIC::nameAlg"
5718    );
5719    assert_eq!(
5720        unsafe { ::std::ptr::addr_of!((*ptr).attributes) as usize - ptr as usize },
5721        8usize,
5722        "Offset of field: TPMS_NV_PUBLIC::attributes"
5723    );
5724    assert_eq!(
5725        unsafe { ::std::ptr::addr_of!((*ptr).authPolicy) as usize - ptr as usize },
5726        12usize,
5727        "Offset of field: TPMS_NV_PUBLIC::authPolicy"
5728    );
5729    assert_eq!(
5730        unsafe { ::std::ptr::addr_of!((*ptr).dataSize) as usize - ptr as usize },
5731        78usize,
5732        "Offset of field: TPMS_NV_PUBLIC::dataSize"
5733    );
5734}
5735impl Default for TPMS_NV_PUBLIC {
5736    fn default() -> Self {
5737        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5738        unsafe {
5739            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5740            s.assume_init()
5741        }
5742    }
5743}
5744#[repr(C)]
5745#[derive(Debug, Copy, Clone)]
5746pub struct TPM2B_NV_PUBLIC {
5747    pub size: UINT16,
5748    pub nvPublic: TPMS_NV_PUBLIC,
5749}
5750#[test]
5751fn bindgen_test_layout_TPM2B_NV_PUBLIC() {
5752    const UNINIT: ::std::mem::MaybeUninit<TPM2B_NV_PUBLIC> = ::std::mem::MaybeUninit::uninit();
5753    let ptr = UNINIT.as_ptr();
5754    assert_eq!(
5755        ::std::mem::size_of::<TPM2B_NV_PUBLIC>(),
5756        84usize,
5757        "Size of TPM2B_NV_PUBLIC"
5758    );
5759    assert_eq!(
5760        ::std::mem::align_of::<TPM2B_NV_PUBLIC>(),
5761        4usize,
5762        "Alignment of TPM2B_NV_PUBLIC"
5763    );
5764    assert_eq!(
5765        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5766        0usize,
5767        "Offset of field: TPM2B_NV_PUBLIC::size"
5768    );
5769    assert_eq!(
5770        unsafe { ::std::ptr::addr_of!((*ptr).nvPublic) as usize - ptr as usize },
5771        4usize,
5772        "Offset of field: TPM2B_NV_PUBLIC::nvPublic"
5773    );
5774}
5775impl Default for TPM2B_NV_PUBLIC {
5776    fn default() -> Self {
5777        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5778        unsafe {
5779            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5780            s.assume_init()
5781        }
5782    }
5783}
5784#[repr(C)]
5785#[derive(Debug, Copy, Clone)]
5786pub struct TPM2B_CONTEXT_SENSITIVE {
5787    pub size: UINT16,
5788    pub buffer: [BYTE; 5120usize],
5789}
5790#[test]
5791fn bindgen_test_layout_TPM2B_CONTEXT_SENSITIVE() {
5792    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CONTEXT_SENSITIVE> =
5793        ::std::mem::MaybeUninit::uninit();
5794    let ptr = UNINIT.as_ptr();
5795    assert_eq!(
5796        ::std::mem::size_of::<TPM2B_CONTEXT_SENSITIVE>(),
5797        5122usize,
5798        "Size of TPM2B_CONTEXT_SENSITIVE"
5799    );
5800    assert_eq!(
5801        ::std::mem::align_of::<TPM2B_CONTEXT_SENSITIVE>(),
5802        2usize,
5803        "Alignment of TPM2B_CONTEXT_SENSITIVE"
5804    );
5805    assert_eq!(
5806        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5807        0usize,
5808        "Offset of field: TPM2B_CONTEXT_SENSITIVE::size"
5809    );
5810    assert_eq!(
5811        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
5812        2usize,
5813        "Offset of field: TPM2B_CONTEXT_SENSITIVE::buffer"
5814    );
5815}
5816impl Default for TPM2B_CONTEXT_SENSITIVE {
5817    fn default() -> Self {
5818        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5819        unsafe {
5820            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5821            s.assume_init()
5822        }
5823    }
5824}
5825#[repr(C)]
5826#[derive(Debug, Copy, Clone)]
5827pub struct TPMS_CONTEXT_DATA {
5828    pub integrity: TPM2B_DIGEST,
5829    pub encrypted: TPM2B_CONTEXT_SENSITIVE,
5830}
5831#[test]
5832fn bindgen_test_layout_TPMS_CONTEXT_DATA() {
5833    const UNINIT: ::std::mem::MaybeUninit<TPMS_CONTEXT_DATA> = ::std::mem::MaybeUninit::uninit();
5834    let ptr = UNINIT.as_ptr();
5835    assert_eq!(
5836        ::std::mem::size_of::<TPMS_CONTEXT_DATA>(),
5837        5188usize,
5838        "Size of TPMS_CONTEXT_DATA"
5839    );
5840    assert_eq!(
5841        ::std::mem::align_of::<TPMS_CONTEXT_DATA>(),
5842        2usize,
5843        "Alignment of TPMS_CONTEXT_DATA"
5844    );
5845    assert_eq!(
5846        unsafe { ::std::ptr::addr_of!((*ptr).integrity) as usize - ptr as usize },
5847        0usize,
5848        "Offset of field: TPMS_CONTEXT_DATA::integrity"
5849    );
5850    assert_eq!(
5851        unsafe { ::std::ptr::addr_of!((*ptr).encrypted) as usize - ptr as usize },
5852        66usize,
5853        "Offset of field: TPMS_CONTEXT_DATA::encrypted"
5854    );
5855}
5856impl Default for TPMS_CONTEXT_DATA {
5857    fn default() -> Self {
5858        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5859        unsafe {
5860            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5861            s.assume_init()
5862        }
5863    }
5864}
5865#[repr(C)]
5866#[derive(Debug, Copy, Clone)]
5867pub struct TPM2B_CONTEXT_DATA {
5868    pub size: UINT16,
5869    pub buffer: [BYTE; 5188usize],
5870}
5871#[test]
5872fn bindgen_test_layout_TPM2B_CONTEXT_DATA() {
5873    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CONTEXT_DATA> = ::std::mem::MaybeUninit::uninit();
5874    let ptr = UNINIT.as_ptr();
5875    assert_eq!(
5876        ::std::mem::size_of::<TPM2B_CONTEXT_DATA>(),
5877        5190usize,
5878        "Size of TPM2B_CONTEXT_DATA"
5879    );
5880    assert_eq!(
5881        ::std::mem::align_of::<TPM2B_CONTEXT_DATA>(),
5882        2usize,
5883        "Alignment of TPM2B_CONTEXT_DATA"
5884    );
5885    assert_eq!(
5886        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
5887        0usize,
5888        "Offset of field: TPM2B_CONTEXT_DATA::size"
5889    );
5890    assert_eq!(
5891        unsafe { ::std::ptr::addr_of!((*ptr).buffer) as usize - ptr as usize },
5892        2usize,
5893        "Offset of field: TPM2B_CONTEXT_DATA::buffer"
5894    );
5895}
5896impl Default for TPM2B_CONTEXT_DATA {
5897    fn default() -> Self {
5898        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5899        unsafe {
5900            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5901            s.assume_init()
5902        }
5903    }
5904}
5905#[repr(C)]
5906#[derive(Debug, Copy, Clone)]
5907pub struct TPMS_CONTEXT {
5908    pub sequence: UINT64,
5909    pub savedHandle: TPMI_DH_CONTEXT,
5910    pub hierarchy: TPMI_RH_HIERARCHY,
5911    pub contextBlob: TPM2B_CONTEXT_DATA,
5912}
5913#[test]
5914fn bindgen_test_layout_TPMS_CONTEXT() {
5915    const UNINIT: ::std::mem::MaybeUninit<TPMS_CONTEXT> = ::std::mem::MaybeUninit::uninit();
5916    let ptr = UNINIT.as_ptr();
5917    assert_eq!(
5918        ::std::mem::size_of::<TPMS_CONTEXT>(),
5919        5208usize,
5920        "Size of TPMS_CONTEXT"
5921    );
5922    assert_eq!(
5923        ::std::mem::align_of::<TPMS_CONTEXT>(),
5924        8usize,
5925        "Alignment of TPMS_CONTEXT"
5926    );
5927    assert_eq!(
5928        unsafe { ::std::ptr::addr_of!((*ptr).sequence) as usize - ptr as usize },
5929        0usize,
5930        "Offset of field: TPMS_CONTEXT::sequence"
5931    );
5932    assert_eq!(
5933        unsafe { ::std::ptr::addr_of!((*ptr).savedHandle) as usize - ptr as usize },
5934        8usize,
5935        "Offset of field: TPMS_CONTEXT::savedHandle"
5936    );
5937    assert_eq!(
5938        unsafe { ::std::ptr::addr_of!((*ptr).hierarchy) as usize - ptr as usize },
5939        12usize,
5940        "Offset of field: TPMS_CONTEXT::hierarchy"
5941    );
5942    assert_eq!(
5943        unsafe { ::std::ptr::addr_of!((*ptr).contextBlob) as usize - ptr as usize },
5944        16usize,
5945        "Offset of field: TPMS_CONTEXT::contextBlob"
5946    );
5947}
5948impl Default for TPMS_CONTEXT {
5949    fn default() -> Self {
5950        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
5951        unsafe {
5952            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
5953            s.assume_init()
5954        }
5955    }
5956}
5957#[repr(C)]
5958#[derive(Debug, Copy, Clone)]
5959pub struct TPMS_CREATION_DATA {
5960    pub pcrSelect: TPML_PCR_SELECTION,
5961    pub pcrDigest: TPM2B_DIGEST,
5962    pub locality: TPMA_LOCALITY,
5963    pub parentNameAlg: TPM2_ALG_ID,
5964    pub parentName: TPM2B_NAME,
5965    pub parentQualifiedName: TPM2B_NAME,
5966    pub outsideInfo: TPM2B_DATA,
5967}
5968#[test]
5969fn bindgen_test_layout_TPMS_CREATION_DATA() {
5970    const UNINIT: ::std::mem::MaybeUninit<TPMS_CREATION_DATA> = ::std::mem::MaybeUninit::uninit();
5971    let ptr = UNINIT.as_ptr();
5972    assert_eq!(
5973        ::std::mem::size_of::<TPMS_CREATION_DATA>(),
5974        408usize,
5975        "Size of TPMS_CREATION_DATA"
5976    );
5977    assert_eq!(
5978        ::std::mem::align_of::<TPMS_CREATION_DATA>(),
5979        4usize,
5980        "Alignment of TPMS_CREATION_DATA"
5981    );
5982    assert_eq!(
5983        unsafe { ::std::ptr::addr_of!((*ptr).pcrSelect) as usize - ptr as usize },
5984        0usize,
5985        "Offset of field: TPMS_CREATION_DATA::pcrSelect"
5986    );
5987    assert_eq!(
5988        unsafe { ::std::ptr::addr_of!((*ptr).pcrDigest) as usize - ptr as usize },
5989        132usize,
5990        "Offset of field: TPMS_CREATION_DATA::pcrDigest"
5991    );
5992    assert_eq!(
5993        unsafe { ::std::ptr::addr_of!((*ptr).locality) as usize - ptr as usize },
5994        198usize,
5995        "Offset of field: TPMS_CREATION_DATA::locality"
5996    );
5997    assert_eq!(
5998        unsafe { ::std::ptr::addr_of!((*ptr).parentNameAlg) as usize - ptr as usize },
5999        200usize,
6000        "Offset of field: TPMS_CREATION_DATA::parentNameAlg"
6001    );
6002    assert_eq!(
6003        unsafe { ::std::ptr::addr_of!((*ptr).parentName) as usize - ptr as usize },
6004        202usize,
6005        "Offset of field: TPMS_CREATION_DATA::parentName"
6006    );
6007    assert_eq!(
6008        unsafe { ::std::ptr::addr_of!((*ptr).parentQualifiedName) as usize - ptr as usize },
6009        272usize,
6010        "Offset of field: TPMS_CREATION_DATA::parentQualifiedName"
6011    );
6012    assert_eq!(
6013        unsafe { ::std::ptr::addr_of!((*ptr).outsideInfo) as usize - ptr as usize },
6014        342usize,
6015        "Offset of field: TPMS_CREATION_DATA::outsideInfo"
6016    );
6017}
6018impl Default for TPMS_CREATION_DATA {
6019    fn default() -> Self {
6020        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6021        unsafe {
6022            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6023            s.assume_init()
6024        }
6025    }
6026}
6027#[repr(C)]
6028#[derive(Debug, Copy, Clone)]
6029pub struct TPM2B_CREATION_DATA {
6030    pub size: UINT16,
6031    pub creationData: TPMS_CREATION_DATA,
6032}
6033#[test]
6034fn bindgen_test_layout_TPM2B_CREATION_DATA() {
6035    const UNINIT: ::std::mem::MaybeUninit<TPM2B_CREATION_DATA> = ::std::mem::MaybeUninit::uninit();
6036    let ptr = UNINIT.as_ptr();
6037    assert_eq!(
6038        ::std::mem::size_of::<TPM2B_CREATION_DATA>(),
6039        412usize,
6040        "Size of TPM2B_CREATION_DATA"
6041    );
6042    assert_eq!(
6043        ::std::mem::align_of::<TPM2B_CREATION_DATA>(),
6044        4usize,
6045        "Alignment of TPM2B_CREATION_DATA"
6046    );
6047    assert_eq!(
6048        unsafe { ::std::ptr::addr_of!((*ptr).size) as usize - ptr as usize },
6049        0usize,
6050        "Offset of field: TPM2B_CREATION_DATA::size"
6051    );
6052    assert_eq!(
6053        unsafe { ::std::ptr::addr_of!((*ptr).creationData) as usize - ptr as usize },
6054        4usize,
6055        "Offset of field: TPM2B_CREATION_DATA::creationData"
6056    );
6057}
6058impl Default for TPM2B_CREATION_DATA {
6059    fn default() -> Self {
6060        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6061        unsafe {
6062            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6063            s.assume_init()
6064        }
6065    }
6066}
6067pub type TPM_AT = UINT32;
6068pub type TPM_EA = UINT32;
6069#[repr(C)]
6070#[derive(Debug, Default, Copy, Clone)]
6071pub struct TPMS_AC_OUTPUT {
6072    pub tag: TPM_AT,
6073    pub data: UINT32,
6074}
6075#[test]
6076fn bindgen_test_layout_TPMS_AC_OUTPUT() {
6077    const UNINIT: ::std::mem::MaybeUninit<TPMS_AC_OUTPUT> = ::std::mem::MaybeUninit::uninit();
6078    let ptr = UNINIT.as_ptr();
6079    assert_eq!(
6080        ::std::mem::size_of::<TPMS_AC_OUTPUT>(),
6081        8usize,
6082        "Size of TPMS_AC_OUTPUT"
6083    );
6084    assert_eq!(
6085        ::std::mem::align_of::<TPMS_AC_OUTPUT>(),
6086        4usize,
6087        "Alignment of TPMS_AC_OUTPUT"
6088    );
6089    assert_eq!(
6090        unsafe { ::std::ptr::addr_of!((*ptr).tag) as usize - ptr as usize },
6091        0usize,
6092        "Offset of field: TPMS_AC_OUTPUT::tag"
6093    );
6094    assert_eq!(
6095        unsafe { ::std::ptr::addr_of!((*ptr).data) as usize - ptr as usize },
6096        4usize,
6097        "Offset of field: TPMS_AC_OUTPUT::data"
6098    );
6099}
6100#[repr(C)]
6101#[derive(Debug, Copy, Clone)]
6102pub struct TPML_AC_CAPABILITIES {
6103    pub count: UINT32,
6104    pub acCapabilities: [TPMS_AC_OUTPUT; 128usize],
6105}
6106#[test]
6107fn bindgen_test_layout_TPML_AC_CAPABILITIES() {
6108    const UNINIT: ::std::mem::MaybeUninit<TPML_AC_CAPABILITIES> = ::std::mem::MaybeUninit::uninit();
6109    let ptr = UNINIT.as_ptr();
6110    assert_eq!(
6111        ::std::mem::size_of::<TPML_AC_CAPABILITIES>(),
6112        1028usize,
6113        "Size of TPML_AC_CAPABILITIES"
6114    );
6115    assert_eq!(
6116        ::std::mem::align_of::<TPML_AC_CAPABILITIES>(),
6117        4usize,
6118        "Alignment of TPML_AC_CAPABILITIES"
6119    );
6120    assert_eq!(
6121        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
6122        0usize,
6123        "Offset of field: TPML_AC_CAPABILITIES::count"
6124    );
6125    assert_eq!(
6126        unsafe { ::std::ptr::addr_of!((*ptr).acCapabilities) as usize - ptr as usize },
6127        4usize,
6128        "Offset of field: TPML_AC_CAPABILITIES::acCapabilities"
6129    );
6130}
6131impl Default for TPML_AC_CAPABILITIES {
6132    fn default() -> Self {
6133        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6134        unsafe {
6135            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6136            s.assume_init()
6137        }
6138    }
6139}
6140#[repr(C)]
6141#[derive(Debug, Copy, Clone)]
6142pub struct TPML_INTEL_PTT_PROPERTY {
6143    pub count: UINT32,
6144    pub property: [UINT32; 256usize],
6145}
6146#[test]
6147fn bindgen_test_layout_TPML_INTEL_PTT_PROPERTY() {
6148    const UNINIT: ::std::mem::MaybeUninit<TPML_INTEL_PTT_PROPERTY> =
6149        ::std::mem::MaybeUninit::uninit();
6150    let ptr = UNINIT.as_ptr();
6151    assert_eq!(
6152        ::std::mem::size_of::<TPML_INTEL_PTT_PROPERTY>(),
6153        1028usize,
6154        "Size of TPML_INTEL_PTT_PROPERTY"
6155    );
6156    assert_eq!(
6157        ::std::mem::align_of::<TPML_INTEL_PTT_PROPERTY>(),
6158        4usize,
6159        "Alignment of TPML_INTEL_PTT_PROPERTY"
6160    );
6161    assert_eq!(
6162        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
6163        0usize,
6164        "Offset of field: TPML_INTEL_PTT_PROPERTY::count"
6165    );
6166    assert_eq!(
6167        unsafe { ::std::ptr::addr_of!((*ptr).property) as usize - ptr as usize },
6168        4usize,
6169        "Offset of field: TPML_INTEL_PTT_PROPERTY::property"
6170    );
6171}
6172impl Default for TPML_INTEL_PTT_PROPERTY {
6173    fn default() -> Self {
6174        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6175        unsafe {
6176            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6177            s.assume_init()
6178        }
6179    }
6180}
6181pub type nfds_t = ::std::os::raw::c_ulong;
6182#[repr(C)]
6183#[derive(Debug, Default, Copy, Clone)]
6184pub struct pollfd {
6185    pub fd: ::std::os::raw::c_int,
6186    pub events: ::std::os::raw::c_short,
6187    pub revents: ::std::os::raw::c_short,
6188}
6189#[test]
6190fn bindgen_test_layout_pollfd() {
6191    const UNINIT: ::std::mem::MaybeUninit<pollfd> = ::std::mem::MaybeUninit::uninit();
6192    let ptr = UNINIT.as_ptr();
6193    assert_eq!(::std::mem::size_of::<pollfd>(), 8usize, "Size of pollfd");
6194    assert_eq!(
6195        ::std::mem::align_of::<pollfd>(),
6196        4usize,
6197        "Alignment of pollfd"
6198    );
6199    assert_eq!(
6200        unsafe { ::std::ptr::addr_of!((*ptr).fd) as usize - ptr as usize },
6201        0usize,
6202        "Offset of field: pollfd::fd"
6203    );
6204    assert_eq!(
6205        unsafe { ::std::ptr::addr_of!((*ptr).events) as usize - ptr as usize },
6206        4usize,
6207        "Offset of field: pollfd::events"
6208    );
6209    assert_eq!(
6210        unsafe { ::std::ptr::addr_of!((*ptr).revents) as usize - ptr as usize },
6211        6usize,
6212        "Offset of field: pollfd::revents"
6213    );
6214}
6215extern "C" {
6216    pub fn poll(
6217        __fds: *mut pollfd,
6218        __nfds: nfds_t,
6219        __timeout: ::std::os::raw::c_int,
6220    ) -> ::std::os::raw::c_int;
6221}
6222pub type TSS2_TCTI_POLL_HANDLE = pollfd;
6223#[repr(C)]
6224#[derive(Debug, Copy, Clone)]
6225pub struct TSS2_TCTI_OPAQUE_CONTEXT_BLOB {
6226    _unused: [u8; 0],
6227}
6228pub type TSS2_TCTI_CONTEXT = TSS2_TCTI_OPAQUE_CONTEXT_BLOB;
6229pub type TSS2_TCTI_TRANSMIT_FCN = ::std::option::Option<
6230    unsafe extern "C" fn(
6231        tctiContext: *mut TSS2_TCTI_CONTEXT,
6232        size: size_t,
6233        command: *const u8,
6234    ) -> TSS2_RC,
6235>;
6236pub type TSS2_TCTI_RECEIVE_FCN = ::std::option::Option<
6237    unsafe extern "C" fn(
6238        tctiContext: *mut TSS2_TCTI_CONTEXT,
6239        size: *mut size_t,
6240        response: *mut u8,
6241        timeout: i32,
6242    ) -> TSS2_RC,
6243>;
6244pub type TSS2_TCTI_FINALIZE_FCN =
6245    ::std::option::Option<unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT)>;
6246pub type TSS2_TCTI_CANCEL_FCN =
6247    ::std::option::Option<unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT) -> TSS2_RC>;
6248pub type TSS2_TCTI_GET_POLL_HANDLES_FCN = ::std::option::Option<
6249    unsafe extern "C" fn(
6250        tctiContext: *mut TSS2_TCTI_CONTEXT,
6251        handles: *mut TSS2_TCTI_POLL_HANDLE,
6252        num_handles: *mut size_t,
6253    ) -> TSS2_RC,
6254>;
6255pub type TSS2_TCTI_SET_LOCALITY_FCN = ::std::option::Option<
6256    unsafe extern "C" fn(tctiContext: *mut TSS2_TCTI_CONTEXT, locality: u8) -> TSS2_RC,
6257>;
6258pub type TSS2_TCTI_MAKE_STICKY_FCN = ::std::option::Option<
6259    unsafe extern "C" fn(
6260        tctiContext: *mut TSS2_TCTI_CONTEXT,
6261        handle: *mut TPM2_HANDLE,
6262        sticky: u8,
6263    ) -> TSS2_RC,
6264>;
6265pub type TSS2_TCTI_INIT_FUNC = ::std::option::Option<
6266    unsafe extern "C" fn(
6267        tctiContext: *mut TSS2_TCTI_CONTEXT,
6268        size: *mut size_t,
6269        config: *const ::std::os::raw::c_char,
6270    ) -> TSS2_RC,
6271>;
6272#[repr(C)]
6273#[derive(Debug, Default, Copy, Clone)]
6274pub struct TSS2_TCTI_CONTEXT_COMMON_V1 {
6275    pub magic: u64,
6276    pub version: u32,
6277    pub transmit: TSS2_TCTI_TRANSMIT_FCN,
6278    pub receive: TSS2_TCTI_RECEIVE_FCN,
6279    pub finalize: TSS2_TCTI_FINALIZE_FCN,
6280    pub cancel: TSS2_TCTI_CANCEL_FCN,
6281    pub getPollHandles: TSS2_TCTI_GET_POLL_HANDLES_FCN,
6282    pub setLocality: TSS2_TCTI_SET_LOCALITY_FCN,
6283}
6284#[test]
6285fn bindgen_test_layout_TSS2_TCTI_CONTEXT_COMMON_V1() {
6286    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_CONTEXT_COMMON_V1> =
6287        ::std::mem::MaybeUninit::uninit();
6288    let ptr = UNINIT.as_ptr();
6289    assert_eq!(
6290        ::std::mem::size_of::<TSS2_TCTI_CONTEXT_COMMON_V1>(),
6291        64usize,
6292        "Size of TSS2_TCTI_CONTEXT_COMMON_V1"
6293    );
6294    assert_eq!(
6295        ::std::mem::align_of::<TSS2_TCTI_CONTEXT_COMMON_V1>(),
6296        8usize,
6297        "Alignment of TSS2_TCTI_CONTEXT_COMMON_V1"
6298    );
6299    assert_eq!(
6300        unsafe { ::std::ptr::addr_of!((*ptr).magic) as usize - ptr as usize },
6301        0usize,
6302        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::magic"
6303    );
6304    assert_eq!(
6305        unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize },
6306        8usize,
6307        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::version"
6308    );
6309    assert_eq!(
6310        unsafe { ::std::ptr::addr_of!((*ptr).transmit) as usize - ptr as usize },
6311        16usize,
6312        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::transmit"
6313    );
6314    assert_eq!(
6315        unsafe { ::std::ptr::addr_of!((*ptr).receive) as usize - ptr as usize },
6316        24usize,
6317        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::receive"
6318    );
6319    assert_eq!(
6320        unsafe { ::std::ptr::addr_of!((*ptr).finalize) as usize - ptr as usize },
6321        32usize,
6322        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::finalize"
6323    );
6324    assert_eq!(
6325        unsafe { ::std::ptr::addr_of!((*ptr).cancel) as usize - ptr as usize },
6326        40usize,
6327        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::cancel"
6328    );
6329    assert_eq!(
6330        unsafe { ::std::ptr::addr_of!((*ptr).getPollHandles) as usize - ptr as usize },
6331        48usize,
6332        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::getPollHandles"
6333    );
6334    assert_eq!(
6335        unsafe { ::std::ptr::addr_of!((*ptr).setLocality) as usize - ptr as usize },
6336        56usize,
6337        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V1::setLocality"
6338    );
6339}
6340#[repr(C)]
6341#[derive(Debug, Default, Copy, Clone)]
6342pub struct TSS2_TCTI_CONTEXT_COMMON_V2 {
6343    pub v1: TSS2_TCTI_CONTEXT_COMMON_V1,
6344    pub makeSticky: TSS2_TCTI_MAKE_STICKY_FCN,
6345}
6346#[test]
6347fn bindgen_test_layout_TSS2_TCTI_CONTEXT_COMMON_V2() {
6348    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_CONTEXT_COMMON_V2> =
6349        ::std::mem::MaybeUninit::uninit();
6350    let ptr = UNINIT.as_ptr();
6351    assert_eq!(
6352        ::std::mem::size_of::<TSS2_TCTI_CONTEXT_COMMON_V2>(),
6353        72usize,
6354        "Size of TSS2_TCTI_CONTEXT_COMMON_V2"
6355    );
6356    assert_eq!(
6357        ::std::mem::align_of::<TSS2_TCTI_CONTEXT_COMMON_V2>(),
6358        8usize,
6359        "Alignment of TSS2_TCTI_CONTEXT_COMMON_V2"
6360    );
6361    assert_eq!(
6362        unsafe { ::std::ptr::addr_of!((*ptr).v1) as usize - ptr as usize },
6363        0usize,
6364        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V2::v1"
6365    );
6366    assert_eq!(
6367        unsafe { ::std::ptr::addr_of!((*ptr).makeSticky) as usize - ptr as usize },
6368        64usize,
6369        "Offset of field: TSS2_TCTI_CONTEXT_COMMON_V2::makeSticky"
6370    );
6371}
6372pub type TSS2_TCTI_CONTEXT_COMMON_CURRENT = TSS2_TCTI_CONTEXT_COMMON_V2;
6373#[repr(C)]
6374#[derive(Debug, Copy, Clone)]
6375pub struct TSS2_TCTI_INFO {
6376    pub version: u32,
6377    pub name: *const ::std::os::raw::c_char,
6378    pub description: *const ::std::os::raw::c_char,
6379    pub config_help: *const ::std::os::raw::c_char,
6380    pub init: TSS2_TCTI_INIT_FUNC,
6381}
6382#[test]
6383fn bindgen_test_layout_TSS2_TCTI_INFO() {
6384    const UNINIT: ::std::mem::MaybeUninit<TSS2_TCTI_INFO> = ::std::mem::MaybeUninit::uninit();
6385    let ptr = UNINIT.as_ptr();
6386    assert_eq!(
6387        ::std::mem::size_of::<TSS2_TCTI_INFO>(),
6388        40usize,
6389        "Size of TSS2_TCTI_INFO"
6390    );
6391    assert_eq!(
6392        ::std::mem::align_of::<TSS2_TCTI_INFO>(),
6393        8usize,
6394        "Alignment of TSS2_TCTI_INFO"
6395    );
6396    assert_eq!(
6397        unsafe { ::std::ptr::addr_of!((*ptr).version) as usize - ptr as usize },
6398        0usize,
6399        "Offset of field: TSS2_TCTI_INFO::version"
6400    );
6401    assert_eq!(
6402        unsafe { ::std::ptr::addr_of!((*ptr).name) as usize - ptr as usize },
6403        8usize,
6404        "Offset of field: TSS2_TCTI_INFO::name"
6405    );
6406    assert_eq!(
6407        unsafe { ::std::ptr::addr_of!((*ptr).description) as usize - ptr as usize },
6408        16usize,
6409        "Offset of field: TSS2_TCTI_INFO::description"
6410    );
6411    assert_eq!(
6412        unsafe { ::std::ptr::addr_of!((*ptr).config_help) as usize - ptr as usize },
6413        24usize,
6414        "Offset of field: TSS2_TCTI_INFO::config_help"
6415    );
6416    assert_eq!(
6417        unsafe { ::std::ptr::addr_of!((*ptr).init) as usize - ptr as usize },
6418        32usize,
6419        "Offset of field: TSS2_TCTI_INFO::init"
6420    );
6421}
6422impl Default for TSS2_TCTI_INFO {
6423    fn default() -> Self {
6424        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6425        unsafe {
6426            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6427            s.assume_init()
6428        }
6429    }
6430}
6431pub type TSS2_TCTI_INFO_FUNC =
6432    ::std::option::Option<unsafe extern "C" fn() -> *const TSS2_TCTI_INFO>;
6433#[repr(C)]
6434#[derive(Debug, Copy, Clone)]
6435pub struct _TSS2_SYS_OPAQUE_CONTEXT_BLOB {
6436    _unused: [u8; 0],
6437}
6438pub type TSS2_SYS_CONTEXT = _TSS2_SYS_OPAQUE_CONTEXT_BLOB;
6439#[repr(C)]
6440#[derive(Debug, Copy, Clone)]
6441pub struct TSS2L_SYS_AUTH_COMMAND {
6442    pub count: u16,
6443    pub auths: [TPMS_AUTH_COMMAND; 3usize],
6444}
6445#[test]
6446fn bindgen_test_layout_TSS2L_SYS_AUTH_COMMAND() {
6447    const UNINIT: ::std::mem::MaybeUninit<TSS2L_SYS_AUTH_COMMAND> =
6448        ::std::mem::MaybeUninit::uninit();
6449    let ptr = UNINIT.as_ptr();
6450    assert_eq!(
6451        ::std::mem::size_of::<TSS2L_SYS_AUTH_COMMAND>(),
6452        424usize,
6453        "Size of TSS2L_SYS_AUTH_COMMAND"
6454    );
6455    assert_eq!(
6456        ::std::mem::align_of::<TSS2L_SYS_AUTH_COMMAND>(),
6457        4usize,
6458        "Alignment of TSS2L_SYS_AUTH_COMMAND"
6459    );
6460    assert_eq!(
6461        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
6462        0usize,
6463        "Offset of field: TSS2L_SYS_AUTH_COMMAND::count"
6464    );
6465    assert_eq!(
6466        unsafe { ::std::ptr::addr_of!((*ptr).auths) as usize - ptr as usize },
6467        4usize,
6468        "Offset of field: TSS2L_SYS_AUTH_COMMAND::auths"
6469    );
6470}
6471impl Default for TSS2L_SYS_AUTH_COMMAND {
6472    fn default() -> Self {
6473        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6474        unsafe {
6475            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6476            s.assume_init()
6477        }
6478    }
6479}
6480#[repr(C)]
6481#[derive(Debug, Copy, Clone)]
6482pub struct TSS2L_SYS_AUTH_RESPONSE {
6483    pub count: u16,
6484    pub auths: [TPMS_AUTH_RESPONSE; 3usize],
6485}
6486#[test]
6487fn bindgen_test_layout_TSS2L_SYS_AUTH_RESPONSE() {
6488    const UNINIT: ::std::mem::MaybeUninit<TSS2L_SYS_AUTH_RESPONSE> =
6489        ::std::mem::MaybeUninit::uninit();
6490    let ptr = UNINIT.as_ptr();
6491    assert_eq!(
6492        ::std::mem::size_of::<TSS2L_SYS_AUTH_RESPONSE>(),
6493        404usize,
6494        "Size of TSS2L_SYS_AUTH_RESPONSE"
6495    );
6496    assert_eq!(
6497        ::std::mem::align_of::<TSS2L_SYS_AUTH_RESPONSE>(),
6498        2usize,
6499        "Alignment of TSS2L_SYS_AUTH_RESPONSE"
6500    );
6501    assert_eq!(
6502        unsafe { ::std::ptr::addr_of!((*ptr).count) as usize - ptr as usize },
6503        0usize,
6504        "Offset of field: TSS2L_SYS_AUTH_RESPONSE::count"
6505    );
6506    assert_eq!(
6507        unsafe { ::std::ptr::addr_of!((*ptr).auths) as usize - ptr as usize },
6508        2usize,
6509        "Offset of field: TSS2L_SYS_AUTH_RESPONSE::auths"
6510    );
6511}
6512impl Default for TSS2L_SYS_AUTH_RESPONSE {
6513    fn default() -> Self {
6514        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
6515        unsafe {
6516            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
6517            s.assume_init()
6518        }
6519    }
6520}
6521extern "C" {
6522    pub fn Tss2_Sys_GetContextSize(maxCommandResponseSize: size_t) -> size_t;
6523}
6524extern "C" {
6525    pub fn Tss2_Sys_Initialize(
6526        sysContext: *mut TSS2_SYS_CONTEXT,
6527        contextSize: size_t,
6528        tctiContext: *mut TSS2_TCTI_CONTEXT,
6529        abiVersion: *mut TSS2_ABI_VERSION,
6530    ) -> TSS2_RC;
6531}
6532extern "C" {
6533    pub fn Tss2_Sys_Finalize(sysContext: *mut TSS2_SYS_CONTEXT);
6534}
6535extern "C" {
6536    pub fn Tss2_Sys_GetTctiContext(
6537        sysContext: *mut TSS2_SYS_CONTEXT,
6538        tctiContext: *mut *mut TSS2_TCTI_CONTEXT,
6539    ) -> TSS2_RC;
6540}
6541extern "C" {
6542    pub fn Tss2_Sys_GetDecryptParam(
6543        sysContext: *mut TSS2_SYS_CONTEXT,
6544        decryptParamSize: *mut size_t,
6545        decryptParamBuffer: *mut *const u8,
6546    ) -> TSS2_RC;
6547}
6548extern "C" {
6549    pub fn Tss2_Sys_SetDecryptParam(
6550        sysContext: *mut TSS2_SYS_CONTEXT,
6551        decryptParamSize: size_t,
6552        decryptParamBuffer: *const u8,
6553    ) -> TSS2_RC;
6554}
6555extern "C" {
6556    pub fn Tss2_Sys_GetCpBuffer(
6557        sysContext: *mut TSS2_SYS_CONTEXT,
6558        cpBufferUsedSize: *mut size_t,
6559        cpBuffer: *mut *const u8,
6560    ) -> TSS2_RC;
6561}
6562extern "C" {
6563    pub fn Tss2_Sys_SetCmdAuths(
6564        sysContext: *mut TSS2_SYS_CONTEXT,
6565        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6566    ) -> TSS2_RC;
6567}
6568extern "C" {
6569    pub fn Tss2_Sys_ExecuteAsync(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6570}
6571extern "C" {
6572    pub fn Tss2_Sys_ExecuteFinish(sysContext: *mut TSS2_SYS_CONTEXT, timeout: i32) -> TSS2_RC;
6573}
6574extern "C" {
6575    pub fn Tss2_Sys_Execute(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6576}
6577extern "C" {
6578    pub fn Tss2_Sys_GetCommandCode(
6579        sysContext: *mut TSS2_SYS_CONTEXT,
6580        commandCode: *mut UINT8,
6581    ) -> TSS2_RC;
6582}
6583extern "C" {
6584    pub fn Tss2_Sys_GetRspAuths(
6585        sysContext: *mut TSS2_SYS_CONTEXT,
6586        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6587    ) -> TSS2_RC;
6588}
6589extern "C" {
6590    pub fn Tss2_Sys_GetEncryptParam(
6591        sysContext: *mut TSS2_SYS_CONTEXT,
6592        encryptParamSize: *mut size_t,
6593        encryptParamBuffer: *mut *const u8,
6594    ) -> TSS2_RC;
6595}
6596extern "C" {
6597    pub fn Tss2_Sys_SetEncryptParam(
6598        sysContext: *mut TSS2_SYS_CONTEXT,
6599        encryptParamSize: size_t,
6600        encryptParamBuffer: *const u8,
6601    ) -> TSS2_RC;
6602}
6603extern "C" {
6604    pub fn Tss2_Sys_GetRpBuffer(
6605        sysContext: *mut TSS2_SYS_CONTEXT,
6606        rpBufferUsedSize: *mut size_t,
6607        rpBuffer: *mut *const u8,
6608    ) -> TSS2_RC;
6609}
6610extern "C" {
6611    pub fn Tss2_Sys_Startup_Prepare(
6612        sysContext: *mut TSS2_SYS_CONTEXT,
6613        startupType: TPM2_SU,
6614    ) -> TSS2_RC;
6615}
6616extern "C" {
6617    pub fn Tss2_Sys_Startup_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6618}
6619extern "C" {
6620    pub fn Tss2_Sys_Startup(sysContext: *mut TSS2_SYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
6621}
6622extern "C" {
6623    pub fn Tss2_Sys_Shutdown_Prepare(
6624        sysContext: *mut TSS2_SYS_CONTEXT,
6625        shutdownType: TPM2_SU,
6626    ) -> TSS2_RC;
6627}
6628extern "C" {
6629    pub fn Tss2_Sys_Shutdown_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6630}
6631extern "C" {
6632    pub fn Tss2_Sys_Shutdown(
6633        sysContext: *mut TSS2_SYS_CONTEXT,
6634        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6635        shutdownType: TPM2_SU,
6636        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6637    ) -> TSS2_RC;
6638}
6639extern "C" {
6640    pub fn Tss2_Sys_SelfTest_Prepare(
6641        sysContext: *mut TSS2_SYS_CONTEXT,
6642        fullTest: TPMI_YES_NO,
6643    ) -> TSS2_RC;
6644}
6645extern "C" {
6646    pub fn Tss2_Sys_SelfTest_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6647}
6648extern "C" {
6649    pub fn Tss2_Sys_SelfTest(
6650        sysContext: *mut TSS2_SYS_CONTEXT,
6651        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6652        fullTest: TPMI_YES_NO,
6653        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6654    ) -> TSS2_RC;
6655}
6656extern "C" {
6657    pub fn Tss2_Sys_IncrementalSelfTest_Prepare(
6658        sysContext: *mut TSS2_SYS_CONTEXT,
6659        toTest: *const TPML_ALG,
6660    ) -> TSS2_RC;
6661}
6662extern "C" {
6663    pub fn Tss2_Sys_IncrementalSelfTest_Complete(
6664        sysContext: *mut TSS2_SYS_CONTEXT,
6665        toDoList: *mut TPML_ALG,
6666    ) -> TSS2_RC;
6667}
6668extern "C" {
6669    pub fn Tss2_Sys_IncrementalSelfTest(
6670        sysContext: *mut TSS2_SYS_CONTEXT,
6671        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6672        toTest: *const TPML_ALG,
6673        toDoList: *mut TPML_ALG,
6674        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6675    ) -> TSS2_RC;
6676}
6677extern "C" {
6678    pub fn Tss2_Sys_GetTestResult_Prepare(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6679}
6680extern "C" {
6681    pub fn Tss2_Sys_GetTestResult_Complete(
6682        sysContext: *mut TSS2_SYS_CONTEXT,
6683        outData: *mut TPM2B_MAX_BUFFER,
6684        testResult: *mut TPM2_RC,
6685    ) -> TSS2_RC;
6686}
6687extern "C" {
6688    pub fn Tss2_Sys_GetTestResult(
6689        sysContext: *mut TSS2_SYS_CONTEXT,
6690        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6691        outData: *mut TPM2B_MAX_BUFFER,
6692        testResult: *mut TPM2_RC,
6693        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6694    ) -> TSS2_RC;
6695}
6696extern "C" {
6697    pub fn Tss2_Sys_StartAuthSession_Prepare(
6698        sysContext: *mut TSS2_SYS_CONTEXT,
6699        tpmKey: TPMI_DH_OBJECT,
6700        bind: TPMI_DH_ENTITY,
6701        nonceCaller: *const TPM2B_NONCE,
6702        encryptedSalt: *const TPM2B_ENCRYPTED_SECRET,
6703        sessionType: TPM2_SE,
6704        symmetric: *const TPMT_SYM_DEF,
6705        authHash: TPMI_ALG_HASH,
6706    ) -> TSS2_RC;
6707}
6708extern "C" {
6709    pub fn Tss2_Sys_StartAuthSession_Complete(
6710        sysContext: *mut TSS2_SYS_CONTEXT,
6711        sessionHandle: *mut TPMI_SH_AUTH_SESSION,
6712        nonceTPM: *mut TPM2B_NONCE,
6713    ) -> TSS2_RC;
6714}
6715extern "C" {
6716    pub fn Tss2_Sys_StartAuthSession(
6717        sysContext: *mut TSS2_SYS_CONTEXT,
6718        tpmKey: TPMI_DH_OBJECT,
6719        bind: TPMI_DH_ENTITY,
6720        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6721        nonceCaller: *const TPM2B_NONCE,
6722        encryptedSalt: *const TPM2B_ENCRYPTED_SECRET,
6723        sessionType: TPM2_SE,
6724        symmetric: *const TPMT_SYM_DEF,
6725        authHash: TPMI_ALG_HASH,
6726        sessionHandle: *mut TPMI_SH_AUTH_SESSION,
6727        nonceTPM: *mut TPM2B_NONCE,
6728        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6729    ) -> TSS2_RC;
6730}
6731extern "C" {
6732    pub fn Tss2_Sys_PolicyRestart_Prepare(
6733        sysContext: *mut TSS2_SYS_CONTEXT,
6734        sessionHandle: TPMI_SH_POLICY,
6735    ) -> TSS2_RC;
6736}
6737extern "C" {
6738    pub fn Tss2_Sys_PolicyRestart_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
6739}
6740extern "C" {
6741    pub fn Tss2_Sys_PolicyRestart(
6742        sysContext: *mut TSS2_SYS_CONTEXT,
6743        sessionHandle: TPMI_SH_POLICY,
6744        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6745        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6746    ) -> TSS2_RC;
6747}
6748extern "C" {
6749    pub fn Tss2_Sys_Create_Prepare(
6750        sysContext: *mut TSS2_SYS_CONTEXT,
6751        parentHandle: TPMI_DH_OBJECT,
6752        inSensitive: *const TPM2B_SENSITIVE_CREATE,
6753        inPublic: *const TPM2B_PUBLIC,
6754        outsideInfo: *const TPM2B_DATA,
6755        creationPCR: *const TPML_PCR_SELECTION,
6756    ) -> TSS2_RC;
6757}
6758extern "C" {
6759    pub fn Tss2_Sys_Create_Complete(
6760        sysContext: *mut TSS2_SYS_CONTEXT,
6761        outPrivate: *mut TPM2B_PRIVATE,
6762        outPublic: *mut TPM2B_PUBLIC,
6763        creationData: *mut TPM2B_CREATION_DATA,
6764        creationHash: *mut TPM2B_DIGEST,
6765        creationTicket: *mut TPMT_TK_CREATION,
6766    ) -> TSS2_RC;
6767}
6768extern "C" {
6769    pub fn Tss2_Sys_Create(
6770        sysContext: *mut TSS2_SYS_CONTEXT,
6771        parentHandle: TPMI_DH_OBJECT,
6772        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6773        inSensitive: *const TPM2B_SENSITIVE_CREATE,
6774        inPublic: *const TPM2B_PUBLIC,
6775        outsideInfo: *const TPM2B_DATA,
6776        creationPCR: *const TPML_PCR_SELECTION,
6777        outPrivate: *mut TPM2B_PRIVATE,
6778        outPublic: *mut TPM2B_PUBLIC,
6779        creationData: *mut TPM2B_CREATION_DATA,
6780        creationHash: *mut TPM2B_DIGEST,
6781        creationTicket: *mut TPMT_TK_CREATION,
6782        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6783    ) -> TSS2_RC;
6784}
6785extern "C" {
6786    pub fn Tss2_Sys_Load_Prepare(
6787        sysContext: *mut TSS2_SYS_CONTEXT,
6788        parentHandle: TPMI_DH_OBJECT,
6789        inPrivate: *const TPM2B_PRIVATE,
6790        inPublic: *const TPM2B_PUBLIC,
6791    ) -> TSS2_RC;
6792}
6793extern "C" {
6794    pub fn Tss2_Sys_Load_Complete(
6795        sysContext: *mut TSS2_SYS_CONTEXT,
6796        objectHandle: *mut TPM2_HANDLE,
6797        name: *mut TPM2B_NAME,
6798    ) -> TSS2_RC;
6799}
6800extern "C" {
6801    pub fn Tss2_Sys_Load(
6802        sysContext: *mut TSS2_SYS_CONTEXT,
6803        parentHandle: TPMI_DH_OBJECT,
6804        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6805        inPrivate: *const TPM2B_PRIVATE,
6806        inPublic: *const TPM2B_PUBLIC,
6807        objectHandle: *mut TPM2_HANDLE,
6808        name: *mut TPM2B_NAME,
6809        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6810    ) -> TSS2_RC;
6811}
6812extern "C" {
6813    pub fn Tss2_Sys_LoadExternal_Prepare(
6814        sysContext: *mut TSS2_SYS_CONTEXT,
6815        inPrivate: *const TPM2B_SENSITIVE,
6816        inPublic: *const TPM2B_PUBLIC,
6817        hierarchy: TPMI_RH_HIERARCHY,
6818    ) -> TSS2_RC;
6819}
6820extern "C" {
6821    pub fn Tss2_Sys_LoadExternal_Complete(
6822        sysContext: *mut TSS2_SYS_CONTEXT,
6823        objectHandle: *mut TPM2_HANDLE,
6824        name: *mut TPM2B_NAME,
6825    ) -> TSS2_RC;
6826}
6827extern "C" {
6828    pub fn Tss2_Sys_LoadExternal(
6829        sysContext: *mut TSS2_SYS_CONTEXT,
6830        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6831        inPrivate: *const TPM2B_SENSITIVE,
6832        inPublic: *const TPM2B_PUBLIC,
6833        hierarchy: TPMI_RH_HIERARCHY,
6834        objectHandle: *mut TPM2_HANDLE,
6835        name: *mut TPM2B_NAME,
6836        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6837    ) -> TSS2_RC;
6838}
6839extern "C" {
6840    pub fn Tss2_Sys_ReadPublic_Prepare(
6841        sysContext: *mut TSS2_SYS_CONTEXT,
6842        objectHandle: TPMI_DH_OBJECT,
6843    ) -> TSS2_RC;
6844}
6845extern "C" {
6846    pub fn Tss2_Sys_ReadPublic_Complete(
6847        sysContext: *mut TSS2_SYS_CONTEXT,
6848        outPublic: *mut TPM2B_PUBLIC,
6849        name: *mut TPM2B_NAME,
6850        qualifiedName: *mut TPM2B_NAME,
6851    ) -> TSS2_RC;
6852}
6853extern "C" {
6854    pub fn Tss2_Sys_ReadPublic(
6855        sysContext: *mut TSS2_SYS_CONTEXT,
6856        objectHandle: TPMI_DH_OBJECT,
6857        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6858        outPublic: *mut TPM2B_PUBLIC,
6859        name: *mut TPM2B_NAME,
6860        qualifiedName: *mut TPM2B_NAME,
6861        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6862    ) -> TSS2_RC;
6863}
6864extern "C" {
6865    pub fn Tss2_Sys_ActivateCredential_Prepare(
6866        sysContext: *mut TSS2_SYS_CONTEXT,
6867        activateHandle: TPMI_DH_OBJECT,
6868        keyHandle: TPMI_DH_OBJECT,
6869        credentialBlob: *const TPM2B_ID_OBJECT,
6870        secret: *const TPM2B_ENCRYPTED_SECRET,
6871    ) -> TSS2_RC;
6872}
6873extern "C" {
6874    pub fn Tss2_Sys_ActivateCredential_Complete(
6875        sysContext: *mut TSS2_SYS_CONTEXT,
6876        certInfo: *mut TPM2B_DIGEST,
6877    ) -> TSS2_RC;
6878}
6879extern "C" {
6880    pub fn Tss2_Sys_ActivateCredential(
6881        sysContext: *mut TSS2_SYS_CONTEXT,
6882        activateHandle: TPMI_DH_OBJECT,
6883        keyHandle: TPMI_DH_OBJECT,
6884        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6885        credentialBlob: *const TPM2B_ID_OBJECT,
6886        secret: *const TPM2B_ENCRYPTED_SECRET,
6887        certInfo: *mut TPM2B_DIGEST,
6888        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6889    ) -> TSS2_RC;
6890}
6891extern "C" {
6892    pub fn Tss2_Sys_MakeCredential_Prepare(
6893        sysContext: *mut TSS2_SYS_CONTEXT,
6894        handle: TPMI_DH_OBJECT,
6895        credential: *const TPM2B_DIGEST,
6896        objectName: *const TPM2B_NAME,
6897    ) -> TSS2_RC;
6898}
6899extern "C" {
6900    pub fn Tss2_Sys_MakeCredential_Complete(
6901        sysContext: *mut TSS2_SYS_CONTEXT,
6902        credentialBlob: *mut TPM2B_ID_OBJECT,
6903        secret: *mut TPM2B_ENCRYPTED_SECRET,
6904    ) -> TSS2_RC;
6905}
6906extern "C" {
6907    pub fn Tss2_Sys_MakeCredential(
6908        sysContext: *mut TSS2_SYS_CONTEXT,
6909        handle: TPMI_DH_OBJECT,
6910        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6911        credential: *const TPM2B_DIGEST,
6912        objectName: *const TPM2B_NAME,
6913        credentialBlob: *mut TPM2B_ID_OBJECT,
6914        secret: *mut TPM2B_ENCRYPTED_SECRET,
6915        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6916    ) -> TSS2_RC;
6917}
6918extern "C" {
6919    pub fn Tss2_Sys_Unseal_Prepare(
6920        sysContext: *mut TSS2_SYS_CONTEXT,
6921        itemHandle: TPMI_DH_OBJECT,
6922    ) -> TSS2_RC;
6923}
6924extern "C" {
6925    pub fn Tss2_Sys_Unseal_Complete(
6926        sysContext: *mut TSS2_SYS_CONTEXT,
6927        outData: *mut TPM2B_SENSITIVE_DATA,
6928    ) -> TSS2_RC;
6929}
6930extern "C" {
6931    pub fn Tss2_Sys_Unseal(
6932        sysContext: *mut TSS2_SYS_CONTEXT,
6933        itemHandle: TPMI_DH_OBJECT,
6934        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6935        outData: *mut TPM2B_SENSITIVE_DATA,
6936        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6937    ) -> TSS2_RC;
6938}
6939extern "C" {
6940    pub fn Tss2_Sys_ObjectChangeAuth_Prepare(
6941        sysContext: *mut TSS2_SYS_CONTEXT,
6942        objectHandle: TPMI_DH_OBJECT,
6943        parentHandle: TPMI_DH_OBJECT,
6944        newAuth: *const TPM2B_AUTH,
6945    ) -> TSS2_RC;
6946}
6947extern "C" {
6948    pub fn Tss2_Sys_ObjectChangeAuth_Complete(
6949        sysContext: *mut TSS2_SYS_CONTEXT,
6950        outPrivate: *mut TPM2B_PRIVATE,
6951    ) -> TSS2_RC;
6952}
6953extern "C" {
6954    pub fn Tss2_Sys_ObjectChangeAuth(
6955        sysContext: *mut TSS2_SYS_CONTEXT,
6956        objectHandle: TPMI_DH_OBJECT,
6957        parentHandle: TPMI_DH_OBJECT,
6958        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6959        newAuth: *const TPM2B_AUTH,
6960        outPrivate: *mut TPM2B_PRIVATE,
6961        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6962    ) -> TSS2_RC;
6963}
6964extern "C" {
6965    pub fn Tss2_Sys_Duplicate_Prepare(
6966        sysContext: *mut TSS2_SYS_CONTEXT,
6967        objectHandle: TPMI_DH_OBJECT,
6968        newParentHandle: TPMI_DH_OBJECT,
6969        encryptionKeyIn: *const TPM2B_DATA,
6970        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
6971    ) -> TSS2_RC;
6972}
6973extern "C" {
6974    pub fn Tss2_Sys_Duplicate_Complete(
6975        sysContext: *mut TSS2_SYS_CONTEXT,
6976        encryptionKeyOut: *mut TPM2B_DATA,
6977        duplicate: *mut TPM2B_PRIVATE,
6978        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
6979    ) -> TSS2_RC;
6980}
6981extern "C" {
6982    pub fn Tss2_Sys_Duplicate(
6983        sysContext: *mut TSS2_SYS_CONTEXT,
6984        objectHandle: TPMI_DH_OBJECT,
6985        newParentHandle: TPMI_DH_OBJECT,
6986        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
6987        encryptionKeyIn: *const TPM2B_DATA,
6988        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
6989        encryptionKeyOut: *mut TPM2B_DATA,
6990        duplicate: *mut TPM2B_PRIVATE,
6991        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
6992        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
6993    ) -> TSS2_RC;
6994}
6995extern "C" {
6996    pub fn Tss2_Sys_Rewrap_Prepare(
6997        sysContext: *mut TSS2_SYS_CONTEXT,
6998        oldParent: TPMI_DH_OBJECT,
6999        newParent: TPMI_DH_OBJECT,
7000        inDuplicate: *const TPM2B_PRIVATE,
7001        name: *const TPM2B_NAME,
7002        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
7003    ) -> TSS2_RC;
7004}
7005extern "C" {
7006    pub fn Tss2_Sys_Rewrap_Complete(
7007        sysContext: *mut TSS2_SYS_CONTEXT,
7008        outDuplicate: *mut TPM2B_PRIVATE,
7009        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
7010    ) -> TSS2_RC;
7011}
7012extern "C" {
7013    pub fn Tss2_Sys_Rewrap(
7014        sysContext: *mut TSS2_SYS_CONTEXT,
7015        oldParent: TPMI_DH_OBJECT,
7016        newParent: TPMI_DH_OBJECT,
7017        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7018        inDuplicate: *const TPM2B_PRIVATE,
7019        name: *const TPM2B_NAME,
7020        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
7021        outDuplicate: *mut TPM2B_PRIVATE,
7022        outSymSeed: *mut TPM2B_ENCRYPTED_SECRET,
7023        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7024    ) -> TSS2_RC;
7025}
7026extern "C" {
7027    pub fn Tss2_Sys_Import_Prepare(
7028        sysContext: *mut TSS2_SYS_CONTEXT,
7029        parentHandle: TPMI_DH_OBJECT,
7030        encryptionKey: *const TPM2B_DATA,
7031        objectPublic: *const TPM2B_PUBLIC,
7032        duplicate: *const TPM2B_PRIVATE,
7033        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
7034        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
7035    ) -> TSS2_RC;
7036}
7037extern "C" {
7038    pub fn Tss2_Sys_Import_Complete(
7039        sysContext: *mut TSS2_SYS_CONTEXT,
7040        outPrivate: *mut TPM2B_PRIVATE,
7041    ) -> TSS2_RC;
7042}
7043extern "C" {
7044    pub fn Tss2_Sys_Import(
7045        sysContext: *mut TSS2_SYS_CONTEXT,
7046        parentHandle: TPMI_DH_OBJECT,
7047        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7048        encryptionKey: *const TPM2B_DATA,
7049        objectPublic: *const TPM2B_PUBLIC,
7050        duplicate: *const TPM2B_PRIVATE,
7051        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
7052        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
7053        outPrivate: *mut TPM2B_PRIVATE,
7054        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7055    ) -> TSS2_RC;
7056}
7057extern "C" {
7058    pub fn Tss2_Sys_RSA_Encrypt_Prepare(
7059        sysContext: *mut TSS2_SYS_CONTEXT,
7060        keyHandle: TPMI_DH_OBJECT,
7061        message: *const TPM2B_PUBLIC_KEY_RSA,
7062        inScheme: *const TPMT_RSA_DECRYPT,
7063        label: *const TPM2B_DATA,
7064    ) -> TSS2_RC;
7065}
7066extern "C" {
7067    pub fn Tss2_Sys_RSA_Encrypt_Complete(
7068        sysContext: *mut TSS2_SYS_CONTEXT,
7069        outData: *mut TPM2B_PUBLIC_KEY_RSA,
7070    ) -> TSS2_RC;
7071}
7072extern "C" {
7073    pub fn Tss2_Sys_RSA_Encrypt(
7074        sysContext: *mut TSS2_SYS_CONTEXT,
7075        keyHandle: TPMI_DH_OBJECT,
7076        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7077        message: *const TPM2B_PUBLIC_KEY_RSA,
7078        inScheme: *const TPMT_RSA_DECRYPT,
7079        label: *const TPM2B_DATA,
7080        outData: *mut TPM2B_PUBLIC_KEY_RSA,
7081        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7082    ) -> TSS2_RC;
7083}
7084extern "C" {
7085    pub fn Tss2_Sys_RSA_Decrypt_Prepare(
7086        sysContext: *mut TSS2_SYS_CONTEXT,
7087        keyHandle: TPMI_DH_OBJECT,
7088        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
7089        inScheme: *const TPMT_RSA_DECRYPT,
7090        label: *const TPM2B_DATA,
7091    ) -> TSS2_RC;
7092}
7093extern "C" {
7094    pub fn Tss2_Sys_RSA_Decrypt_Complete(
7095        sysContext: *mut TSS2_SYS_CONTEXT,
7096        message: *mut TPM2B_PUBLIC_KEY_RSA,
7097    ) -> TSS2_RC;
7098}
7099extern "C" {
7100    pub fn Tss2_Sys_RSA_Decrypt(
7101        sysContext: *mut TSS2_SYS_CONTEXT,
7102        keyHandle: TPMI_DH_OBJECT,
7103        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7104        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
7105        inScheme: *const TPMT_RSA_DECRYPT,
7106        label: *const TPM2B_DATA,
7107        message: *mut TPM2B_PUBLIC_KEY_RSA,
7108        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7109    ) -> TSS2_RC;
7110}
7111extern "C" {
7112    pub fn Tss2_Sys_ECDH_KeyGen_Prepare(
7113        sysContext: *mut TSS2_SYS_CONTEXT,
7114        keyHandle: TPMI_DH_OBJECT,
7115    ) -> TSS2_RC;
7116}
7117extern "C" {
7118    pub fn Tss2_Sys_ECDH_KeyGen_Complete(
7119        sysContext: *mut TSS2_SYS_CONTEXT,
7120        zPoint: *mut TPM2B_ECC_POINT,
7121        pubPoint: *mut TPM2B_ECC_POINT,
7122    ) -> TSS2_RC;
7123}
7124extern "C" {
7125    pub fn Tss2_Sys_ECDH_KeyGen(
7126        sysContext: *mut TSS2_SYS_CONTEXT,
7127        keyHandle: TPMI_DH_OBJECT,
7128        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7129        zPoint: *mut TPM2B_ECC_POINT,
7130        pubPoint: *mut TPM2B_ECC_POINT,
7131        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7132    ) -> TSS2_RC;
7133}
7134extern "C" {
7135    pub fn Tss2_Sys_ECDH_ZGen_Prepare(
7136        sysContext: *mut TSS2_SYS_CONTEXT,
7137        keyHandle: TPMI_DH_OBJECT,
7138        inPoint: *const TPM2B_ECC_POINT,
7139    ) -> TSS2_RC;
7140}
7141extern "C" {
7142    pub fn Tss2_Sys_ECDH_ZGen_Complete(
7143        sysContext: *mut TSS2_SYS_CONTEXT,
7144        outPoint: *mut TPM2B_ECC_POINT,
7145    ) -> TSS2_RC;
7146}
7147extern "C" {
7148    pub fn Tss2_Sys_ECDH_ZGen(
7149        sysContext: *mut TSS2_SYS_CONTEXT,
7150        keyHandle: TPMI_DH_OBJECT,
7151        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7152        inPoint: *const TPM2B_ECC_POINT,
7153        outPoint: *mut TPM2B_ECC_POINT,
7154        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7155    ) -> TSS2_RC;
7156}
7157extern "C" {
7158    pub fn Tss2_Sys_ECC_Parameters_Prepare(
7159        sysContext: *mut TSS2_SYS_CONTEXT,
7160        curveID: TPMI_ECC_CURVE,
7161    ) -> TSS2_RC;
7162}
7163extern "C" {
7164    pub fn Tss2_Sys_ECC_Parameters_Complete(
7165        sysContext: *mut TSS2_SYS_CONTEXT,
7166        parameters: *mut TPMS_ALGORITHM_DETAIL_ECC,
7167    ) -> TSS2_RC;
7168}
7169extern "C" {
7170    pub fn Tss2_Sys_ECC_Parameters(
7171        sysContext: *mut TSS2_SYS_CONTEXT,
7172        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7173        curveID: TPMI_ECC_CURVE,
7174        parameters: *mut TPMS_ALGORITHM_DETAIL_ECC,
7175        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7176    ) -> TSS2_RC;
7177}
7178extern "C" {
7179    pub fn Tss2_Sys_ZGen_2Phase_Prepare(
7180        sysContext: *mut TSS2_SYS_CONTEXT,
7181        keyA: TPMI_DH_OBJECT,
7182        inQsB: *const TPM2B_ECC_POINT,
7183        inQeB: *const TPM2B_ECC_POINT,
7184        inScheme: TPMI_ECC_KEY_EXCHANGE,
7185        counter: UINT16,
7186    ) -> TSS2_RC;
7187}
7188extern "C" {
7189    pub fn Tss2_Sys_ZGen_2Phase_Complete(
7190        sysContext: *mut TSS2_SYS_CONTEXT,
7191        outZ1: *mut TPM2B_ECC_POINT,
7192        outZ2: *mut TPM2B_ECC_POINT,
7193    ) -> TSS2_RC;
7194}
7195extern "C" {
7196    pub fn Tss2_Sys_ZGen_2Phase(
7197        sysContext: *mut TSS2_SYS_CONTEXT,
7198        keyA: TPMI_DH_OBJECT,
7199        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7200        inQsB: *const TPM2B_ECC_POINT,
7201        inQeB: *const TPM2B_ECC_POINT,
7202        inScheme: TPMI_ECC_KEY_EXCHANGE,
7203        counter: UINT16,
7204        outZ1: *mut TPM2B_ECC_POINT,
7205        outZ2: *mut TPM2B_ECC_POINT,
7206        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7207    ) -> TSS2_RC;
7208}
7209extern "C" {
7210    pub fn Tss2_Sys_EncryptDecrypt_Prepare(
7211        sysContext: *mut TSS2_SYS_CONTEXT,
7212        keyHandle: TPMI_DH_OBJECT,
7213        decrypt: TPMI_YES_NO,
7214        mode: TPMI_ALG_CIPHER_MODE,
7215        ivIn: *const TPM2B_IV,
7216        inData: *const TPM2B_MAX_BUFFER,
7217    ) -> TSS2_RC;
7218}
7219extern "C" {
7220    pub fn Tss2_Sys_EncryptDecrypt_Complete(
7221        sysContext: *mut TSS2_SYS_CONTEXT,
7222        outData: *mut TPM2B_MAX_BUFFER,
7223        ivOut: *mut TPM2B_IV,
7224    ) -> TSS2_RC;
7225}
7226extern "C" {
7227    pub fn Tss2_Sys_EncryptDecrypt(
7228        sysContext: *mut TSS2_SYS_CONTEXT,
7229        keyHandle: TPMI_DH_OBJECT,
7230        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7231        decrypt: TPMI_YES_NO,
7232        mode: TPMI_ALG_CIPHER_MODE,
7233        ivIn: *const TPM2B_IV,
7234        inData: *const TPM2B_MAX_BUFFER,
7235        outData: *mut TPM2B_MAX_BUFFER,
7236        ivOut: *mut TPM2B_IV,
7237        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7238    ) -> TSS2_RC;
7239}
7240extern "C" {
7241    pub fn Tss2_Sys_EncryptDecrypt2_Prepare(
7242        sysContext: *mut TSS2_SYS_CONTEXT,
7243        keyHandle: TPMI_DH_OBJECT,
7244        inData: *const TPM2B_MAX_BUFFER,
7245        decrypt: TPMI_YES_NO,
7246        mode: TPMI_ALG_CIPHER_MODE,
7247        ivIn: *const TPM2B_IV,
7248    ) -> TSS2_RC;
7249}
7250extern "C" {
7251    pub fn Tss2_Sys_EncryptDecrypt2_Complete(
7252        sysContext: *mut TSS2_SYS_CONTEXT,
7253        outData: *mut TPM2B_MAX_BUFFER,
7254        ivOut: *mut TPM2B_IV,
7255    ) -> TSS2_RC;
7256}
7257extern "C" {
7258    pub fn Tss2_Sys_EncryptDecrypt2(
7259        sysContext: *mut TSS2_SYS_CONTEXT,
7260        keyHandle: TPMI_DH_OBJECT,
7261        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7262        inData: *const TPM2B_MAX_BUFFER,
7263        decrypt: TPMI_YES_NO,
7264        mode: TPMI_ALG_CIPHER_MODE,
7265        ivIn: *const TPM2B_IV,
7266        outData: *mut TPM2B_MAX_BUFFER,
7267        ivOut: *mut TPM2B_IV,
7268        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7269    ) -> TSS2_RC;
7270}
7271extern "C" {
7272    pub fn Tss2_Sys_Hash_Prepare(
7273        sysContext: *mut TSS2_SYS_CONTEXT,
7274        data: *const TPM2B_MAX_BUFFER,
7275        hashAlg: TPMI_ALG_HASH,
7276        hierarchy: TPMI_RH_HIERARCHY,
7277    ) -> TSS2_RC;
7278}
7279extern "C" {
7280    pub fn Tss2_Sys_Hash_Complete(
7281        sysContext: *mut TSS2_SYS_CONTEXT,
7282        outHash: *mut TPM2B_DIGEST,
7283        validation: *mut TPMT_TK_HASHCHECK,
7284    ) -> TSS2_RC;
7285}
7286extern "C" {
7287    pub fn Tss2_Sys_Hash(
7288        sysContext: *mut TSS2_SYS_CONTEXT,
7289        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7290        data: *const TPM2B_MAX_BUFFER,
7291        hashAlg: TPMI_ALG_HASH,
7292        hierarchy: TPMI_RH_HIERARCHY,
7293        outHash: *mut TPM2B_DIGEST,
7294        validation: *mut TPMT_TK_HASHCHECK,
7295        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7296    ) -> TSS2_RC;
7297}
7298extern "C" {
7299    pub fn Tss2_Sys_HMAC_Prepare(
7300        sysContext: *mut TSS2_SYS_CONTEXT,
7301        handle: TPMI_DH_OBJECT,
7302        buffer: *const TPM2B_MAX_BUFFER,
7303        hashAlg: TPMI_ALG_HASH,
7304    ) -> TSS2_RC;
7305}
7306extern "C" {
7307    pub fn Tss2_Sys_HMAC_Complete(
7308        sysContext: *mut TSS2_SYS_CONTEXT,
7309        outHMAC: *mut TPM2B_DIGEST,
7310    ) -> TSS2_RC;
7311}
7312extern "C" {
7313    pub fn Tss2_Sys_HMAC(
7314        sysContext: *mut TSS2_SYS_CONTEXT,
7315        handle: TPMI_DH_OBJECT,
7316        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7317        buffer: *const TPM2B_MAX_BUFFER,
7318        hashAlg: TPMI_ALG_HASH,
7319        outHMAC: *mut TPM2B_DIGEST,
7320        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7321    ) -> TSS2_RC;
7322}
7323extern "C" {
7324    pub fn Tss2_Sys_MAC_Prepare(
7325        sysContext: *mut TSS2_SYS_CONTEXT,
7326        handle: TPMI_DH_OBJECT,
7327        buffer: *const TPM2B_MAX_BUFFER,
7328        inScheme: TPMI_ALG_MAC_SCHEME,
7329    ) -> TSS2_RC;
7330}
7331extern "C" {
7332    pub fn Tss2_Sys_MAC_Complete(
7333        sysContext: *mut TSS2_SYS_CONTEXT,
7334        outMAC: *mut TPM2B_DIGEST,
7335    ) -> TSS2_RC;
7336}
7337extern "C" {
7338    pub fn Tss2_Sys_MAC(
7339        sysContext: *mut TSS2_SYS_CONTEXT,
7340        handle: TPMI_DH_OBJECT,
7341        cmdAuths: *const TSS2L_SYS_AUTH_COMMAND,
7342        buffer: *const TPM2B_MAX_BUFFER,
7343        inScheme: TPMI_ALG_MAC_SCHEME,
7344        outMAC: *mut TPM2B_DIGEST,
7345        rspAuths: *mut TSS2L_SYS_AUTH_RESPONSE,
7346    ) -> TSS2_RC;
7347}
7348extern "C" {
7349    pub fn Tss2_Sys_GetRandom_Prepare(
7350        sysContext: *mut TSS2_SYS_CONTEXT,
7351        bytesRequested: UINT16,
7352    ) -> TSS2_RC;
7353}
7354extern "C" {
7355    pub fn Tss2_Sys_GetRandom_Complete(
7356        sysContext: *mut TSS2_SYS_CONTEXT,
7357        randomBytes: *mut TPM2B_DIGEST,
7358    ) -> TSS2_RC;
7359}
7360extern "C" {
7361    pub fn Tss2_Sys_GetRandom(
7362        sysContext: *mut TSS2_SYS_CONTEXT,
7363        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7364        bytesRequested: UINT16,
7365        randomBytes: *mut TPM2B_DIGEST,
7366        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7367    ) -> TSS2_RC;
7368}
7369extern "C" {
7370    pub fn Tss2_Sys_StirRandom_Prepare(
7371        sysContext: *mut TSS2_SYS_CONTEXT,
7372        inData: *const TPM2B_SENSITIVE_DATA,
7373    ) -> TSS2_RC;
7374}
7375extern "C" {
7376    pub fn Tss2_Sys_StirRandom_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7377}
7378extern "C" {
7379    pub fn Tss2_Sys_StirRandom(
7380        sysContext: *mut TSS2_SYS_CONTEXT,
7381        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7382        inData: *const TPM2B_SENSITIVE_DATA,
7383        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7384    ) -> TSS2_RC;
7385}
7386extern "C" {
7387    pub fn Tss2_Sys_HMAC_Start_Prepare(
7388        sysContext: *mut TSS2_SYS_CONTEXT,
7389        handle: TPMI_DH_OBJECT,
7390        auth: *const TPM2B_AUTH,
7391        hashAlg: TPMI_ALG_HASH,
7392    ) -> TSS2_RC;
7393}
7394extern "C" {
7395    pub fn Tss2_Sys_HMAC_Start_Complete(
7396        sysContext: *mut TSS2_SYS_CONTEXT,
7397        sequenceHandle: *mut TPMI_DH_OBJECT,
7398    ) -> TSS2_RC;
7399}
7400extern "C" {
7401    pub fn Tss2_Sys_HMAC_Start(
7402        sysContext: *mut TSS2_SYS_CONTEXT,
7403        handle: TPMI_DH_OBJECT,
7404        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7405        auth: *const TPM2B_AUTH,
7406        hashAlg: TPMI_ALG_HASH,
7407        sequenceHandle: *mut TPMI_DH_OBJECT,
7408        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7409    ) -> TSS2_RC;
7410}
7411extern "C" {
7412    pub fn Tss2_Sys_MAC_Start_Prepare(
7413        sysContext: *mut TSS2_SYS_CONTEXT,
7414        handle: TPMI_DH_OBJECT,
7415        auth: *const TPM2B_AUTH,
7416        inScheme: TPMI_ALG_MAC_SCHEME,
7417    ) -> TSS2_RC;
7418}
7419extern "C" {
7420    pub fn Tss2_Sys_MAC_Start_Complete(
7421        sysContext: *mut TSS2_SYS_CONTEXT,
7422        sequenceHandle: *mut TPMI_DH_OBJECT,
7423    ) -> TSS2_RC;
7424}
7425extern "C" {
7426    pub fn Tss2_Sys_MAC_Start(
7427        sysContext: *mut TSS2_SYS_CONTEXT,
7428        handle: TPMI_DH_OBJECT,
7429        cmdAuths: *const TSS2L_SYS_AUTH_COMMAND,
7430        auth: *const TPM2B_AUTH,
7431        inScheme: TPMI_ALG_MAC_SCHEME,
7432        sequenceHandle: *mut TPMI_DH_OBJECT,
7433        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7434    ) -> TSS2_RC;
7435}
7436extern "C" {
7437    pub fn Tss2_Sys_HashSequenceStart_Prepare(
7438        sysContext: *mut TSS2_SYS_CONTEXT,
7439        auth: *const TPM2B_AUTH,
7440        hashAlg: TPMI_ALG_HASH,
7441    ) -> TSS2_RC;
7442}
7443extern "C" {
7444    pub fn Tss2_Sys_HashSequenceStart_Complete(
7445        sysContext: *mut TSS2_SYS_CONTEXT,
7446        sequenceHandle: *mut TPMI_DH_OBJECT,
7447    ) -> TSS2_RC;
7448}
7449extern "C" {
7450    pub fn Tss2_Sys_HashSequenceStart(
7451        sysContext: *mut TSS2_SYS_CONTEXT,
7452        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7453        auth: *const TPM2B_AUTH,
7454        hashAlg: TPMI_ALG_HASH,
7455        sequenceHandle: *mut TPMI_DH_OBJECT,
7456        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7457    ) -> TSS2_RC;
7458}
7459extern "C" {
7460    pub fn Tss2_Sys_SequenceUpdate_Prepare(
7461        sysContext: *mut TSS2_SYS_CONTEXT,
7462        sequenceHandle: TPMI_DH_OBJECT,
7463        buffer: *const TPM2B_MAX_BUFFER,
7464    ) -> TSS2_RC;
7465}
7466extern "C" {
7467    pub fn Tss2_Sys_SequenceUpdate_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7468}
7469extern "C" {
7470    pub fn Tss2_Sys_SequenceUpdate(
7471        sysContext: *mut TSS2_SYS_CONTEXT,
7472        sequenceHandle: TPMI_DH_OBJECT,
7473        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7474        buffer: *const TPM2B_MAX_BUFFER,
7475        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7476    ) -> TSS2_RC;
7477}
7478extern "C" {
7479    pub fn Tss2_Sys_SequenceComplete_Prepare(
7480        sysContext: *mut TSS2_SYS_CONTEXT,
7481        sequenceHandle: TPMI_DH_OBJECT,
7482        buffer: *const TPM2B_MAX_BUFFER,
7483        hierarchy: TPMI_RH_HIERARCHY,
7484    ) -> TSS2_RC;
7485}
7486extern "C" {
7487    pub fn Tss2_Sys_SequenceComplete_Complete(
7488        sysContext: *mut TSS2_SYS_CONTEXT,
7489        result: *mut TPM2B_DIGEST,
7490        validation: *mut TPMT_TK_HASHCHECK,
7491    ) -> TSS2_RC;
7492}
7493extern "C" {
7494    pub fn Tss2_Sys_SequenceComplete(
7495        sysContext: *mut TSS2_SYS_CONTEXT,
7496        sequenceHandle: TPMI_DH_OBJECT,
7497        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7498        buffer: *const TPM2B_MAX_BUFFER,
7499        hierarchy: TPMI_RH_HIERARCHY,
7500        result: *mut TPM2B_DIGEST,
7501        validation: *mut TPMT_TK_HASHCHECK,
7502        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7503    ) -> TSS2_RC;
7504}
7505extern "C" {
7506    pub fn Tss2_Sys_EventSequenceComplete_Prepare(
7507        sysContext: *mut TSS2_SYS_CONTEXT,
7508        pcrHandle: TPMI_DH_PCR,
7509        sequenceHandle: TPMI_DH_OBJECT,
7510        buffer: *const TPM2B_MAX_BUFFER,
7511    ) -> TSS2_RC;
7512}
7513extern "C" {
7514    pub fn Tss2_Sys_EventSequenceComplete_Complete(
7515        sysContext: *mut TSS2_SYS_CONTEXT,
7516        results: *mut TPML_DIGEST_VALUES,
7517    ) -> TSS2_RC;
7518}
7519extern "C" {
7520    pub fn Tss2_Sys_EventSequenceComplete(
7521        sysContext: *mut TSS2_SYS_CONTEXT,
7522        pcrHandle: TPMI_DH_PCR,
7523        sequenceHandle: TPMI_DH_OBJECT,
7524        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7525        buffer: *const TPM2B_MAX_BUFFER,
7526        results: *mut TPML_DIGEST_VALUES,
7527        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7528    ) -> TSS2_RC;
7529}
7530extern "C" {
7531    pub fn Tss2_Sys_Certify_Prepare(
7532        sysContext: *mut TSS2_SYS_CONTEXT,
7533        objectHandle: TPMI_DH_OBJECT,
7534        signHandle: TPMI_DH_OBJECT,
7535        qualifyingData: *const TPM2B_DATA,
7536        inScheme: *const TPMT_SIG_SCHEME,
7537    ) -> TSS2_RC;
7538}
7539extern "C" {
7540    pub fn Tss2_Sys_Certify_Complete(
7541        sysContext: *mut TSS2_SYS_CONTEXT,
7542        certifyInfo: *mut TPM2B_ATTEST,
7543        signature: *mut TPMT_SIGNATURE,
7544    ) -> TSS2_RC;
7545}
7546extern "C" {
7547    pub fn Tss2_Sys_Certify(
7548        sysContext: *mut TSS2_SYS_CONTEXT,
7549        objectHandle: TPMI_DH_OBJECT,
7550        signHandle: TPMI_DH_OBJECT,
7551        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7552        qualifyingData: *const TPM2B_DATA,
7553        inScheme: *const TPMT_SIG_SCHEME,
7554        certifyInfo: *mut TPM2B_ATTEST,
7555        signature: *mut TPMT_SIGNATURE,
7556        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7557    ) -> TSS2_RC;
7558}
7559extern "C" {
7560    pub fn Tss2_Sys_CertifyX509_Prepare(
7561        sysContext: *mut TSS2_SYS_CONTEXT,
7562        objectHandle: TPMI_DH_OBJECT,
7563        signHandle: TPMI_DH_OBJECT,
7564        reserved: *const TPM2B_DATA,
7565        inScheme: *const TPMT_SIG_SCHEME,
7566        partialCertificate: *const TPM2B_MAX_BUFFER,
7567    ) -> TSS2_RC;
7568}
7569extern "C" {
7570    pub fn Tss2_Sys_CertifyX509_Complete(
7571        sysContext: *mut TSS2_SYS_CONTEXT,
7572        addedToCertificate: *mut TPM2B_MAX_BUFFER,
7573        tbsDigest: *mut TPM2B_DIGEST,
7574        signature: *mut TPMT_SIGNATURE,
7575    ) -> TSS2_RC;
7576}
7577extern "C" {
7578    pub fn Tss2_Sys_CertifyX509(
7579        sysContext: *mut TSS2_SYS_CONTEXT,
7580        objectHandle: TPMI_DH_OBJECT,
7581        signHandle: TPMI_DH_OBJECT,
7582        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7583        reserved: *const TPM2B_DATA,
7584        inScheme: *const TPMT_SIG_SCHEME,
7585        partialCertificate: *const TPM2B_MAX_BUFFER,
7586        addedToCertificate: *mut TPM2B_MAX_BUFFER,
7587        tbsDigest: *mut TPM2B_DIGEST,
7588        signature: *mut TPMT_SIGNATURE,
7589        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7590    ) -> TSS2_RC;
7591}
7592extern "C" {
7593    pub fn Tss2_Sys_CertifyCreation_Prepare(
7594        sysContext: *mut TSS2_SYS_CONTEXT,
7595        signHandle: TPMI_DH_OBJECT,
7596        objectHandle: TPMI_DH_OBJECT,
7597        qualifyingData: *const TPM2B_DATA,
7598        creationHash: *const TPM2B_DIGEST,
7599        inScheme: *const TPMT_SIG_SCHEME,
7600        creationTicket: *const TPMT_TK_CREATION,
7601    ) -> TSS2_RC;
7602}
7603extern "C" {
7604    pub fn Tss2_Sys_CertifyCreation_Complete(
7605        sysContext: *mut TSS2_SYS_CONTEXT,
7606        certifyInfo: *mut TPM2B_ATTEST,
7607        signature: *mut TPMT_SIGNATURE,
7608    ) -> TSS2_RC;
7609}
7610extern "C" {
7611    pub fn Tss2_Sys_CertifyCreation(
7612        sysContext: *mut TSS2_SYS_CONTEXT,
7613        signHandle: TPMI_DH_OBJECT,
7614        objectHandle: TPMI_DH_OBJECT,
7615        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7616        qualifyingData: *const TPM2B_DATA,
7617        creationHash: *const TPM2B_DIGEST,
7618        inScheme: *const TPMT_SIG_SCHEME,
7619        creationTicket: *const TPMT_TK_CREATION,
7620        certifyInfo: *mut TPM2B_ATTEST,
7621        signature: *mut TPMT_SIGNATURE,
7622        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7623    ) -> TSS2_RC;
7624}
7625extern "C" {
7626    pub fn Tss2_Sys_Quote_Prepare(
7627        sysContext: *mut TSS2_SYS_CONTEXT,
7628        signHandle: TPMI_DH_OBJECT,
7629        qualifyingData: *const TPM2B_DATA,
7630        inScheme: *const TPMT_SIG_SCHEME,
7631        PCRselect: *const TPML_PCR_SELECTION,
7632    ) -> TSS2_RC;
7633}
7634extern "C" {
7635    pub fn Tss2_Sys_Quote_Complete(
7636        sysContext: *mut TSS2_SYS_CONTEXT,
7637        quoted: *mut TPM2B_ATTEST,
7638        signature: *mut TPMT_SIGNATURE,
7639    ) -> TSS2_RC;
7640}
7641extern "C" {
7642    pub fn Tss2_Sys_Quote(
7643        sysContext: *mut TSS2_SYS_CONTEXT,
7644        signHandle: TPMI_DH_OBJECT,
7645        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7646        qualifyingData: *const TPM2B_DATA,
7647        inScheme: *const TPMT_SIG_SCHEME,
7648        PCRselect: *const TPML_PCR_SELECTION,
7649        quoted: *mut TPM2B_ATTEST,
7650        signature: *mut TPMT_SIGNATURE,
7651        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7652    ) -> TSS2_RC;
7653}
7654extern "C" {
7655    pub fn Tss2_Sys_GetSessionAuditDigest_Prepare(
7656        sysContext: *mut TSS2_SYS_CONTEXT,
7657        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
7658        signHandle: TPMI_DH_OBJECT,
7659        sessionHandle: TPMI_SH_HMAC,
7660        qualifyingData: *const TPM2B_DATA,
7661        inScheme: *const TPMT_SIG_SCHEME,
7662    ) -> TSS2_RC;
7663}
7664extern "C" {
7665    pub fn Tss2_Sys_GetSessionAuditDigest_Complete(
7666        sysContext: *mut TSS2_SYS_CONTEXT,
7667        auditInfo: *mut TPM2B_ATTEST,
7668        signature: *mut TPMT_SIGNATURE,
7669    ) -> TSS2_RC;
7670}
7671extern "C" {
7672    pub fn Tss2_Sys_GetSessionAuditDigest(
7673        sysContext: *mut TSS2_SYS_CONTEXT,
7674        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
7675        signHandle: TPMI_DH_OBJECT,
7676        sessionHandle: TPMI_SH_HMAC,
7677        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7678        qualifyingData: *const TPM2B_DATA,
7679        inScheme: *const TPMT_SIG_SCHEME,
7680        auditInfo: *mut TPM2B_ATTEST,
7681        signature: *mut TPMT_SIGNATURE,
7682        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7683    ) -> TSS2_RC;
7684}
7685extern "C" {
7686    pub fn Tss2_Sys_GetCommandAuditDigest_Prepare(
7687        sysContext: *mut TSS2_SYS_CONTEXT,
7688        privacyHandle: TPMI_RH_ENDORSEMENT,
7689        signHandle: TPMI_DH_OBJECT,
7690        qualifyingData: *const TPM2B_DATA,
7691        inScheme: *const TPMT_SIG_SCHEME,
7692    ) -> TSS2_RC;
7693}
7694extern "C" {
7695    pub fn Tss2_Sys_GetCommandAuditDigest_Complete(
7696        sysContext: *mut TSS2_SYS_CONTEXT,
7697        auditInfo: *mut TPM2B_ATTEST,
7698        signature: *mut TPMT_SIGNATURE,
7699    ) -> TSS2_RC;
7700}
7701extern "C" {
7702    pub fn Tss2_Sys_GetCommandAuditDigest(
7703        sysContext: *mut TSS2_SYS_CONTEXT,
7704        privacyHandle: TPMI_RH_ENDORSEMENT,
7705        signHandle: TPMI_DH_OBJECT,
7706        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7707        qualifyingData: *const TPM2B_DATA,
7708        inScheme: *const TPMT_SIG_SCHEME,
7709        auditInfo: *mut TPM2B_ATTEST,
7710        signature: *mut TPMT_SIGNATURE,
7711        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7712    ) -> TSS2_RC;
7713}
7714extern "C" {
7715    pub fn Tss2_Sys_GetTime_Prepare(
7716        sysContext: *mut TSS2_SYS_CONTEXT,
7717        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
7718        signHandle: TPMI_DH_OBJECT,
7719        qualifyingData: *const TPM2B_DATA,
7720        inScheme: *const TPMT_SIG_SCHEME,
7721    ) -> TSS2_RC;
7722}
7723extern "C" {
7724    pub fn Tss2_Sys_GetTime_Complete(
7725        sysContext: *mut TSS2_SYS_CONTEXT,
7726        timeInfo: *mut TPM2B_ATTEST,
7727        signature: *mut TPMT_SIGNATURE,
7728    ) -> TSS2_RC;
7729}
7730extern "C" {
7731    pub fn Tss2_Sys_GetTime(
7732        sysContext: *mut TSS2_SYS_CONTEXT,
7733        privacyAdminHandle: TPMI_RH_ENDORSEMENT,
7734        signHandle: TPMI_DH_OBJECT,
7735        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7736        qualifyingData: *const TPM2B_DATA,
7737        inScheme: *const TPMT_SIG_SCHEME,
7738        timeInfo: *mut TPM2B_ATTEST,
7739        signature: *mut TPMT_SIGNATURE,
7740        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7741    ) -> TSS2_RC;
7742}
7743extern "C" {
7744    pub fn Tss2_Sys_Commit_Prepare(
7745        sysContext: *mut TSS2_SYS_CONTEXT,
7746        signHandle: TPMI_DH_OBJECT,
7747        P1: *const TPM2B_ECC_POINT,
7748        s2: *const TPM2B_SENSITIVE_DATA,
7749        y2: *const TPM2B_ECC_PARAMETER,
7750    ) -> TSS2_RC;
7751}
7752extern "C" {
7753    pub fn Tss2_Sys_Commit_Complete(
7754        sysContext: *mut TSS2_SYS_CONTEXT,
7755        K: *mut TPM2B_ECC_POINT,
7756        L: *mut TPM2B_ECC_POINT,
7757        E: *mut TPM2B_ECC_POINT,
7758        counter: *mut UINT16,
7759    ) -> TSS2_RC;
7760}
7761extern "C" {
7762    pub fn Tss2_Sys_Commit(
7763        sysContext: *mut TSS2_SYS_CONTEXT,
7764        signHandle: TPMI_DH_OBJECT,
7765        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7766        P1: *const TPM2B_ECC_POINT,
7767        s2: *const TPM2B_SENSITIVE_DATA,
7768        y2: *const TPM2B_ECC_PARAMETER,
7769        K: *mut TPM2B_ECC_POINT,
7770        L: *mut TPM2B_ECC_POINT,
7771        E: *mut TPM2B_ECC_POINT,
7772        counter: *mut UINT16,
7773        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7774    ) -> TSS2_RC;
7775}
7776extern "C" {
7777    pub fn Tss2_Sys_EC_Ephemeral_Prepare(
7778        sysContext: *mut TSS2_SYS_CONTEXT,
7779        curveID: TPMI_ECC_CURVE,
7780    ) -> TSS2_RC;
7781}
7782extern "C" {
7783    pub fn Tss2_Sys_EC_Ephemeral_Complete(
7784        sysContext: *mut TSS2_SYS_CONTEXT,
7785        Q: *mut TPM2B_ECC_POINT,
7786        counter: *mut UINT16,
7787    ) -> TSS2_RC;
7788}
7789extern "C" {
7790    pub fn Tss2_Sys_EC_Ephemeral(
7791        sysContext: *mut TSS2_SYS_CONTEXT,
7792        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7793        curveID: TPMI_ECC_CURVE,
7794        Q: *mut TPM2B_ECC_POINT,
7795        counter: *mut UINT16,
7796        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7797    ) -> TSS2_RC;
7798}
7799extern "C" {
7800    pub fn Tss2_Sys_VerifySignature_Prepare(
7801        sysContext: *mut TSS2_SYS_CONTEXT,
7802        keyHandle: TPMI_DH_OBJECT,
7803        digest: *const TPM2B_DIGEST,
7804        signature: *const TPMT_SIGNATURE,
7805    ) -> TSS2_RC;
7806}
7807extern "C" {
7808    pub fn Tss2_Sys_VerifySignature_Complete(
7809        sysContext: *mut TSS2_SYS_CONTEXT,
7810        validation: *mut TPMT_TK_VERIFIED,
7811    ) -> TSS2_RC;
7812}
7813extern "C" {
7814    pub fn Tss2_Sys_VerifySignature(
7815        sysContext: *mut TSS2_SYS_CONTEXT,
7816        keyHandle: TPMI_DH_OBJECT,
7817        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7818        digest: *const TPM2B_DIGEST,
7819        signature: *const TPMT_SIGNATURE,
7820        validation: *mut TPMT_TK_VERIFIED,
7821        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7822    ) -> TSS2_RC;
7823}
7824extern "C" {
7825    pub fn Tss2_Sys_Sign_Prepare(
7826        sysContext: *mut TSS2_SYS_CONTEXT,
7827        keyHandle: TPMI_DH_OBJECT,
7828        digest: *const TPM2B_DIGEST,
7829        inScheme: *const TPMT_SIG_SCHEME,
7830        validation: *const TPMT_TK_HASHCHECK,
7831    ) -> TSS2_RC;
7832}
7833extern "C" {
7834    pub fn Tss2_Sys_Sign_Complete(
7835        sysContext: *mut TSS2_SYS_CONTEXT,
7836        signature: *mut TPMT_SIGNATURE,
7837    ) -> TSS2_RC;
7838}
7839extern "C" {
7840    pub fn Tss2_Sys_Sign(
7841        sysContext: *mut TSS2_SYS_CONTEXT,
7842        keyHandle: TPMI_DH_OBJECT,
7843        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7844        digest: *const TPM2B_DIGEST,
7845        inScheme: *const TPMT_SIG_SCHEME,
7846        validation: *const TPMT_TK_HASHCHECK,
7847        signature: *mut TPMT_SIGNATURE,
7848        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7849    ) -> TSS2_RC;
7850}
7851extern "C" {
7852    pub fn Tss2_Sys_SetCommandCodeAuditStatus_Prepare(
7853        sysContext: *mut TSS2_SYS_CONTEXT,
7854        auth: TPMI_RH_PROVISION,
7855        auditAlg: TPMI_ALG_HASH,
7856        setList: *const TPML_CC,
7857        clearList: *const TPML_CC,
7858    ) -> TSS2_RC;
7859}
7860extern "C" {
7861    pub fn Tss2_Sys_SetCommandCodeAuditStatus_Complete(
7862        sysContext: *mut TSS2_SYS_CONTEXT,
7863    ) -> TSS2_RC;
7864}
7865extern "C" {
7866    pub fn Tss2_Sys_SetCommandCodeAuditStatus(
7867        sysContext: *mut TSS2_SYS_CONTEXT,
7868        auth: TPMI_RH_PROVISION,
7869        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7870        auditAlg: TPMI_ALG_HASH,
7871        setList: *const TPML_CC,
7872        clearList: *const TPML_CC,
7873        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7874    ) -> TSS2_RC;
7875}
7876extern "C" {
7877    pub fn Tss2_Sys_PCR_Extend_Prepare(
7878        sysContext: *mut TSS2_SYS_CONTEXT,
7879        pcrHandle: TPMI_DH_PCR,
7880        digests: *const TPML_DIGEST_VALUES,
7881    ) -> TSS2_RC;
7882}
7883extern "C" {
7884    pub fn Tss2_Sys_PCR_Extend_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7885}
7886extern "C" {
7887    pub fn Tss2_Sys_PCR_Extend(
7888        sysContext: *mut TSS2_SYS_CONTEXT,
7889        pcrHandle: TPMI_DH_PCR,
7890        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7891        digests: *const TPML_DIGEST_VALUES,
7892        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7893    ) -> TSS2_RC;
7894}
7895extern "C" {
7896    pub fn Tss2_Sys_PCR_Event_Prepare(
7897        sysContext: *mut TSS2_SYS_CONTEXT,
7898        pcrHandle: TPMI_DH_PCR,
7899        eventData: *const TPM2B_EVENT,
7900    ) -> TSS2_RC;
7901}
7902extern "C" {
7903    pub fn Tss2_Sys_PCR_Event_Complete(
7904        sysContext: *mut TSS2_SYS_CONTEXT,
7905        digests: *mut TPML_DIGEST_VALUES,
7906    ) -> TSS2_RC;
7907}
7908extern "C" {
7909    pub fn Tss2_Sys_PCR_Event(
7910        sysContext: *mut TSS2_SYS_CONTEXT,
7911        pcrHandle: TPMI_DH_PCR,
7912        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7913        eventData: *const TPM2B_EVENT,
7914        digests: *mut TPML_DIGEST_VALUES,
7915        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7916    ) -> TSS2_RC;
7917}
7918extern "C" {
7919    pub fn Tss2_Sys_PCR_Read_Prepare(
7920        sysContext: *mut TSS2_SYS_CONTEXT,
7921        pcrSelectionIn: *const TPML_PCR_SELECTION,
7922    ) -> TSS2_RC;
7923}
7924extern "C" {
7925    pub fn Tss2_Sys_PCR_Read_Complete(
7926        sysContext: *mut TSS2_SYS_CONTEXT,
7927        pcrUpdateCounter: *mut UINT32,
7928        pcrSelectionOut: *mut TPML_PCR_SELECTION,
7929        pcrValues: *mut TPML_DIGEST,
7930    ) -> TSS2_RC;
7931}
7932extern "C" {
7933    pub fn Tss2_Sys_PCR_Read(
7934        sysContext: *mut TSS2_SYS_CONTEXT,
7935        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7936        pcrSelectionIn: *const TPML_PCR_SELECTION,
7937        pcrUpdateCounter: *mut UINT32,
7938        pcrSelectionOut: *mut TPML_PCR_SELECTION,
7939        pcrValues: *mut TPML_DIGEST,
7940        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7941    ) -> TSS2_RC;
7942}
7943extern "C" {
7944    pub fn Tss2_Sys_PCR_Allocate_Prepare(
7945        sysContext: *mut TSS2_SYS_CONTEXT,
7946        authHandle: TPMI_RH_PLATFORM,
7947        pcrAllocation: *const TPML_PCR_SELECTION,
7948    ) -> TSS2_RC;
7949}
7950extern "C" {
7951    pub fn Tss2_Sys_PCR_Allocate_Complete(
7952        sysContext: *mut TSS2_SYS_CONTEXT,
7953        allocationSuccess: *mut TPMI_YES_NO,
7954        maxPCR: *mut UINT32,
7955        sizeNeeded: *mut UINT32,
7956        sizeAvailable: *mut UINT32,
7957    ) -> TSS2_RC;
7958}
7959extern "C" {
7960    pub fn Tss2_Sys_PCR_Allocate(
7961        sysContext: *mut TSS2_SYS_CONTEXT,
7962        authHandle: TPMI_RH_PLATFORM,
7963        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7964        pcrAllocation: *const TPML_PCR_SELECTION,
7965        allocationSuccess: *mut TPMI_YES_NO,
7966        maxPCR: *mut UINT32,
7967        sizeNeeded: *mut UINT32,
7968        sizeAvailable: *mut UINT32,
7969        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7970    ) -> TSS2_RC;
7971}
7972extern "C" {
7973    pub fn Tss2_Sys_PCR_SetAuthPolicy_Prepare(
7974        sysContext: *mut TSS2_SYS_CONTEXT,
7975        authHandle: TPMI_RH_PLATFORM,
7976        authPolicy: *const TPM2B_DIGEST,
7977        hashAlg: TPMI_ALG_HASH,
7978        pcrNum: TPMI_DH_PCR,
7979    ) -> TSS2_RC;
7980}
7981extern "C" {
7982    pub fn Tss2_Sys_PCR_SetAuthPolicy_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
7983}
7984extern "C" {
7985    pub fn Tss2_Sys_PCR_SetAuthPolicy(
7986        sysContext: *mut TSS2_SYS_CONTEXT,
7987        authHandle: TPMI_RH_PLATFORM,
7988        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
7989        authPolicy: *const TPM2B_DIGEST,
7990        hashAlg: TPMI_ALG_HASH,
7991        pcrNum: TPMI_DH_PCR,
7992        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
7993    ) -> TSS2_RC;
7994}
7995extern "C" {
7996    pub fn Tss2_Sys_PCR_SetAuthValue_Prepare(
7997        sysContext: *mut TSS2_SYS_CONTEXT,
7998        pcrHandle: TPMI_DH_PCR,
7999        auth: *const TPM2B_DIGEST,
8000    ) -> TSS2_RC;
8001}
8002extern "C" {
8003    pub fn Tss2_Sys_PCR_SetAuthValue_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8004}
8005extern "C" {
8006    pub fn Tss2_Sys_PCR_SetAuthValue(
8007        sysContext: *mut TSS2_SYS_CONTEXT,
8008        pcrHandle: TPMI_DH_PCR,
8009        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8010        auth: *const TPM2B_DIGEST,
8011        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8012    ) -> TSS2_RC;
8013}
8014extern "C" {
8015    pub fn Tss2_Sys_PCR_Reset_Prepare(
8016        sysContext: *mut TSS2_SYS_CONTEXT,
8017        pcrHandle: TPMI_DH_PCR,
8018    ) -> TSS2_RC;
8019}
8020extern "C" {
8021    pub fn Tss2_Sys_PCR_Reset_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8022}
8023extern "C" {
8024    pub fn Tss2_Sys_PCR_Reset(
8025        sysContext: *mut TSS2_SYS_CONTEXT,
8026        pcrHandle: TPMI_DH_PCR,
8027        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8028        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8029    ) -> TSS2_RC;
8030}
8031extern "C" {
8032    pub fn Tss2_Sys_PolicySigned_Prepare(
8033        sysContext: *mut TSS2_SYS_CONTEXT,
8034        authObject: TPMI_DH_OBJECT,
8035        policySession: TPMI_SH_POLICY,
8036        nonceTPM: *const TPM2B_NONCE,
8037        cpHashA: *const TPM2B_DIGEST,
8038        policyRef: *const TPM2B_NONCE,
8039        expiration: INT32,
8040        auth: *const TPMT_SIGNATURE,
8041    ) -> TSS2_RC;
8042}
8043extern "C" {
8044    pub fn Tss2_Sys_PolicySigned_Complete(
8045        sysContext: *mut TSS2_SYS_CONTEXT,
8046        timeout: *mut TPM2B_TIMEOUT,
8047        policyTicket: *mut TPMT_TK_AUTH,
8048    ) -> TSS2_RC;
8049}
8050extern "C" {
8051    pub fn Tss2_Sys_PolicySigned(
8052        sysContext: *mut TSS2_SYS_CONTEXT,
8053        authObject: TPMI_DH_OBJECT,
8054        policySession: TPMI_SH_POLICY,
8055        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8056        nonceTPM: *const TPM2B_NONCE,
8057        cpHashA: *const TPM2B_DIGEST,
8058        policyRef: *const TPM2B_NONCE,
8059        expiration: INT32,
8060        auth: *const TPMT_SIGNATURE,
8061        timeout: *mut TPM2B_TIMEOUT,
8062        policyTicket: *mut TPMT_TK_AUTH,
8063        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8064    ) -> TSS2_RC;
8065}
8066extern "C" {
8067    pub fn Tss2_Sys_PolicySecret_Prepare(
8068        sysContext: *mut TSS2_SYS_CONTEXT,
8069        authHandle: TPMI_DH_ENTITY,
8070        policySession: TPMI_SH_POLICY,
8071        nonceTPM: *const TPM2B_NONCE,
8072        cpHashA: *const TPM2B_DIGEST,
8073        policyRef: *const TPM2B_NONCE,
8074        expiration: INT32,
8075    ) -> TSS2_RC;
8076}
8077extern "C" {
8078    pub fn Tss2_Sys_PolicySecret_Complete(
8079        sysContext: *mut TSS2_SYS_CONTEXT,
8080        timeout: *mut TPM2B_TIMEOUT,
8081        policyTicket: *mut TPMT_TK_AUTH,
8082    ) -> TSS2_RC;
8083}
8084extern "C" {
8085    pub fn Tss2_Sys_PolicySecret(
8086        sysContext: *mut TSS2_SYS_CONTEXT,
8087        authHandle: TPMI_DH_ENTITY,
8088        policySession: TPMI_SH_POLICY,
8089        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8090        nonceTPM: *const TPM2B_NONCE,
8091        cpHashA: *const TPM2B_DIGEST,
8092        policyRef: *const TPM2B_NONCE,
8093        expiration: INT32,
8094        timeout: *mut TPM2B_TIMEOUT,
8095        policyTicket: *mut TPMT_TK_AUTH,
8096        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8097    ) -> TSS2_RC;
8098}
8099extern "C" {
8100    pub fn Tss2_Sys_PolicyTicket_Prepare(
8101        sysContext: *mut TSS2_SYS_CONTEXT,
8102        policySession: TPMI_SH_POLICY,
8103        timeout: *const TPM2B_TIMEOUT,
8104        cpHashA: *const TPM2B_DIGEST,
8105        policyRef: *const TPM2B_NONCE,
8106        authName: *const TPM2B_NAME,
8107        ticket: *const TPMT_TK_AUTH,
8108    ) -> TSS2_RC;
8109}
8110extern "C" {
8111    pub fn Tss2_Sys_PolicyTicket_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8112}
8113extern "C" {
8114    pub fn Tss2_Sys_PolicyTicket(
8115        sysContext: *mut TSS2_SYS_CONTEXT,
8116        policySession: TPMI_SH_POLICY,
8117        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8118        timeout: *const TPM2B_TIMEOUT,
8119        cpHashA: *const TPM2B_DIGEST,
8120        policyRef: *const TPM2B_NONCE,
8121        authName: *const TPM2B_NAME,
8122        ticket: *const TPMT_TK_AUTH,
8123        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8124    ) -> TSS2_RC;
8125}
8126extern "C" {
8127    pub fn Tss2_Sys_PolicyOR_Prepare(
8128        sysContext: *mut TSS2_SYS_CONTEXT,
8129        policySession: TPMI_SH_POLICY,
8130        pHashList: *const TPML_DIGEST,
8131    ) -> TSS2_RC;
8132}
8133extern "C" {
8134    pub fn Tss2_Sys_PolicyOR_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8135}
8136extern "C" {
8137    pub fn Tss2_Sys_PolicyOR(
8138        sysContext: *mut TSS2_SYS_CONTEXT,
8139        policySession: TPMI_SH_POLICY,
8140        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8141        pHashList: *const TPML_DIGEST,
8142        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8143    ) -> TSS2_RC;
8144}
8145extern "C" {
8146    pub fn Tss2_Sys_PolicyPCR_Prepare(
8147        sysContext: *mut TSS2_SYS_CONTEXT,
8148        policySession: TPMI_SH_POLICY,
8149        pcrDigest: *const TPM2B_DIGEST,
8150        pcrs: *const TPML_PCR_SELECTION,
8151    ) -> TSS2_RC;
8152}
8153extern "C" {
8154    pub fn Tss2_Sys_PolicyPCR_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8155}
8156extern "C" {
8157    pub fn Tss2_Sys_PolicyPCR(
8158        sysContext: *mut TSS2_SYS_CONTEXT,
8159        policySession: TPMI_SH_POLICY,
8160        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8161        pcrDigest: *const TPM2B_DIGEST,
8162        pcrs: *const TPML_PCR_SELECTION,
8163        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8164    ) -> TSS2_RC;
8165}
8166extern "C" {
8167    pub fn Tss2_Sys_PolicyLocality_Prepare(
8168        sysContext: *mut TSS2_SYS_CONTEXT,
8169        policySession: TPMI_SH_POLICY,
8170        locality: TPMA_LOCALITY,
8171    ) -> TSS2_RC;
8172}
8173extern "C" {
8174    pub fn Tss2_Sys_PolicyLocality_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8175}
8176extern "C" {
8177    pub fn Tss2_Sys_PolicyLocality(
8178        sysContext: *mut TSS2_SYS_CONTEXT,
8179        policySession: TPMI_SH_POLICY,
8180        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8181        locality: TPMA_LOCALITY,
8182        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8183    ) -> TSS2_RC;
8184}
8185extern "C" {
8186    pub fn Tss2_Sys_PolicyNV_Prepare(
8187        sysContext: *mut TSS2_SYS_CONTEXT,
8188        authHandle: TPMI_RH_NV_AUTH,
8189        nvIndex: TPMI_RH_NV_INDEX,
8190        policySession: TPMI_SH_POLICY,
8191        operandB: *const TPM2B_OPERAND,
8192        offset: UINT16,
8193        operation: TPM2_EO,
8194    ) -> TSS2_RC;
8195}
8196extern "C" {
8197    pub fn Tss2_Sys_PolicyNV_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8198}
8199extern "C" {
8200    pub fn Tss2_Sys_PolicyNV(
8201        sysContext: *mut TSS2_SYS_CONTEXT,
8202        authHandle: TPMI_RH_NV_AUTH,
8203        nvIndex: TPMI_RH_NV_INDEX,
8204        policySession: TPMI_SH_POLICY,
8205        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8206        operandB: *const TPM2B_OPERAND,
8207        offset: UINT16,
8208        operation: TPM2_EO,
8209        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8210    ) -> TSS2_RC;
8211}
8212extern "C" {
8213    pub fn Tss2_Sys_PolicyCounterTimer_Prepare(
8214        sysContext: *mut TSS2_SYS_CONTEXT,
8215        policySession: TPMI_SH_POLICY,
8216        operandB: *const TPM2B_OPERAND,
8217        offset: UINT16,
8218        operation: TPM2_EO,
8219    ) -> TSS2_RC;
8220}
8221extern "C" {
8222    pub fn Tss2_Sys_PolicyCounterTimer_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8223}
8224extern "C" {
8225    pub fn Tss2_Sys_PolicyCounterTimer(
8226        sysContext: *mut TSS2_SYS_CONTEXT,
8227        policySession: TPMI_SH_POLICY,
8228        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8229        operandB: *const TPM2B_OPERAND,
8230        offset: UINT16,
8231        operation: TPM2_EO,
8232        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8233    ) -> TSS2_RC;
8234}
8235extern "C" {
8236    pub fn Tss2_Sys_PolicyCommandCode_Prepare(
8237        sysContext: *mut TSS2_SYS_CONTEXT,
8238        policySession: TPMI_SH_POLICY,
8239        code: TPM2_CC,
8240    ) -> TSS2_RC;
8241}
8242extern "C" {
8243    pub fn Tss2_Sys_PolicyCommandCode_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8244}
8245extern "C" {
8246    pub fn Tss2_Sys_PolicyCommandCode(
8247        sysContext: *mut TSS2_SYS_CONTEXT,
8248        policySession: TPMI_SH_POLICY,
8249        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8250        code: TPM2_CC,
8251        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8252    ) -> TSS2_RC;
8253}
8254extern "C" {
8255    pub fn Tss2_Sys_PolicyPhysicalPresence_Prepare(
8256        sysContext: *mut TSS2_SYS_CONTEXT,
8257        policySession: TPMI_SH_POLICY,
8258    ) -> TSS2_RC;
8259}
8260extern "C" {
8261    pub fn Tss2_Sys_PolicyPhysicalPresence_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8262}
8263extern "C" {
8264    pub fn Tss2_Sys_PolicyPhysicalPresence(
8265        sysContext: *mut TSS2_SYS_CONTEXT,
8266        policySession: TPMI_SH_POLICY,
8267        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8268        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8269    ) -> TSS2_RC;
8270}
8271extern "C" {
8272    pub fn Tss2_Sys_PolicyCpHash_Prepare(
8273        sysContext: *mut TSS2_SYS_CONTEXT,
8274        policySession: TPMI_SH_POLICY,
8275        cpHashA: *const TPM2B_DIGEST,
8276    ) -> TSS2_RC;
8277}
8278extern "C" {
8279    pub fn Tss2_Sys_PolicyCpHash_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8280}
8281extern "C" {
8282    pub fn Tss2_Sys_PolicyCpHash(
8283        sysContext: *mut TSS2_SYS_CONTEXT,
8284        policySession: TPMI_SH_POLICY,
8285        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8286        cpHashA: *const TPM2B_DIGEST,
8287        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8288    ) -> TSS2_RC;
8289}
8290extern "C" {
8291    pub fn Tss2_Sys_PolicyNameHash_Prepare(
8292        sysContext: *mut TSS2_SYS_CONTEXT,
8293        policySession: TPMI_SH_POLICY,
8294        nameHash: *const TPM2B_DIGEST,
8295    ) -> TSS2_RC;
8296}
8297extern "C" {
8298    pub fn Tss2_Sys_PolicyNameHash_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8299}
8300extern "C" {
8301    pub fn Tss2_Sys_PolicyNameHash(
8302        sysContext: *mut TSS2_SYS_CONTEXT,
8303        policySession: TPMI_SH_POLICY,
8304        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8305        nameHash: *const TPM2B_DIGEST,
8306        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8307    ) -> TSS2_RC;
8308}
8309extern "C" {
8310    pub fn Tss2_Sys_PolicyDuplicationSelect_Prepare(
8311        sysContext: *mut TSS2_SYS_CONTEXT,
8312        policySession: TPMI_SH_POLICY,
8313        objectName: *const TPM2B_NAME,
8314        newParentName: *const TPM2B_NAME,
8315        includeObject: TPMI_YES_NO,
8316    ) -> TSS2_RC;
8317}
8318extern "C" {
8319    pub fn Tss2_Sys_PolicyDuplicationSelect_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8320}
8321extern "C" {
8322    pub fn Tss2_Sys_PolicyDuplicationSelect(
8323        sysContext: *mut TSS2_SYS_CONTEXT,
8324        policySession: TPMI_SH_POLICY,
8325        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8326        objectName: *const TPM2B_NAME,
8327        newParentName: *const TPM2B_NAME,
8328        includeObject: TPMI_YES_NO,
8329        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8330    ) -> TSS2_RC;
8331}
8332extern "C" {
8333    pub fn Tss2_Sys_PolicyAuthorize_Prepare(
8334        sysContext: *mut TSS2_SYS_CONTEXT,
8335        policySession: TPMI_SH_POLICY,
8336        approvedPolicy: *const TPM2B_DIGEST,
8337        policyRef: *const TPM2B_NONCE,
8338        keySign: *const TPM2B_NAME,
8339        checkTicket: *const TPMT_TK_VERIFIED,
8340    ) -> TSS2_RC;
8341}
8342extern "C" {
8343    pub fn Tss2_Sys_PolicyAuthorize_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8344}
8345extern "C" {
8346    pub fn Tss2_Sys_PolicyAuthorize(
8347        sysContext: *mut TSS2_SYS_CONTEXT,
8348        policySession: TPMI_SH_POLICY,
8349        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8350        approvedPolicy: *const TPM2B_DIGEST,
8351        policyRef: *const TPM2B_NONCE,
8352        keySign: *const TPM2B_NAME,
8353        checkTicket: *const TPMT_TK_VERIFIED,
8354        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8355    ) -> TSS2_RC;
8356}
8357extern "C" {
8358    pub fn Tss2_Sys_PolicyAuthValue_Prepare(
8359        sysContext: *mut TSS2_SYS_CONTEXT,
8360        policySession: TPMI_SH_POLICY,
8361    ) -> TSS2_RC;
8362}
8363extern "C" {
8364    pub fn Tss2_Sys_PolicyAuthValue_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8365}
8366extern "C" {
8367    pub fn Tss2_Sys_PolicyAuthValue(
8368        sysContext: *mut TSS2_SYS_CONTEXT,
8369        policySession: TPMI_SH_POLICY,
8370        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8371        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8372    ) -> TSS2_RC;
8373}
8374extern "C" {
8375    pub fn Tss2_Sys_PolicyPassword_Prepare(
8376        sysContext: *mut TSS2_SYS_CONTEXT,
8377        policySession: TPMI_SH_POLICY,
8378    ) -> TSS2_RC;
8379}
8380extern "C" {
8381    pub fn Tss2_Sys_PolicyPassword_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8382}
8383extern "C" {
8384    pub fn Tss2_Sys_PolicyPassword(
8385        sysContext: *mut TSS2_SYS_CONTEXT,
8386        policySession: TPMI_SH_POLICY,
8387        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8388        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8389    ) -> TSS2_RC;
8390}
8391extern "C" {
8392    pub fn Tss2_Sys_PolicyGetDigest_Prepare(
8393        sysContext: *mut TSS2_SYS_CONTEXT,
8394        policySession: TPMI_SH_POLICY,
8395    ) -> TSS2_RC;
8396}
8397extern "C" {
8398    pub fn Tss2_Sys_PolicyGetDigest_Complete(
8399        sysContext: *mut TSS2_SYS_CONTEXT,
8400        policyDigest: *mut TPM2B_DIGEST,
8401    ) -> TSS2_RC;
8402}
8403extern "C" {
8404    pub fn Tss2_Sys_PolicyGetDigest(
8405        sysContext: *mut TSS2_SYS_CONTEXT,
8406        policySession: TPMI_SH_POLICY,
8407        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8408        policyDigest: *mut TPM2B_DIGEST,
8409        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8410    ) -> TSS2_RC;
8411}
8412extern "C" {
8413    pub fn Tss2_Sys_PolicyNvWritten_Prepare(
8414        sysContext: *mut TSS2_SYS_CONTEXT,
8415        policySession: TPMI_SH_POLICY,
8416        writtenSet: TPMI_YES_NO,
8417    ) -> TSS2_RC;
8418}
8419extern "C" {
8420    pub fn Tss2_Sys_PolicyNvWritten_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8421}
8422extern "C" {
8423    pub fn Tss2_Sys_PolicyNvWritten(
8424        sysContext: *mut TSS2_SYS_CONTEXT,
8425        policySession: TPMI_SH_POLICY,
8426        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8427        writtenSet: TPMI_YES_NO,
8428        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8429    ) -> TSS2_RC;
8430}
8431extern "C" {
8432    pub fn Tss2_Sys_CreatePrimary_Prepare(
8433        sysContext: *mut TSS2_SYS_CONTEXT,
8434        primaryHandle: TPMI_RH_HIERARCHY,
8435        inSensitive: *const TPM2B_SENSITIVE_CREATE,
8436        inPublic: *const TPM2B_PUBLIC,
8437        outsideInfo: *const TPM2B_DATA,
8438        creationPCR: *const TPML_PCR_SELECTION,
8439    ) -> TSS2_RC;
8440}
8441extern "C" {
8442    pub fn Tss2_Sys_CreatePrimary_Complete(
8443        sysContext: *mut TSS2_SYS_CONTEXT,
8444        objectHandle: *mut TPM2_HANDLE,
8445        outPublic: *mut TPM2B_PUBLIC,
8446        creationData: *mut TPM2B_CREATION_DATA,
8447        creationHash: *mut TPM2B_DIGEST,
8448        creationTicket: *mut TPMT_TK_CREATION,
8449        name: *mut TPM2B_NAME,
8450    ) -> TSS2_RC;
8451}
8452extern "C" {
8453    pub fn Tss2_Sys_CreatePrimary(
8454        sysContext: *mut TSS2_SYS_CONTEXT,
8455        primaryHandle: TPMI_RH_HIERARCHY,
8456        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8457        inSensitive: *const TPM2B_SENSITIVE_CREATE,
8458        inPublic: *const TPM2B_PUBLIC,
8459        outsideInfo: *const TPM2B_DATA,
8460        creationPCR: *const TPML_PCR_SELECTION,
8461        objectHandle: *mut TPM2_HANDLE,
8462        outPublic: *mut TPM2B_PUBLIC,
8463        creationData: *mut TPM2B_CREATION_DATA,
8464        creationHash: *mut TPM2B_DIGEST,
8465        creationTicket: *mut TPMT_TK_CREATION,
8466        name: *mut TPM2B_NAME,
8467        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8468    ) -> TSS2_RC;
8469}
8470extern "C" {
8471    pub fn Tss2_Sys_HierarchyControl_Prepare(
8472        sysContext: *mut TSS2_SYS_CONTEXT,
8473        authHandle: TPMI_RH_HIERARCHY,
8474        enable: TPMI_RH_ENABLES,
8475        state: TPMI_YES_NO,
8476    ) -> TSS2_RC;
8477}
8478extern "C" {
8479    pub fn Tss2_Sys_HierarchyControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8480}
8481extern "C" {
8482    pub fn Tss2_Sys_HierarchyControl(
8483        sysContext: *mut TSS2_SYS_CONTEXT,
8484        authHandle: TPMI_RH_HIERARCHY,
8485        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8486        enable: TPMI_RH_ENABLES,
8487        state: TPMI_YES_NO,
8488        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8489    ) -> TSS2_RC;
8490}
8491extern "C" {
8492    pub fn Tss2_Sys_SetPrimaryPolicy_Prepare(
8493        sysContext: *mut TSS2_SYS_CONTEXT,
8494        authHandle: TPMI_RH_HIERARCHY_AUTH,
8495        authPolicy: *const TPM2B_DIGEST,
8496        hashAlg: TPMI_ALG_HASH,
8497    ) -> TSS2_RC;
8498}
8499extern "C" {
8500    pub fn Tss2_Sys_SetPrimaryPolicy_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8501}
8502extern "C" {
8503    pub fn Tss2_Sys_SetPrimaryPolicy(
8504        sysContext: *mut TSS2_SYS_CONTEXT,
8505        authHandle: TPMI_RH_HIERARCHY_AUTH,
8506        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8507        authPolicy: *const TPM2B_DIGEST,
8508        hashAlg: TPMI_ALG_HASH,
8509        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8510    ) -> TSS2_RC;
8511}
8512extern "C" {
8513    pub fn Tss2_Sys_ChangePPS_Prepare(
8514        sysContext: *mut TSS2_SYS_CONTEXT,
8515        authHandle: TPMI_RH_PLATFORM,
8516    ) -> TSS2_RC;
8517}
8518extern "C" {
8519    pub fn Tss2_Sys_ChangePPS_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8520}
8521extern "C" {
8522    pub fn Tss2_Sys_ChangePPS(
8523        sysContext: *mut TSS2_SYS_CONTEXT,
8524        authHandle: TPMI_RH_PLATFORM,
8525        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8526        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8527    ) -> TSS2_RC;
8528}
8529extern "C" {
8530    pub fn Tss2_Sys_ChangeEPS_Prepare(
8531        sysContext: *mut TSS2_SYS_CONTEXT,
8532        authHandle: TPMI_RH_PLATFORM,
8533    ) -> TSS2_RC;
8534}
8535extern "C" {
8536    pub fn Tss2_Sys_ChangeEPS_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8537}
8538extern "C" {
8539    pub fn Tss2_Sys_ChangeEPS(
8540        sysContext: *mut TSS2_SYS_CONTEXT,
8541        authHandle: TPMI_RH_PLATFORM,
8542        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8543        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8544    ) -> TSS2_RC;
8545}
8546extern "C" {
8547    pub fn Tss2_Sys_Clear_Prepare(
8548        sysContext: *mut TSS2_SYS_CONTEXT,
8549        authHandle: TPMI_RH_CLEAR,
8550    ) -> TSS2_RC;
8551}
8552extern "C" {
8553    pub fn Tss2_Sys_Clear_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8554}
8555extern "C" {
8556    pub fn Tss2_Sys_Clear(
8557        sysContext: *mut TSS2_SYS_CONTEXT,
8558        authHandle: TPMI_RH_CLEAR,
8559        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8560        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8561    ) -> TSS2_RC;
8562}
8563extern "C" {
8564    pub fn Tss2_Sys_ClearControl_Prepare(
8565        sysContext: *mut TSS2_SYS_CONTEXT,
8566        auth: TPMI_RH_CLEAR,
8567        disable: TPMI_YES_NO,
8568    ) -> TSS2_RC;
8569}
8570extern "C" {
8571    pub fn Tss2_Sys_ClearControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8572}
8573extern "C" {
8574    pub fn Tss2_Sys_ClearControl(
8575        sysContext: *mut TSS2_SYS_CONTEXT,
8576        auth: TPMI_RH_CLEAR,
8577        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8578        disable: TPMI_YES_NO,
8579        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8580    ) -> TSS2_RC;
8581}
8582extern "C" {
8583    pub fn Tss2_Sys_HierarchyChangeAuth_Prepare(
8584        sysContext: *mut TSS2_SYS_CONTEXT,
8585        authHandle: TPMI_RH_HIERARCHY_AUTH,
8586        newAuth: *const TPM2B_AUTH,
8587    ) -> TSS2_RC;
8588}
8589extern "C" {
8590    pub fn Tss2_Sys_HierarchyChangeAuth_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8591}
8592extern "C" {
8593    pub fn Tss2_Sys_HierarchyChangeAuth(
8594        sysContext: *mut TSS2_SYS_CONTEXT,
8595        authHandle: TPMI_RH_HIERARCHY_AUTH,
8596        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8597        newAuth: *const TPM2B_AUTH,
8598        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8599    ) -> TSS2_RC;
8600}
8601extern "C" {
8602    pub fn Tss2_Sys_DictionaryAttackLockReset_Prepare(
8603        sysContext: *mut TSS2_SYS_CONTEXT,
8604        lockHandle: TPMI_RH_LOCKOUT,
8605    ) -> TSS2_RC;
8606}
8607extern "C" {
8608    pub fn Tss2_Sys_DictionaryAttackLockReset_Complete(
8609        sysContext: *mut TSS2_SYS_CONTEXT,
8610    ) -> TSS2_RC;
8611}
8612extern "C" {
8613    pub fn Tss2_Sys_DictionaryAttackLockReset(
8614        sysContext: *mut TSS2_SYS_CONTEXT,
8615        lockHandle: TPMI_RH_LOCKOUT,
8616        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8617        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8618    ) -> TSS2_RC;
8619}
8620extern "C" {
8621    pub fn Tss2_Sys_DictionaryAttackParameters_Prepare(
8622        sysContext: *mut TSS2_SYS_CONTEXT,
8623        lockHandle: TPMI_RH_LOCKOUT,
8624        newMaxTries: UINT32,
8625        newRecoveryTime: UINT32,
8626        lockoutRecovery: UINT32,
8627    ) -> TSS2_RC;
8628}
8629extern "C" {
8630    pub fn Tss2_Sys_DictionaryAttackParameters_Complete(
8631        sysContext: *mut TSS2_SYS_CONTEXT,
8632    ) -> TSS2_RC;
8633}
8634extern "C" {
8635    pub fn Tss2_Sys_DictionaryAttackParameters(
8636        sysContext: *mut TSS2_SYS_CONTEXT,
8637        lockHandle: TPMI_RH_LOCKOUT,
8638        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8639        newMaxTries: UINT32,
8640        newRecoveryTime: UINT32,
8641        lockoutRecovery: UINT32,
8642        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8643    ) -> TSS2_RC;
8644}
8645extern "C" {
8646    pub fn Tss2_Sys_PP_Commands_Prepare(
8647        sysContext: *mut TSS2_SYS_CONTEXT,
8648        auth: TPMI_RH_PLATFORM,
8649        setList: *const TPML_CC,
8650        clearList: *const TPML_CC,
8651    ) -> TSS2_RC;
8652}
8653extern "C" {
8654    pub fn Tss2_Sys_PP_Commands_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8655}
8656extern "C" {
8657    pub fn Tss2_Sys_PP_Commands(
8658        sysContext: *mut TSS2_SYS_CONTEXT,
8659        auth: TPMI_RH_PLATFORM,
8660        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8661        setList: *const TPML_CC,
8662        clearList: *const TPML_CC,
8663        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8664    ) -> TSS2_RC;
8665}
8666extern "C" {
8667    pub fn Tss2_Sys_SetAlgorithmSet_Prepare(
8668        sysContext: *mut TSS2_SYS_CONTEXT,
8669        authHandle: TPMI_RH_PLATFORM,
8670        algorithmSet: UINT32,
8671    ) -> TSS2_RC;
8672}
8673extern "C" {
8674    pub fn Tss2_Sys_SetAlgorithmSet_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8675}
8676extern "C" {
8677    pub fn Tss2_Sys_SetAlgorithmSet(
8678        sysContext: *mut TSS2_SYS_CONTEXT,
8679        authHandle: TPMI_RH_PLATFORM,
8680        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8681        algorithmSet: UINT32,
8682        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8683    ) -> TSS2_RC;
8684}
8685extern "C" {
8686    pub fn Tss2_Sys_FieldUpgradeStart_Prepare(
8687        sysContext: *mut TSS2_SYS_CONTEXT,
8688        authorization: TPMI_RH_PLATFORM,
8689        keyHandle: TPMI_DH_OBJECT,
8690        fuDigest: *const TPM2B_DIGEST,
8691        manifestSignature: *const TPMT_SIGNATURE,
8692    ) -> TSS2_RC;
8693}
8694extern "C" {
8695    pub fn Tss2_Sys_FieldUpgradeStart_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8696}
8697extern "C" {
8698    pub fn Tss2_Sys_FieldUpgradeStart(
8699        sysContext: *mut TSS2_SYS_CONTEXT,
8700        authorization: TPMI_RH_PLATFORM,
8701        keyHandle: TPMI_DH_OBJECT,
8702        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8703        fuDigest: *const TPM2B_DIGEST,
8704        manifestSignature: *const TPMT_SIGNATURE,
8705        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8706    ) -> TSS2_RC;
8707}
8708extern "C" {
8709    pub fn Tss2_Sys_FieldUpgradeData_Prepare(
8710        sysContext: *mut TSS2_SYS_CONTEXT,
8711        fuData: *const TPM2B_MAX_BUFFER,
8712    ) -> TSS2_RC;
8713}
8714extern "C" {
8715    pub fn Tss2_Sys_FieldUpgradeData_Complete(
8716        sysContext: *mut TSS2_SYS_CONTEXT,
8717        nextDigest: *mut TPMT_HA,
8718        firstDigest: *mut TPMT_HA,
8719    ) -> TSS2_RC;
8720}
8721extern "C" {
8722    pub fn Tss2_Sys_FieldUpgradeData(
8723        sysContext: *mut TSS2_SYS_CONTEXT,
8724        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8725        fuData: *const TPM2B_MAX_BUFFER,
8726        nextDigest: *mut TPMT_HA,
8727        firstDigest: *mut TPMT_HA,
8728        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8729    ) -> TSS2_RC;
8730}
8731extern "C" {
8732    pub fn Tss2_Sys_FirmwareRead_Prepare(
8733        sysContext: *mut TSS2_SYS_CONTEXT,
8734        sequenceNumber: UINT32,
8735    ) -> TSS2_RC;
8736}
8737extern "C" {
8738    pub fn Tss2_Sys_FirmwareRead_Complete(
8739        sysContext: *mut TSS2_SYS_CONTEXT,
8740        fuData: *mut TPM2B_MAX_BUFFER,
8741    ) -> TSS2_RC;
8742}
8743extern "C" {
8744    pub fn Tss2_Sys_FirmwareRead(
8745        sysContext: *mut TSS2_SYS_CONTEXT,
8746        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8747        sequenceNumber: UINT32,
8748        fuData: *mut TPM2B_MAX_BUFFER,
8749        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8750    ) -> TSS2_RC;
8751}
8752extern "C" {
8753    pub fn Tss2_Sys_ContextSave_Prepare(
8754        sysContext: *mut TSS2_SYS_CONTEXT,
8755        saveHandle: TPMI_DH_CONTEXT,
8756    ) -> TSS2_RC;
8757}
8758extern "C" {
8759    pub fn Tss2_Sys_ContextSave_Complete(
8760        sysContext: *mut TSS2_SYS_CONTEXT,
8761        context: *mut TPMS_CONTEXT,
8762    ) -> TSS2_RC;
8763}
8764extern "C" {
8765    pub fn Tss2_Sys_ContextSave(
8766        sysContext: *mut TSS2_SYS_CONTEXT,
8767        saveHandle: TPMI_DH_CONTEXT,
8768        context: *mut TPMS_CONTEXT,
8769    ) -> TSS2_RC;
8770}
8771extern "C" {
8772    pub fn Tss2_Sys_ContextLoad_Prepare(
8773        sysContext: *mut TSS2_SYS_CONTEXT,
8774        context: *const TPMS_CONTEXT,
8775    ) -> TSS2_RC;
8776}
8777extern "C" {
8778    pub fn Tss2_Sys_ContextLoad_Complete(
8779        sysContext: *mut TSS2_SYS_CONTEXT,
8780        loadedHandle: *mut TPMI_DH_CONTEXT,
8781    ) -> TSS2_RC;
8782}
8783extern "C" {
8784    pub fn Tss2_Sys_ContextLoad(
8785        sysContext: *mut TSS2_SYS_CONTEXT,
8786        context: *const TPMS_CONTEXT,
8787        loadedHandle: *mut TPMI_DH_CONTEXT,
8788    ) -> TSS2_RC;
8789}
8790extern "C" {
8791    pub fn Tss2_Sys_FlushContext_Prepare(
8792        sysContext: *mut TSS2_SYS_CONTEXT,
8793        flushHandle: TPMI_DH_CONTEXT,
8794    ) -> TSS2_RC;
8795}
8796extern "C" {
8797    pub fn Tss2_Sys_FlushContext_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8798}
8799extern "C" {
8800    pub fn Tss2_Sys_FlushContext(
8801        sysContext: *mut TSS2_SYS_CONTEXT,
8802        flushHandle: TPMI_DH_CONTEXT,
8803    ) -> TSS2_RC;
8804}
8805extern "C" {
8806    pub fn Tss2_Sys_EvictControl_Prepare(
8807        sysContext: *mut TSS2_SYS_CONTEXT,
8808        auth: TPMI_RH_PROVISION,
8809        objectHandle: TPMI_DH_OBJECT,
8810        persistentHandle: TPMI_DH_PERSISTENT,
8811    ) -> TSS2_RC;
8812}
8813extern "C" {
8814    pub fn Tss2_Sys_EvictControl_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8815}
8816extern "C" {
8817    pub fn Tss2_Sys_EvictControl(
8818        sysContext: *mut TSS2_SYS_CONTEXT,
8819        auth: TPMI_RH_PROVISION,
8820        objectHandle: TPMI_DH_OBJECT,
8821        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8822        persistentHandle: TPMI_DH_PERSISTENT,
8823        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8824    ) -> TSS2_RC;
8825}
8826extern "C" {
8827    pub fn Tss2_Sys_ReadClock_Prepare(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8828}
8829extern "C" {
8830    pub fn Tss2_Sys_ReadClock_Complete(
8831        sysContext: *mut TSS2_SYS_CONTEXT,
8832        currentTime: *mut TPMS_TIME_INFO,
8833    ) -> TSS2_RC;
8834}
8835extern "C" {
8836    pub fn Tss2_Sys_ReadClock(
8837        sysContext: *mut TSS2_SYS_CONTEXT,
8838        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8839        currentTime: *mut TPMS_TIME_INFO,
8840        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8841    ) -> TSS2_RC;
8842}
8843extern "C" {
8844    pub fn Tss2_Sys_ClockSet_Prepare(
8845        sysContext: *mut TSS2_SYS_CONTEXT,
8846        auth: TPMI_RH_PROVISION,
8847        newTime: UINT64,
8848    ) -> TSS2_RC;
8849}
8850extern "C" {
8851    pub fn Tss2_Sys_ClockSet_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8852}
8853extern "C" {
8854    pub fn Tss2_Sys_ClockSet(
8855        sysContext: *mut TSS2_SYS_CONTEXT,
8856        auth: TPMI_RH_PROVISION,
8857        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8858        newTime: UINT64,
8859        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8860    ) -> TSS2_RC;
8861}
8862extern "C" {
8863    pub fn Tss2_Sys_ClockRateAdjust_Prepare(
8864        sysContext: *mut TSS2_SYS_CONTEXT,
8865        auth: TPMI_RH_PROVISION,
8866        rateAdjust: TPM2_CLOCK_ADJUST,
8867    ) -> TSS2_RC;
8868}
8869extern "C" {
8870    pub fn Tss2_Sys_ClockRateAdjust_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8871}
8872extern "C" {
8873    pub fn Tss2_Sys_ClockRateAdjust(
8874        sysContext: *mut TSS2_SYS_CONTEXT,
8875        auth: TPMI_RH_PROVISION,
8876        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8877        rateAdjust: TPM2_CLOCK_ADJUST,
8878        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8879    ) -> TSS2_RC;
8880}
8881extern "C" {
8882    pub fn Tss2_Sys_GetCapability_Prepare(
8883        sysContext: *mut TSS2_SYS_CONTEXT,
8884        capability: TPM2_CAP,
8885        property: UINT32,
8886        propertyCount: UINT32,
8887    ) -> TSS2_RC;
8888}
8889extern "C" {
8890    pub fn Tss2_Sys_GetCapability_Complete(
8891        sysContext: *mut TSS2_SYS_CONTEXT,
8892        moreData: *mut TPMI_YES_NO,
8893        capabilityData: *mut TPMS_CAPABILITY_DATA,
8894    ) -> TSS2_RC;
8895}
8896extern "C" {
8897    pub fn Tss2_Sys_GetCapability(
8898        sysContext: *mut TSS2_SYS_CONTEXT,
8899        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8900        capability: TPM2_CAP,
8901        property: UINT32,
8902        propertyCount: UINT32,
8903        moreData: *mut TPMI_YES_NO,
8904        capabilityData: *mut TPMS_CAPABILITY_DATA,
8905        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8906    ) -> TSS2_RC;
8907}
8908extern "C" {
8909    pub fn Tss2_Sys_TestParms_Prepare(
8910        sysContext: *mut TSS2_SYS_CONTEXT,
8911        parameters: *const TPMT_PUBLIC_PARMS,
8912    ) -> TSS2_RC;
8913}
8914extern "C" {
8915    pub fn Tss2_Sys_TestParms_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8916}
8917extern "C" {
8918    pub fn Tss2_Sys_TestParms(
8919        sysContext: *mut TSS2_SYS_CONTEXT,
8920        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8921        parameters: *const TPMT_PUBLIC_PARMS,
8922        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8923    ) -> TSS2_RC;
8924}
8925extern "C" {
8926    pub fn Tss2_Sys_NV_DefineSpace_Prepare(
8927        sysContext: *mut TSS2_SYS_CONTEXT,
8928        authHandle: TPMI_RH_PROVISION,
8929        auth: *const TPM2B_AUTH,
8930        publicInfo: *const TPM2B_NV_PUBLIC,
8931    ) -> TSS2_RC;
8932}
8933extern "C" {
8934    pub fn Tss2_Sys_NV_DefineSpace_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8935}
8936extern "C" {
8937    pub fn Tss2_Sys_NV_DefineSpace(
8938        sysContext: *mut TSS2_SYS_CONTEXT,
8939        authHandle: TPMI_RH_PROVISION,
8940        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8941        auth: *const TPM2B_AUTH,
8942        publicInfo: *const TPM2B_NV_PUBLIC,
8943        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8944    ) -> TSS2_RC;
8945}
8946extern "C" {
8947    pub fn Tss2_Sys_NV_UndefineSpace_Prepare(
8948        sysContext: *mut TSS2_SYS_CONTEXT,
8949        authHandle: TPMI_RH_PROVISION,
8950        nvIndex: TPMI_RH_NV_INDEX,
8951    ) -> TSS2_RC;
8952}
8953extern "C" {
8954    pub fn Tss2_Sys_NV_UndefineSpace_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8955}
8956extern "C" {
8957    pub fn Tss2_Sys_NV_UndefineSpace(
8958        sysContext: *mut TSS2_SYS_CONTEXT,
8959        authHandle: TPMI_RH_PROVISION,
8960        nvIndex: TPMI_RH_NV_INDEX,
8961        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8962        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8963    ) -> TSS2_RC;
8964}
8965extern "C" {
8966    pub fn Tss2_Sys_NV_UndefineSpaceSpecial_Prepare(
8967        sysContext: *mut TSS2_SYS_CONTEXT,
8968        nvIndex: TPMI_RH_NV_INDEX,
8969        platform: TPMI_RH_PLATFORM,
8970    ) -> TSS2_RC;
8971}
8972extern "C" {
8973    pub fn Tss2_Sys_NV_UndefineSpaceSpecial_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
8974}
8975extern "C" {
8976    pub fn Tss2_Sys_NV_UndefineSpaceSpecial(
8977        sysContext: *mut TSS2_SYS_CONTEXT,
8978        nvIndex: TPMI_RH_NV_INDEX,
8979        platform: TPMI_RH_PLATFORM,
8980        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
8981        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
8982    ) -> TSS2_RC;
8983}
8984extern "C" {
8985    pub fn Tss2_Sys_NV_ReadPublic_Prepare(
8986        sysContext: *mut TSS2_SYS_CONTEXT,
8987        nvIndex: TPMI_RH_NV_INDEX,
8988    ) -> TSS2_RC;
8989}
8990extern "C" {
8991    pub fn Tss2_Sys_NV_ReadPublic_Complete(
8992        sysContext: *mut TSS2_SYS_CONTEXT,
8993        nvPublic: *mut TPM2B_NV_PUBLIC,
8994        nvName: *mut TPM2B_NAME,
8995    ) -> TSS2_RC;
8996}
8997extern "C" {
8998    pub fn Tss2_Sys_NV_ReadPublic(
8999        sysContext: *mut TSS2_SYS_CONTEXT,
9000        nvIndex: TPMI_RH_NV_INDEX,
9001        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9002        nvPublic: *mut TPM2B_NV_PUBLIC,
9003        nvName: *mut TPM2B_NAME,
9004        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9005    ) -> TSS2_RC;
9006}
9007extern "C" {
9008    pub fn Tss2_Sys_NV_Write_Prepare(
9009        sysContext: *mut TSS2_SYS_CONTEXT,
9010        authHandle: TPMI_RH_NV_AUTH,
9011        nvIndex: TPMI_RH_NV_INDEX,
9012        data: *const TPM2B_MAX_NV_BUFFER,
9013        offset: UINT16,
9014    ) -> TSS2_RC;
9015}
9016extern "C" {
9017    pub fn Tss2_Sys_NV_Write_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9018}
9019extern "C" {
9020    pub fn Tss2_Sys_NV_Write(
9021        sysContext: *mut TSS2_SYS_CONTEXT,
9022        authHandle: TPMI_RH_NV_AUTH,
9023        nvIndex: TPMI_RH_NV_INDEX,
9024        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9025        data: *const TPM2B_MAX_NV_BUFFER,
9026        offset: UINT16,
9027        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9028    ) -> TSS2_RC;
9029}
9030extern "C" {
9031    pub fn Tss2_Sys_NV_Increment_Prepare(
9032        sysContext: *mut TSS2_SYS_CONTEXT,
9033        authHandle: TPMI_RH_NV_AUTH,
9034        nvIndex: TPMI_RH_NV_INDEX,
9035    ) -> TSS2_RC;
9036}
9037extern "C" {
9038    pub fn Tss2_Sys_NV_Increment_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9039}
9040extern "C" {
9041    pub fn Tss2_Sys_NV_Increment(
9042        sysContext: *mut TSS2_SYS_CONTEXT,
9043        authHandle: TPMI_RH_NV_AUTH,
9044        nvIndex: TPMI_RH_NV_INDEX,
9045        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9046        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9047    ) -> TSS2_RC;
9048}
9049extern "C" {
9050    pub fn Tss2_Sys_NV_Extend_Prepare(
9051        sysContext: *mut TSS2_SYS_CONTEXT,
9052        authHandle: TPMI_RH_NV_AUTH,
9053        nvIndex: TPMI_RH_NV_INDEX,
9054        data: *const TPM2B_MAX_NV_BUFFER,
9055    ) -> TSS2_RC;
9056}
9057extern "C" {
9058    pub fn Tss2_Sys_NV_Extend_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9059}
9060extern "C" {
9061    pub fn Tss2_Sys_NV_Extend(
9062        sysContext: *mut TSS2_SYS_CONTEXT,
9063        authHandle: TPMI_RH_NV_AUTH,
9064        nvIndex: TPMI_RH_NV_INDEX,
9065        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9066        data: *const TPM2B_MAX_NV_BUFFER,
9067        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9068    ) -> TSS2_RC;
9069}
9070extern "C" {
9071    pub fn Tss2_Sys_NV_SetBits_Prepare(
9072        sysContext: *mut TSS2_SYS_CONTEXT,
9073        authHandle: TPMI_RH_NV_AUTH,
9074        nvIndex: TPMI_RH_NV_INDEX,
9075        bits: UINT64,
9076    ) -> TSS2_RC;
9077}
9078extern "C" {
9079    pub fn Tss2_Sys_NV_SetBits_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9080}
9081extern "C" {
9082    pub fn Tss2_Sys_NV_SetBits(
9083        sysContext: *mut TSS2_SYS_CONTEXT,
9084        authHandle: TPMI_RH_NV_AUTH,
9085        nvIndex: TPMI_RH_NV_INDEX,
9086        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9087        bits: UINT64,
9088        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9089    ) -> TSS2_RC;
9090}
9091extern "C" {
9092    pub fn Tss2_Sys_NV_WriteLock_Prepare(
9093        sysContext: *mut TSS2_SYS_CONTEXT,
9094        authHandle: TPMI_RH_NV_AUTH,
9095        nvIndex: TPMI_RH_NV_INDEX,
9096    ) -> TSS2_RC;
9097}
9098extern "C" {
9099    pub fn Tss2_Sys_NV_WriteLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9100}
9101extern "C" {
9102    pub fn Tss2_Sys_NV_WriteLock(
9103        sysContext: *mut TSS2_SYS_CONTEXT,
9104        authHandle: TPMI_RH_NV_AUTH,
9105        nvIndex: TPMI_RH_NV_INDEX,
9106        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9107        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9108    ) -> TSS2_RC;
9109}
9110extern "C" {
9111    pub fn Tss2_Sys_NV_GlobalWriteLock_Prepare(
9112        sysContext: *mut TSS2_SYS_CONTEXT,
9113        authHandle: TPMI_RH_PROVISION,
9114    ) -> TSS2_RC;
9115}
9116extern "C" {
9117    pub fn Tss2_Sys_NV_GlobalWriteLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9118}
9119extern "C" {
9120    pub fn Tss2_Sys_NV_GlobalWriteLock(
9121        sysContext: *mut TSS2_SYS_CONTEXT,
9122        authHandle: TPMI_RH_PROVISION,
9123        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9124        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9125    ) -> TSS2_RC;
9126}
9127extern "C" {
9128    pub fn Tss2_Sys_NV_Read_Prepare(
9129        sysContext: *mut TSS2_SYS_CONTEXT,
9130        authHandle: TPMI_RH_NV_AUTH,
9131        nvIndex: TPMI_RH_NV_INDEX,
9132        size: UINT16,
9133        offset: UINT16,
9134    ) -> TSS2_RC;
9135}
9136extern "C" {
9137    pub fn Tss2_Sys_NV_Read_Complete(
9138        sysContext: *mut TSS2_SYS_CONTEXT,
9139        data: *mut TPM2B_MAX_NV_BUFFER,
9140    ) -> TSS2_RC;
9141}
9142extern "C" {
9143    pub fn Tss2_Sys_NV_Read(
9144        sysContext: *mut TSS2_SYS_CONTEXT,
9145        authHandle: TPMI_RH_NV_AUTH,
9146        nvIndex: TPMI_RH_NV_INDEX,
9147        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9148        size: UINT16,
9149        offset: UINT16,
9150        data: *mut TPM2B_MAX_NV_BUFFER,
9151        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9152    ) -> TSS2_RC;
9153}
9154extern "C" {
9155    pub fn Tss2_Sys_NV_ReadLock_Prepare(
9156        sysContext: *mut TSS2_SYS_CONTEXT,
9157        authHandle: TPMI_RH_NV_AUTH,
9158        nvIndex: TPMI_RH_NV_INDEX,
9159    ) -> TSS2_RC;
9160}
9161extern "C" {
9162    pub fn Tss2_Sys_NV_ReadLock_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9163}
9164extern "C" {
9165    pub fn Tss2_Sys_NV_ReadLock(
9166        sysContext: *mut TSS2_SYS_CONTEXT,
9167        authHandle: TPMI_RH_NV_AUTH,
9168        nvIndex: TPMI_RH_NV_INDEX,
9169        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9170        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9171    ) -> TSS2_RC;
9172}
9173extern "C" {
9174    pub fn Tss2_Sys_NV_ChangeAuth_Prepare(
9175        sysContext: *mut TSS2_SYS_CONTEXT,
9176        nvIndex: TPMI_RH_NV_INDEX,
9177        newAuth: *const TPM2B_AUTH,
9178    ) -> TSS2_RC;
9179}
9180extern "C" {
9181    pub fn Tss2_Sys_NV_ChangeAuth_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9182}
9183extern "C" {
9184    pub fn Tss2_Sys_NV_ChangeAuth(
9185        sysContext: *mut TSS2_SYS_CONTEXT,
9186        nvIndex: TPMI_RH_NV_INDEX,
9187        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9188        newAuth: *const TPM2B_AUTH,
9189        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9190    ) -> TSS2_RC;
9191}
9192extern "C" {
9193    pub fn Tss2_Sys_NV_Certify_Prepare(
9194        sysContext: *mut TSS2_SYS_CONTEXT,
9195        signHandle: TPMI_DH_OBJECT,
9196        authHandle: TPMI_RH_NV_AUTH,
9197        nvIndex: TPMI_RH_NV_INDEX,
9198        qualifyingData: *const TPM2B_DATA,
9199        inScheme: *const TPMT_SIG_SCHEME,
9200        size: UINT16,
9201        offset: UINT16,
9202    ) -> TSS2_RC;
9203}
9204extern "C" {
9205    pub fn Tss2_Sys_NV_Certify_Complete(
9206        sysContext: *mut TSS2_SYS_CONTEXT,
9207        certifyInfo: *mut TPM2B_ATTEST,
9208        signature: *mut TPMT_SIGNATURE,
9209    ) -> TSS2_RC;
9210}
9211extern "C" {
9212    pub fn Tss2_Sys_NV_Certify(
9213        sysContext: *mut TSS2_SYS_CONTEXT,
9214        signHandle: TPMI_DH_OBJECT,
9215        authHandle: TPMI_RH_NV_AUTH,
9216        nvIndex: TPMI_RH_NV_INDEX,
9217        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9218        qualifyingData: *const TPM2B_DATA,
9219        inScheme: *const TPMT_SIG_SCHEME,
9220        size: UINT16,
9221        offset: UINT16,
9222        certifyInfo: *mut TPM2B_ATTEST,
9223        signature: *mut TPMT_SIGNATURE,
9224        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9225    ) -> TSS2_RC;
9226}
9227extern "C" {
9228    pub fn Tss2_Sys_Vendor_TCG_Test_Prepare(
9229        sysContext: *mut TSS2_SYS_CONTEXT,
9230        inputData: *const TPM2B_DATA,
9231    ) -> TSS2_RC;
9232}
9233extern "C" {
9234    pub fn Tss2_Sys_Vendor_TCG_Test_Complete(
9235        sysContext: *mut TSS2_SYS_CONTEXT,
9236        outputData: *mut TPM2B_DATA,
9237    ) -> TSS2_RC;
9238}
9239extern "C" {
9240    pub fn Tss2_Sys_Vendor_TCG_Test(
9241        sysContext: *mut TSS2_SYS_CONTEXT,
9242        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9243        inputData: *const TPM2B_DATA,
9244        outputData: *mut TPM2B_DATA,
9245        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9246    ) -> TSS2_RC;
9247}
9248extern "C" {
9249    pub fn Tss2_Sys_AC_GetCapability_Prepare(
9250        sysContext: *mut TSS2_SYS_CONTEXT,
9251        ac: TPMI_RH_AC,
9252        capability: TPM_AT,
9253        count: UINT32,
9254    ) -> TSS2_RC;
9255}
9256extern "C" {
9257    pub fn Tss2_Sys_AC_GetCapability_Complete(
9258        sysContext: *mut TSS2_SYS_CONTEXT,
9259        moreData: *mut TPMI_YES_NO,
9260        capabilityData: *mut TPML_AC_CAPABILITIES,
9261    ) -> TSS2_RC;
9262}
9263extern "C" {
9264    pub fn Tss2_Sys_AC_GetCapability(
9265        sysContext: *mut TSS2_SYS_CONTEXT,
9266        ac: TPMI_RH_AC,
9267        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9268        capability: TPM_AT,
9269        count: UINT32,
9270        moreData: *mut TPMI_YES_NO,
9271        capabilityData: *mut TPML_AC_CAPABILITIES,
9272        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9273    ) -> TSS2_RC;
9274}
9275extern "C" {
9276    pub fn Tss2_Sys_AC_Send_Prepare(
9277        sysContext: *mut TSS2_SYS_CONTEXT,
9278        sendObject: TPMI_DH_OBJECT,
9279        authHandle: TPMI_RH_NV_AUTH,
9280        ac: TPMI_RH_AC,
9281        acDataIn: *mut TPM2B_MAX_BUFFER,
9282    ) -> TSS2_RC;
9283}
9284extern "C" {
9285    pub fn Tss2_Sys_AC_Send_Complete(
9286        sysContext: *mut TSS2_SYS_CONTEXT,
9287        acDataOut: *mut TPMS_AC_OUTPUT,
9288    ) -> TSS2_RC;
9289}
9290extern "C" {
9291    pub fn Tss2_Sys_AC_Send(
9292        sysContext: *mut TSS2_SYS_CONTEXT,
9293        sendObject: TPMI_DH_OBJECT,
9294        authHandle: TPMI_RH_NV_AUTH,
9295        ac: TPMI_RH_AC,
9296        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9297        acDataIn: *mut TPM2B_MAX_BUFFER,
9298        acDataOut: *mut TPMS_AC_OUTPUT,
9299        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9300    ) -> TSS2_RC;
9301}
9302extern "C" {
9303    pub fn Tss2_Sys_Policy_AC_SendSelect_Prepare(
9304        sysContext: *mut TSS2_SYS_CONTEXT,
9305        policySession: TPMI_SH_POLICY,
9306        objectName: *mut TPM2B_NAME,
9307        authHandleName: *mut TPM2B_NAME,
9308        acName: *mut TPM2B_NAME,
9309        includeObject: TPMI_YES_NO,
9310    ) -> TSS2_RC;
9311}
9312extern "C" {
9313    pub fn Tss2_Sys_Policy_AC_SendSelect_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9314}
9315extern "C" {
9316    pub fn Tss2_Sys_Policy_AC_SendSelect(
9317        sysContext: *mut TSS2_SYS_CONTEXT,
9318        policySession: TPMI_SH_POLICY,
9319        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9320        objectName: *mut TPM2B_NAME,
9321        authHandleName: *mut TPM2B_NAME,
9322        acName: *mut TPM2B_NAME,
9323        includeObject: TPMI_YES_NO,
9324        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9325    ) -> TSS2_RC;
9326}
9327extern "C" {
9328    pub fn Tss2_Sys_ACT_SetTimeout_Prepare(
9329        sysContext: *mut TSS2_SYS_CONTEXT,
9330        actHandle: TPMI_RH_ACT,
9331        startTimeout: UINT32,
9332    ) -> TSS2_RC;
9333}
9334extern "C" {
9335    pub fn Tss2_Sys_ACT_SetTimeout_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9336}
9337extern "C" {
9338    pub fn Tss2_Sys_ACT_SetTimeout(
9339        sysContext: *mut TSS2_SYS_CONTEXT,
9340        actHandle: TPMI_RH_ACT,
9341        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9342        startTimeout: UINT32,
9343        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9344    ) -> TSS2_RC;
9345}
9346extern "C" {
9347    pub fn Tss2_Sys_PolicyTemplate_Prepare(
9348        sysContext: *mut TSS2_SYS_CONTEXT,
9349        policySession: TPMI_SH_POLICY,
9350        templateHash: *const TPM2B_DIGEST,
9351    ) -> TSS2_RC;
9352}
9353extern "C" {
9354    pub fn Tss2_Sys_PolicyTemplate_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9355}
9356extern "C" {
9357    pub fn Tss2_Sys_PolicyTemplate(
9358        sysContext: *mut TSS2_SYS_CONTEXT,
9359        policySession: TPMI_SH_POLICY,
9360        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9361        templateHash: *const TPM2B_DIGEST,
9362        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9363    ) -> TSS2_RC;
9364}
9365extern "C" {
9366    pub fn Tss2_Sys_CreateLoaded_Prepare(
9367        sysContext: *mut TSS2_SYS_CONTEXT,
9368        parentHandle: TPMI_RH_HIERARCHY,
9369        inSensitive: *const TPM2B_SENSITIVE_CREATE,
9370        inPublic: *const TPM2B_TEMPLATE,
9371    ) -> TSS2_RC;
9372}
9373extern "C" {
9374    pub fn Tss2_Sys_CreateLoaded_Complete(
9375        sysContext: *mut TSS2_SYS_CONTEXT,
9376        objectHandle: *mut TPM2_HANDLE,
9377        outPrivate: *mut TPM2B_PRIVATE,
9378        outPublic: *mut TPM2B_PUBLIC,
9379        name: *mut TPM2B_NAME,
9380    ) -> TSS2_RC;
9381}
9382extern "C" {
9383    pub fn Tss2_Sys_CreateLoaded(
9384        sysContext: *mut TSS2_SYS_CONTEXT,
9385        parentHandle: TPMI_RH_HIERARCHY,
9386        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9387        inSensitive: *const TPM2B_SENSITIVE_CREATE,
9388        inPublic: *const TPM2B_TEMPLATE,
9389        objectHandle: *mut TPM2_HANDLE,
9390        outPrivate: *mut TPM2B_PRIVATE,
9391        outPublic: *mut TPM2B_PUBLIC,
9392        name: *mut TPM2B_NAME,
9393        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9394    ) -> TSS2_RC;
9395}
9396extern "C" {
9397    pub fn Tss2_Sys_PolicyAuthorizeNV_Prepare(
9398        sysContext: *mut TSS2_SYS_CONTEXT,
9399        authHandle: TPMI_RH_NV_AUTH,
9400        nvIndex: TPMI_RH_NV_INDEX,
9401        policySession: TPMI_SH_POLICY,
9402    ) -> TSS2_RC;
9403}
9404extern "C" {
9405    pub fn Tss2_Sys_PolicyAuthorizeNV_Complete(sysContext: *mut TSS2_SYS_CONTEXT) -> TSS2_RC;
9406}
9407extern "C" {
9408    pub fn Tss2_Sys_PolicyAuthorizeNV(
9409        sysContext: *mut TSS2_SYS_CONTEXT,
9410        authHandle: TPMI_RH_NV_AUTH,
9411        nvIndex: TPMI_RH_NV_INDEX,
9412        policySession: TPMI_SH_POLICY,
9413        cmdAuthsArray: *const TSS2L_SYS_AUTH_COMMAND,
9414        rspAuthsArray: *mut TSS2L_SYS_AUTH_RESPONSE,
9415    ) -> TSS2_RC;
9416}
9417pub type ESYS_TR = u32;
9418#[repr(C)]
9419#[derive(Debug, Copy, Clone)]
9420pub struct ESYS_CONTEXT {
9421    _unused: [u8; 0],
9422}
9423#[repr(C)]
9424#[derive(Debug, Copy, Clone)]
9425pub struct ESYS_CRYPTO_CONTEXT_BLOB {
9426    _unused: [u8; 0],
9427}
9428pub type ESYS_CRYPTO_HASH_START_FNP = ::std::option::Option<
9429    unsafe extern "C" fn(
9430        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9431        hashAlg: TPM2_ALG_ID,
9432        userdata: *mut ::std::os::raw::c_void,
9433    ) -> TSS2_RC,
9434>;
9435pub type ESYS_CRYPTO_HASH_UPDATE_FNP = ::std::option::Option<
9436    unsafe extern "C" fn(
9437        context: *mut ESYS_CRYPTO_CONTEXT_BLOB,
9438        buffer: *const u8,
9439        size: size_t,
9440        userdata: *mut ::std::os::raw::c_void,
9441    ) -> TSS2_RC,
9442>;
9443pub type ESYS_CRYPTO_HASH_FINISH_FNP = ::std::option::Option<
9444    unsafe extern "C" fn(
9445        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9446        buffer: *mut u8,
9447        size: *mut size_t,
9448        userdata: *mut ::std::os::raw::c_void,
9449    ) -> TSS2_RC,
9450>;
9451pub type ESYS_CRYPTO_HASH_ABORT_FNP = ::std::option::Option<
9452    unsafe extern "C" fn(
9453        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9454        userdata: *mut ::std::os::raw::c_void,
9455    ),
9456>;
9457pub type ESYS_CRYPTO_HMAC_START_FNP = ::std::option::Option<
9458    unsafe extern "C" fn(
9459        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9460        hashAlg: TPM2_ALG_ID,
9461        key: *const u8,
9462        size: size_t,
9463        userdata: *mut ::std::os::raw::c_void,
9464    ) -> TSS2_RC,
9465>;
9466pub type ESYS_CRYPTO_HMAC_UPDATE_FNP = ::std::option::Option<
9467    unsafe extern "C" fn(
9468        context: *mut ESYS_CRYPTO_CONTEXT_BLOB,
9469        buffer: *const u8,
9470        size: size_t,
9471        userdata: *mut ::std::os::raw::c_void,
9472    ) -> TSS2_RC,
9473>;
9474pub type ESYS_CRYPTO_HMAC_FINISH_FNP = ::std::option::Option<
9475    unsafe extern "C" fn(
9476        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9477        buffer: *mut u8,
9478        size: *mut size_t,
9479        userdata: *mut ::std::os::raw::c_void,
9480    ) -> TSS2_RC,
9481>;
9482pub type ESYS_CRYPTO_HMAC_ABORT_FNP = ::std::option::Option<
9483    unsafe extern "C" fn(
9484        context: *mut *mut ESYS_CRYPTO_CONTEXT_BLOB,
9485        userdata: *mut ::std::os::raw::c_void,
9486    ),
9487>;
9488pub type ESYS_CRYPTO_GET_RANDOM2B_FNP = ::std::option::Option<
9489    unsafe extern "C" fn(
9490        nonce: *mut TPM2B_NONCE,
9491        num_bytes: size_t,
9492        userdata: *mut ::std::os::raw::c_void,
9493    ) -> TSS2_RC,
9494>;
9495pub type ESYS_CRYPTO_GET_ECDH_POINT_FNP = ::std::option::Option<
9496    unsafe extern "C" fn(
9497        key: *mut TPM2B_PUBLIC,
9498        max_out_size: size_t,
9499        Z: *mut TPM2B_ECC_PARAMETER,
9500        Q: *mut TPMS_ECC_POINT,
9501        out_buffer: *mut BYTE,
9502        out_size: *mut size_t,
9503        userdata: *mut ::std::os::raw::c_void,
9504    ) -> TSS2_RC,
9505>;
9506pub type ESYS_CRYPTO_AES_ENCRYPT_FNP = ::std::option::Option<
9507    unsafe extern "C" fn(
9508        key: *mut u8,
9509        tpm_sym_alg: TPM2_ALG_ID,
9510        key_bits: TPMI_AES_KEY_BITS,
9511        tpm_mode: TPM2_ALG_ID,
9512        buffer: *mut u8,
9513        buffer_size: size_t,
9514        iv: *mut u8,
9515        userdata: *mut ::std::os::raw::c_void,
9516    ) -> TSS2_RC,
9517>;
9518pub type ESYS_CRYPTO_AES_DECRYPT_FNP = ::std::option::Option<
9519    unsafe extern "C" fn(
9520        key: *mut u8,
9521        tpm_sym_alg: TPM2_ALG_ID,
9522        key_bits: TPMI_AES_KEY_BITS,
9523        tpm_mode: TPM2_ALG_ID,
9524        buffer: *mut u8,
9525        buffer_size: size_t,
9526        iv: *mut u8,
9527        userdata: *mut ::std::os::raw::c_void,
9528    ) -> TSS2_RC,
9529>;
9530pub type ESYS_CRYPTO_SM4_ENCRYPT_FNP = ::std::option::Option<
9531    unsafe extern "C" fn(
9532        key: *mut u8,
9533        tpm_sym_alg: TPM2_ALG_ID,
9534        key_bits: TPMI_SM4_KEY_BITS,
9535        tpm_mode: TPM2_ALG_ID,
9536        buffer: *mut u8,
9537        buffer_size: size_t,
9538        iv: *mut u8,
9539        userdata: *mut ::std::os::raw::c_void,
9540    ) -> TSS2_RC,
9541>;
9542pub type ESYS_CRYPTO_SM4_DECRYPT_FNP = ::std::option::Option<
9543    unsafe extern "C" fn(
9544        key: *mut u8,
9545        tpm_sym_alg: TPM2_ALG_ID,
9546        key_bits: TPMI_SM4_KEY_BITS,
9547        tpm_mode: TPM2_ALG_ID,
9548        buffer: *mut u8,
9549        buffer_size: size_t,
9550        iv: *mut u8,
9551        userdata: *mut ::std::os::raw::c_void,
9552    ) -> TSS2_RC,
9553>;
9554pub type ESYS_CRYPTO_PK_RSA_ENCRYPT_FNP = ::std::option::Option<
9555    unsafe extern "C" fn(
9556        pub_tpm_key: *mut TPM2B_PUBLIC,
9557        in_size: size_t,
9558        in_buffer: *mut BYTE,
9559        max_out_size: size_t,
9560        out_buffer: *mut BYTE,
9561        out_size: *mut size_t,
9562        label: *const ::std::os::raw::c_char,
9563        userdata: *mut ::std::os::raw::c_void,
9564    ) -> TSS2_RC,
9565>;
9566pub type ESYS_CRYPTO_INIT_FNP =
9567    ::std::option::Option<unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void) -> TSS2_RC>;
9568#[repr(C)]
9569#[derive(Debug, Copy, Clone)]
9570pub struct ESYS_CRYPTO_CALLBACKS {
9571    pub rsa_pk_encrypt: ESYS_CRYPTO_PK_RSA_ENCRYPT_FNP,
9572    pub hash_start: ESYS_CRYPTO_HASH_START_FNP,
9573    pub hash_update: ESYS_CRYPTO_HASH_UPDATE_FNP,
9574    pub hash_finish: ESYS_CRYPTO_HASH_FINISH_FNP,
9575    pub hash_abort: ESYS_CRYPTO_HASH_ABORT_FNP,
9576    pub hmac_start: ESYS_CRYPTO_HMAC_START_FNP,
9577    pub hmac_update: ESYS_CRYPTO_HMAC_UPDATE_FNP,
9578    pub hmac_finish: ESYS_CRYPTO_HMAC_FINISH_FNP,
9579    pub hmac_abort: ESYS_CRYPTO_HMAC_ABORT_FNP,
9580    pub get_random2b: ESYS_CRYPTO_GET_RANDOM2B_FNP,
9581    pub get_ecdh_point: ESYS_CRYPTO_GET_ECDH_POINT_FNP,
9582    pub aes_encrypt: ESYS_CRYPTO_AES_ENCRYPT_FNP,
9583    pub aes_decrypt: ESYS_CRYPTO_AES_DECRYPT_FNP,
9584    pub sm4_encrypt: ESYS_CRYPTO_SM4_ENCRYPT_FNP,
9585    pub sm4_decrypt: ESYS_CRYPTO_SM4_DECRYPT_FNP,
9586    pub init: ESYS_CRYPTO_INIT_FNP,
9587    pub userdata: *mut ::std::os::raw::c_void,
9588}
9589#[test]
9590fn bindgen_test_layout_ESYS_CRYPTO_CALLBACKS() {
9591    const UNINIT: ::std::mem::MaybeUninit<ESYS_CRYPTO_CALLBACKS> =
9592        ::std::mem::MaybeUninit::uninit();
9593    let ptr = UNINIT.as_ptr();
9594    assert_eq!(
9595        ::std::mem::size_of::<ESYS_CRYPTO_CALLBACKS>(),
9596        136usize,
9597        "Size of ESYS_CRYPTO_CALLBACKS"
9598    );
9599    assert_eq!(
9600        ::std::mem::align_of::<ESYS_CRYPTO_CALLBACKS>(),
9601        8usize,
9602        "Alignment of ESYS_CRYPTO_CALLBACKS"
9603    );
9604    assert_eq!(
9605        unsafe { ::std::ptr::addr_of!((*ptr).rsa_pk_encrypt) as usize - ptr as usize },
9606        0usize,
9607        "Offset of field: ESYS_CRYPTO_CALLBACKS::rsa_pk_encrypt"
9608    );
9609    assert_eq!(
9610        unsafe { ::std::ptr::addr_of!((*ptr).hash_start) as usize - ptr as usize },
9611        8usize,
9612        "Offset of field: ESYS_CRYPTO_CALLBACKS::hash_start"
9613    );
9614    assert_eq!(
9615        unsafe { ::std::ptr::addr_of!((*ptr).hash_update) as usize - ptr as usize },
9616        16usize,
9617        "Offset of field: ESYS_CRYPTO_CALLBACKS::hash_update"
9618    );
9619    assert_eq!(
9620        unsafe { ::std::ptr::addr_of!((*ptr).hash_finish) as usize - ptr as usize },
9621        24usize,
9622        "Offset of field: ESYS_CRYPTO_CALLBACKS::hash_finish"
9623    );
9624    assert_eq!(
9625        unsafe { ::std::ptr::addr_of!((*ptr).hash_abort) as usize - ptr as usize },
9626        32usize,
9627        "Offset of field: ESYS_CRYPTO_CALLBACKS::hash_abort"
9628    );
9629    assert_eq!(
9630        unsafe { ::std::ptr::addr_of!((*ptr).hmac_start) as usize - ptr as usize },
9631        40usize,
9632        "Offset of field: ESYS_CRYPTO_CALLBACKS::hmac_start"
9633    );
9634    assert_eq!(
9635        unsafe { ::std::ptr::addr_of!((*ptr).hmac_update) as usize - ptr as usize },
9636        48usize,
9637        "Offset of field: ESYS_CRYPTO_CALLBACKS::hmac_update"
9638    );
9639    assert_eq!(
9640        unsafe { ::std::ptr::addr_of!((*ptr).hmac_finish) as usize - ptr as usize },
9641        56usize,
9642        "Offset of field: ESYS_CRYPTO_CALLBACKS::hmac_finish"
9643    );
9644    assert_eq!(
9645        unsafe { ::std::ptr::addr_of!((*ptr).hmac_abort) as usize - ptr as usize },
9646        64usize,
9647        "Offset of field: ESYS_CRYPTO_CALLBACKS::hmac_abort"
9648    );
9649    assert_eq!(
9650        unsafe { ::std::ptr::addr_of!((*ptr).get_random2b) as usize - ptr as usize },
9651        72usize,
9652        "Offset of field: ESYS_CRYPTO_CALLBACKS::get_random2b"
9653    );
9654    assert_eq!(
9655        unsafe { ::std::ptr::addr_of!((*ptr).get_ecdh_point) as usize - ptr as usize },
9656        80usize,
9657        "Offset of field: ESYS_CRYPTO_CALLBACKS::get_ecdh_point"
9658    );
9659    assert_eq!(
9660        unsafe { ::std::ptr::addr_of!((*ptr).aes_encrypt) as usize - ptr as usize },
9661        88usize,
9662        "Offset of field: ESYS_CRYPTO_CALLBACKS::aes_encrypt"
9663    );
9664    assert_eq!(
9665        unsafe { ::std::ptr::addr_of!((*ptr).aes_decrypt) as usize - ptr as usize },
9666        96usize,
9667        "Offset of field: ESYS_CRYPTO_CALLBACKS::aes_decrypt"
9668    );
9669    assert_eq!(
9670        unsafe { ::std::ptr::addr_of!((*ptr).sm4_encrypt) as usize - ptr as usize },
9671        104usize,
9672        "Offset of field: ESYS_CRYPTO_CALLBACKS::sm4_encrypt"
9673    );
9674    assert_eq!(
9675        unsafe { ::std::ptr::addr_of!((*ptr).sm4_decrypt) as usize - ptr as usize },
9676        112usize,
9677        "Offset of field: ESYS_CRYPTO_CALLBACKS::sm4_decrypt"
9678    );
9679    assert_eq!(
9680        unsafe { ::std::ptr::addr_of!((*ptr).init) as usize - ptr as usize },
9681        120usize,
9682        "Offset of field: ESYS_CRYPTO_CALLBACKS::init"
9683    );
9684    assert_eq!(
9685        unsafe { ::std::ptr::addr_of!((*ptr).userdata) as usize - ptr as usize },
9686        128usize,
9687        "Offset of field: ESYS_CRYPTO_CALLBACKS::userdata"
9688    );
9689}
9690impl Default for ESYS_CRYPTO_CALLBACKS {
9691    fn default() -> Self {
9692        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
9693        unsafe {
9694            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
9695            s.assume_init()
9696        }
9697    }
9698}
9699extern "C" {
9700    pub fn Esys_Initialize(
9701        esys_context: *mut *mut ESYS_CONTEXT,
9702        tcti: *mut TSS2_TCTI_CONTEXT,
9703        abiVersion: *mut TSS2_ABI_VERSION,
9704    ) -> TSS2_RC;
9705}
9706extern "C" {
9707    pub fn Esys_Finalize(context: *mut *mut ESYS_CONTEXT);
9708}
9709extern "C" {
9710    pub fn Esys_GetTcti(
9711        esys_context: *mut ESYS_CONTEXT,
9712        tcti: *mut *mut TSS2_TCTI_CONTEXT,
9713    ) -> TSS2_RC;
9714}
9715extern "C" {
9716    pub fn Esys_GetPollHandles(
9717        esys_context: *mut ESYS_CONTEXT,
9718        handles: *mut *mut TSS2_TCTI_POLL_HANDLE,
9719        count: *mut size_t,
9720    ) -> TSS2_RC;
9721}
9722extern "C" {
9723    pub fn Esys_SetTimeout(esys_context: *mut ESYS_CONTEXT, timeout: i32) -> TSS2_RC;
9724}
9725extern "C" {
9726    pub fn Esys_TR_Serialize(
9727        esys_context: *mut ESYS_CONTEXT,
9728        object: ESYS_TR,
9729        buffer: *mut *mut u8,
9730        buffer_size: *mut size_t,
9731    ) -> TSS2_RC;
9732}
9733extern "C" {
9734    pub fn Esys_TR_Deserialize(
9735        esys_context: *mut ESYS_CONTEXT,
9736        buffer: *const u8,
9737        buffer_size: size_t,
9738        esys_handle: *mut ESYS_TR,
9739    ) -> TSS2_RC;
9740}
9741extern "C" {
9742    pub fn Esys_TR_FromTPMPublic_Async(
9743        esysContext: *mut ESYS_CONTEXT,
9744        tpm_handle: TPM2_HANDLE,
9745        optionalSession1: ESYS_TR,
9746        optionalSession2: ESYS_TR,
9747        optionalSession3: ESYS_TR,
9748    ) -> TSS2_RC;
9749}
9750extern "C" {
9751    pub fn Esys_TR_FromTPMPublic_Finish(
9752        esysContext: *mut ESYS_CONTEXT,
9753        object: *mut ESYS_TR,
9754    ) -> TSS2_RC;
9755}
9756extern "C" {
9757    pub fn Esys_TR_FromTPMPublic(
9758        esysContext: *mut ESYS_CONTEXT,
9759        tpm_handle: TPM2_HANDLE,
9760        optionalSession1: ESYS_TR,
9761        optionalSession2: ESYS_TR,
9762        optionalSession3: ESYS_TR,
9763        object: *mut ESYS_TR,
9764    ) -> TSS2_RC;
9765}
9766extern "C" {
9767    pub fn Esys_TR_Close(esys_context: *mut ESYS_CONTEXT, rsrc_handle: *mut ESYS_TR) -> TSS2_RC;
9768}
9769extern "C" {
9770    pub fn Esys_TR_SetAuth(
9771        esysContext: *mut ESYS_CONTEXT,
9772        handle: ESYS_TR,
9773        authValue: *const TPM2B_AUTH,
9774    ) -> TSS2_RC;
9775}
9776extern "C" {
9777    pub fn Esys_TR_GetName(
9778        esysContext: *mut ESYS_CONTEXT,
9779        handle: ESYS_TR,
9780        name: *mut *mut TPM2B_NAME,
9781    ) -> TSS2_RC;
9782}
9783extern "C" {
9784    pub fn Esys_TRSess_GetAttributes(
9785        esysContext: *mut ESYS_CONTEXT,
9786        session: ESYS_TR,
9787        flags: *mut TPMA_SESSION,
9788    ) -> TSS2_RC;
9789}
9790extern "C" {
9791    pub fn Esys_TRSess_SetAttributes(
9792        esysContext: *mut ESYS_CONTEXT,
9793        session: ESYS_TR,
9794        flags: TPMA_SESSION,
9795        mask: TPMA_SESSION,
9796    ) -> TSS2_RC;
9797}
9798extern "C" {
9799    pub fn Esys_TRSess_GetNonceTPM(
9800        esysContext: *mut ESYS_CONTEXT,
9801        session: ESYS_TR,
9802        nonceTPM: *mut *mut TPM2B_NONCE,
9803    ) -> TSS2_RC;
9804}
9805extern "C" {
9806    pub fn Esys_TR_GetTpmHandle(
9807        esys_context: *mut ESYS_CONTEXT,
9808        esys_handle: ESYS_TR,
9809        tpm_handle: *mut TPM2_HANDLE,
9810    ) -> TSS2_RC;
9811}
9812extern "C" {
9813    pub fn Esys_TRSess_GetAuthRequired(
9814        esys_context: *mut ESYS_CONTEXT,
9815        esys_handle: ESYS_TR,
9816        auth_needed: *mut TPMI_YES_NO,
9817    ) -> TSS2_RC;
9818}
9819extern "C" {
9820    pub fn Esys_Startup(esysContext: *mut ESYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
9821}
9822extern "C" {
9823    pub fn Esys_Startup_Async(esysContext: *mut ESYS_CONTEXT, startupType: TPM2_SU) -> TSS2_RC;
9824}
9825extern "C" {
9826    pub fn Esys_Startup_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
9827}
9828extern "C" {
9829    pub fn Esys_Shutdown(
9830        esysContext: *mut ESYS_CONTEXT,
9831        shandle1: ESYS_TR,
9832        shandle2: ESYS_TR,
9833        shandle3: ESYS_TR,
9834        shutdownType: TPM2_SU,
9835    ) -> TSS2_RC;
9836}
9837extern "C" {
9838    pub fn Esys_Shutdown_Async(
9839        esysContext: *mut ESYS_CONTEXT,
9840        shandle1: ESYS_TR,
9841        shandle2: ESYS_TR,
9842        shandle3: ESYS_TR,
9843        shutdownType: TPM2_SU,
9844    ) -> TSS2_RC;
9845}
9846extern "C" {
9847    pub fn Esys_Shutdown_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
9848}
9849extern "C" {
9850    pub fn Esys_SelfTest(
9851        esysContext: *mut ESYS_CONTEXT,
9852        shandle1: ESYS_TR,
9853        shandle2: ESYS_TR,
9854        shandle3: ESYS_TR,
9855        fullTest: TPMI_YES_NO,
9856    ) -> TSS2_RC;
9857}
9858extern "C" {
9859    pub fn Esys_SelfTest_Async(
9860        esysContext: *mut ESYS_CONTEXT,
9861        shandle1: ESYS_TR,
9862        shandle2: ESYS_TR,
9863        shandle3: ESYS_TR,
9864        fullTest: TPMI_YES_NO,
9865    ) -> TSS2_RC;
9866}
9867extern "C" {
9868    pub fn Esys_SelfTest_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
9869}
9870extern "C" {
9871    pub fn Esys_IncrementalSelfTest(
9872        esysContext: *mut ESYS_CONTEXT,
9873        shandle1: ESYS_TR,
9874        shandle2: ESYS_TR,
9875        shandle3: ESYS_TR,
9876        toTest: *const TPML_ALG,
9877        toDoList: *mut *mut TPML_ALG,
9878    ) -> TSS2_RC;
9879}
9880extern "C" {
9881    pub fn Esys_IncrementalSelfTest_Async(
9882        esysContext: *mut ESYS_CONTEXT,
9883        shandle1: ESYS_TR,
9884        shandle2: ESYS_TR,
9885        shandle3: ESYS_TR,
9886        toTest: *const TPML_ALG,
9887    ) -> TSS2_RC;
9888}
9889extern "C" {
9890    pub fn Esys_IncrementalSelfTest_Finish(
9891        esysContext: *mut ESYS_CONTEXT,
9892        toDoList: *mut *mut TPML_ALG,
9893    ) -> TSS2_RC;
9894}
9895extern "C" {
9896    pub fn Esys_GetTestResult(
9897        esysContext: *mut ESYS_CONTEXT,
9898        shandle1: ESYS_TR,
9899        shandle2: ESYS_TR,
9900        shandle3: ESYS_TR,
9901        outData: *mut *mut TPM2B_MAX_BUFFER,
9902        testResult: *mut TPM2_RC,
9903    ) -> TSS2_RC;
9904}
9905extern "C" {
9906    pub fn Esys_GetTestResult_Async(
9907        esysContext: *mut ESYS_CONTEXT,
9908        shandle1: ESYS_TR,
9909        shandle2: ESYS_TR,
9910        shandle3: ESYS_TR,
9911    ) -> TSS2_RC;
9912}
9913extern "C" {
9914    pub fn Esys_GetTestResult_Finish(
9915        esysContext: *mut ESYS_CONTEXT,
9916        outData: *mut *mut TPM2B_MAX_BUFFER,
9917        testResult: *mut TPM2_RC,
9918    ) -> TSS2_RC;
9919}
9920extern "C" {
9921    pub fn Esys_StartAuthSession(
9922        esysContext: *mut ESYS_CONTEXT,
9923        tpmKey: ESYS_TR,
9924        bind: ESYS_TR,
9925        shandle1: ESYS_TR,
9926        shandle2: ESYS_TR,
9927        shandle3: ESYS_TR,
9928        nonceCaller: *const TPM2B_NONCE,
9929        sessionType: TPM2_SE,
9930        symmetric: *const TPMT_SYM_DEF,
9931        authHash: TPMI_ALG_HASH,
9932        sessionHandle: *mut ESYS_TR,
9933    ) -> TSS2_RC;
9934}
9935extern "C" {
9936    pub fn Esys_StartAuthSession_Async(
9937        esysContext: *mut ESYS_CONTEXT,
9938        tpmKey: ESYS_TR,
9939        bind: ESYS_TR,
9940        shandle1: ESYS_TR,
9941        shandle2: ESYS_TR,
9942        shandle3: ESYS_TR,
9943        nonceCaller: *const TPM2B_NONCE,
9944        sessionType: TPM2_SE,
9945        symmetric: *const TPMT_SYM_DEF,
9946        authHash: TPMI_ALG_HASH,
9947    ) -> TSS2_RC;
9948}
9949extern "C" {
9950    pub fn Esys_StartAuthSession_Finish(
9951        esysContext: *mut ESYS_CONTEXT,
9952        sessionHandle: *mut ESYS_TR,
9953    ) -> TSS2_RC;
9954}
9955extern "C" {
9956    pub fn Esys_PolicyRestart(
9957        esysContext: *mut ESYS_CONTEXT,
9958        sessionHandle: ESYS_TR,
9959        shandle1: ESYS_TR,
9960        shandle2: ESYS_TR,
9961        shandle3: ESYS_TR,
9962    ) -> TSS2_RC;
9963}
9964extern "C" {
9965    pub fn Esys_PolicyRestart_Async(
9966        esysContext: *mut ESYS_CONTEXT,
9967        sessionHandle: ESYS_TR,
9968        shandle1: ESYS_TR,
9969        shandle2: ESYS_TR,
9970        shandle3: ESYS_TR,
9971    ) -> TSS2_RC;
9972}
9973extern "C" {
9974    pub fn Esys_PolicyRestart_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
9975}
9976extern "C" {
9977    pub fn Esys_Create(
9978        esysContext: *mut ESYS_CONTEXT,
9979        parentHandle: ESYS_TR,
9980        shandle1: ESYS_TR,
9981        shandle2: ESYS_TR,
9982        shandle3: ESYS_TR,
9983        inSensitive: *const TPM2B_SENSITIVE_CREATE,
9984        inPublic: *const TPM2B_PUBLIC,
9985        outsideInfo: *const TPM2B_DATA,
9986        creationPCR: *const TPML_PCR_SELECTION,
9987        outPrivate: *mut *mut TPM2B_PRIVATE,
9988        outPublic: *mut *mut TPM2B_PUBLIC,
9989        creationData: *mut *mut TPM2B_CREATION_DATA,
9990        creationHash: *mut *mut TPM2B_DIGEST,
9991        creationTicket: *mut *mut TPMT_TK_CREATION,
9992    ) -> TSS2_RC;
9993}
9994extern "C" {
9995    pub fn Esys_Create_Async(
9996        esysContext: *mut ESYS_CONTEXT,
9997        parentHandle: ESYS_TR,
9998        shandle1: ESYS_TR,
9999        shandle2: ESYS_TR,
10000        shandle3: ESYS_TR,
10001        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10002        inPublic: *const TPM2B_PUBLIC,
10003        outsideInfo: *const TPM2B_DATA,
10004        creationPCR: *const TPML_PCR_SELECTION,
10005    ) -> TSS2_RC;
10006}
10007extern "C" {
10008    pub fn Esys_Create_Finish(
10009        esysContext: *mut ESYS_CONTEXT,
10010        outPrivate: *mut *mut TPM2B_PRIVATE,
10011        outPublic: *mut *mut TPM2B_PUBLIC,
10012        creationData: *mut *mut TPM2B_CREATION_DATA,
10013        creationHash: *mut *mut TPM2B_DIGEST,
10014        creationTicket: *mut *mut TPMT_TK_CREATION,
10015    ) -> TSS2_RC;
10016}
10017extern "C" {
10018    pub fn Esys_Load(
10019        esysContext: *mut ESYS_CONTEXT,
10020        parentHandle: ESYS_TR,
10021        shandle1: ESYS_TR,
10022        shandle2: ESYS_TR,
10023        shandle3: ESYS_TR,
10024        inPrivate: *const TPM2B_PRIVATE,
10025        inPublic: *const TPM2B_PUBLIC,
10026        objectHandle: *mut ESYS_TR,
10027    ) -> TSS2_RC;
10028}
10029extern "C" {
10030    pub fn Esys_Load_Async(
10031        esysContext: *mut ESYS_CONTEXT,
10032        parentHandle: ESYS_TR,
10033        shandle1: ESYS_TR,
10034        shandle2: ESYS_TR,
10035        shandle3: ESYS_TR,
10036        inPrivate: *const TPM2B_PRIVATE,
10037        inPublic: *const TPM2B_PUBLIC,
10038    ) -> TSS2_RC;
10039}
10040extern "C" {
10041    pub fn Esys_Load_Finish(esysContext: *mut ESYS_CONTEXT, objectHandle: *mut ESYS_TR) -> TSS2_RC;
10042}
10043extern "C" {
10044    pub fn Esys_LoadExternal(
10045        esysContext: *mut ESYS_CONTEXT,
10046        shandle1: ESYS_TR,
10047        shandle2: ESYS_TR,
10048        shandle3: ESYS_TR,
10049        inPrivate: *const TPM2B_SENSITIVE,
10050        inPublic: *const TPM2B_PUBLIC,
10051        hierarchy: ESYS_TR,
10052        objectHandle: *mut ESYS_TR,
10053    ) -> TSS2_RC;
10054}
10055extern "C" {
10056    pub fn Esys_LoadExternal_Async(
10057        esysContext: *mut ESYS_CONTEXT,
10058        shandle1: ESYS_TR,
10059        shandle2: ESYS_TR,
10060        shandle3: ESYS_TR,
10061        inPrivate: *const TPM2B_SENSITIVE,
10062        inPublic: *const TPM2B_PUBLIC,
10063        hierarchy: ESYS_TR,
10064    ) -> TSS2_RC;
10065}
10066extern "C" {
10067    pub fn Esys_LoadExternal_Finish(
10068        esysContext: *mut ESYS_CONTEXT,
10069        objectHandle: *mut ESYS_TR,
10070    ) -> TSS2_RC;
10071}
10072extern "C" {
10073    pub fn Esys_ReadPublic(
10074        esysContext: *mut ESYS_CONTEXT,
10075        objectHandle: ESYS_TR,
10076        shandle1: ESYS_TR,
10077        shandle2: ESYS_TR,
10078        shandle3: ESYS_TR,
10079        outPublic: *mut *mut TPM2B_PUBLIC,
10080        name: *mut *mut TPM2B_NAME,
10081        qualifiedName: *mut *mut TPM2B_NAME,
10082    ) -> TSS2_RC;
10083}
10084extern "C" {
10085    pub fn Esys_ReadPublic_Async(
10086        esysContext: *mut ESYS_CONTEXT,
10087        objectHandle: ESYS_TR,
10088        shandle1: ESYS_TR,
10089        shandle2: ESYS_TR,
10090        shandle3: ESYS_TR,
10091    ) -> TSS2_RC;
10092}
10093extern "C" {
10094    pub fn Esys_ReadPublic_Finish(
10095        esysContext: *mut ESYS_CONTEXT,
10096        outPublic: *mut *mut TPM2B_PUBLIC,
10097        name: *mut *mut TPM2B_NAME,
10098        qualifiedName: *mut *mut TPM2B_NAME,
10099    ) -> TSS2_RC;
10100}
10101extern "C" {
10102    pub fn Esys_ActivateCredential(
10103        esysContext: *mut ESYS_CONTEXT,
10104        activateHandle: ESYS_TR,
10105        keyHandle: ESYS_TR,
10106        shandle1: ESYS_TR,
10107        shandle2: ESYS_TR,
10108        shandle3: ESYS_TR,
10109        credentialBlob: *const TPM2B_ID_OBJECT,
10110        secret: *const TPM2B_ENCRYPTED_SECRET,
10111        certInfo: *mut *mut TPM2B_DIGEST,
10112    ) -> TSS2_RC;
10113}
10114extern "C" {
10115    pub fn Esys_ActivateCredential_Async(
10116        esysContext: *mut ESYS_CONTEXT,
10117        activateHandle: ESYS_TR,
10118        keyHandle: ESYS_TR,
10119        shandle1: ESYS_TR,
10120        shandle2: ESYS_TR,
10121        shandle3: ESYS_TR,
10122        credentialBlob: *const TPM2B_ID_OBJECT,
10123        secret: *const TPM2B_ENCRYPTED_SECRET,
10124    ) -> TSS2_RC;
10125}
10126extern "C" {
10127    pub fn Esys_ActivateCredential_Finish(
10128        esysContext: *mut ESYS_CONTEXT,
10129        certInfo: *mut *mut TPM2B_DIGEST,
10130    ) -> TSS2_RC;
10131}
10132extern "C" {
10133    pub fn Esys_ACT_SetTimeout(
10134        esysContext: *mut ESYS_CONTEXT,
10135        actHandle: ESYS_TR,
10136        shandle1: ESYS_TR,
10137        shandle2: ESYS_TR,
10138        shandle3: ESYS_TR,
10139        startTimeout: UINT32,
10140    ) -> TSS2_RC;
10141}
10142extern "C" {
10143    pub fn Esys_ACT_SetTimeout_Async(
10144        esysContext: *mut ESYS_CONTEXT,
10145        actHandle: ESYS_TR,
10146        shandle1: ESYS_TR,
10147        shandle2: ESYS_TR,
10148        shandle3: ESYS_TR,
10149        startTimeout: UINT32,
10150    ) -> TSS2_RC;
10151}
10152extern "C" {
10153    pub fn Esys_ACT_SetTimeout_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10154}
10155extern "C" {
10156    pub fn Esys_AC_GetCapability_Async(
10157        esysContext: *mut ESYS_CONTEXT,
10158        optionalSession1: ESYS_TR,
10159        optionalSession2: ESYS_TR,
10160        optionalSession3: ESYS_TR,
10161        ac: ESYS_TR,
10162        capability: TPM_AT,
10163        count: UINT32,
10164    ) -> TSS2_RC;
10165}
10166extern "C" {
10167    pub fn Esys_AC_GetCapability_Finish(
10168        esysContext: *mut ESYS_CONTEXT,
10169        moreData: *mut TPMI_YES_NO,
10170        capabilityData: *mut *mut TPML_AC_CAPABILITIES,
10171    ) -> TSS2_RC;
10172}
10173extern "C" {
10174    pub fn Esys_AC_GetCapability(
10175        esysContext: *mut ESYS_CONTEXT,
10176        optionalSession1: ESYS_TR,
10177        optionalSession2: ESYS_TR,
10178        optionalSession3: ESYS_TR,
10179        ac: ESYS_TR,
10180        capability: TPM_AT,
10181        count: UINT32,
10182        moreData: *mut TPMI_YES_NO,
10183        capabilityData: *mut *mut TPML_AC_CAPABILITIES,
10184    ) -> TSS2_RC;
10185}
10186extern "C" {
10187    pub fn Esys_AC_Send_Async(
10188        esysContext: *mut ESYS_CONTEXT,
10189        sendObject: ESYS_TR,
10190        nvAuthHandle: ESYS_TR,
10191        optionalSession1: ESYS_TR,
10192        optionalSession2: ESYS_TR,
10193        optionalSession3: ESYS_TR,
10194        ac: ESYS_TR,
10195        acDataIn: *mut TPM2B_MAX_BUFFER,
10196    ) -> TSS2_RC;
10197}
10198extern "C" {
10199    pub fn Esys_AC_Send_Finish(
10200        esysContext: *mut ESYS_CONTEXT,
10201        acDataOut: *mut *mut TPMS_AC_OUTPUT,
10202    ) -> TSS2_RC;
10203}
10204extern "C" {
10205    pub fn Esys_AC_Send(
10206        esysContext: *mut ESYS_CONTEXT,
10207        sendObject: ESYS_TR,
10208        nvAuthHandle: ESYS_TR,
10209        optionalSession1: ESYS_TR,
10210        optionalSession2: ESYS_TR,
10211        optionalSession3: ESYS_TR,
10212        ac: ESYS_TR,
10213        acDataIn: *mut TPM2B_MAX_BUFFER,
10214        acDataOut: *mut *mut TPMS_AC_OUTPUT,
10215    ) -> TSS2_RC;
10216}
10217extern "C" {
10218    pub fn Esys_Policy_AC_SendSelect_Async(
10219        esysContext: *mut ESYS_CONTEXT,
10220        policySession1: ESYS_TR,
10221        optionalSession2: ESYS_TR,
10222        optionalSession3: ESYS_TR,
10223        objectName: *mut TPM2B_NAME,
10224        authHandleName: *mut TPM2B_NAME,
10225        acName: *mut TPM2B_NAME,
10226        includeObject: TPMI_YES_NO,
10227    ) -> TSS2_RC;
10228}
10229extern "C" {
10230    pub fn Esys_Policy_AC_SendSelect_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10231}
10232extern "C" {
10233    pub fn Esys_Policy_AC_SendSelect(
10234        esysContext: *mut ESYS_CONTEXT,
10235        policySession1: ESYS_TR,
10236        optionalSession2: ESYS_TR,
10237        optionalSession3: ESYS_TR,
10238        objectName: *mut TPM2B_NAME,
10239        authHandleName: *mut TPM2B_NAME,
10240        acName: *mut TPM2B_NAME,
10241        includeObject: TPMI_YES_NO,
10242    ) -> TSS2_RC;
10243}
10244extern "C" {
10245    pub fn Esys_MakeCredential(
10246        esysContext: *mut ESYS_CONTEXT,
10247        handle: ESYS_TR,
10248        shandle1: ESYS_TR,
10249        shandle2: ESYS_TR,
10250        shandle3: ESYS_TR,
10251        credential: *const TPM2B_DIGEST,
10252        objectName: *const TPM2B_NAME,
10253        credentialBlob: *mut *mut TPM2B_ID_OBJECT,
10254        secret: *mut *mut TPM2B_ENCRYPTED_SECRET,
10255    ) -> TSS2_RC;
10256}
10257extern "C" {
10258    pub fn Esys_MakeCredential_Async(
10259        esysContext: *mut ESYS_CONTEXT,
10260        handle: ESYS_TR,
10261        shandle1: ESYS_TR,
10262        shandle2: ESYS_TR,
10263        shandle3: ESYS_TR,
10264        credential: *const TPM2B_DIGEST,
10265        objectName: *const TPM2B_NAME,
10266    ) -> TSS2_RC;
10267}
10268extern "C" {
10269    pub fn Esys_MakeCredential_Finish(
10270        esysContext: *mut ESYS_CONTEXT,
10271        credentialBlob: *mut *mut TPM2B_ID_OBJECT,
10272        secret: *mut *mut TPM2B_ENCRYPTED_SECRET,
10273    ) -> TSS2_RC;
10274}
10275extern "C" {
10276    pub fn Esys_Unseal(
10277        esysContext: *mut ESYS_CONTEXT,
10278        itemHandle: ESYS_TR,
10279        shandle1: ESYS_TR,
10280        shandle2: ESYS_TR,
10281        shandle3: ESYS_TR,
10282        outData: *mut *mut TPM2B_SENSITIVE_DATA,
10283    ) -> TSS2_RC;
10284}
10285extern "C" {
10286    pub fn Esys_Unseal_Async(
10287        esysContext: *mut ESYS_CONTEXT,
10288        itemHandle: ESYS_TR,
10289        shandle1: ESYS_TR,
10290        shandle2: ESYS_TR,
10291        shandle3: ESYS_TR,
10292    ) -> TSS2_RC;
10293}
10294extern "C" {
10295    pub fn Esys_Unseal_Finish(
10296        esysContext: *mut ESYS_CONTEXT,
10297        outData: *mut *mut TPM2B_SENSITIVE_DATA,
10298    ) -> TSS2_RC;
10299}
10300extern "C" {
10301    pub fn Esys_ObjectChangeAuth(
10302        esysContext: *mut ESYS_CONTEXT,
10303        objectHandle: ESYS_TR,
10304        parentHandle: ESYS_TR,
10305        shandle1: ESYS_TR,
10306        shandle2: ESYS_TR,
10307        shandle3: ESYS_TR,
10308        newAuth: *const TPM2B_AUTH,
10309        outPrivate: *mut *mut TPM2B_PRIVATE,
10310    ) -> TSS2_RC;
10311}
10312extern "C" {
10313    pub fn Esys_ObjectChangeAuth_Async(
10314        esysContext: *mut ESYS_CONTEXT,
10315        objectHandle: ESYS_TR,
10316        parentHandle: ESYS_TR,
10317        shandle1: ESYS_TR,
10318        shandle2: ESYS_TR,
10319        shandle3: ESYS_TR,
10320        newAuth: *const TPM2B_AUTH,
10321    ) -> TSS2_RC;
10322}
10323extern "C" {
10324    pub fn Esys_ObjectChangeAuth_Finish(
10325        esysContext: *mut ESYS_CONTEXT,
10326        outPrivate: *mut *mut TPM2B_PRIVATE,
10327    ) -> TSS2_RC;
10328}
10329extern "C" {
10330    pub fn Esys_CreateLoaded(
10331        esysContext: *mut ESYS_CONTEXT,
10332        parentHandle: ESYS_TR,
10333        shandle1: ESYS_TR,
10334        shandle2: ESYS_TR,
10335        shandle3: ESYS_TR,
10336        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10337        inPublic: *const TPM2B_TEMPLATE,
10338        objectHandle: *mut ESYS_TR,
10339        outPrivate: *mut *mut TPM2B_PRIVATE,
10340        outPublic: *mut *mut TPM2B_PUBLIC,
10341    ) -> TSS2_RC;
10342}
10343extern "C" {
10344    pub fn Esys_CreateLoaded_Async(
10345        esysContext: *mut ESYS_CONTEXT,
10346        parentHandle: ESYS_TR,
10347        shandle1: ESYS_TR,
10348        shandle2: ESYS_TR,
10349        shandle3: ESYS_TR,
10350        inSensitive: *const TPM2B_SENSITIVE_CREATE,
10351        inPublic: *const TPM2B_TEMPLATE,
10352    ) -> TSS2_RC;
10353}
10354extern "C" {
10355    pub fn Esys_CreateLoaded_Finish(
10356        esysContext: *mut ESYS_CONTEXT,
10357        objectHandle: *mut ESYS_TR,
10358        outPrivate: *mut *mut TPM2B_PRIVATE,
10359        outPublic: *mut *mut TPM2B_PUBLIC,
10360    ) -> TSS2_RC;
10361}
10362extern "C" {
10363    pub fn Esys_Duplicate(
10364        esysContext: *mut ESYS_CONTEXT,
10365        objectHandle: ESYS_TR,
10366        newParentHandle: ESYS_TR,
10367        shandle1: ESYS_TR,
10368        shandle2: ESYS_TR,
10369        shandle3: ESYS_TR,
10370        encryptionKeyIn: *const TPM2B_DATA,
10371        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
10372        encryptionKeyOut: *mut *mut TPM2B_DATA,
10373        duplicate: *mut *mut TPM2B_PRIVATE,
10374        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
10375    ) -> TSS2_RC;
10376}
10377extern "C" {
10378    pub fn Esys_Duplicate_Async(
10379        esysContext: *mut ESYS_CONTEXT,
10380        objectHandle: ESYS_TR,
10381        newParentHandle: ESYS_TR,
10382        shandle1: ESYS_TR,
10383        shandle2: ESYS_TR,
10384        shandle3: ESYS_TR,
10385        encryptionKeyIn: *const TPM2B_DATA,
10386        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
10387    ) -> TSS2_RC;
10388}
10389extern "C" {
10390    pub fn Esys_Duplicate_Finish(
10391        esysContext: *mut ESYS_CONTEXT,
10392        encryptionKeyOut: *mut *mut TPM2B_DATA,
10393        duplicate: *mut *mut TPM2B_PRIVATE,
10394        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
10395    ) -> TSS2_RC;
10396}
10397extern "C" {
10398    pub fn Esys_Rewrap(
10399        esysContext: *mut ESYS_CONTEXT,
10400        oldParent: ESYS_TR,
10401        newParent: ESYS_TR,
10402        shandle1: ESYS_TR,
10403        shandle2: ESYS_TR,
10404        shandle3: ESYS_TR,
10405        inDuplicate: *const TPM2B_PRIVATE,
10406        name: *const TPM2B_NAME,
10407        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
10408        outDuplicate: *mut *mut TPM2B_PRIVATE,
10409        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
10410    ) -> TSS2_RC;
10411}
10412extern "C" {
10413    pub fn Esys_Rewrap_Async(
10414        esysContext: *mut ESYS_CONTEXT,
10415        oldParent: ESYS_TR,
10416        newParent: ESYS_TR,
10417        shandle1: ESYS_TR,
10418        shandle2: ESYS_TR,
10419        shandle3: ESYS_TR,
10420        inDuplicate: *const TPM2B_PRIVATE,
10421        name: *const TPM2B_NAME,
10422        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
10423    ) -> TSS2_RC;
10424}
10425extern "C" {
10426    pub fn Esys_Rewrap_Finish(
10427        esysContext: *mut ESYS_CONTEXT,
10428        outDuplicate: *mut *mut TPM2B_PRIVATE,
10429        outSymSeed: *mut *mut TPM2B_ENCRYPTED_SECRET,
10430    ) -> TSS2_RC;
10431}
10432extern "C" {
10433    pub fn Esys_Import(
10434        esysContext: *mut ESYS_CONTEXT,
10435        parentHandle: ESYS_TR,
10436        shandle1: ESYS_TR,
10437        shandle2: ESYS_TR,
10438        shandle3: ESYS_TR,
10439        encryptionKey: *const TPM2B_DATA,
10440        objectPublic: *const TPM2B_PUBLIC,
10441        duplicate: *const TPM2B_PRIVATE,
10442        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
10443        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
10444        outPrivate: *mut *mut TPM2B_PRIVATE,
10445    ) -> TSS2_RC;
10446}
10447extern "C" {
10448    pub fn Esys_Import_Async(
10449        esysContext: *mut ESYS_CONTEXT,
10450        parentHandle: ESYS_TR,
10451        shandle1: ESYS_TR,
10452        shandle2: ESYS_TR,
10453        shandle3: ESYS_TR,
10454        encryptionKey: *const TPM2B_DATA,
10455        objectPublic: *const TPM2B_PUBLIC,
10456        duplicate: *const TPM2B_PRIVATE,
10457        inSymSeed: *const TPM2B_ENCRYPTED_SECRET,
10458        symmetricAlg: *const TPMT_SYM_DEF_OBJECT,
10459    ) -> TSS2_RC;
10460}
10461extern "C" {
10462    pub fn Esys_Import_Finish(
10463        esysContext: *mut ESYS_CONTEXT,
10464        outPrivate: *mut *mut TPM2B_PRIVATE,
10465    ) -> TSS2_RC;
10466}
10467extern "C" {
10468    pub fn Esys_RSA_Encrypt(
10469        esysContext: *mut ESYS_CONTEXT,
10470        keyHandle: ESYS_TR,
10471        shandle1: ESYS_TR,
10472        shandle2: ESYS_TR,
10473        shandle3: ESYS_TR,
10474        message: *const TPM2B_PUBLIC_KEY_RSA,
10475        inScheme: *const TPMT_RSA_DECRYPT,
10476        label: *const TPM2B_DATA,
10477        outData: *mut *mut TPM2B_PUBLIC_KEY_RSA,
10478    ) -> TSS2_RC;
10479}
10480extern "C" {
10481    pub fn Esys_RSA_Encrypt_Async(
10482        esysContext: *mut ESYS_CONTEXT,
10483        keyHandle: ESYS_TR,
10484        shandle1: ESYS_TR,
10485        shandle2: ESYS_TR,
10486        shandle3: ESYS_TR,
10487        message: *const TPM2B_PUBLIC_KEY_RSA,
10488        inScheme: *const TPMT_RSA_DECRYPT,
10489        label: *const TPM2B_DATA,
10490    ) -> TSS2_RC;
10491}
10492extern "C" {
10493    pub fn Esys_RSA_Encrypt_Finish(
10494        esysContext: *mut ESYS_CONTEXT,
10495        outData: *mut *mut TPM2B_PUBLIC_KEY_RSA,
10496    ) -> TSS2_RC;
10497}
10498extern "C" {
10499    pub fn Esys_RSA_Decrypt(
10500        esysContext: *mut ESYS_CONTEXT,
10501        keyHandle: ESYS_TR,
10502        shandle1: ESYS_TR,
10503        shandle2: ESYS_TR,
10504        shandle3: ESYS_TR,
10505        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
10506        inScheme: *const TPMT_RSA_DECRYPT,
10507        label: *const TPM2B_DATA,
10508        message: *mut *mut TPM2B_PUBLIC_KEY_RSA,
10509    ) -> TSS2_RC;
10510}
10511extern "C" {
10512    pub fn Esys_RSA_Decrypt_Async(
10513        esysContext: *mut ESYS_CONTEXT,
10514        keyHandle: ESYS_TR,
10515        shandle1: ESYS_TR,
10516        shandle2: ESYS_TR,
10517        shandle3: ESYS_TR,
10518        cipherText: *const TPM2B_PUBLIC_KEY_RSA,
10519        inScheme: *const TPMT_RSA_DECRYPT,
10520        label: *const TPM2B_DATA,
10521    ) -> TSS2_RC;
10522}
10523extern "C" {
10524    pub fn Esys_RSA_Decrypt_Finish(
10525        esysContext: *mut ESYS_CONTEXT,
10526        message: *mut *mut TPM2B_PUBLIC_KEY_RSA,
10527    ) -> TSS2_RC;
10528}
10529extern "C" {
10530    pub fn Esys_ECDH_KeyGen(
10531        esysContext: *mut ESYS_CONTEXT,
10532        keyHandle: ESYS_TR,
10533        shandle1: ESYS_TR,
10534        shandle2: ESYS_TR,
10535        shandle3: ESYS_TR,
10536        zPoint: *mut *mut TPM2B_ECC_POINT,
10537        pubPoint: *mut *mut TPM2B_ECC_POINT,
10538    ) -> TSS2_RC;
10539}
10540extern "C" {
10541    pub fn Esys_ECDH_KeyGen_Async(
10542        esysContext: *mut ESYS_CONTEXT,
10543        keyHandle: ESYS_TR,
10544        shandle1: ESYS_TR,
10545        shandle2: ESYS_TR,
10546        shandle3: ESYS_TR,
10547    ) -> TSS2_RC;
10548}
10549extern "C" {
10550    pub fn Esys_ECDH_KeyGen_Finish(
10551        esysContext: *mut ESYS_CONTEXT,
10552        zPoint: *mut *mut TPM2B_ECC_POINT,
10553        pubPoint: *mut *mut TPM2B_ECC_POINT,
10554    ) -> TSS2_RC;
10555}
10556extern "C" {
10557    pub fn Esys_ECDH_ZGen(
10558        esysContext: *mut ESYS_CONTEXT,
10559        keyHandle: ESYS_TR,
10560        shandle1: ESYS_TR,
10561        shandle2: ESYS_TR,
10562        shandle3: ESYS_TR,
10563        inPoint: *const TPM2B_ECC_POINT,
10564        outPoint: *mut *mut TPM2B_ECC_POINT,
10565    ) -> TSS2_RC;
10566}
10567extern "C" {
10568    pub fn Esys_ECDH_ZGen_Async(
10569        esysContext: *mut ESYS_CONTEXT,
10570        keyHandle: ESYS_TR,
10571        shandle1: ESYS_TR,
10572        shandle2: ESYS_TR,
10573        shandle3: ESYS_TR,
10574        inPoint: *const TPM2B_ECC_POINT,
10575    ) -> TSS2_RC;
10576}
10577extern "C" {
10578    pub fn Esys_ECDH_ZGen_Finish(
10579        esysContext: *mut ESYS_CONTEXT,
10580        outPoint: *mut *mut TPM2B_ECC_POINT,
10581    ) -> TSS2_RC;
10582}
10583extern "C" {
10584    pub fn Esys_ECC_Parameters(
10585        esysContext: *mut ESYS_CONTEXT,
10586        shandle1: ESYS_TR,
10587        shandle2: ESYS_TR,
10588        shandle3: ESYS_TR,
10589        curveID: TPMI_ECC_CURVE,
10590        parameters: *mut *mut TPMS_ALGORITHM_DETAIL_ECC,
10591    ) -> TSS2_RC;
10592}
10593extern "C" {
10594    pub fn Esys_ECC_Parameters_Async(
10595        esysContext: *mut ESYS_CONTEXT,
10596        shandle1: ESYS_TR,
10597        shandle2: ESYS_TR,
10598        shandle3: ESYS_TR,
10599        curveID: TPMI_ECC_CURVE,
10600    ) -> TSS2_RC;
10601}
10602extern "C" {
10603    pub fn Esys_ECC_Parameters_Finish(
10604        esysContext: *mut ESYS_CONTEXT,
10605        parameters: *mut *mut TPMS_ALGORITHM_DETAIL_ECC,
10606    ) -> TSS2_RC;
10607}
10608extern "C" {
10609    pub fn Esys_ZGen_2Phase(
10610        esysContext: *mut ESYS_CONTEXT,
10611        keyA: ESYS_TR,
10612        shandle1: ESYS_TR,
10613        shandle2: ESYS_TR,
10614        shandle3: ESYS_TR,
10615        inQsB: *const TPM2B_ECC_POINT,
10616        inQeB: *const TPM2B_ECC_POINT,
10617        inScheme: TPMI_ECC_KEY_EXCHANGE,
10618        counter: UINT16,
10619        outZ1: *mut *mut TPM2B_ECC_POINT,
10620        outZ2: *mut *mut TPM2B_ECC_POINT,
10621    ) -> TSS2_RC;
10622}
10623extern "C" {
10624    pub fn Esys_ZGen_2Phase_Async(
10625        esysContext: *mut ESYS_CONTEXT,
10626        keyA: ESYS_TR,
10627        shandle1: ESYS_TR,
10628        shandle2: ESYS_TR,
10629        shandle3: ESYS_TR,
10630        inQsB: *const TPM2B_ECC_POINT,
10631        inQeB: *const TPM2B_ECC_POINT,
10632        inScheme: TPMI_ECC_KEY_EXCHANGE,
10633        counter: UINT16,
10634    ) -> TSS2_RC;
10635}
10636extern "C" {
10637    pub fn Esys_ZGen_2Phase_Finish(
10638        esysContext: *mut ESYS_CONTEXT,
10639        outZ1: *mut *mut TPM2B_ECC_POINT,
10640        outZ2: *mut *mut TPM2B_ECC_POINT,
10641    ) -> TSS2_RC;
10642}
10643extern "C" {
10644    pub fn Esys_EncryptDecrypt(
10645        esysContext: *mut ESYS_CONTEXT,
10646        keyHandle: ESYS_TR,
10647        shandle1: ESYS_TR,
10648        shandle2: ESYS_TR,
10649        shandle3: ESYS_TR,
10650        decrypt: TPMI_YES_NO,
10651        mode: TPMI_ALG_CIPHER_MODE,
10652        ivIn: *const TPM2B_IV,
10653        inData: *const TPM2B_MAX_BUFFER,
10654        outData: *mut *mut TPM2B_MAX_BUFFER,
10655        ivOut: *mut *mut TPM2B_IV,
10656    ) -> TSS2_RC;
10657}
10658extern "C" {
10659    pub fn Esys_EncryptDecrypt_Async(
10660        esysContext: *mut ESYS_CONTEXT,
10661        keyHandle: ESYS_TR,
10662        shandle1: ESYS_TR,
10663        shandle2: ESYS_TR,
10664        shandle3: ESYS_TR,
10665        decrypt: TPMI_YES_NO,
10666        mode: TPMI_ALG_CIPHER_MODE,
10667        ivIn: *const TPM2B_IV,
10668        inData: *const TPM2B_MAX_BUFFER,
10669    ) -> TSS2_RC;
10670}
10671extern "C" {
10672    pub fn Esys_EncryptDecrypt_Finish(
10673        esysContext: *mut ESYS_CONTEXT,
10674        outData: *mut *mut TPM2B_MAX_BUFFER,
10675        ivOut: *mut *mut TPM2B_IV,
10676    ) -> TSS2_RC;
10677}
10678extern "C" {
10679    pub fn Esys_EncryptDecrypt2(
10680        esysContext: *mut ESYS_CONTEXT,
10681        keyHandle: ESYS_TR,
10682        shandle1: ESYS_TR,
10683        shandle2: ESYS_TR,
10684        shandle3: ESYS_TR,
10685        inData: *const TPM2B_MAX_BUFFER,
10686        decrypt: TPMI_YES_NO,
10687        mode: TPMI_ALG_CIPHER_MODE,
10688        ivIn: *const TPM2B_IV,
10689        outData: *mut *mut TPM2B_MAX_BUFFER,
10690        ivOut: *mut *mut TPM2B_IV,
10691    ) -> TSS2_RC;
10692}
10693extern "C" {
10694    pub fn Esys_EncryptDecrypt2_Async(
10695        esysContext: *mut ESYS_CONTEXT,
10696        keyHandle: ESYS_TR,
10697        shandle1: ESYS_TR,
10698        shandle2: ESYS_TR,
10699        shandle3: ESYS_TR,
10700        inData: *const TPM2B_MAX_BUFFER,
10701        decrypt: TPMI_YES_NO,
10702        mode: TPMI_ALG_CIPHER_MODE,
10703        ivIn: *const TPM2B_IV,
10704    ) -> TSS2_RC;
10705}
10706extern "C" {
10707    pub fn Esys_EncryptDecrypt2_Finish(
10708        esysContext: *mut ESYS_CONTEXT,
10709        outData: *mut *mut TPM2B_MAX_BUFFER,
10710        ivOut: *mut *mut TPM2B_IV,
10711    ) -> TSS2_RC;
10712}
10713extern "C" {
10714    pub fn Esys_Hash(
10715        esysContext: *mut ESYS_CONTEXT,
10716        shandle1: ESYS_TR,
10717        shandle2: ESYS_TR,
10718        shandle3: ESYS_TR,
10719        data: *const TPM2B_MAX_BUFFER,
10720        hashAlg: TPMI_ALG_HASH,
10721        hierarchy: ESYS_TR,
10722        outHash: *mut *mut TPM2B_DIGEST,
10723        validation: *mut *mut TPMT_TK_HASHCHECK,
10724    ) -> TSS2_RC;
10725}
10726extern "C" {
10727    pub fn Esys_Hash_Async(
10728        esysContext: *mut ESYS_CONTEXT,
10729        shandle1: ESYS_TR,
10730        shandle2: ESYS_TR,
10731        shandle3: ESYS_TR,
10732        data: *const TPM2B_MAX_BUFFER,
10733        hashAlg: TPMI_ALG_HASH,
10734        hierarchy: ESYS_TR,
10735    ) -> TSS2_RC;
10736}
10737extern "C" {
10738    pub fn Esys_Hash_Finish(
10739        esysContext: *mut ESYS_CONTEXT,
10740        outHash: *mut *mut TPM2B_DIGEST,
10741        validation: *mut *mut TPMT_TK_HASHCHECK,
10742    ) -> TSS2_RC;
10743}
10744extern "C" {
10745    pub fn Esys_HMAC(
10746        esysContext: *mut ESYS_CONTEXT,
10747        handle: ESYS_TR,
10748        shandle1: ESYS_TR,
10749        shandle2: ESYS_TR,
10750        shandle3: ESYS_TR,
10751        buffer: *const TPM2B_MAX_BUFFER,
10752        hashAlg: TPMI_ALG_HASH,
10753        outHMAC: *mut *mut TPM2B_DIGEST,
10754    ) -> TSS2_RC;
10755}
10756extern "C" {
10757    pub fn Esys_HMAC_Async(
10758        esysContext: *mut ESYS_CONTEXT,
10759        handle: ESYS_TR,
10760        shandle1: ESYS_TR,
10761        shandle2: ESYS_TR,
10762        shandle3: ESYS_TR,
10763        buffer: *const TPM2B_MAX_BUFFER,
10764        hashAlg: TPMI_ALG_HASH,
10765    ) -> TSS2_RC;
10766}
10767extern "C" {
10768    pub fn Esys_HMAC_Finish(
10769        esysContext: *mut ESYS_CONTEXT,
10770        outHMAC: *mut *mut TPM2B_DIGEST,
10771    ) -> TSS2_RC;
10772}
10773extern "C" {
10774    pub fn Esys_MAC_Async(
10775        esysContext: *mut ESYS_CONTEXT,
10776        handle: ESYS_TR,
10777        handleSession1: ESYS_TR,
10778        optionalSession2: ESYS_TR,
10779        optionalSession3: ESYS_TR,
10780        buffer: *const TPM2B_MAX_BUFFER,
10781        inScheme: TPMI_ALG_MAC_SCHEME,
10782    ) -> TSS2_RC;
10783}
10784extern "C" {
10785    pub fn Esys_MAC_Finish(
10786        esysContext: *mut ESYS_CONTEXT,
10787        outMAC: *mut *mut TPM2B_DIGEST,
10788    ) -> TSS2_RC;
10789}
10790extern "C" {
10791    pub fn Esys_MAC(
10792        esysContext: *mut ESYS_CONTEXT,
10793        handle: ESYS_TR,
10794        handleSession1: ESYS_TR,
10795        optionalSession2: ESYS_TR,
10796        optionalSession3: ESYS_TR,
10797        buffer: *const TPM2B_MAX_BUFFER,
10798        inScheme: TPMI_ALG_MAC_SCHEME,
10799        outMAC: *mut *mut TPM2B_DIGEST,
10800    ) -> TSS2_RC;
10801}
10802extern "C" {
10803    pub fn Esys_GetRandom(
10804        esysContext: *mut ESYS_CONTEXT,
10805        shandle1: ESYS_TR,
10806        shandle2: ESYS_TR,
10807        shandle3: ESYS_TR,
10808        bytesRequested: UINT16,
10809        randomBytes: *mut *mut TPM2B_DIGEST,
10810    ) -> TSS2_RC;
10811}
10812extern "C" {
10813    pub fn Esys_GetRandom_Async(
10814        esysContext: *mut ESYS_CONTEXT,
10815        shandle1: ESYS_TR,
10816        shandle2: ESYS_TR,
10817        shandle3: ESYS_TR,
10818        bytesRequested: UINT16,
10819    ) -> TSS2_RC;
10820}
10821extern "C" {
10822    pub fn Esys_GetRandom_Finish(
10823        esysContext: *mut ESYS_CONTEXT,
10824        randomBytes: *mut *mut TPM2B_DIGEST,
10825    ) -> TSS2_RC;
10826}
10827extern "C" {
10828    pub fn Esys_StirRandom(
10829        esysContext: *mut ESYS_CONTEXT,
10830        shandle1: ESYS_TR,
10831        shandle2: ESYS_TR,
10832        shandle3: ESYS_TR,
10833        inData: *const TPM2B_SENSITIVE_DATA,
10834    ) -> TSS2_RC;
10835}
10836extern "C" {
10837    pub fn Esys_StirRandom_Async(
10838        esysContext: *mut ESYS_CONTEXT,
10839        shandle1: ESYS_TR,
10840        shandle2: ESYS_TR,
10841        shandle3: ESYS_TR,
10842        inData: *const TPM2B_SENSITIVE_DATA,
10843    ) -> TSS2_RC;
10844}
10845extern "C" {
10846    pub fn Esys_StirRandom_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10847}
10848extern "C" {
10849    pub fn Esys_HMAC_Start(
10850        esysContext: *mut ESYS_CONTEXT,
10851        handle: ESYS_TR,
10852        shandle1: ESYS_TR,
10853        shandle2: ESYS_TR,
10854        shandle3: ESYS_TR,
10855        auth: *const TPM2B_AUTH,
10856        hashAlg: TPMI_ALG_HASH,
10857        sequenceHandle: *mut ESYS_TR,
10858    ) -> TSS2_RC;
10859}
10860extern "C" {
10861    pub fn Esys_HMAC_Start_Async(
10862        esysContext: *mut ESYS_CONTEXT,
10863        handle: ESYS_TR,
10864        shandle1: ESYS_TR,
10865        shandle2: ESYS_TR,
10866        shandle3: ESYS_TR,
10867        auth: *const TPM2B_AUTH,
10868        hashAlg: TPMI_ALG_HASH,
10869    ) -> TSS2_RC;
10870}
10871extern "C" {
10872    pub fn Esys_HMAC_Start_Finish(
10873        esysContext: *mut ESYS_CONTEXT,
10874        sequenceHandle: *mut ESYS_TR,
10875    ) -> TSS2_RC;
10876}
10877extern "C" {
10878    pub fn Esys_MAC_Start(
10879        esysContext: *mut ESYS_CONTEXT,
10880        handle: ESYS_TR,
10881        handleSession1: ESYS_TR,
10882        optionalSession2: ESYS_TR,
10883        optionalSession3: ESYS_TR,
10884        auth: *const TPM2B_AUTH,
10885        inScheme: TPMI_ALG_MAC_SCHEME,
10886        sequenceHandle: *mut ESYS_TR,
10887    ) -> TSS2_RC;
10888}
10889extern "C" {
10890    pub fn Esys_MAC_Start_Async(
10891        esysContext: *mut ESYS_CONTEXT,
10892        handle: ESYS_TR,
10893        handleSession1: ESYS_TR,
10894        optionalSession2: ESYS_TR,
10895        optionalSession3: ESYS_TR,
10896        auth: *const TPM2B_AUTH,
10897        inScheme: TPMI_ALG_MAC_SCHEME,
10898    ) -> TSS2_RC;
10899}
10900extern "C" {
10901    pub fn Esys_MAC_Start_Finish(
10902        esysContext: *mut ESYS_CONTEXT,
10903        sequenceHandle: *mut ESYS_TR,
10904    ) -> TSS2_RC;
10905}
10906extern "C" {
10907    pub fn Esys_HashSequenceStart(
10908        esysContext: *mut ESYS_CONTEXT,
10909        shandle1: ESYS_TR,
10910        shandle2: ESYS_TR,
10911        shandle3: ESYS_TR,
10912        auth: *const TPM2B_AUTH,
10913        hashAlg: TPMI_ALG_HASH,
10914        sequenceHandle: *mut ESYS_TR,
10915    ) -> TSS2_RC;
10916}
10917extern "C" {
10918    pub fn Esys_HashSequenceStart_Async(
10919        esysContext: *mut ESYS_CONTEXT,
10920        shandle1: ESYS_TR,
10921        shandle2: ESYS_TR,
10922        shandle3: ESYS_TR,
10923        auth: *const TPM2B_AUTH,
10924        hashAlg: TPMI_ALG_HASH,
10925    ) -> TSS2_RC;
10926}
10927extern "C" {
10928    pub fn Esys_HashSequenceStart_Finish(
10929        esysContext: *mut ESYS_CONTEXT,
10930        sequenceHandle: *mut ESYS_TR,
10931    ) -> TSS2_RC;
10932}
10933extern "C" {
10934    pub fn Esys_SequenceUpdate(
10935        esysContext: *mut ESYS_CONTEXT,
10936        sequenceHandle: ESYS_TR,
10937        shandle1: ESYS_TR,
10938        shandle2: ESYS_TR,
10939        shandle3: ESYS_TR,
10940        buffer: *const TPM2B_MAX_BUFFER,
10941    ) -> TSS2_RC;
10942}
10943extern "C" {
10944    pub fn Esys_SequenceUpdate_Async(
10945        esysContext: *mut ESYS_CONTEXT,
10946        sequenceHandle: ESYS_TR,
10947        shandle1: ESYS_TR,
10948        shandle2: ESYS_TR,
10949        shandle3: ESYS_TR,
10950        buffer: *const TPM2B_MAX_BUFFER,
10951    ) -> TSS2_RC;
10952}
10953extern "C" {
10954    pub fn Esys_SequenceUpdate_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
10955}
10956extern "C" {
10957    pub fn Esys_SequenceComplete(
10958        esysContext: *mut ESYS_CONTEXT,
10959        sequenceHandle: ESYS_TR,
10960        shandle1: ESYS_TR,
10961        shandle2: ESYS_TR,
10962        shandle3: ESYS_TR,
10963        buffer: *const TPM2B_MAX_BUFFER,
10964        hierarchy: ESYS_TR,
10965        result: *mut *mut TPM2B_DIGEST,
10966        validation: *mut *mut TPMT_TK_HASHCHECK,
10967    ) -> TSS2_RC;
10968}
10969extern "C" {
10970    pub fn Esys_SequenceComplete_Async(
10971        esysContext: *mut ESYS_CONTEXT,
10972        sequenceHandle: ESYS_TR,
10973        shandle1: ESYS_TR,
10974        shandle2: ESYS_TR,
10975        shandle3: ESYS_TR,
10976        buffer: *const TPM2B_MAX_BUFFER,
10977        hierarchy: ESYS_TR,
10978    ) -> TSS2_RC;
10979}
10980extern "C" {
10981    pub fn Esys_SequenceComplete_Finish(
10982        esysContext: *mut ESYS_CONTEXT,
10983        result: *mut *mut TPM2B_DIGEST,
10984        validation: *mut *mut TPMT_TK_HASHCHECK,
10985    ) -> TSS2_RC;
10986}
10987extern "C" {
10988    pub fn Esys_EventSequenceComplete(
10989        esysContext: *mut ESYS_CONTEXT,
10990        pcrHandle: ESYS_TR,
10991        sequenceHandle: ESYS_TR,
10992        shandle1: ESYS_TR,
10993        shandle2: ESYS_TR,
10994        shandle3: ESYS_TR,
10995        buffer: *const TPM2B_MAX_BUFFER,
10996        results: *mut *mut TPML_DIGEST_VALUES,
10997    ) -> TSS2_RC;
10998}
10999extern "C" {
11000    pub fn Esys_EventSequenceComplete_Async(
11001        esysContext: *mut ESYS_CONTEXT,
11002        pcrHandle: ESYS_TR,
11003        sequenceHandle: ESYS_TR,
11004        shandle1: ESYS_TR,
11005        shandle2: ESYS_TR,
11006        shandle3: ESYS_TR,
11007        buffer: *const TPM2B_MAX_BUFFER,
11008    ) -> TSS2_RC;
11009}
11010extern "C" {
11011    pub fn Esys_EventSequenceComplete_Finish(
11012        esysContext: *mut ESYS_CONTEXT,
11013        results: *mut *mut TPML_DIGEST_VALUES,
11014    ) -> TSS2_RC;
11015}
11016extern "C" {
11017    pub fn Esys_Certify(
11018        esysContext: *mut ESYS_CONTEXT,
11019        objectHandle: ESYS_TR,
11020        signHandle: ESYS_TR,
11021        shandle1: ESYS_TR,
11022        shandle2: ESYS_TR,
11023        shandle3: ESYS_TR,
11024        qualifyingData: *const TPM2B_DATA,
11025        inScheme: *const TPMT_SIG_SCHEME,
11026        certifyInfo: *mut *mut TPM2B_ATTEST,
11027        signature: *mut *mut TPMT_SIGNATURE,
11028    ) -> TSS2_RC;
11029}
11030extern "C" {
11031    pub fn Esys_Certify_Async(
11032        esysContext: *mut ESYS_CONTEXT,
11033        objectHandle: ESYS_TR,
11034        signHandle: ESYS_TR,
11035        shandle1: ESYS_TR,
11036        shandle2: ESYS_TR,
11037        shandle3: ESYS_TR,
11038        qualifyingData: *const TPM2B_DATA,
11039        inScheme: *const TPMT_SIG_SCHEME,
11040    ) -> TSS2_RC;
11041}
11042extern "C" {
11043    pub fn Esys_Certify_Finish(
11044        esysContext: *mut ESYS_CONTEXT,
11045        certifyInfo: *mut *mut TPM2B_ATTEST,
11046        signature: *mut *mut TPMT_SIGNATURE,
11047    ) -> TSS2_RC;
11048}
11049extern "C" {
11050    pub fn Esys_CertifyCreation(
11051        esysContext: *mut ESYS_CONTEXT,
11052        signHandle: ESYS_TR,
11053        objectHandle: ESYS_TR,
11054        shandle1: ESYS_TR,
11055        shandle2: ESYS_TR,
11056        shandle3: ESYS_TR,
11057        qualifyingData: *const TPM2B_DATA,
11058        creationHash: *const TPM2B_DIGEST,
11059        inScheme: *const TPMT_SIG_SCHEME,
11060        creationTicket: *const TPMT_TK_CREATION,
11061        certifyInfo: *mut *mut TPM2B_ATTEST,
11062        signature: *mut *mut TPMT_SIGNATURE,
11063    ) -> TSS2_RC;
11064}
11065extern "C" {
11066    pub fn Esys_CertifyCreation_Async(
11067        esysContext: *mut ESYS_CONTEXT,
11068        signHandle: ESYS_TR,
11069        objectHandle: ESYS_TR,
11070        shandle1: ESYS_TR,
11071        shandle2: ESYS_TR,
11072        shandle3: ESYS_TR,
11073        qualifyingData: *const TPM2B_DATA,
11074        creationHash: *const TPM2B_DIGEST,
11075        inScheme: *const TPMT_SIG_SCHEME,
11076        creationTicket: *const TPMT_TK_CREATION,
11077    ) -> TSS2_RC;
11078}
11079extern "C" {
11080    pub fn Esys_CertifyCreation_Finish(
11081        esysContext: *mut ESYS_CONTEXT,
11082        certifyInfo: *mut *mut TPM2B_ATTEST,
11083        signature: *mut *mut TPMT_SIGNATURE,
11084    ) -> TSS2_RC;
11085}
11086extern "C" {
11087    pub fn Esys_CertifyX509(
11088        esysContext: *mut ESYS_CONTEXT,
11089        objectHandle: ESYS_TR,
11090        signHandle: ESYS_TR,
11091        shandle1: ESYS_TR,
11092        shandle2: ESYS_TR,
11093        shandle3: ESYS_TR,
11094        reserved: *const TPM2B_DATA,
11095        inScheme: *const TPMT_SIG_SCHEME,
11096        partialCertificate: *const TPM2B_MAX_BUFFER,
11097        addedToCertificate: *mut *mut TPM2B_MAX_BUFFER,
11098        tbsDigest: *mut *mut TPM2B_DIGEST,
11099        signature: *mut *mut TPMT_SIGNATURE,
11100    ) -> TSS2_RC;
11101}
11102extern "C" {
11103    pub fn Esys_CertifyX509_Async(
11104        esysContext: *mut ESYS_CONTEXT,
11105        objectHandle: ESYS_TR,
11106        signHandle: ESYS_TR,
11107        shandle1: ESYS_TR,
11108        shandle2: ESYS_TR,
11109        shandle3: ESYS_TR,
11110        reserved: *const TPM2B_DATA,
11111        inScheme: *const TPMT_SIG_SCHEME,
11112        partialCertificate: *const TPM2B_MAX_BUFFER,
11113    ) -> TSS2_RC;
11114}
11115extern "C" {
11116    pub fn Esys_CertifyX509_Finish(
11117        esysContext: *mut ESYS_CONTEXT,
11118        addedToCertificate: *mut *mut TPM2B_MAX_BUFFER,
11119        tbsDigest: *mut *mut TPM2B_DIGEST,
11120        signature: *mut *mut TPMT_SIGNATURE,
11121    ) -> TSS2_RC;
11122}
11123extern "C" {
11124    pub fn Esys_Quote(
11125        esysContext: *mut ESYS_CONTEXT,
11126        signHandle: ESYS_TR,
11127        shandle1: ESYS_TR,
11128        shandle2: ESYS_TR,
11129        shandle3: ESYS_TR,
11130        qualifyingData: *const TPM2B_DATA,
11131        inScheme: *const TPMT_SIG_SCHEME,
11132        PCRselect: *const TPML_PCR_SELECTION,
11133        quoted: *mut *mut TPM2B_ATTEST,
11134        signature: *mut *mut TPMT_SIGNATURE,
11135    ) -> TSS2_RC;
11136}
11137extern "C" {
11138    pub fn Esys_Quote_Async(
11139        esysContext: *mut ESYS_CONTEXT,
11140        signHandle: ESYS_TR,
11141        shandle1: ESYS_TR,
11142        shandle2: ESYS_TR,
11143        shandle3: ESYS_TR,
11144        qualifyingData: *const TPM2B_DATA,
11145        inScheme: *const TPMT_SIG_SCHEME,
11146        PCRselect: *const TPML_PCR_SELECTION,
11147    ) -> TSS2_RC;
11148}
11149extern "C" {
11150    pub fn Esys_Quote_Finish(
11151        esysContext: *mut ESYS_CONTEXT,
11152        quoted: *mut *mut TPM2B_ATTEST,
11153        signature: *mut *mut TPMT_SIGNATURE,
11154    ) -> TSS2_RC;
11155}
11156extern "C" {
11157    pub fn Esys_GetSessionAuditDigest(
11158        esysContext: *mut ESYS_CONTEXT,
11159        privacyAdminHandle: ESYS_TR,
11160        signHandle: ESYS_TR,
11161        sessionHandle: ESYS_TR,
11162        shandle1: ESYS_TR,
11163        shandle2: ESYS_TR,
11164        shandle3: ESYS_TR,
11165        qualifyingData: *const TPM2B_DATA,
11166        inScheme: *const TPMT_SIG_SCHEME,
11167        auditInfo: *mut *mut TPM2B_ATTEST,
11168        signature: *mut *mut TPMT_SIGNATURE,
11169    ) -> TSS2_RC;
11170}
11171extern "C" {
11172    pub fn Esys_GetSessionAuditDigest_Async(
11173        esysContext: *mut ESYS_CONTEXT,
11174        privacyAdminHandle: ESYS_TR,
11175        signHandle: ESYS_TR,
11176        sessionHandle: ESYS_TR,
11177        shandle1: ESYS_TR,
11178        shandle2: ESYS_TR,
11179        shandle3: ESYS_TR,
11180        qualifyingData: *const TPM2B_DATA,
11181        inScheme: *const TPMT_SIG_SCHEME,
11182    ) -> TSS2_RC;
11183}
11184extern "C" {
11185    pub fn Esys_GetSessionAuditDigest_Finish(
11186        esysContext: *mut ESYS_CONTEXT,
11187        auditInfo: *mut *mut TPM2B_ATTEST,
11188        signature: *mut *mut TPMT_SIGNATURE,
11189    ) -> TSS2_RC;
11190}
11191extern "C" {
11192    pub fn Esys_GetCommandAuditDigest(
11193        esysContext: *mut ESYS_CONTEXT,
11194        privacyHandle: ESYS_TR,
11195        signHandle: ESYS_TR,
11196        shandle1: ESYS_TR,
11197        shandle2: ESYS_TR,
11198        shandle3: ESYS_TR,
11199        qualifyingData: *const TPM2B_DATA,
11200        inScheme: *const TPMT_SIG_SCHEME,
11201        auditInfo: *mut *mut TPM2B_ATTEST,
11202        signature: *mut *mut TPMT_SIGNATURE,
11203    ) -> TSS2_RC;
11204}
11205extern "C" {
11206    pub fn Esys_GetCommandAuditDigest_Async(
11207        esysContext: *mut ESYS_CONTEXT,
11208        privacyHandle: ESYS_TR,
11209        signHandle: ESYS_TR,
11210        shandle1: ESYS_TR,
11211        shandle2: ESYS_TR,
11212        shandle3: ESYS_TR,
11213        qualifyingData: *const TPM2B_DATA,
11214        inScheme: *const TPMT_SIG_SCHEME,
11215    ) -> TSS2_RC;
11216}
11217extern "C" {
11218    pub fn Esys_GetCommandAuditDigest_Finish(
11219        esysContext: *mut ESYS_CONTEXT,
11220        auditInfo: *mut *mut TPM2B_ATTEST,
11221        signature: *mut *mut TPMT_SIGNATURE,
11222    ) -> TSS2_RC;
11223}
11224extern "C" {
11225    pub fn Esys_GetTime(
11226        esysContext: *mut ESYS_CONTEXT,
11227        privacyAdminHandle: ESYS_TR,
11228        signHandle: ESYS_TR,
11229        shandle1: ESYS_TR,
11230        shandle2: ESYS_TR,
11231        shandle3: ESYS_TR,
11232        qualifyingData: *const TPM2B_DATA,
11233        inScheme: *const TPMT_SIG_SCHEME,
11234        timeInfo: *mut *mut TPM2B_ATTEST,
11235        signature: *mut *mut TPMT_SIGNATURE,
11236    ) -> TSS2_RC;
11237}
11238extern "C" {
11239    pub fn Esys_GetTime_Async(
11240        esysContext: *mut ESYS_CONTEXT,
11241        privacyAdminHandle: ESYS_TR,
11242        signHandle: ESYS_TR,
11243        shandle1: ESYS_TR,
11244        shandle2: ESYS_TR,
11245        shandle3: ESYS_TR,
11246        qualifyingData: *const TPM2B_DATA,
11247        inScheme: *const TPMT_SIG_SCHEME,
11248    ) -> TSS2_RC;
11249}
11250extern "C" {
11251    pub fn Esys_GetTime_Finish(
11252        esysContext: *mut ESYS_CONTEXT,
11253        timeInfo: *mut *mut TPM2B_ATTEST,
11254        signature: *mut *mut TPMT_SIGNATURE,
11255    ) -> TSS2_RC;
11256}
11257extern "C" {
11258    pub fn Esys_Commit(
11259        esysContext: *mut ESYS_CONTEXT,
11260        signHandle: ESYS_TR,
11261        shandle1: ESYS_TR,
11262        shandle2: ESYS_TR,
11263        shandle3: ESYS_TR,
11264        P1: *const TPM2B_ECC_POINT,
11265        s2: *const TPM2B_SENSITIVE_DATA,
11266        y2: *const TPM2B_ECC_PARAMETER,
11267        K: *mut *mut TPM2B_ECC_POINT,
11268        L: *mut *mut TPM2B_ECC_POINT,
11269        E: *mut *mut TPM2B_ECC_POINT,
11270        counter: *mut UINT16,
11271    ) -> TSS2_RC;
11272}
11273extern "C" {
11274    pub fn Esys_Commit_Async(
11275        esysContext: *mut ESYS_CONTEXT,
11276        signHandle: ESYS_TR,
11277        shandle1: ESYS_TR,
11278        shandle2: ESYS_TR,
11279        shandle3: ESYS_TR,
11280        P1: *const TPM2B_ECC_POINT,
11281        s2: *const TPM2B_SENSITIVE_DATA,
11282        y2: *const TPM2B_ECC_PARAMETER,
11283    ) -> TSS2_RC;
11284}
11285extern "C" {
11286    pub fn Esys_Commit_Finish(
11287        esysContext: *mut ESYS_CONTEXT,
11288        K: *mut *mut TPM2B_ECC_POINT,
11289        L: *mut *mut TPM2B_ECC_POINT,
11290        E: *mut *mut TPM2B_ECC_POINT,
11291        counter: *mut UINT16,
11292    ) -> TSS2_RC;
11293}
11294extern "C" {
11295    pub fn Esys_EC_Ephemeral(
11296        esysContext: *mut ESYS_CONTEXT,
11297        shandle1: ESYS_TR,
11298        shandle2: ESYS_TR,
11299        shandle3: ESYS_TR,
11300        curveID: TPMI_ECC_CURVE,
11301        Q: *mut *mut TPM2B_ECC_POINT,
11302        counter: *mut UINT16,
11303    ) -> TSS2_RC;
11304}
11305extern "C" {
11306    pub fn Esys_EC_Ephemeral_Async(
11307        esysContext: *mut ESYS_CONTEXT,
11308        shandle1: ESYS_TR,
11309        shandle2: ESYS_TR,
11310        shandle3: ESYS_TR,
11311        curveID: TPMI_ECC_CURVE,
11312    ) -> TSS2_RC;
11313}
11314extern "C" {
11315    pub fn Esys_EC_Ephemeral_Finish(
11316        esysContext: *mut ESYS_CONTEXT,
11317        Q: *mut *mut TPM2B_ECC_POINT,
11318        counter: *mut UINT16,
11319    ) -> TSS2_RC;
11320}
11321extern "C" {
11322    pub fn Esys_VerifySignature(
11323        esysContext: *mut ESYS_CONTEXT,
11324        keyHandle: ESYS_TR,
11325        shandle1: ESYS_TR,
11326        shandle2: ESYS_TR,
11327        shandle3: ESYS_TR,
11328        digest: *const TPM2B_DIGEST,
11329        signature: *const TPMT_SIGNATURE,
11330        validation: *mut *mut TPMT_TK_VERIFIED,
11331    ) -> TSS2_RC;
11332}
11333extern "C" {
11334    pub fn Esys_VerifySignature_Async(
11335        esysContext: *mut ESYS_CONTEXT,
11336        keyHandle: ESYS_TR,
11337        shandle1: ESYS_TR,
11338        shandle2: ESYS_TR,
11339        shandle3: ESYS_TR,
11340        digest: *const TPM2B_DIGEST,
11341        signature: *const TPMT_SIGNATURE,
11342    ) -> TSS2_RC;
11343}
11344extern "C" {
11345    pub fn Esys_VerifySignature_Finish(
11346        esysContext: *mut ESYS_CONTEXT,
11347        validation: *mut *mut TPMT_TK_VERIFIED,
11348    ) -> TSS2_RC;
11349}
11350extern "C" {
11351    pub fn Esys_Sign(
11352        esysContext: *mut ESYS_CONTEXT,
11353        keyHandle: ESYS_TR,
11354        shandle1: ESYS_TR,
11355        shandle2: ESYS_TR,
11356        shandle3: ESYS_TR,
11357        digest: *const TPM2B_DIGEST,
11358        inScheme: *const TPMT_SIG_SCHEME,
11359        validation: *const TPMT_TK_HASHCHECK,
11360        signature: *mut *mut TPMT_SIGNATURE,
11361    ) -> TSS2_RC;
11362}
11363extern "C" {
11364    pub fn Esys_Sign_Async(
11365        esysContext: *mut ESYS_CONTEXT,
11366        keyHandle: ESYS_TR,
11367        shandle1: ESYS_TR,
11368        shandle2: ESYS_TR,
11369        shandle3: ESYS_TR,
11370        digest: *const TPM2B_DIGEST,
11371        inScheme: *const TPMT_SIG_SCHEME,
11372        validation: *const TPMT_TK_HASHCHECK,
11373    ) -> TSS2_RC;
11374}
11375extern "C" {
11376    pub fn Esys_Sign_Finish(
11377        esysContext: *mut ESYS_CONTEXT,
11378        signature: *mut *mut TPMT_SIGNATURE,
11379    ) -> TSS2_RC;
11380}
11381extern "C" {
11382    pub fn Esys_SetCommandCodeAuditStatus(
11383        esysContext: *mut ESYS_CONTEXT,
11384        auth: ESYS_TR,
11385        shandle1: ESYS_TR,
11386        shandle2: ESYS_TR,
11387        shandle3: ESYS_TR,
11388        auditAlg: TPMI_ALG_HASH,
11389        setList: *const TPML_CC,
11390        clearList: *const TPML_CC,
11391    ) -> TSS2_RC;
11392}
11393extern "C" {
11394    pub fn Esys_SetCommandCodeAuditStatus_Async(
11395        esysContext: *mut ESYS_CONTEXT,
11396        auth: ESYS_TR,
11397        shandle1: ESYS_TR,
11398        shandle2: ESYS_TR,
11399        shandle3: ESYS_TR,
11400        auditAlg: TPMI_ALG_HASH,
11401        setList: *const TPML_CC,
11402        clearList: *const TPML_CC,
11403    ) -> TSS2_RC;
11404}
11405extern "C" {
11406    pub fn Esys_SetCommandCodeAuditStatus_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11407}
11408extern "C" {
11409    pub fn Esys_PCR_Extend(
11410        esysContext: *mut ESYS_CONTEXT,
11411        pcrHandle: ESYS_TR,
11412        shandle1: ESYS_TR,
11413        shandle2: ESYS_TR,
11414        shandle3: ESYS_TR,
11415        digests: *const TPML_DIGEST_VALUES,
11416    ) -> TSS2_RC;
11417}
11418extern "C" {
11419    pub fn Esys_PCR_Extend_Async(
11420        esysContext: *mut ESYS_CONTEXT,
11421        pcrHandle: ESYS_TR,
11422        shandle1: ESYS_TR,
11423        shandle2: ESYS_TR,
11424        shandle3: ESYS_TR,
11425        digests: *const TPML_DIGEST_VALUES,
11426    ) -> TSS2_RC;
11427}
11428extern "C" {
11429    pub fn Esys_PCR_Extend_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11430}
11431extern "C" {
11432    pub fn Esys_PCR_Event(
11433        esysContext: *mut ESYS_CONTEXT,
11434        pcrHandle: ESYS_TR,
11435        shandle1: ESYS_TR,
11436        shandle2: ESYS_TR,
11437        shandle3: ESYS_TR,
11438        eventData: *const TPM2B_EVENT,
11439        digests: *mut *mut TPML_DIGEST_VALUES,
11440    ) -> TSS2_RC;
11441}
11442extern "C" {
11443    pub fn Esys_PCR_Event_Async(
11444        esysContext: *mut ESYS_CONTEXT,
11445        pcrHandle: ESYS_TR,
11446        shandle1: ESYS_TR,
11447        shandle2: ESYS_TR,
11448        shandle3: ESYS_TR,
11449        eventData: *const TPM2B_EVENT,
11450    ) -> TSS2_RC;
11451}
11452extern "C" {
11453    pub fn Esys_PCR_Event_Finish(
11454        esysContext: *mut ESYS_CONTEXT,
11455        digests: *mut *mut TPML_DIGEST_VALUES,
11456    ) -> TSS2_RC;
11457}
11458extern "C" {
11459    pub fn Esys_PCR_Read(
11460        esysContext: *mut ESYS_CONTEXT,
11461        shandle1: ESYS_TR,
11462        shandle2: ESYS_TR,
11463        shandle3: ESYS_TR,
11464        pcrSelectionIn: *const TPML_PCR_SELECTION,
11465        pcrUpdateCounter: *mut UINT32,
11466        pcrSelectionOut: *mut *mut TPML_PCR_SELECTION,
11467        pcrValues: *mut *mut TPML_DIGEST,
11468    ) -> TSS2_RC;
11469}
11470extern "C" {
11471    pub fn Esys_PCR_Read_Async(
11472        esysContext: *mut ESYS_CONTEXT,
11473        shandle1: ESYS_TR,
11474        shandle2: ESYS_TR,
11475        shandle3: ESYS_TR,
11476        pcrSelectionIn: *const TPML_PCR_SELECTION,
11477    ) -> TSS2_RC;
11478}
11479extern "C" {
11480    pub fn Esys_PCR_Read_Finish(
11481        esysContext: *mut ESYS_CONTEXT,
11482        pcrUpdateCounter: *mut UINT32,
11483        pcrSelectionOut: *mut *mut TPML_PCR_SELECTION,
11484        pcrValues: *mut *mut TPML_DIGEST,
11485    ) -> TSS2_RC;
11486}
11487extern "C" {
11488    pub fn Esys_PCR_Allocate(
11489        esysContext: *mut ESYS_CONTEXT,
11490        authHandle: ESYS_TR,
11491        shandle1: ESYS_TR,
11492        shandle2: ESYS_TR,
11493        shandle3: ESYS_TR,
11494        pcrAllocation: *const TPML_PCR_SELECTION,
11495        allocationSuccess: *mut TPMI_YES_NO,
11496        maxPCR: *mut UINT32,
11497        sizeNeeded: *mut UINT32,
11498        sizeAvailable: *mut UINT32,
11499    ) -> TSS2_RC;
11500}
11501extern "C" {
11502    pub fn Esys_PCR_Allocate_Async(
11503        esysContext: *mut ESYS_CONTEXT,
11504        authHandle: ESYS_TR,
11505        shandle1: ESYS_TR,
11506        shandle2: ESYS_TR,
11507        shandle3: ESYS_TR,
11508        pcrAllocation: *const TPML_PCR_SELECTION,
11509    ) -> TSS2_RC;
11510}
11511extern "C" {
11512    pub fn Esys_PCR_Allocate_Finish(
11513        esysContext: *mut ESYS_CONTEXT,
11514        allocationSuccess: *mut TPMI_YES_NO,
11515        maxPCR: *mut UINT32,
11516        sizeNeeded: *mut UINT32,
11517        sizeAvailable: *mut UINT32,
11518    ) -> TSS2_RC;
11519}
11520extern "C" {
11521    pub fn Esys_PCR_SetAuthPolicy(
11522        esysContext: *mut ESYS_CONTEXT,
11523        authHandle: ESYS_TR,
11524        shandle1: ESYS_TR,
11525        shandle2: ESYS_TR,
11526        shandle3: ESYS_TR,
11527        authPolicy: *const TPM2B_DIGEST,
11528        hashAlg: TPMI_ALG_HASH,
11529        pcrNum: TPMI_DH_PCR,
11530    ) -> TSS2_RC;
11531}
11532extern "C" {
11533    pub fn Esys_PCR_SetAuthPolicy_Async(
11534        esysContext: *mut ESYS_CONTEXT,
11535        authHandle: ESYS_TR,
11536        shandle1: ESYS_TR,
11537        shandle2: ESYS_TR,
11538        shandle3: ESYS_TR,
11539        authPolicy: *const TPM2B_DIGEST,
11540        hashAlg: TPMI_ALG_HASH,
11541        pcrNum: TPMI_DH_PCR,
11542    ) -> TSS2_RC;
11543}
11544extern "C" {
11545    pub fn Esys_PCR_SetAuthPolicy_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11546}
11547extern "C" {
11548    pub fn Esys_PCR_SetAuthValue(
11549        esysContext: *mut ESYS_CONTEXT,
11550        pcrHandle: ESYS_TR,
11551        shandle1: ESYS_TR,
11552        shandle2: ESYS_TR,
11553        shandle3: ESYS_TR,
11554        auth: *const TPM2B_DIGEST,
11555    ) -> TSS2_RC;
11556}
11557extern "C" {
11558    pub fn Esys_PCR_SetAuthValue_Async(
11559        esysContext: *mut ESYS_CONTEXT,
11560        pcrHandle: ESYS_TR,
11561        shandle1: ESYS_TR,
11562        shandle2: ESYS_TR,
11563        shandle3: ESYS_TR,
11564        auth: *const TPM2B_DIGEST,
11565    ) -> TSS2_RC;
11566}
11567extern "C" {
11568    pub fn Esys_PCR_SetAuthValue_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11569}
11570extern "C" {
11571    pub fn Esys_PCR_Reset(
11572        esysContext: *mut ESYS_CONTEXT,
11573        pcrHandle: ESYS_TR,
11574        shandle1: ESYS_TR,
11575        shandle2: ESYS_TR,
11576        shandle3: ESYS_TR,
11577    ) -> TSS2_RC;
11578}
11579extern "C" {
11580    pub fn Esys_PCR_Reset_Async(
11581        esysContext: *mut ESYS_CONTEXT,
11582        pcrHandle: ESYS_TR,
11583        shandle1: ESYS_TR,
11584        shandle2: ESYS_TR,
11585        shandle3: ESYS_TR,
11586    ) -> TSS2_RC;
11587}
11588extern "C" {
11589    pub fn Esys_PCR_Reset_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11590}
11591extern "C" {
11592    pub fn Esys_PolicySigned(
11593        esysContext: *mut ESYS_CONTEXT,
11594        authObject: ESYS_TR,
11595        policySession: ESYS_TR,
11596        shandle1: ESYS_TR,
11597        shandle2: ESYS_TR,
11598        shandle3: ESYS_TR,
11599        nonceTPM: *const TPM2B_NONCE,
11600        cpHashA: *const TPM2B_DIGEST,
11601        policyRef: *const TPM2B_NONCE,
11602        expiration: INT32,
11603        auth: *const TPMT_SIGNATURE,
11604        timeout: *mut *mut TPM2B_TIMEOUT,
11605        policyTicket: *mut *mut TPMT_TK_AUTH,
11606    ) -> TSS2_RC;
11607}
11608extern "C" {
11609    pub fn Esys_PolicySigned_Async(
11610        esysContext: *mut ESYS_CONTEXT,
11611        authObject: ESYS_TR,
11612        policySession: ESYS_TR,
11613        shandle1: ESYS_TR,
11614        shandle2: ESYS_TR,
11615        shandle3: ESYS_TR,
11616        nonceTPM: *const TPM2B_NONCE,
11617        cpHashA: *const TPM2B_DIGEST,
11618        policyRef: *const TPM2B_NONCE,
11619        expiration: INT32,
11620        auth: *const TPMT_SIGNATURE,
11621    ) -> TSS2_RC;
11622}
11623extern "C" {
11624    pub fn Esys_PolicySigned_Finish(
11625        esysContext: *mut ESYS_CONTEXT,
11626        timeout: *mut *mut TPM2B_TIMEOUT,
11627        policyTicket: *mut *mut TPMT_TK_AUTH,
11628    ) -> TSS2_RC;
11629}
11630extern "C" {
11631    pub fn Esys_PolicySecret(
11632        esysContext: *mut ESYS_CONTEXT,
11633        authHandle: ESYS_TR,
11634        policySession: ESYS_TR,
11635        shandle1: ESYS_TR,
11636        shandle2: ESYS_TR,
11637        shandle3: ESYS_TR,
11638        nonceTPM: *const TPM2B_NONCE,
11639        cpHashA: *const TPM2B_DIGEST,
11640        policyRef: *const TPM2B_NONCE,
11641        expiration: INT32,
11642        timeout: *mut *mut TPM2B_TIMEOUT,
11643        policyTicket: *mut *mut TPMT_TK_AUTH,
11644    ) -> TSS2_RC;
11645}
11646extern "C" {
11647    pub fn Esys_PolicySecret_Async(
11648        esysContext: *mut ESYS_CONTEXT,
11649        authHandle: ESYS_TR,
11650        policySession: ESYS_TR,
11651        shandle1: ESYS_TR,
11652        shandle2: ESYS_TR,
11653        shandle3: ESYS_TR,
11654        nonceTPM: *const TPM2B_NONCE,
11655        cpHashA: *const TPM2B_DIGEST,
11656        policyRef: *const TPM2B_NONCE,
11657        expiration: INT32,
11658    ) -> TSS2_RC;
11659}
11660extern "C" {
11661    pub fn Esys_PolicySecret_Finish(
11662        esysContext: *mut ESYS_CONTEXT,
11663        timeout: *mut *mut TPM2B_TIMEOUT,
11664        policyTicket: *mut *mut TPMT_TK_AUTH,
11665    ) -> TSS2_RC;
11666}
11667extern "C" {
11668    pub fn Esys_PolicyTicket(
11669        esysContext: *mut ESYS_CONTEXT,
11670        policySession: ESYS_TR,
11671        shandle1: ESYS_TR,
11672        shandle2: ESYS_TR,
11673        shandle3: ESYS_TR,
11674        timeout: *const TPM2B_TIMEOUT,
11675        cpHashA: *const TPM2B_DIGEST,
11676        policyRef: *const TPM2B_NONCE,
11677        authName: *const TPM2B_NAME,
11678        ticket: *const TPMT_TK_AUTH,
11679    ) -> TSS2_RC;
11680}
11681extern "C" {
11682    pub fn Esys_PolicyTicket_Async(
11683        esysContext: *mut ESYS_CONTEXT,
11684        policySession: ESYS_TR,
11685        shandle1: ESYS_TR,
11686        shandle2: ESYS_TR,
11687        shandle3: ESYS_TR,
11688        timeout: *const TPM2B_TIMEOUT,
11689        cpHashA: *const TPM2B_DIGEST,
11690        policyRef: *const TPM2B_NONCE,
11691        authName: *const TPM2B_NAME,
11692        ticket: *const TPMT_TK_AUTH,
11693    ) -> TSS2_RC;
11694}
11695extern "C" {
11696    pub fn Esys_PolicyTicket_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11697}
11698extern "C" {
11699    pub fn Esys_PolicyOR(
11700        esysContext: *mut ESYS_CONTEXT,
11701        policySession: ESYS_TR,
11702        shandle1: ESYS_TR,
11703        shandle2: ESYS_TR,
11704        shandle3: ESYS_TR,
11705        pHashList: *const TPML_DIGEST,
11706    ) -> TSS2_RC;
11707}
11708extern "C" {
11709    pub fn Esys_PolicyOR_Async(
11710        esysContext: *mut ESYS_CONTEXT,
11711        policySession: ESYS_TR,
11712        shandle1: ESYS_TR,
11713        shandle2: ESYS_TR,
11714        shandle3: ESYS_TR,
11715        pHashList: *const TPML_DIGEST,
11716    ) -> TSS2_RC;
11717}
11718extern "C" {
11719    pub fn Esys_PolicyOR_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11720}
11721extern "C" {
11722    pub fn Esys_PolicyPCR(
11723        esysContext: *mut ESYS_CONTEXT,
11724        policySession: ESYS_TR,
11725        shandle1: ESYS_TR,
11726        shandle2: ESYS_TR,
11727        shandle3: ESYS_TR,
11728        pcrDigest: *const TPM2B_DIGEST,
11729        pcrs: *const TPML_PCR_SELECTION,
11730    ) -> TSS2_RC;
11731}
11732extern "C" {
11733    pub fn Esys_PolicyPCR_Async(
11734        esysContext: *mut ESYS_CONTEXT,
11735        policySession: ESYS_TR,
11736        shandle1: ESYS_TR,
11737        shandle2: ESYS_TR,
11738        shandle3: ESYS_TR,
11739        pcrDigest: *const TPM2B_DIGEST,
11740        pcrs: *const TPML_PCR_SELECTION,
11741    ) -> TSS2_RC;
11742}
11743extern "C" {
11744    pub fn Esys_PolicyPCR_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11745}
11746extern "C" {
11747    pub fn Esys_PolicyLocality(
11748        esysContext: *mut ESYS_CONTEXT,
11749        policySession: ESYS_TR,
11750        shandle1: ESYS_TR,
11751        shandle2: ESYS_TR,
11752        shandle3: ESYS_TR,
11753        locality: TPMA_LOCALITY,
11754    ) -> TSS2_RC;
11755}
11756extern "C" {
11757    pub fn Esys_PolicyLocality_Async(
11758        esysContext: *mut ESYS_CONTEXT,
11759        policySession: ESYS_TR,
11760        shandle1: ESYS_TR,
11761        shandle2: ESYS_TR,
11762        shandle3: ESYS_TR,
11763        locality: TPMA_LOCALITY,
11764    ) -> TSS2_RC;
11765}
11766extern "C" {
11767    pub fn Esys_PolicyLocality_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11768}
11769extern "C" {
11770    pub fn Esys_PolicyNV(
11771        esysContext: *mut ESYS_CONTEXT,
11772        authHandle: ESYS_TR,
11773        nvIndex: ESYS_TR,
11774        policySession: ESYS_TR,
11775        shandle1: ESYS_TR,
11776        shandle2: ESYS_TR,
11777        shandle3: ESYS_TR,
11778        operandB: *const TPM2B_OPERAND,
11779        offset: UINT16,
11780        operation: TPM2_EO,
11781    ) -> TSS2_RC;
11782}
11783extern "C" {
11784    pub fn Esys_PolicyNV_Async(
11785        esysContext: *mut ESYS_CONTEXT,
11786        authHandle: ESYS_TR,
11787        nvIndex: ESYS_TR,
11788        policySession: ESYS_TR,
11789        shandle1: ESYS_TR,
11790        shandle2: ESYS_TR,
11791        shandle3: ESYS_TR,
11792        operandB: *const TPM2B_OPERAND,
11793        offset: UINT16,
11794        operation: TPM2_EO,
11795    ) -> TSS2_RC;
11796}
11797extern "C" {
11798    pub fn Esys_PolicyNV_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11799}
11800extern "C" {
11801    pub fn Esys_PolicyCounterTimer(
11802        esysContext: *mut ESYS_CONTEXT,
11803        policySession: ESYS_TR,
11804        shandle1: ESYS_TR,
11805        shandle2: ESYS_TR,
11806        shandle3: ESYS_TR,
11807        operandB: *const TPM2B_OPERAND,
11808        offset: UINT16,
11809        operation: TPM2_EO,
11810    ) -> TSS2_RC;
11811}
11812extern "C" {
11813    pub fn Esys_PolicyCounterTimer_Async(
11814        esysContext: *mut ESYS_CONTEXT,
11815        policySession: ESYS_TR,
11816        shandle1: ESYS_TR,
11817        shandle2: ESYS_TR,
11818        shandle3: ESYS_TR,
11819        operandB: *const TPM2B_OPERAND,
11820        offset: UINT16,
11821        operation: TPM2_EO,
11822    ) -> TSS2_RC;
11823}
11824extern "C" {
11825    pub fn Esys_PolicyCounterTimer_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11826}
11827extern "C" {
11828    pub fn Esys_PolicyCommandCode(
11829        esysContext: *mut ESYS_CONTEXT,
11830        policySession: ESYS_TR,
11831        shandle1: ESYS_TR,
11832        shandle2: ESYS_TR,
11833        shandle3: ESYS_TR,
11834        code: TPM2_CC,
11835    ) -> TSS2_RC;
11836}
11837extern "C" {
11838    pub fn Esys_PolicyCommandCode_Async(
11839        esysContext: *mut ESYS_CONTEXT,
11840        policySession: ESYS_TR,
11841        shandle1: ESYS_TR,
11842        shandle2: ESYS_TR,
11843        shandle3: ESYS_TR,
11844        code: TPM2_CC,
11845    ) -> TSS2_RC;
11846}
11847extern "C" {
11848    pub fn Esys_PolicyCommandCode_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11849}
11850extern "C" {
11851    pub fn Esys_PolicyPhysicalPresence(
11852        esysContext: *mut ESYS_CONTEXT,
11853        policySession: ESYS_TR,
11854        shandle1: ESYS_TR,
11855        shandle2: ESYS_TR,
11856        shandle3: ESYS_TR,
11857    ) -> TSS2_RC;
11858}
11859extern "C" {
11860    pub fn Esys_PolicyPhysicalPresence_Async(
11861        esysContext: *mut ESYS_CONTEXT,
11862        policySession: ESYS_TR,
11863        shandle1: ESYS_TR,
11864        shandle2: ESYS_TR,
11865        shandle3: ESYS_TR,
11866    ) -> TSS2_RC;
11867}
11868extern "C" {
11869    pub fn Esys_PolicyPhysicalPresence_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11870}
11871extern "C" {
11872    pub fn Esys_PolicyCpHash(
11873        esysContext: *mut ESYS_CONTEXT,
11874        policySession: ESYS_TR,
11875        shandle1: ESYS_TR,
11876        shandle2: ESYS_TR,
11877        shandle3: ESYS_TR,
11878        cpHashA: *const TPM2B_DIGEST,
11879    ) -> TSS2_RC;
11880}
11881extern "C" {
11882    pub fn Esys_PolicyCpHash_Async(
11883        esysContext: *mut ESYS_CONTEXT,
11884        policySession: ESYS_TR,
11885        shandle1: ESYS_TR,
11886        shandle2: ESYS_TR,
11887        shandle3: ESYS_TR,
11888        cpHashA: *const TPM2B_DIGEST,
11889    ) -> TSS2_RC;
11890}
11891extern "C" {
11892    pub fn Esys_PolicyCpHash_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11893}
11894extern "C" {
11895    pub fn Esys_PolicyNameHash(
11896        esysContext: *mut ESYS_CONTEXT,
11897        policySession: ESYS_TR,
11898        shandle1: ESYS_TR,
11899        shandle2: ESYS_TR,
11900        shandle3: ESYS_TR,
11901        nameHash: *const TPM2B_DIGEST,
11902    ) -> TSS2_RC;
11903}
11904extern "C" {
11905    pub fn Esys_PolicyNameHash_Async(
11906        esysContext: *mut ESYS_CONTEXT,
11907        policySession: ESYS_TR,
11908        shandle1: ESYS_TR,
11909        shandle2: ESYS_TR,
11910        shandle3: ESYS_TR,
11911        nameHash: *const TPM2B_DIGEST,
11912    ) -> TSS2_RC;
11913}
11914extern "C" {
11915    pub fn Esys_PolicyNameHash_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11916}
11917extern "C" {
11918    pub fn Esys_PolicyDuplicationSelect(
11919        esysContext: *mut ESYS_CONTEXT,
11920        policySession: ESYS_TR,
11921        shandle1: ESYS_TR,
11922        shandle2: ESYS_TR,
11923        shandle3: ESYS_TR,
11924        objectName: *const TPM2B_NAME,
11925        newParentName: *const TPM2B_NAME,
11926        includeObject: TPMI_YES_NO,
11927    ) -> TSS2_RC;
11928}
11929extern "C" {
11930    pub fn Esys_PolicyDuplicationSelect_Async(
11931        esysContext: *mut ESYS_CONTEXT,
11932        policySession: ESYS_TR,
11933        shandle1: ESYS_TR,
11934        shandle2: ESYS_TR,
11935        shandle3: ESYS_TR,
11936        objectName: *const TPM2B_NAME,
11937        newParentName: *const TPM2B_NAME,
11938        includeObject: TPMI_YES_NO,
11939    ) -> TSS2_RC;
11940}
11941extern "C" {
11942    pub fn Esys_PolicyDuplicationSelect_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11943}
11944extern "C" {
11945    pub fn Esys_PolicyAuthorize(
11946        esysContext: *mut ESYS_CONTEXT,
11947        policySession: ESYS_TR,
11948        shandle1: ESYS_TR,
11949        shandle2: ESYS_TR,
11950        shandle3: ESYS_TR,
11951        approvedPolicy: *const TPM2B_DIGEST,
11952        policyRef: *const TPM2B_NONCE,
11953        keySign: *const TPM2B_NAME,
11954        checkTicket: *const TPMT_TK_VERIFIED,
11955    ) -> TSS2_RC;
11956}
11957extern "C" {
11958    pub fn Esys_PolicyAuthorize_Async(
11959        esysContext: *mut ESYS_CONTEXT,
11960        policySession: ESYS_TR,
11961        shandle1: ESYS_TR,
11962        shandle2: ESYS_TR,
11963        shandle3: ESYS_TR,
11964        approvedPolicy: *const TPM2B_DIGEST,
11965        policyRef: *const TPM2B_NONCE,
11966        keySign: *const TPM2B_NAME,
11967        checkTicket: *const TPMT_TK_VERIFIED,
11968    ) -> TSS2_RC;
11969}
11970extern "C" {
11971    pub fn Esys_PolicyAuthorize_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11972}
11973extern "C" {
11974    pub fn Esys_PolicyAuthValue(
11975        esysContext: *mut ESYS_CONTEXT,
11976        policySession: ESYS_TR,
11977        shandle1: ESYS_TR,
11978        shandle2: ESYS_TR,
11979        shandle3: ESYS_TR,
11980    ) -> TSS2_RC;
11981}
11982extern "C" {
11983    pub fn Esys_PolicyAuthValue_Async(
11984        esysContext: *mut ESYS_CONTEXT,
11985        policySession: ESYS_TR,
11986        shandle1: ESYS_TR,
11987        shandle2: ESYS_TR,
11988        shandle3: ESYS_TR,
11989    ) -> TSS2_RC;
11990}
11991extern "C" {
11992    pub fn Esys_PolicyAuthValue_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
11993}
11994extern "C" {
11995    pub fn Esys_PolicyPassword(
11996        esysContext: *mut ESYS_CONTEXT,
11997        policySession: ESYS_TR,
11998        shandle1: ESYS_TR,
11999        shandle2: ESYS_TR,
12000        shandle3: ESYS_TR,
12001    ) -> TSS2_RC;
12002}
12003extern "C" {
12004    pub fn Esys_PolicyPassword_Async(
12005        esysContext: *mut ESYS_CONTEXT,
12006        policySession: ESYS_TR,
12007        shandle1: ESYS_TR,
12008        shandle2: ESYS_TR,
12009        shandle3: ESYS_TR,
12010    ) -> TSS2_RC;
12011}
12012extern "C" {
12013    pub fn Esys_PolicyPassword_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12014}
12015extern "C" {
12016    pub fn Esys_PolicyGetDigest(
12017        esysContext: *mut ESYS_CONTEXT,
12018        policySession: ESYS_TR,
12019        shandle1: ESYS_TR,
12020        shandle2: ESYS_TR,
12021        shandle3: ESYS_TR,
12022        policyDigest: *mut *mut TPM2B_DIGEST,
12023    ) -> TSS2_RC;
12024}
12025extern "C" {
12026    pub fn Esys_PolicyGetDigest_Async(
12027        esysContext: *mut ESYS_CONTEXT,
12028        policySession: ESYS_TR,
12029        shandle1: ESYS_TR,
12030        shandle2: ESYS_TR,
12031        shandle3: ESYS_TR,
12032    ) -> TSS2_RC;
12033}
12034extern "C" {
12035    pub fn Esys_PolicyGetDigest_Finish(
12036        esysContext: *mut ESYS_CONTEXT,
12037        policyDigest: *mut *mut TPM2B_DIGEST,
12038    ) -> TSS2_RC;
12039}
12040extern "C" {
12041    pub fn Esys_PolicyNvWritten(
12042        esysContext: *mut ESYS_CONTEXT,
12043        policySession: ESYS_TR,
12044        shandle1: ESYS_TR,
12045        shandle2: ESYS_TR,
12046        shandle3: ESYS_TR,
12047        writtenSet: TPMI_YES_NO,
12048    ) -> TSS2_RC;
12049}
12050extern "C" {
12051    pub fn Esys_PolicyNvWritten_Async(
12052        esysContext: *mut ESYS_CONTEXT,
12053        policySession: ESYS_TR,
12054        shandle1: ESYS_TR,
12055        shandle2: ESYS_TR,
12056        shandle3: ESYS_TR,
12057        writtenSet: TPMI_YES_NO,
12058    ) -> TSS2_RC;
12059}
12060extern "C" {
12061    pub fn Esys_PolicyNvWritten_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12062}
12063extern "C" {
12064    pub fn Esys_PolicyTemplate(
12065        esysContext: *mut ESYS_CONTEXT,
12066        policySession: ESYS_TR,
12067        shandle1: ESYS_TR,
12068        shandle2: ESYS_TR,
12069        shandle3: ESYS_TR,
12070        templateHash: *const TPM2B_DIGEST,
12071    ) -> TSS2_RC;
12072}
12073extern "C" {
12074    pub fn Esys_PolicyTemplate_Async(
12075        esysContext: *mut ESYS_CONTEXT,
12076        policySession: ESYS_TR,
12077        shandle1: ESYS_TR,
12078        shandle2: ESYS_TR,
12079        shandle3: ESYS_TR,
12080        templateHash: *const TPM2B_DIGEST,
12081    ) -> TSS2_RC;
12082}
12083extern "C" {
12084    pub fn Esys_PolicyTemplate_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12085}
12086extern "C" {
12087    pub fn Esys_PolicyAuthorizeNV(
12088        esysContext: *mut ESYS_CONTEXT,
12089        authHandle: ESYS_TR,
12090        nvIndex: ESYS_TR,
12091        policySession: ESYS_TR,
12092        shandle1: ESYS_TR,
12093        shandle2: ESYS_TR,
12094        shandle3: ESYS_TR,
12095    ) -> TSS2_RC;
12096}
12097extern "C" {
12098    pub fn Esys_PolicyAuthorizeNV_Async(
12099        esysContext: *mut ESYS_CONTEXT,
12100        authHandle: ESYS_TR,
12101        nvIndex: ESYS_TR,
12102        policySession: ESYS_TR,
12103        shandle1: ESYS_TR,
12104        shandle2: ESYS_TR,
12105        shandle3: ESYS_TR,
12106    ) -> TSS2_RC;
12107}
12108extern "C" {
12109    pub fn Esys_PolicyAuthorizeNV_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12110}
12111extern "C" {
12112    pub fn Esys_CreatePrimary(
12113        esysContext: *mut ESYS_CONTEXT,
12114        primaryHandle: ESYS_TR,
12115        shandle1: ESYS_TR,
12116        shandle2: ESYS_TR,
12117        shandle3: ESYS_TR,
12118        inSensitive: *const TPM2B_SENSITIVE_CREATE,
12119        inPublic: *const TPM2B_PUBLIC,
12120        outsideInfo: *const TPM2B_DATA,
12121        creationPCR: *const TPML_PCR_SELECTION,
12122        objectHandle: *mut ESYS_TR,
12123        outPublic: *mut *mut TPM2B_PUBLIC,
12124        creationData: *mut *mut TPM2B_CREATION_DATA,
12125        creationHash: *mut *mut TPM2B_DIGEST,
12126        creationTicket: *mut *mut TPMT_TK_CREATION,
12127    ) -> TSS2_RC;
12128}
12129extern "C" {
12130    pub fn Esys_CreatePrimary_Async(
12131        esysContext: *mut ESYS_CONTEXT,
12132        primaryHandle: ESYS_TR,
12133        shandle1: ESYS_TR,
12134        shandle2: ESYS_TR,
12135        shandle3: ESYS_TR,
12136        inSensitive: *const TPM2B_SENSITIVE_CREATE,
12137        inPublic: *const TPM2B_PUBLIC,
12138        outsideInfo: *const TPM2B_DATA,
12139        creationPCR: *const TPML_PCR_SELECTION,
12140    ) -> TSS2_RC;
12141}
12142extern "C" {
12143    pub fn Esys_CreatePrimary_Finish(
12144        esysContext: *mut ESYS_CONTEXT,
12145        objectHandle: *mut ESYS_TR,
12146        outPublic: *mut *mut TPM2B_PUBLIC,
12147        creationData: *mut *mut TPM2B_CREATION_DATA,
12148        creationHash: *mut *mut TPM2B_DIGEST,
12149        creationTicket: *mut *mut TPMT_TK_CREATION,
12150    ) -> TSS2_RC;
12151}
12152extern "C" {
12153    pub fn Esys_HierarchyControl(
12154        esysContext: *mut ESYS_CONTEXT,
12155        authHandle: ESYS_TR,
12156        shandle1: ESYS_TR,
12157        shandle2: ESYS_TR,
12158        shandle3: ESYS_TR,
12159        enable: ESYS_TR,
12160        state: TPMI_YES_NO,
12161    ) -> TSS2_RC;
12162}
12163extern "C" {
12164    pub fn Esys_HierarchyControl_Async(
12165        esysContext: *mut ESYS_CONTEXT,
12166        authHandle: ESYS_TR,
12167        shandle1: ESYS_TR,
12168        shandle2: ESYS_TR,
12169        shandle3: ESYS_TR,
12170        enable: ESYS_TR,
12171        state: TPMI_YES_NO,
12172    ) -> TSS2_RC;
12173}
12174extern "C" {
12175    pub fn Esys_HierarchyControl_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12176}
12177extern "C" {
12178    pub fn Esys_SetPrimaryPolicy(
12179        esysContext: *mut ESYS_CONTEXT,
12180        authHandle: ESYS_TR,
12181        shandle1: ESYS_TR,
12182        shandle2: ESYS_TR,
12183        shandle3: ESYS_TR,
12184        authPolicy: *const TPM2B_DIGEST,
12185        hashAlg: TPMI_ALG_HASH,
12186    ) -> TSS2_RC;
12187}
12188extern "C" {
12189    pub fn Esys_SetPrimaryPolicy_Async(
12190        esysContext: *mut ESYS_CONTEXT,
12191        authHandle: ESYS_TR,
12192        shandle1: ESYS_TR,
12193        shandle2: ESYS_TR,
12194        shandle3: ESYS_TR,
12195        authPolicy: *const TPM2B_DIGEST,
12196        hashAlg: TPMI_ALG_HASH,
12197    ) -> TSS2_RC;
12198}
12199extern "C" {
12200    pub fn Esys_SetPrimaryPolicy_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12201}
12202extern "C" {
12203    pub fn Esys_ChangePPS(
12204        esysContext: *mut ESYS_CONTEXT,
12205        authHandle: ESYS_TR,
12206        shandle1: ESYS_TR,
12207        shandle2: ESYS_TR,
12208        shandle3: ESYS_TR,
12209    ) -> TSS2_RC;
12210}
12211extern "C" {
12212    pub fn Esys_ChangePPS_Async(
12213        esysContext: *mut ESYS_CONTEXT,
12214        authHandle: ESYS_TR,
12215        shandle1: ESYS_TR,
12216        shandle2: ESYS_TR,
12217        shandle3: ESYS_TR,
12218    ) -> TSS2_RC;
12219}
12220extern "C" {
12221    pub fn Esys_ChangePPS_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12222}
12223extern "C" {
12224    pub fn Esys_ChangeEPS(
12225        esysContext: *mut ESYS_CONTEXT,
12226        authHandle: ESYS_TR,
12227        shandle1: ESYS_TR,
12228        shandle2: ESYS_TR,
12229        shandle3: ESYS_TR,
12230    ) -> TSS2_RC;
12231}
12232extern "C" {
12233    pub fn Esys_ChangeEPS_Async(
12234        esysContext: *mut ESYS_CONTEXT,
12235        authHandle: ESYS_TR,
12236        shandle1: ESYS_TR,
12237        shandle2: ESYS_TR,
12238        shandle3: ESYS_TR,
12239    ) -> TSS2_RC;
12240}
12241extern "C" {
12242    pub fn Esys_ChangeEPS_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12243}
12244extern "C" {
12245    pub fn Esys_Clear(
12246        esysContext: *mut ESYS_CONTEXT,
12247        authHandle: ESYS_TR,
12248        shandle1: ESYS_TR,
12249        shandle2: ESYS_TR,
12250        shandle3: ESYS_TR,
12251    ) -> TSS2_RC;
12252}
12253extern "C" {
12254    pub fn Esys_Clear_Async(
12255        esysContext: *mut ESYS_CONTEXT,
12256        authHandle: ESYS_TR,
12257        shandle1: ESYS_TR,
12258        shandle2: ESYS_TR,
12259        shandle3: ESYS_TR,
12260    ) -> TSS2_RC;
12261}
12262extern "C" {
12263    pub fn Esys_Clear_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12264}
12265extern "C" {
12266    pub fn Esys_ClearControl(
12267        esysContext: *mut ESYS_CONTEXT,
12268        auth: ESYS_TR,
12269        shandle1: ESYS_TR,
12270        shandle2: ESYS_TR,
12271        shandle3: ESYS_TR,
12272        disable: TPMI_YES_NO,
12273    ) -> TSS2_RC;
12274}
12275extern "C" {
12276    pub fn Esys_ClearControl_Async(
12277        esysContext: *mut ESYS_CONTEXT,
12278        auth: ESYS_TR,
12279        shandle1: ESYS_TR,
12280        shandle2: ESYS_TR,
12281        shandle3: ESYS_TR,
12282        disable: TPMI_YES_NO,
12283    ) -> TSS2_RC;
12284}
12285extern "C" {
12286    pub fn Esys_ClearControl_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12287}
12288extern "C" {
12289    pub fn Esys_HierarchyChangeAuth(
12290        esysContext: *mut ESYS_CONTEXT,
12291        authHandle: ESYS_TR,
12292        shandle1: ESYS_TR,
12293        shandle2: ESYS_TR,
12294        shandle3: ESYS_TR,
12295        newAuth: *const TPM2B_AUTH,
12296    ) -> TSS2_RC;
12297}
12298extern "C" {
12299    pub fn Esys_HierarchyChangeAuth_Async(
12300        esysContext: *mut ESYS_CONTEXT,
12301        authHandle: ESYS_TR,
12302        shandle1: ESYS_TR,
12303        shandle2: ESYS_TR,
12304        shandle3: ESYS_TR,
12305        newAuth: *const TPM2B_AUTH,
12306    ) -> TSS2_RC;
12307}
12308extern "C" {
12309    pub fn Esys_HierarchyChangeAuth_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12310}
12311extern "C" {
12312    pub fn Esys_DictionaryAttackLockReset(
12313        esysContext: *mut ESYS_CONTEXT,
12314        lockHandle: ESYS_TR,
12315        shandle1: ESYS_TR,
12316        shandle2: ESYS_TR,
12317        shandle3: ESYS_TR,
12318    ) -> TSS2_RC;
12319}
12320extern "C" {
12321    pub fn Esys_DictionaryAttackLockReset_Async(
12322        esysContext: *mut ESYS_CONTEXT,
12323        lockHandle: ESYS_TR,
12324        shandle1: ESYS_TR,
12325        shandle2: ESYS_TR,
12326        shandle3: ESYS_TR,
12327    ) -> TSS2_RC;
12328}
12329extern "C" {
12330    pub fn Esys_DictionaryAttackLockReset_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12331}
12332extern "C" {
12333    pub fn Esys_DictionaryAttackParameters(
12334        esysContext: *mut ESYS_CONTEXT,
12335        lockHandle: ESYS_TR,
12336        shandle1: ESYS_TR,
12337        shandle2: ESYS_TR,
12338        shandle3: ESYS_TR,
12339        newMaxTries: UINT32,
12340        newRecoveryTime: UINT32,
12341        lockoutRecovery: UINT32,
12342    ) -> TSS2_RC;
12343}
12344extern "C" {
12345    pub fn Esys_DictionaryAttackParameters_Async(
12346        esysContext: *mut ESYS_CONTEXT,
12347        lockHandle: ESYS_TR,
12348        shandle1: ESYS_TR,
12349        shandle2: ESYS_TR,
12350        shandle3: ESYS_TR,
12351        newMaxTries: UINT32,
12352        newRecoveryTime: UINT32,
12353        lockoutRecovery: UINT32,
12354    ) -> TSS2_RC;
12355}
12356extern "C" {
12357    pub fn Esys_DictionaryAttackParameters_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12358}
12359extern "C" {
12360    pub fn Esys_PP_Commands(
12361        esysContext: *mut ESYS_CONTEXT,
12362        auth: ESYS_TR,
12363        shandle1: ESYS_TR,
12364        shandle2: ESYS_TR,
12365        shandle3: ESYS_TR,
12366        setList: *const TPML_CC,
12367        clearList: *const TPML_CC,
12368    ) -> TSS2_RC;
12369}
12370extern "C" {
12371    pub fn Esys_PP_Commands_Async(
12372        esysContext: *mut ESYS_CONTEXT,
12373        auth: ESYS_TR,
12374        shandle1: ESYS_TR,
12375        shandle2: ESYS_TR,
12376        shandle3: ESYS_TR,
12377        setList: *const TPML_CC,
12378        clearList: *const TPML_CC,
12379    ) -> TSS2_RC;
12380}
12381extern "C" {
12382    pub fn Esys_PP_Commands_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12383}
12384extern "C" {
12385    pub fn Esys_SetAlgorithmSet(
12386        esysContext: *mut ESYS_CONTEXT,
12387        authHandle: ESYS_TR,
12388        shandle1: ESYS_TR,
12389        shandle2: ESYS_TR,
12390        shandle3: ESYS_TR,
12391        algorithmSet: UINT32,
12392    ) -> TSS2_RC;
12393}
12394extern "C" {
12395    pub fn Esys_SetAlgorithmSet_Async(
12396        esysContext: *mut ESYS_CONTEXT,
12397        authHandle: ESYS_TR,
12398        shandle1: ESYS_TR,
12399        shandle2: ESYS_TR,
12400        shandle3: ESYS_TR,
12401        algorithmSet: UINT32,
12402    ) -> TSS2_RC;
12403}
12404extern "C" {
12405    pub fn Esys_SetAlgorithmSet_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12406}
12407extern "C" {
12408    pub fn Esys_FieldUpgradeStart(
12409        esysContext: *mut ESYS_CONTEXT,
12410        authorization: ESYS_TR,
12411        keyHandle: ESYS_TR,
12412        shandle1: ESYS_TR,
12413        shandle2: ESYS_TR,
12414        shandle3: ESYS_TR,
12415        fuDigest: *const TPM2B_DIGEST,
12416        manifestSignature: *const TPMT_SIGNATURE,
12417    ) -> TSS2_RC;
12418}
12419extern "C" {
12420    pub fn Esys_FieldUpgradeStart_Async(
12421        esysContext: *mut ESYS_CONTEXT,
12422        authorization: ESYS_TR,
12423        keyHandle: ESYS_TR,
12424        shandle1: ESYS_TR,
12425        shandle2: ESYS_TR,
12426        shandle3: ESYS_TR,
12427        fuDigest: *const TPM2B_DIGEST,
12428        manifestSignature: *const TPMT_SIGNATURE,
12429    ) -> TSS2_RC;
12430}
12431extern "C" {
12432    pub fn Esys_FieldUpgradeStart_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12433}
12434extern "C" {
12435    pub fn Esys_FieldUpgradeData(
12436        esysContext: *mut ESYS_CONTEXT,
12437        shandle1: ESYS_TR,
12438        shandle2: ESYS_TR,
12439        shandle3: ESYS_TR,
12440        fuData: *const TPM2B_MAX_BUFFER,
12441        nextDigest: *mut *mut TPMT_HA,
12442        firstDigest: *mut *mut TPMT_HA,
12443    ) -> TSS2_RC;
12444}
12445extern "C" {
12446    pub fn Esys_FieldUpgradeData_Async(
12447        esysContext: *mut ESYS_CONTEXT,
12448        shandle1: ESYS_TR,
12449        shandle2: ESYS_TR,
12450        shandle3: ESYS_TR,
12451        fuData: *const TPM2B_MAX_BUFFER,
12452    ) -> TSS2_RC;
12453}
12454extern "C" {
12455    pub fn Esys_FieldUpgradeData_Finish(
12456        esysContext: *mut ESYS_CONTEXT,
12457        nextDigest: *mut *mut TPMT_HA,
12458        firstDigest: *mut *mut TPMT_HA,
12459    ) -> TSS2_RC;
12460}
12461extern "C" {
12462    pub fn Esys_FirmwareRead(
12463        esysContext: *mut ESYS_CONTEXT,
12464        shandle1: ESYS_TR,
12465        shandle2: ESYS_TR,
12466        shandle3: ESYS_TR,
12467        sequenceNumber: UINT32,
12468        fuData: *mut *mut TPM2B_MAX_BUFFER,
12469    ) -> TSS2_RC;
12470}
12471extern "C" {
12472    pub fn Esys_FirmwareRead_Async(
12473        esysContext: *mut ESYS_CONTEXT,
12474        shandle1: ESYS_TR,
12475        shandle2: ESYS_TR,
12476        shandle3: ESYS_TR,
12477        sequenceNumber: UINT32,
12478    ) -> TSS2_RC;
12479}
12480extern "C" {
12481    pub fn Esys_FirmwareRead_Finish(
12482        esysContext: *mut ESYS_CONTEXT,
12483        fuData: *mut *mut TPM2B_MAX_BUFFER,
12484    ) -> TSS2_RC;
12485}
12486extern "C" {
12487    pub fn Esys_ContextSave(
12488        esysContext: *mut ESYS_CONTEXT,
12489        saveHandle: ESYS_TR,
12490        context: *mut *mut TPMS_CONTEXT,
12491    ) -> TSS2_RC;
12492}
12493extern "C" {
12494    pub fn Esys_ContextSave_Async(esysContext: *mut ESYS_CONTEXT, saveHandle: ESYS_TR) -> TSS2_RC;
12495}
12496extern "C" {
12497    pub fn Esys_ContextSave_Finish(
12498        esysContext: *mut ESYS_CONTEXT,
12499        context: *mut *mut TPMS_CONTEXT,
12500    ) -> TSS2_RC;
12501}
12502extern "C" {
12503    pub fn Esys_ContextLoad(
12504        esysContext: *mut ESYS_CONTEXT,
12505        context: *const TPMS_CONTEXT,
12506        loadedHandle: *mut ESYS_TR,
12507    ) -> TSS2_RC;
12508}
12509extern "C" {
12510    pub fn Esys_ContextLoad_Async(
12511        esysContext: *mut ESYS_CONTEXT,
12512        context: *const TPMS_CONTEXT,
12513    ) -> TSS2_RC;
12514}
12515extern "C" {
12516    pub fn Esys_ContextLoad_Finish(
12517        esysContext: *mut ESYS_CONTEXT,
12518        loadedHandle: *mut ESYS_TR,
12519    ) -> TSS2_RC;
12520}
12521extern "C" {
12522    pub fn Esys_FlushContext(esysContext: *mut ESYS_CONTEXT, flushHandle: ESYS_TR) -> TSS2_RC;
12523}
12524extern "C" {
12525    pub fn Esys_FlushContext_Async(esysContext: *mut ESYS_CONTEXT, flushHandle: ESYS_TR)
12526        -> TSS2_RC;
12527}
12528extern "C" {
12529    pub fn Esys_FlushContext_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12530}
12531extern "C" {
12532    pub fn Esys_EvictControl(
12533        esysContext: *mut ESYS_CONTEXT,
12534        auth: ESYS_TR,
12535        objectHandle: ESYS_TR,
12536        shandle1: ESYS_TR,
12537        shandle2: ESYS_TR,
12538        shandle3: ESYS_TR,
12539        persistentHandle: TPMI_DH_PERSISTENT,
12540        newObjectHandle: *mut ESYS_TR,
12541    ) -> TSS2_RC;
12542}
12543extern "C" {
12544    pub fn Esys_EvictControl_Async(
12545        esysContext: *mut ESYS_CONTEXT,
12546        auth: ESYS_TR,
12547        objectHandle: ESYS_TR,
12548        shandle1: ESYS_TR,
12549        shandle2: ESYS_TR,
12550        shandle3: ESYS_TR,
12551        persistentHandle: TPMI_DH_PERSISTENT,
12552    ) -> TSS2_RC;
12553}
12554extern "C" {
12555    pub fn Esys_EvictControl_Finish(
12556        esysContext: *mut ESYS_CONTEXT,
12557        newObjectHandle: *mut ESYS_TR,
12558    ) -> TSS2_RC;
12559}
12560extern "C" {
12561    pub fn Esys_ReadClock(
12562        esysContext: *mut ESYS_CONTEXT,
12563        shandle1: ESYS_TR,
12564        shandle2: ESYS_TR,
12565        shandle3: ESYS_TR,
12566        currentTime: *mut *mut TPMS_TIME_INFO,
12567    ) -> TSS2_RC;
12568}
12569extern "C" {
12570    pub fn Esys_ReadClock_Async(
12571        esysContext: *mut ESYS_CONTEXT,
12572        shandle1: ESYS_TR,
12573        shandle2: ESYS_TR,
12574        shandle3: ESYS_TR,
12575    ) -> TSS2_RC;
12576}
12577extern "C" {
12578    pub fn Esys_ReadClock_Finish(
12579        esysContext: *mut ESYS_CONTEXT,
12580        currentTime: *mut *mut TPMS_TIME_INFO,
12581    ) -> TSS2_RC;
12582}
12583extern "C" {
12584    pub fn Esys_ClockSet(
12585        esysContext: *mut ESYS_CONTEXT,
12586        auth: ESYS_TR,
12587        shandle1: ESYS_TR,
12588        shandle2: ESYS_TR,
12589        shandle3: ESYS_TR,
12590        newTime: UINT64,
12591    ) -> TSS2_RC;
12592}
12593extern "C" {
12594    pub fn Esys_ClockSet_Async(
12595        esysContext: *mut ESYS_CONTEXT,
12596        auth: ESYS_TR,
12597        shandle1: ESYS_TR,
12598        shandle2: ESYS_TR,
12599        shandle3: ESYS_TR,
12600        newTime: UINT64,
12601    ) -> TSS2_RC;
12602}
12603extern "C" {
12604    pub fn Esys_ClockSet_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12605}
12606extern "C" {
12607    pub fn Esys_ClockRateAdjust(
12608        esysContext: *mut ESYS_CONTEXT,
12609        auth: ESYS_TR,
12610        shandle1: ESYS_TR,
12611        shandle2: ESYS_TR,
12612        shandle3: ESYS_TR,
12613        rateAdjust: TPM2_CLOCK_ADJUST,
12614    ) -> TSS2_RC;
12615}
12616extern "C" {
12617    pub fn Esys_ClockRateAdjust_Async(
12618        esysContext: *mut ESYS_CONTEXT,
12619        auth: ESYS_TR,
12620        shandle1: ESYS_TR,
12621        shandle2: ESYS_TR,
12622        shandle3: ESYS_TR,
12623        rateAdjust: TPM2_CLOCK_ADJUST,
12624    ) -> TSS2_RC;
12625}
12626extern "C" {
12627    pub fn Esys_ClockRateAdjust_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12628}
12629extern "C" {
12630    pub fn Esys_GetCapability(
12631        esysContext: *mut ESYS_CONTEXT,
12632        shandle1: ESYS_TR,
12633        shandle2: ESYS_TR,
12634        shandle3: ESYS_TR,
12635        capability: TPM2_CAP,
12636        property: UINT32,
12637        propertyCount: UINT32,
12638        moreData: *mut TPMI_YES_NO,
12639        capabilityData: *mut *mut TPMS_CAPABILITY_DATA,
12640    ) -> TSS2_RC;
12641}
12642extern "C" {
12643    pub fn Esys_GetCapability_Async(
12644        esysContext: *mut ESYS_CONTEXT,
12645        shandle1: ESYS_TR,
12646        shandle2: ESYS_TR,
12647        shandle3: ESYS_TR,
12648        capability: TPM2_CAP,
12649        property: UINT32,
12650        propertyCount: UINT32,
12651    ) -> TSS2_RC;
12652}
12653extern "C" {
12654    pub fn Esys_GetCapability_Finish(
12655        esysContext: *mut ESYS_CONTEXT,
12656        moreData: *mut TPMI_YES_NO,
12657        capabilityData: *mut *mut TPMS_CAPABILITY_DATA,
12658    ) -> TSS2_RC;
12659}
12660extern "C" {
12661    pub fn Esys_TestParms(
12662        esysContext: *mut ESYS_CONTEXT,
12663        shandle1: ESYS_TR,
12664        shandle2: ESYS_TR,
12665        shandle3: ESYS_TR,
12666        parameters: *const TPMT_PUBLIC_PARMS,
12667    ) -> TSS2_RC;
12668}
12669extern "C" {
12670    pub fn Esys_TestParms_Async(
12671        esysContext: *mut ESYS_CONTEXT,
12672        shandle1: ESYS_TR,
12673        shandle2: ESYS_TR,
12674        shandle3: ESYS_TR,
12675        parameters: *const TPMT_PUBLIC_PARMS,
12676    ) -> TSS2_RC;
12677}
12678extern "C" {
12679    pub fn Esys_TestParms_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12680}
12681extern "C" {
12682    pub fn Esys_NV_DefineSpace(
12683        esysContext: *mut ESYS_CONTEXT,
12684        authHandle: ESYS_TR,
12685        shandle1: ESYS_TR,
12686        shandle2: ESYS_TR,
12687        shandle3: ESYS_TR,
12688        auth: *const TPM2B_AUTH,
12689        publicInfo: *const TPM2B_NV_PUBLIC,
12690        nvHandle: *mut ESYS_TR,
12691    ) -> TSS2_RC;
12692}
12693extern "C" {
12694    pub fn Esys_NV_DefineSpace_Async(
12695        esysContext: *mut ESYS_CONTEXT,
12696        authHandle: ESYS_TR,
12697        shandle1: ESYS_TR,
12698        shandle2: ESYS_TR,
12699        shandle3: ESYS_TR,
12700        auth: *const TPM2B_AUTH,
12701        publicInfo: *const TPM2B_NV_PUBLIC,
12702    ) -> TSS2_RC;
12703}
12704extern "C" {
12705    pub fn Esys_NV_DefineSpace_Finish(
12706        esysContext: *mut ESYS_CONTEXT,
12707        nvHandle: *mut ESYS_TR,
12708    ) -> TSS2_RC;
12709}
12710extern "C" {
12711    pub fn Esys_NV_UndefineSpace(
12712        esysContext: *mut ESYS_CONTEXT,
12713        authHandle: ESYS_TR,
12714        nvIndex: ESYS_TR,
12715        shandle1: ESYS_TR,
12716        shandle2: ESYS_TR,
12717        shandle3: ESYS_TR,
12718    ) -> TSS2_RC;
12719}
12720extern "C" {
12721    pub fn Esys_NV_UndefineSpace_Async(
12722        esysContext: *mut ESYS_CONTEXT,
12723        authHandle: ESYS_TR,
12724        nvIndex: ESYS_TR,
12725        shandle1: ESYS_TR,
12726        shandle2: ESYS_TR,
12727        shandle3: ESYS_TR,
12728    ) -> TSS2_RC;
12729}
12730extern "C" {
12731    pub fn Esys_NV_UndefineSpace_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12732}
12733extern "C" {
12734    pub fn Esys_NV_UndefineSpaceSpecial(
12735        esysContext: *mut ESYS_CONTEXT,
12736        nvIndex: ESYS_TR,
12737        platform: ESYS_TR,
12738        shandle1: ESYS_TR,
12739        shandle2: ESYS_TR,
12740        shandle3: ESYS_TR,
12741    ) -> TSS2_RC;
12742}
12743extern "C" {
12744    pub fn Esys_NV_UndefineSpaceSpecial_Async(
12745        esysContext: *mut ESYS_CONTEXT,
12746        nvIndex: ESYS_TR,
12747        platform: ESYS_TR,
12748        shandle1: ESYS_TR,
12749        shandle2: ESYS_TR,
12750        shandle3: ESYS_TR,
12751    ) -> TSS2_RC;
12752}
12753extern "C" {
12754    pub fn Esys_NV_UndefineSpaceSpecial_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12755}
12756extern "C" {
12757    pub fn Esys_NV_ReadPublic(
12758        esysContext: *mut ESYS_CONTEXT,
12759        nvIndex: ESYS_TR,
12760        shandle1: ESYS_TR,
12761        shandle2: ESYS_TR,
12762        shandle3: ESYS_TR,
12763        nvPublic: *mut *mut TPM2B_NV_PUBLIC,
12764        nvName: *mut *mut TPM2B_NAME,
12765    ) -> TSS2_RC;
12766}
12767extern "C" {
12768    pub fn Esys_NV_ReadPublic_Async(
12769        esysContext: *mut ESYS_CONTEXT,
12770        nvIndex: ESYS_TR,
12771        shandle1: ESYS_TR,
12772        shandle2: ESYS_TR,
12773        shandle3: ESYS_TR,
12774    ) -> TSS2_RC;
12775}
12776extern "C" {
12777    pub fn Esys_NV_ReadPublic_Finish(
12778        esysContext: *mut ESYS_CONTEXT,
12779        nvPublic: *mut *mut TPM2B_NV_PUBLIC,
12780        nvName: *mut *mut TPM2B_NAME,
12781    ) -> TSS2_RC;
12782}
12783extern "C" {
12784    pub fn Esys_NV_Write(
12785        esysContext: *mut ESYS_CONTEXT,
12786        authHandle: ESYS_TR,
12787        nvIndex: ESYS_TR,
12788        shandle1: ESYS_TR,
12789        shandle2: ESYS_TR,
12790        shandle3: ESYS_TR,
12791        data: *const TPM2B_MAX_NV_BUFFER,
12792        offset: UINT16,
12793    ) -> TSS2_RC;
12794}
12795extern "C" {
12796    pub fn Esys_NV_Write_Async(
12797        esysContext: *mut ESYS_CONTEXT,
12798        authHandle: ESYS_TR,
12799        nvIndex: ESYS_TR,
12800        shandle1: ESYS_TR,
12801        shandle2: ESYS_TR,
12802        shandle3: ESYS_TR,
12803        data: *const TPM2B_MAX_NV_BUFFER,
12804        offset: UINT16,
12805    ) -> TSS2_RC;
12806}
12807extern "C" {
12808    pub fn Esys_NV_Write_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12809}
12810extern "C" {
12811    pub fn Esys_NV_Increment(
12812        esysContext: *mut ESYS_CONTEXT,
12813        authHandle: ESYS_TR,
12814        nvIndex: ESYS_TR,
12815        shandle1: ESYS_TR,
12816        shandle2: ESYS_TR,
12817        shandle3: ESYS_TR,
12818    ) -> TSS2_RC;
12819}
12820extern "C" {
12821    pub fn Esys_NV_Increment_Async(
12822        esysContext: *mut ESYS_CONTEXT,
12823        authHandle: ESYS_TR,
12824        nvIndex: ESYS_TR,
12825        shandle1: ESYS_TR,
12826        shandle2: ESYS_TR,
12827        shandle3: ESYS_TR,
12828    ) -> TSS2_RC;
12829}
12830extern "C" {
12831    pub fn Esys_NV_Increment_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12832}
12833extern "C" {
12834    pub fn Esys_NV_Extend(
12835        esysContext: *mut ESYS_CONTEXT,
12836        authHandle: ESYS_TR,
12837        nvIndex: ESYS_TR,
12838        shandle1: ESYS_TR,
12839        shandle2: ESYS_TR,
12840        shandle3: ESYS_TR,
12841        data: *const TPM2B_MAX_NV_BUFFER,
12842    ) -> TSS2_RC;
12843}
12844extern "C" {
12845    pub fn Esys_NV_Extend_Async(
12846        esysContext: *mut ESYS_CONTEXT,
12847        authHandle: ESYS_TR,
12848        nvIndex: ESYS_TR,
12849        shandle1: ESYS_TR,
12850        shandle2: ESYS_TR,
12851        shandle3: ESYS_TR,
12852        data: *const TPM2B_MAX_NV_BUFFER,
12853    ) -> TSS2_RC;
12854}
12855extern "C" {
12856    pub fn Esys_NV_Extend_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12857}
12858extern "C" {
12859    pub fn Esys_NV_SetBits(
12860        esysContext: *mut ESYS_CONTEXT,
12861        authHandle: ESYS_TR,
12862        nvIndex: ESYS_TR,
12863        shandle1: ESYS_TR,
12864        shandle2: ESYS_TR,
12865        shandle3: ESYS_TR,
12866        bits: UINT64,
12867    ) -> TSS2_RC;
12868}
12869extern "C" {
12870    pub fn Esys_NV_SetBits_Async(
12871        esysContext: *mut ESYS_CONTEXT,
12872        authHandle: ESYS_TR,
12873        nvIndex: ESYS_TR,
12874        shandle1: ESYS_TR,
12875        shandle2: ESYS_TR,
12876        shandle3: ESYS_TR,
12877        bits: UINT64,
12878    ) -> TSS2_RC;
12879}
12880extern "C" {
12881    pub fn Esys_NV_SetBits_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12882}
12883extern "C" {
12884    pub fn Esys_NV_WriteLock(
12885        esysContext: *mut ESYS_CONTEXT,
12886        authHandle: ESYS_TR,
12887        nvIndex: ESYS_TR,
12888        shandle1: ESYS_TR,
12889        shandle2: ESYS_TR,
12890        shandle3: ESYS_TR,
12891    ) -> TSS2_RC;
12892}
12893extern "C" {
12894    pub fn Esys_NV_WriteLock_Async(
12895        esysContext: *mut ESYS_CONTEXT,
12896        authHandle: ESYS_TR,
12897        nvIndex: ESYS_TR,
12898        shandle1: ESYS_TR,
12899        shandle2: ESYS_TR,
12900        shandle3: ESYS_TR,
12901    ) -> TSS2_RC;
12902}
12903extern "C" {
12904    pub fn Esys_NV_WriteLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12905}
12906extern "C" {
12907    pub fn Esys_NV_GlobalWriteLock(
12908        esysContext: *mut ESYS_CONTEXT,
12909        authHandle: ESYS_TR,
12910        shandle1: ESYS_TR,
12911        shandle2: ESYS_TR,
12912        shandle3: ESYS_TR,
12913    ) -> TSS2_RC;
12914}
12915extern "C" {
12916    pub fn Esys_NV_GlobalWriteLock_Async(
12917        esysContext: *mut ESYS_CONTEXT,
12918        authHandle: ESYS_TR,
12919        shandle1: ESYS_TR,
12920        shandle2: ESYS_TR,
12921        shandle3: ESYS_TR,
12922    ) -> TSS2_RC;
12923}
12924extern "C" {
12925    pub fn Esys_NV_GlobalWriteLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12926}
12927extern "C" {
12928    pub fn Esys_NV_Read(
12929        esysContext: *mut ESYS_CONTEXT,
12930        authHandle: ESYS_TR,
12931        nvIndex: ESYS_TR,
12932        shandle1: ESYS_TR,
12933        shandle2: ESYS_TR,
12934        shandle3: ESYS_TR,
12935        size: UINT16,
12936        offset: UINT16,
12937        data: *mut *mut TPM2B_MAX_NV_BUFFER,
12938    ) -> TSS2_RC;
12939}
12940extern "C" {
12941    pub fn Esys_NV_Read_Async(
12942        esysContext: *mut ESYS_CONTEXT,
12943        authHandle: ESYS_TR,
12944        nvIndex: ESYS_TR,
12945        shandle1: ESYS_TR,
12946        shandle2: ESYS_TR,
12947        shandle3: ESYS_TR,
12948        size: UINT16,
12949        offset: UINT16,
12950    ) -> TSS2_RC;
12951}
12952extern "C" {
12953    pub fn Esys_NV_Read_Finish(
12954        esysContext: *mut ESYS_CONTEXT,
12955        data: *mut *mut TPM2B_MAX_NV_BUFFER,
12956    ) -> TSS2_RC;
12957}
12958extern "C" {
12959    pub fn Esys_NV_ReadLock(
12960        esysContext: *mut ESYS_CONTEXT,
12961        authHandle: ESYS_TR,
12962        nvIndex: ESYS_TR,
12963        shandle1: ESYS_TR,
12964        shandle2: ESYS_TR,
12965        shandle3: ESYS_TR,
12966    ) -> TSS2_RC;
12967}
12968extern "C" {
12969    pub fn Esys_NV_ReadLock_Async(
12970        esysContext: *mut ESYS_CONTEXT,
12971        authHandle: ESYS_TR,
12972        nvIndex: ESYS_TR,
12973        shandle1: ESYS_TR,
12974        shandle2: ESYS_TR,
12975        shandle3: ESYS_TR,
12976    ) -> TSS2_RC;
12977}
12978extern "C" {
12979    pub fn Esys_NV_ReadLock_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
12980}
12981extern "C" {
12982    pub fn Esys_NV_ChangeAuth(
12983        esysContext: *mut ESYS_CONTEXT,
12984        nvIndex: ESYS_TR,
12985        shandle1: ESYS_TR,
12986        shandle2: ESYS_TR,
12987        shandle3: ESYS_TR,
12988        newAuth: *const TPM2B_AUTH,
12989    ) -> TSS2_RC;
12990}
12991extern "C" {
12992    pub fn Esys_NV_ChangeAuth_Async(
12993        esysContext: *mut ESYS_CONTEXT,
12994        nvIndex: ESYS_TR,
12995        shandle1: ESYS_TR,
12996        shandle2: ESYS_TR,
12997        shandle3: ESYS_TR,
12998        newAuth: *const TPM2B_AUTH,
12999    ) -> TSS2_RC;
13000}
13001extern "C" {
13002    pub fn Esys_NV_ChangeAuth_Finish(esysContext: *mut ESYS_CONTEXT) -> TSS2_RC;
13003}
13004extern "C" {
13005    pub fn Esys_NV_Certify(
13006        esysContext: *mut ESYS_CONTEXT,
13007        signHandle: ESYS_TR,
13008        authHandle: ESYS_TR,
13009        nvIndex: ESYS_TR,
13010        shandle1: ESYS_TR,
13011        shandle2: ESYS_TR,
13012        shandle3: ESYS_TR,
13013        qualifyingData: *const TPM2B_DATA,
13014        inScheme: *const TPMT_SIG_SCHEME,
13015        size: UINT16,
13016        offset: UINT16,
13017        certifyInfo: *mut *mut TPM2B_ATTEST,
13018        signature: *mut *mut TPMT_SIGNATURE,
13019    ) -> TSS2_RC;
13020}
13021extern "C" {
13022    pub fn Esys_NV_Certify_Async(
13023        esysContext: *mut ESYS_CONTEXT,
13024        signHandle: ESYS_TR,
13025        authHandle: ESYS_TR,
13026        nvIndex: ESYS_TR,
13027        shandle1: ESYS_TR,
13028        shandle2: ESYS_TR,
13029        shandle3: ESYS_TR,
13030        qualifyingData: *const TPM2B_DATA,
13031        inScheme: *const TPMT_SIG_SCHEME,
13032        size: UINT16,
13033        offset: UINT16,
13034    ) -> TSS2_RC;
13035}
13036extern "C" {
13037    pub fn Esys_NV_Certify_Finish(
13038        esysContext: *mut ESYS_CONTEXT,
13039        certifyInfo: *mut *mut TPM2B_ATTEST,
13040        signature: *mut *mut TPMT_SIGNATURE,
13041    ) -> TSS2_RC;
13042}
13043extern "C" {
13044    pub fn Esys_Vendor_TCG_Test(
13045        esysContext: *mut ESYS_CONTEXT,
13046        shandle1: ESYS_TR,
13047        shandle2: ESYS_TR,
13048        shandle3: ESYS_TR,
13049        inputData: *const TPM2B_DATA,
13050        outputData: *mut *mut TPM2B_DATA,
13051    ) -> TSS2_RC;
13052}
13053extern "C" {
13054    pub fn Esys_Vendor_TCG_Test_Async(
13055        esysContext: *mut ESYS_CONTEXT,
13056        shandle1: ESYS_TR,
13057        shandle2: ESYS_TR,
13058        shandle3: ESYS_TR,
13059        inputData: *const TPM2B_DATA,
13060    ) -> TSS2_RC;
13061}
13062extern "C" {
13063    pub fn Esys_Vendor_TCG_Test_Finish(
13064        esysContext: *mut ESYS_CONTEXT,
13065        outputData: *mut *mut TPM2B_DATA,
13066    ) -> TSS2_RC;
13067}
13068extern "C" {
13069    pub fn Esys_Free(__ptr: *mut ::std::os::raw::c_void);
13070}
13071extern "C" {
13072    pub fn Esys_GetSysContext(
13073        esys_context: *mut ESYS_CONTEXT,
13074        sys_context: *mut *mut TSS2_SYS_CONTEXT,
13075    ) -> TSS2_RC;
13076}
13077extern "C" {
13078    pub fn Esys_SetCryptoCallbacks(
13079        esysContext: *mut ESYS_CONTEXT,
13080        callbacks: *mut ESYS_CRYPTO_CALLBACKS,
13081    ) -> TSS2_RC;
13082}
13083pub type __gwchar_t = ::std::os::raw::c_uint;
13084#[repr(C)]
13085#[derive(Debug, Default, Copy, Clone)]
13086pub struct imaxdiv_t {
13087    pub quot: ::std::os::raw::c_long,
13088    pub rem: ::std::os::raw::c_long,
13089}
13090#[test]
13091fn bindgen_test_layout_imaxdiv_t() {
13092    const UNINIT: ::std::mem::MaybeUninit<imaxdiv_t> = ::std::mem::MaybeUninit::uninit();
13093    let ptr = UNINIT.as_ptr();
13094    assert_eq!(
13095        ::std::mem::size_of::<imaxdiv_t>(),
13096        16usize,
13097        "Size of imaxdiv_t"
13098    );
13099    assert_eq!(
13100        ::std::mem::align_of::<imaxdiv_t>(),
13101        8usize,
13102        "Alignment of imaxdiv_t"
13103    );
13104    assert_eq!(
13105        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13106        0usize,
13107        "Offset of field: imaxdiv_t::quot"
13108    );
13109    assert_eq!(
13110        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13111        8usize,
13112        "Offset of field: imaxdiv_t::rem"
13113    );
13114}
13115extern "C" {
13116    pub fn imaxabs(__n: intmax_t) -> intmax_t;
13117}
13118extern "C" {
13119    pub fn imaxdiv(__numer: intmax_t, __denom: intmax_t) -> imaxdiv_t;
13120}
13121extern "C" {
13122    pub fn strtoimax(
13123        __nptr: *const ::std::os::raw::c_char,
13124        __endptr: *mut *mut ::std::os::raw::c_char,
13125        __base: ::std::os::raw::c_int,
13126    ) -> intmax_t;
13127}
13128extern "C" {
13129    pub fn strtoumax(
13130        __nptr: *const ::std::os::raw::c_char,
13131        __endptr: *mut *mut ::std::os::raw::c_char,
13132        __base: ::std::os::raw::c_int,
13133    ) -> uintmax_t;
13134}
13135extern "C" {
13136    pub fn wcstoimax(
13137        __nptr: *const __gwchar_t,
13138        __endptr: *mut *mut __gwchar_t,
13139        __base: ::std::os::raw::c_int,
13140    ) -> intmax_t;
13141}
13142extern "C" {
13143    pub fn wcstoumax(
13144        __nptr: *const __gwchar_t,
13145        __endptr: *mut *mut __gwchar_t,
13146        __base: ::std::os::raw::c_int,
13147    ) -> uintmax_t;
13148}
13149pub type _Float128 = u128;
13150pub type _Float32 = f32;
13151pub type _Float64 = f64;
13152pub type _Float32x = f64;
13153pub type _Float64x = u128;
13154#[repr(C)]
13155#[derive(Debug, Default, Copy, Clone)]
13156pub struct div_t {
13157    pub quot: ::std::os::raw::c_int,
13158    pub rem: ::std::os::raw::c_int,
13159}
13160#[test]
13161fn bindgen_test_layout_div_t() {
13162    const UNINIT: ::std::mem::MaybeUninit<div_t> = ::std::mem::MaybeUninit::uninit();
13163    let ptr = UNINIT.as_ptr();
13164    assert_eq!(::std::mem::size_of::<div_t>(), 8usize, "Size of div_t");
13165    assert_eq!(
13166        ::std::mem::align_of::<div_t>(),
13167        4usize,
13168        "Alignment of div_t"
13169    );
13170    assert_eq!(
13171        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13172        0usize,
13173        "Offset of field: div_t::quot"
13174    );
13175    assert_eq!(
13176        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13177        4usize,
13178        "Offset of field: div_t::rem"
13179    );
13180}
13181#[repr(C)]
13182#[derive(Debug, Default, Copy, Clone)]
13183pub struct ldiv_t {
13184    pub quot: ::std::os::raw::c_long,
13185    pub rem: ::std::os::raw::c_long,
13186}
13187#[test]
13188fn bindgen_test_layout_ldiv_t() {
13189    const UNINIT: ::std::mem::MaybeUninit<ldiv_t> = ::std::mem::MaybeUninit::uninit();
13190    let ptr = UNINIT.as_ptr();
13191    assert_eq!(::std::mem::size_of::<ldiv_t>(), 16usize, "Size of ldiv_t");
13192    assert_eq!(
13193        ::std::mem::align_of::<ldiv_t>(),
13194        8usize,
13195        "Alignment of ldiv_t"
13196    );
13197    assert_eq!(
13198        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13199        0usize,
13200        "Offset of field: ldiv_t::quot"
13201    );
13202    assert_eq!(
13203        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13204        8usize,
13205        "Offset of field: ldiv_t::rem"
13206    );
13207}
13208#[repr(C)]
13209#[derive(Debug, Default, Copy, Clone)]
13210pub struct lldiv_t {
13211    pub quot: ::std::os::raw::c_longlong,
13212    pub rem: ::std::os::raw::c_longlong,
13213}
13214#[test]
13215fn bindgen_test_layout_lldiv_t() {
13216    const UNINIT: ::std::mem::MaybeUninit<lldiv_t> = ::std::mem::MaybeUninit::uninit();
13217    let ptr = UNINIT.as_ptr();
13218    assert_eq!(::std::mem::size_of::<lldiv_t>(), 16usize, "Size of lldiv_t");
13219    assert_eq!(
13220        ::std::mem::align_of::<lldiv_t>(),
13221        8usize,
13222        "Alignment of lldiv_t"
13223    );
13224    assert_eq!(
13225        unsafe { ::std::ptr::addr_of!((*ptr).quot) as usize - ptr as usize },
13226        0usize,
13227        "Offset of field: lldiv_t::quot"
13228    );
13229    assert_eq!(
13230        unsafe { ::std::ptr::addr_of!((*ptr).rem) as usize - ptr as usize },
13231        8usize,
13232        "Offset of field: lldiv_t::rem"
13233    );
13234}
13235extern "C" {
13236    pub fn __ctype_get_mb_cur_max() -> size_t;
13237}
13238extern "C" {
13239    pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64;
13240}
13241extern "C" {
13242    pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
13243}
13244extern "C" {
13245    pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
13246}
13247extern "C" {
13248    pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong;
13249}
13250extern "C" {
13251    pub fn strtod(
13252        __nptr: *const ::std::os::raw::c_char,
13253        __endptr: *mut *mut ::std::os::raw::c_char,
13254    ) -> f64;
13255}
13256extern "C" {
13257    pub fn strtof(
13258        __nptr: *const ::std::os::raw::c_char,
13259        __endptr: *mut *mut ::std::os::raw::c_char,
13260    ) -> f32;
13261}
13262extern "C" {
13263    pub fn strtold(
13264        __nptr: *const ::std::os::raw::c_char,
13265        __endptr: *mut *mut ::std::os::raw::c_char,
13266    ) -> u128;
13267}
13268extern "C" {
13269    pub fn strtol(
13270        __nptr: *const ::std::os::raw::c_char,
13271        __endptr: *mut *mut ::std::os::raw::c_char,
13272        __base: ::std::os::raw::c_int,
13273    ) -> ::std::os::raw::c_long;
13274}
13275extern "C" {
13276    pub fn strtoul(
13277        __nptr: *const ::std::os::raw::c_char,
13278        __endptr: *mut *mut ::std::os::raw::c_char,
13279        __base: ::std::os::raw::c_int,
13280    ) -> ::std::os::raw::c_ulong;
13281}
13282extern "C" {
13283    pub fn strtoq(
13284        __nptr: *const ::std::os::raw::c_char,
13285        __endptr: *mut *mut ::std::os::raw::c_char,
13286        __base: ::std::os::raw::c_int,
13287    ) -> ::std::os::raw::c_longlong;
13288}
13289extern "C" {
13290    pub fn strtouq(
13291        __nptr: *const ::std::os::raw::c_char,
13292        __endptr: *mut *mut ::std::os::raw::c_char,
13293        __base: ::std::os::raw::c_int,
13294    ) -> ::std::os::raw::c_ulonglong;
13295}
13296extern "C" {
13297    pub fn strtoll(
13298        __nptr: *const ::std::os::raw::c_char,
13299        __endptr: *mut *mut ::std::os::raw::c_char,
13300        __base: ::std::os::raw::c_int,
13301    ) -> ::std::os::raw::c_longlong;
13302}
13303extern "C" {
13304    pub fn strtoull(
13305        __nptr: *const ::std::os::raw::c_char,
13306        __endptr: *mut *mut ::std::os::raw::c_char,
13307        __base: ::std::os::raw::c_int,
13308    ) -> ::std::os::raw::c_ulonglong;
13309}
13310extern "C" {
13311    pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char;
13312}
13313extern "C" {
13314    pub fn a64l(__s: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long;
13315}
13316pub type u_char = __u_char;
13317pub type u_short = __u_short;
13318pub type u_int = __u_int;
13319pub type u_long = __u_long;
13320pub type quad_t = __quad_t;
13321pub type u_quad_t = __u_quad_t;
13322pub type fsid_t = __fsid_t;
13323pub type loff_t = __loff_t;
13324pub type ino_t = __ino_t;
13325pub type dev_t = __dev_t;
13326pub type gid_t = __gid_t;
13327pub type mode_t = __mode_t;
13328pub type nlink_t = __nlink_t;
13329pub type uid_t = __uid_t;
13330pub type off_t = __off_t;
13331pub type pid_t = __pid_t;
13332pub type id_t = __id_t;
13333pub type ssize_t = __ssize_t;
13334pub type daddr_t = __daddr_t;
13335pub type caddr_t = __caddr_t;
13336pub type key_t = __key_t;
13337pub type clock_t = __clock_t;
13338pub type clockid_t = __clockid_t;
13339pub type time_t = __time_t;
13340pub type timer_t = __timer_t;
13341pub type ulong = ::std::os::raw::c_ulong;
13342pub type ushort = ::std::os::raw::c_ushort;
13343pub type uint = ::std::os::raw::c_uint;
13344pub type u_int8_t = __uint8_t;
13345pub type u_int16_t = __uint16_t;
13346pub type u_int32_t = __uint32_t;
13347pub type u_int64_t = __uint64_t;
13348pub type register_t = ::std::os::raw::c_long;
13349#[repr(C)]
13350#[derive(Debug, Default, Copy, Clone)]
13351pub struct __sigset_t {
13352    pub __val: [::std::os::raw::c_ulong; 16usize],
13353}
13354#[test]
13355fn bindgen_test_layout___sigset_t() {
13356    const UNINIT: ::std::mem::MaybeUninit<__sigset_t> = ::std::mem::MaybeUninit::uninit();
13357    let ptr = UNINIT.as_ptr();
13358    assert_eq!(
13359        ::std::mem::size_of::<__sigset_t>(),
13360        128usize,
13361        "Size of __sigset_t"
13362    );
13363    assert_eq!(
13364        ::std::mem::align_of::<__sigset_t>(),
13365        8usize,
13366        "Alignment of __sigset_t"
13367    );
13368    assert_eq!(
13369        unsafe { ::std::ptr::addr_of!((*ptr).__val) as usize - ptr as usize },
13370        0usize,
13371        "Offset of field: __sigset_t::__val"
13372    );
13373}
13374pub type sigset_t = __sigset_t;
13375#[repr(C)]
13376#[derive(Debug, Default, Copy, Clone)]
13377pub struct timeval {
13378    pub tv_sec: __time_t,
13379    pub tv_usec: __suseconds_t,
13380}
13381#[test]
13382fn bindgen_test_layout_timeval() {
13383    const UNINIT: ::std::mem::MaybeUninit<timeval> = ::std::mem::MaybeUninit::uninit();
13384    let ptr = UNINIT.as_ptr();
13385    assert_eq!(::std::mem::size_of::<timeval>(), 16usize, "Size of timeval");
13386    assert_eq!(
13387        ::std::mem::align_of::<timeval>(),
13388        8usize,
13389        "Alignment of timeval"
13390    );
13391    assert_eq!(
13392        unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize },
13393        0usize,
13394        "Offset of field: timeval::tv_sec"
13395    );
13396    assert_eq!(
13397        unsafe { ::std::ptr::addr_of!((*ptr).tv_usec) as usize - ptr as usize },
13398        8usize,
13399        "Offset of field: timeval::tv_usec"
13400    );
13401}
13402#[repr(C)]
13403#[derive(Debug, Default, Copy, Clone)]
13404pub struct timespec {
13405    pub tv_sec: __time_t,
13406    pub tv_nsec: __syscall_slong_t,
13407}
13408#[test]
13409fn bindgen_test_layout_timespec() {
13410    const UNINIT: ::std::mem::MaybeUninit<timespec> = ::std::mem::MaybeUninit::uninit();
13411    let ptr = UNINIT.as_ptr();
13412    assert_eq!(
13413        ::std::mem::size_of::<timespec>(),
13414        16usize,
13415        "Size of timespec"
13416    );
13417    assert_eq!(
13418        ::std::mem::align_of::<timespec>(),
13419        8usize,
13420        "Alignment of timespec"
13421    );
13422    assert_eq!(
13423        unsafe { ::std::ptr::addr_of!((*ptr).tv_sec) as usize - ptr as usize },
13424        0usize,
13425        "Offset of field: timespec::tv_sec"
13426    );
13427    assert_eq!(
13428        unsafe { ::std::ptr::addr_of!((*ptr).tv_nsec) as usize - ptr as usize },
13429        8usize,
13430        "Offset of field: timespec::tv_nsec"
13431    );
13432}
13433pub type suseconds_t = __suseconds_t;
13434pub type __fd_mask = ::std::os::raw::c_long;
13435#[repr(C)]
13436#[derive(Debug, Default, Copy, Clone)]
13437pub struct fd_set {
13438    pub __fds_bits: [__fd_mask; 16usize],
13439}
13440#[test]
13441fn bindgen_test_layout_fd_set() {
13442    const UNINIT: ::std::mem::MaybeUninit<fd_set> = ::std::mem::MaybeUninit::uninit();
13443    let ptr = UNINIT.as_ptr();
13444    assert_eq!(::std::mem::size_of::<fd_set>(), 128usize, "Size of fd_set");
13445    assert_eq!(
13446        ::std::mem::align_of::<fd_set>(),
13447        8usize,
13448        "Alignment of fd_set"
13449    );
13450    assert_eq!(
13451        unsafe { ::std::ptr::addr_of!((*ptr).__fds_bits) as usize - ptr as usize },
13452        0usize,
13453        "Offset of field: fd_set::__fds_bits"
13454    );
13455}
13456pub type fd_mask = __fd_mask;
13457extern "C" {
13458    pub fn select(
13459        __nfds: ::std::os::raw::c_int,
13460        __readfds: *mut fd_set,
13461        __writefds: *mut fd_set,
13462        __exceptfds: *mut fd_set,
13463        __timeout: *mut timeval,
13464    ) -> ::std::os::raw::c_int;
13465}
13466extern "C" {
13467    pub fn pselect(
13468        __nfds: ::std::os::raw::c_int,
13469        __readfds: *mut fd_set,
13470        __writefds: *mut fd_set,
13471        __exceptfds: *mut fd_set,
13472        __timeout: *const timespec,
13473        __sigmask: *const __sigset_t,
13474    ) -> ::std::os::raw::c_int;
13475}
13476pub type blksize_t = __blksize_t;
13477pub type blkcnt_t = __blkcnt_t;
13478pub type fsblkcnt_t = __fsblkcnt_t;
13479pub type fsfilcnt_t = __fsfilcnt_t;
13480#[repr(C)]
13481#[derive(Copy, Clone)]
13482pub union __atomic_wide_counter {
13483    pub __value64: ::std::os::raw::c_ulonglong,
13484    pub __value32: __atomic_wide_counter__bindgen_ty_1,
13485}
13486#[repr(C)]
13487#[derive(Debug, Default, Copy, Clone)]
13488pub struct __atomic_wide_counter__bindgen_ty_1 {
13489    pub __low: ::std::os::raw::c_uint,
13490    pub __high: ::std::os::raw::c_uint,
13491}
13492#[test]
13493fn bindgen_test_layout___atomic_wide_counter__bindgen_ty_1() {
13494    const UNINIT: ::std::mem::MaybeUninit<__atomic_wide_counter__bindgen_ty_1> =
13495        ::std::mem::MaybeUninit::uninit();
13496    let ptr = UNINIT.as_ptr();
13497    assert_eq!(
13498        ::std::mem::size_of::<__atomic_wide_counter__bindgen_ty_1>(),
13499        8usize,
13500        "Size of __atomic_wide_counter__bindgen_ty_1"
13501    );
13502    assert_eq!(
13503        ::std::mem::align_of::<__atomic_wide_counter__bindgen_ty_1>(),
13504        4usize,
13505        "Alignment of __atomic_wide_counter__bindgen_ty_1"
13506    );
13507    assert_eq!(
13508        unsafe { ::std::ptr::addr_of!((*ptr).__low) as usize - ptr as usize },
13509        0usize,
13510        "Offset of field: __atomic_wide_counter__bindgen_ty_1::__low"
13511    );
13512    assert_eq!(
13513        unsafe { ::std::ptr::addr_of!((*ptr).__high) as usize - ptr as usize },
13514        4usize,
13515        "Offset of field: __atomic_wide_counter__bindgen_ty_1::__high"
13516    );
13517}
13518#[test]
13519fn bindgen_test_layout___atomic_wide_counter() {
13520    const UNINIT: ::std::mem::MaybeUninit<__atomic_wide_counter> =
13521        ::std::mem::MaybeUninit::uninit();
13522    let ptr = UNINIT.as_ptr();
13523    assert_eq!(
13524        ::std::mem::size_of::<__atomic_wide_counter>(),
13525        8usize,
13526        "Size of __atomic_wide_counter"
13527    );
13528    assert_eq!(
13529        ::std::mem::align_of::<__atomic_wide_counter>(),
13530        8usize,
13531        "Alignment of __atomic_wide_counter"
13532    );
13533    assert_eq!(
13534        unsafe { ::std::ptr::addr_of!((*ptr).__value64) as usize - ptr as usize },
13535        0usize,
13536        "Offset of field: __atomic_wide_counter::__value64"
13537    );
13538    assert_eq!(
13539        unsafe { ::std::ptr::addr_of!((*ptr).__value32) as usize - ptr as usize },
13540        0usize,
13541        "Offset of field: __atomic_wide_counter::__value32"
13542    );
13543}
13544impl Default for __atomic_wide_counter {
13545    fn default() -> Self {
13546        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13547        unsafe {
13548            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13549            s.assume_init()
13550        }
13551    }
13552}
13553#[repr(C)]
13554#[derive(Debug, Copy, Clone)]
13555pub struct __pthread_internal_list {
13556    pub __prev: *mut __pthread_internal_list,
13557    pub __next: *mut __pthread_internal_list,
13558}
13559#[test]
13560fn bindgen_test_layout___pthread_internal_list() {
13561    const UNINIT: ::std::mem::MaybeUninit<__pthread_internal_list> =
13562        ::std::mem::MaybeUninit::uninit();
13563    let ptr = UNINIT.as_ptr();
13564    assert_eq!(
13565        ::std::mem::size_of::<__pthread_internal_list>(),
13566        16usize,
13567        "Size of __pthread_internal_list"
13568    );
13569    assert_eq!(
13570        ::std::mem::align_of::<__pthread_internal_list>(),
13571        8usize,
13572        "Alignment of __pthread_internal_list"
13573    );
13574    assert_eq!(
13575        unsafe { ::std::ptr::addr_of!((*ptr).__prev) as usize - ptr as usize },
13576        0usize,
13577        "Offset of field: __pthread_internal_list::__prev"
13578    );
13579    assert_eq!(
13580        unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize },
13581        8usize,
13582        "Offset of field: __pthread_internal_list::__next"
13583    );
13584}
13585impl Default for __pthread_internal_list {
13586    fn default() -> Self {
13587        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13588        unsafe {
13589            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13590            s.assume_init()
13591        }
13592    }
13593}
13594pub type __pthread_list_t = __pthread_internal_list;
13595#[repr(C)]
13596#[derive(Debug, Copy, Clone)]
13597pub struct __pthread_internal_slist {
13598    pub __next: *mut __pthread_internal_slist,
13599}
13600#[test]
13601fn bindgen_test_layout___pthread_internal_slist() {
13602    const UNINIT: ::std::mem::MaybeUninit<__pthread_internal_slist> =
13603        ::std::mem::MaybeUninit::uninit();
13604    let ptr = UNINIT.as_ptr();
13605    assert_eq!(
13606        ::std::mem::size_of::<__pthread_internal_slist>(),
13607        8usize,
13608        "Size of __pthread_internal_slist"
13609    );
13610    assert_eq!(
13611        ::std::mem::align_of::<__pthread_internal_slist>(),
13612        8usize,
13613        "Alignment of __pthread_internal_slist"
13614    );
13615    assert_eq!(
13616        unsafe { ::std::ptr::addr_of!((*ptr).__next) as usize - ptr as usize },
13617        0usize,
13618        "Offset of field: __pthread_internal_slist::__next"
13619    );
13620}
13621impl Default for __pthread_internal_slist {
13622    fn default() -> Self {
13623        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13624        unsafe {
13625            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13626            s.assume_init()
13627        }
13628    }
13629}
13630pub type __pthread_slist_t = __pthread_internal_slist;
13631#[repr(C)]
13632#[derive(Debug, Copy, Clone)]
13633pub struct __pthread_mutex_s {
13634    pub __lock: ::std::os::raw::c_int,
13635    pub __count: ::std::os::raw::c_uint,
13636    pub __owner: ::std::os::raw::c_int,
13637    pub __nusers: ::std::os::raw::c_uint,
13638    pub __kind: ::std::os::raw::c_int,
13639    pub __spins: ::std::os::raw::c_int,
13640    pub __list: __pthread_list_t,
13641}
13642#[test]
13643fn bindgen_test_layout___pthread_mutex_s() {
13644    const UNINIT: ::std::mem::MaybeUninit<__pthread_mutex_s> = ::std::mem::MaybeUninit::uninit();
13645    let ptr = UNINIT.as_ptr();
13646    assert_eq!(
13647        ::std::mem::size_of::<__pthread_mutex_s>(),
13648        40usize,
13649        "Size of __pthread_mutex_s"
13650    );
13651    assert_eq!(
13652        ::std::mem::align_of::<__pthread_mutex_s>(),
13653        8usize,
13654        "Alignment of __pthread_mutex_s"
13655    );
13656    assert_eq!(
13657        unsafe { ::std::ptr::addr_of!((*ptr).__lock) as usize - ptr as usize },
13658        0usize,
13659        "Offset of field: __pthread_mutex_s::__lock"
13660    );
13661    assert_eq!(
13662        unsafe { ::std::ptr::addr_of!((*ptr).__count) as usize - ptr as usize },
13663        4usize,
13664        "Offset of field: __pthread_mutex_s::__count"
13665    );
13666    assert_eq!(
13667        unsafe { ::std::ptr::addr_of!((*ptr).__owner) as usize - ptr as usize },
13668        8usize,
13669        "Offset of field: __pthread_mutex_s::__owner"
13670    );
13671    assert_eq!(
13672        unsafe { ::std::ptr::addr_of!((*ptr).__nusers) as usize - ptr as usize },
13673        12usize,
13674        "Offset of field: __pthread_mutex_s::__nusers"
13675    );
13676    assert_eq!(
13677        unsafe { ::std::ptr::addr_of!((*ptr).__kind) as usize - ptr as usize },
13678        16usize,
13679        "Offset of field: __pthread_mutex_s::__kind"
13680    );
13681    assert_eq!(
13682        unsafe { ::std::ptr::addr_of!((*ptr).__spins) as usize - ptr as usize },
13683        20usize,
13684        "Offset of field: __pthread_mutex_s::__spins"
13685    );
13686    assert_eq!(
13687        unsafe { ::std::ptr::addr_of!((*ptr).__list) as usize - ptr as usize },
13688        24usize,
13689        "Offset of field: __pthread_mutex_s::__list"
13690    );
13691}
13692impl Default for __pthread_mutex_s {
13693    fn default() -> Self {
13694        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13695        unsafe {
13696            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13697            s.assume_init()
13698        }
13699    }
13700}
13701#[repr(C)]
13702#[derive(Debug, Default, Copy, Clone)]
13703pub struct __pthread_rwlock_arch_t {
13704    pub __readers: ::std::os::raw::c_uint,
13705    pub __writers: ::std::os::raw::c_uint,
13706    pub __wrphase_futex: ::std::os::raw::c_uint,
13707    pub __writers_futex: ::std::os::raw::c_uint,
13708    pub __pad3: ::std::os::raw::c_uint,
13709    pub __pad4: ::std::os::raw::c_uint,
13710    pub __cur_writer: ::std::os::raw::c_int,
13711    pub __shared: ::std::os::raw::c_int,
13712    pub __pad1: ::std::os::raw::c_ulong,
13713    pub __pad2: ::std::os::raw::c_ulong,
13714    pub __flags: ::std::os::raw::c_uint,
13715}
13716#[test]
13717fn bindgen_test_layout___pthread_rwlock_arch_t() {
13718    const UNINIT: ::std::mem::MaybeUninit<__pthread_rwlock_arch_t> =
13719        ::std::mem::MaybeUninit::uninit();
13720    let ptr = UNINIT.as_ptr();
13721    assert_eq!(
13722        ::std::mem::size_of::<__pthread_rwlock_arch_t>(),
13723        56usize,
13724        "Size of __pthread_rwlock_arch_t"
13725    );
13726    assert_eq!(
13727        ::std::mem::align_of::<__pthread_rwlock_arch_t>(),
13728        8usize,
13729        "Alignment of __pthread_rwlock_arch_t"
13730    );
13731    assert_eq!(
13732        unsafe { ::std::ptr::addr_of!((*ptr).__readers) as usize - ptr as usize },
13733        0usize,
13734        "Offset of field: __pthread_rwlock_arch_t::__readers"
13735    );
13736    assert_eq!(
13737        unsafe { ::std::ptr::addr_of!((*ptr).__writers) as usize - ptr as usize },
13738        4usize,
13739        "Offset of field: __pthread_rwlock_arch_t::__writers"
13740    );
13741    assert_eq!(
13742        unsafe { ::std::ptr::addr_of!((*ptr).__wrphase_futex) as usize - ptr as usize },
13743        8usize,
13744        "Offset of field: __pthread_rwlock_arch_t::__wrphase_futex"
13745    );
13746    assert_eq!(
13747        unsafe { ::std::ptr::addr_of!((*ptr).__writers_futex) as usize - ptr as usize },
13748        12usize,
13749        "Offset of field: __pthread_rwlock_arch_t::__writers_futex"
13750    );
13751    assert_eq!(
13752        unsafe { ::std::ptr::addr_of!((*ptr).__pad3) as usize - ptr as usize },
13753        16usize,
13754        "Offset of field: __pthread_rwlock_arch_t::__pad3"
13755    );
13756    assert_eq!(
13757        unsafe { ::std::ptr::addr_of!((*ptr).__pad4) as usize - ptr as usize },
13758        20usize,
13759        "Offset of field: __pthread_rwlock_arch_t::__pad4"
13760    );
13761    assert_eq!(
13762        unsafe { ::std::ptr::addr_of!((*ptr).__cur_writer) as usize - ptr as usize },
13763        24usize,
13764        "Offset of field: __pthread_rwlock_arch_t::__cur_writer"
13765    );
13766    assert_eq!(
13767        unsafe { ::std::ptr::addr_of!((*ptr).__shared) as usize - ptr as usize },
13768        28usize,
13769        "Offset of field: __pthread_rwlock_arch_t::__shared"
13770    );
13771    assert_eq!(
13772        unsafe { ::std::ptr::addr_of!((*ptr).__pad1) as usize - ptr as usize },
13773        32usize,
13774        "Offset of field: __pthread_rwlock_arch_t::__pad1"
13775    );
13776    assert_eq!(
13777        unsafe { ::std::ptr::addr_of!((*ptr).__pad2) as usize - ptr as usize },
13778        40usize,
13779        "Offset of field: __pthread_rwlock_arch_t::__pad2"
13780    );
13781    assert_eq!(
13782        unsafe { ::std::ptr::addr_of!((*ptr).__flags) as usize - ptr as usize },
13783        48usize,
13784        "Offset of field: __pthread_rwlock_arch_t::__flags"
13785    );
13786}
13787#[repr(C)]
13788#[derive(Copy, Clone)]
13789pub struct __pthread_cond_s {
13790    pub __wseq: __atomic_wide_counter,
13791    pub __g1_start: __atomic_wide_counter,
13792    pub __g_refs: [::std::os::raw::c_uint; 2usize],
13793    pub __g_size: [::std::os::raw::c_uint; 2usize],
13794    pub __g1_orig_size: ::std::os::raw::c_uint,
13795    pub __wrefs: ::std::os::raw::c_uint,
13796    pub __g_signals: [::std::os::raw::c_uint; 2usize],
13797}
13798#[test]
13799fn bindgen_test_layout___pthread_cond_s() {
13800    const UNINIT: ::std::mem::MaybeUninit<__pthread_cond_s> = ::std::mem::MaybeUninit::uninit();
13801    let ptr = UNINIT.as_ptr();
13802    assert_eq!(
13803        ::std::mem::size_of::<__pthread_cond_s>(),
13804        48usize,
13805        "Size of __pthread_cond_s"
13806    );
13807    assert_eq!(
13808        ::std::mem::align_of::<__pthread_cond_s>(),
13809        8usize,
13810        "Alignment of __pthread_cond_s"
13811    );
13812    assert_eq!(
13813        unsafe { ::std::ptr::addr_of!((*ptr).__wseq) as usize - ptr as usize },
13814        0usize,
13815        "Offset of field: __pthread_cond_s::__wseq"
13816    );
13817    assert_eq!(
13818        unsafe { ::std::ptr::addr_of!((*ptr).__g1_start) as usize - ptr as usize },
13819        8usize,
13820        "Offset of field: __pthread_cond_s::__g1_start"
13821    );
13822    assert_eq!(
13823        unsafe { ::std::ptr::addr_of!((*ptr).__g_refs) as usize - ptr as usize },
13824        16usize,
13825        "Offset of field: __pthread_cond_s::__g_refs"
13826    );
13827    assert_eq!(
13828        unsafe { ::std::ptr::addr_of!((*ptr).__g_size) as usize - ptr as usize },
13829        24usize,
13830        "Offset of field: __pthread_cond_s::__g_size"
13831    );
13832    assert_eq!(
13833        unsafe { ::std::ptr::addr_of!((*ptr).__g1_orig_size) as usize - ptr as usize },
13834        32usize,
13835        "Offset of field: __pthread_cond_s::__g1_orig_size"
13836    );
13837    assert_eq!(
13838        unsafe { ::std::ptr::addr_of!((*ptr).__wrefs) as usize - ptr as usize },
13839        36usize,
13840        "Offset of field: __pthread_cond_s::__wrefs"
13841    );
13842    assert_eq!(
13843        unsafe { ::std::ptr::addr_of!((*ptr).__g_signals) as usize - ptr as usize },
13844        40usize,
13845        "Offset of field: __pthread_cond_s::__g_signals"
13846    );
13847}
13848impl Default for __pthread_cond_s {
13849    fn default() -> Self {
13850        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13851        unsafe {
13852            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13853            s.assume_init()
13854        }
13855    }
13856}
13857pub type __tss_t = ::std::os::raw::c_uint;
13858pub type __thrd_t = ::std::os::raw::c_ulong;
13859#[repr(C)]
13860#[derive(Debug, Default, Copy, Clone)]
13861pub struct __once_flag {
13862    pub __data: ::std::os::raw::c_int,
13863}
13864#[test]
13865fn bindgen_test_layout___once_flag() {
13866    const UNINIT: ::std::mem::MaybeUninit<__once_flag> = ::std::mem::MaybeUninit::uninit();
13867    let ptr = UNINIT.as_ptr();
13868    assert_eq!(
13869        ::std::mem::size_of::<__once_flag>(),
13870        4usize,
13871        "Size of __once_flag"
13872    );
13873    assert_eq!(
13874        ::std::mem::align_of::<__once_flag>(),
13875        4usize,
13876        "Alignment of __once_flag"
13877    );
13878    assert_eq!(
13879        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
13880        0usize,
13881        "Offset of field: __once_flag::__data"
13882    );
13883}
13884pub type pthread_t = ::std::os::raw::c_ulong;
13885#[repr(C)]
13886#[derive(Copy, Clone)]
13887pub union pthread_mutexattr_t {
13888    pub __size: [::std::os::raw::c_char; 8usize],
13889    pub __align: ::std::os::raw::c_int,
13890}
13891#[test]
13892fn bindgen_test_layout_pthread_mutexattr_t() {
13893    const UNINIT: ::std::mem::MaybeUninit<pthread_mutexattr_t> = ::std::mem::MaybeUninit::uninit();
13894    let ptr = UNINIT.as_ptr();
13895    assert_eq!(
13896        ::std::mem::size_of::<pthread_mutexattr_t>(),
13897        8usize,
13898        "Size of pthread_mutexattr_t"
13899    );
13900    assert_eq!(
13901        ::std::mem::align_of::<pthread_mutexattr_t>(),
13902        4usize,
13903        "Alignment of pthread_mutexattr_t"
13904    );
13905    assert_eq!(
13906        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
13907        0usize,
13908        "Offset of field: pthread_mutexattr_t::__size"
13909    );
13910    assert_eq!(
13911        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
13912        0usize,
13913        "Offset of field: pthread_mutexattr_t::__align"
13914    );
13915}
13916impl Default for pthread_mutexattr_t {
13917    fn default() -> Self {
13918        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13919        unsafe {
13920            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13921            s.assume_init()
13922        }
13923    }
13924}
13925#[repr(C)]
13926#[derive(Copy, Clone)]
13927pub union pthread_condattr_t {
13928    pub __size: [::std::os::raw::c_char; 8usize],
13929    pub __align: ::std::os::raw::c_int,
13930}
13931#[test]
13932fn bindgen_test_layout_pthread_condattr_t() {
13933    const UNINIT: ::std::mem::MaybeUninit<pthread_condattr_t> = ::std::mem::MaybeUninit::uninit();
13934    let ptr = UNINIT.as_ptr();
13935    assert_eq!(
13936        ::std::mem::size_of::<pthread_condattr_t>(),
13937        8usize,
13938        "Size of pthread_condattr_t"
13939    );
13940    assert_eq!(
13941        ::std::mem::align_of::<pthread_condattr_t>(),
13942        4usize,
13943        "Alignment of pthread_condattr_t"
13944    );
13945    assert_eq!(
13946        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
13947        0usize,
13948        "Offset of field: pthread_condattr_t::__size"
13949    );
13950    assert_eq!(
13951        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
13952        0usize,
13953        "Offset of field: pthread_condattr_t::__align"
13954    );
13955}
13956impl Default for pthread_condattr_t {
13957    fn default() -> Self {
13958        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
13959        unsafe {
13960            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
13961            s.assume_init()
13962        }
13963    }
13964}
13965pub type pthread_key_t = ::std::os::raw::c_uint;
13966pub type pthread_once_t = ::std::os::raw::c_int;
13967#[repr(C)]
13968#[derive(Copy, Clone)]
13969pub union pthread_attr_t {
13970    pub __size: [::std::os::raw::c_char; 64usize],
13971    pub __align: ::std::os::raw::c_long,
13972}
13973#[test]
13974fn bindgen_test_layout_pthread_attr_t() {
13975    const UNINIT: ::std::mem::MaybeUninit<pthread_attr_t> = ::std::mem::MaybeUninit::uninit();
13976    let ptr = UNINIT.as_ptr();
13977    assert_eq!(
13978        ::std::mem::size_of::<pthread_attr_t>(),
13979        64usize,
13980        "Size of pthread_attr_t"
13981    );
13982    assert_eq!(
13983        ::std::mem::align_of::<pthread_attr_t>(),
13984        8usize,
13985        "Alignment of pthread_attr_t"
13986    );
13987    assert_eq!(
13988        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
13989        0usize,
13990        "Offset of field: pthread_attr_t::__size"
13991    );
13992    assert_eq!(
13993        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
13994        0usize,
13995        "Offset of field: pthread_attr_t::__align"
13996    );
13997}
13998impl Default for pthread_attr_t {
13999    fn default() -> Self {
14000        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14001        unsafe {
14002            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14003            s.assume_init()
14004        }
14005    }
14006}
14007#[repr(C)]
14008#[derive(Copy, Clone)]
14009pub union pthread_mutex_t {
14010    pub __data: __pthread_mutex_s,
14011    pub __size: [::std::os::raw::c_char; 48usize],
14012    pub __align: ::std::os::raw::c_long,
14013}
14014#[test]
14015fn bindgen_test_layout_pthread_mutex_t() {
14016    const UNINIT: ::std::mem::MaybeUninit<pthread_mutex_t> = ::std::mem::MaybeUninit::uninit();
14017    let ptr = UNINIT.as_ptr();
14018    assert_eq!(
14019        ::std::mem::size_of::<pthread_mutex_t>(),
14020        48usize,
14021        "Size of pthread_mutex_t"
14022    );
14023    assert_eq!(
14024        ::std::mem::align_of::<pthread_mutex_t>(),
14025        8usize,
14026        "Alignment of pthread_mutex_t"
14027    );
14028    assert_eq!(
14029        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
14030        0usize,
14031        "Offset of field: pthread_mutex_t::__data"
14032    );
14033    assert_eq!(
14034        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14035        0usize,
14036        "Offset of field: pthread_mutex_t::__size"
14037    );
14038    assert_eq!(
14039        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14040        0usize,
14041        "Offset of field: pthread_mutex_t::__align"
14042    );
14043}
14044impl Default for pthread_mutex_t {
14045    fn default() -> Self {
14046        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14047        unsafe {
14048            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14049            s.assume_init()
14050        }
14051    }
14052}
14053#[repr(C)]
14054#[derive(Copy, Clone)]
14055pub union pthread_cond_t {
14056    pub __data: __pthread_cond_s,
14057    pub __size: [::std::os::raw::c_char; 48usize],
14058    pub __align: ::std::os::raw::c_longlong,
14059}
14060#[test]
14061fn bindgen_test_layout_pthread_cond_t() {
14062    const UNINIT: ::std::mem::MaybeUninit<pthread_cond_t> = ::std::mem::MaybeUninit::uninit();
14063    let ptr = UNINIT.as_ptr();
14064    assert_eq!(
14065        ::std::mem::size_of::<pthread_cond_t>(),
14066        48usize,
14067        "Size of pthread_cond_t"
14068    );
14069    assert_eq!(
14070        ::std::mem::align_of::<pthread_cond_t>(),
14071        8usize,
14072        "Alignment of pthread_cond_t"
14073    );
14074    assert_eq!(
14075        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
14076        0usize,
14077        "Offset of field: pthread_cond_t::__data"
14078    );
14079    assert_eq!(
14080        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14081        0usize,
14082        "Offset of field: pthread_cond_t::__size"
14083    );
14084    assert_eq!(
14085        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14086        0usize,
14087        "Offset of field: pthread_cond_t::__align"
14088    );
14089}
14090impl Default for pthread_cond_t {
14091    fn default() -> Self {
14092        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14093        unsafe {
14094            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14095            s.assume_init()
14096        }
14097    }
14098}
14099#[repr(C)]
14100#[derive(Copy, Clone)]
14101pub union pthread_rwlock_t {
14102    pub __data: __pthread_rwlock_arch_t,
14103    pub __size: [::std::os::raw::c_char; 56usize],
14104    pub __align: ::std::os::raw::c_long,
14105}
14106#[test]
14107fn bindgen_test_layout_pthread_rwlock_t() {
14108    const UNINIT: ::std::mem::MaybeUninit<pthread_rwlock_t> = ::std::mem::MaybeUninit::uninit();
14109    let ptr = UNINIT.as_ptr();
14110    assert_eq!(
14111        ::std::mem::size_of::<pthread_rwlock_t>(),
14112        56usize,
14113        "Size of pthread_rwlock_t"
14114    );
14115    assert_eq!(
14116        ::std::mem::align_of::<pthread_rwlock_t>(),
14117        8usize,
14118        "Alignment of pthread_rwlock_t"
14119    );
14120    assert_eq!(
14121        unsafe { ::std::ptr::addr_of!((*ptr).__data) as usize - ptr as usize },
14122        0usize,
14123        "Offset of field: pthread_rwlock_t::__data"
14124    );
14125    assert_eq!(
14126        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14127        0usize,
14128        "Offset of field: pthread_rwlock_t::__size"
14129    );
14130    assert_eq!(
14131        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14132        0usize,
14133        "Offset of field: pthread_rwlock_t::__align"
14134    );
14135}
14136impl Default for pthread_rwlock_t {
14137    fn default() -> Self {
14138        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14139        unsafe {
14140            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14141            s.assume_init()
14142        }
14143    }
14144}
14145#[repr(C)]
14146#[derive(Copy, Clone)]
14147pub union pthread_rwlockattr_t {
14148    pub __size: [::std::os::raw::c_char; 8usize],
14149    pub __align: ::std::os::raw::c_long,
14150}
14151#[test]
14152fn bindgen_test_layout_pthread_rwlockattr_t() {
14153    const UNINIT: ::std::mem::MaybeUninit<pthread_rwlockattr_t> = ::std::mem::MaybeUninit::uninit();
14154    let ptr = UNINIT.as_ptr();
14155    assert_eq!(
14156        ::std::mem::size_of::<pthread_rwlockattr_t>(),
14157        8usize,
14158        "Size of pthread_rwlockattr_t"
14159    );
14160    assert_eq!(
14161        ::std::mem::align_of::<pthread_rwlockattr_t>(),
14162        8usize,
14163        "Alignment of pthread_rwlockattr_t"
14164    );
14165    assert_eq!(
14166        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14167        0usize,
14168        "Offset of field: pthread_rwlockattr_t::__size"
14169    );
14170    assert_eq!(
14171        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14172        0usize,
14173        "Offset of field: pthread_rwlockattr_t::__align"
14174    );
14175}
14176impl Default for pthread_rwlockattr_t {
14177    fn default() -> Self {
14178        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14179        unsafe {
14180            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14181            s.assume_init()
14182        }
14183    }
14184}
14185pub type pthread_spinlock_t = ::std::os::raw::c_int;
14186#[repr(C)]
14187#[derive(Copy, Clone)]
14188pub union pthread_barrier_t {
14189    pub __size: [::std::os::raw::c_char; 32usize],
14190    pub __align: ::std::os::raw::c_long,
14191}
14192#[test]
14193fn bindgen_test_layout_pthread_barrier_t() {
14194    const UNINIT: ::std::mem::MaybeUninit<pthread_barrier_t> = ::std::mem::MaybeUninit::uninit();
14195    let ptr = UNINIT.as_ptr();
14196    assert_eq!(
14197        ::std::mem::size_of::<pthread_barrier_t>(),
14198        32usize,
14199        "Size of pthread_barrier_t"
14200    );
14201    assert_eq!(
14202        ::std::mem::align_of::<pthread_barrier_t>(),
14203        8usize,
14204        "Alignment of pthread_barrier_t"
14205    );
14206    assert_eq!(
14207        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14208        0usize,
14209        "Offset of field: pthread_barrier_t::__size"
14210    );
14211    assert_eq!(
14212        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14213        0usize,
14214        "Offset of field: pthread_barrier_t::__align"
14215    );
14216}
14217impl Default for pthread_barrier_t {
14218    fn default() -> Self {
14219        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14220        unsafe {
14221            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14222            s.assume_init()
14223        }
14224    }
14225}
14226#[repr(C)]
14227#[derive(Copy, Clone)]
14228pub union pthread_barrierattr_t {
14229    pub __size: [::std::os::raw::c_char; 8usize],
14230    pub __align: ::std::os::raw::c_int,
14231}
14232#[test]
14233fn bindgen_test_layout_pthread_barrierattr_t() {
14234    const UNINIT: ::std::mem::MaybeUninit<pthread_barrierattr_t> =
14235        ::std::mem::MaybeUninit::uninit();
14236    let ptr = UNINIT.as_ptr();
14237    assert_eq!(
14238        ::std::mem::size_of::<pthread_barrierattr_t>(),
14239        8usize,
14240        "Size of pthread_barrierattr_t"
14241    );
14242    assert_eq!(
14243        ::std::mem::align_of::<pthread_barrierattr_t>(),
14244        4usize,
14245        "Alignment of pthread_barrierattr_t"
14246    );
14247    assert_eq!(
14248        unsafe { ::std::ptr::addr_of!((*ptr).__size) as usize - ptr as usize },
14249        0usize,
14250        "Offset of field: pthread_barrierattr_t::__size"
14251    );
14252    assert_eq!(
14253        unsafe { ::std::ptr::addr_of!((*ptr).__align) as usize - ptr as usize },
14254        0usize,
14255        "Offset of field: pthread_barrierattr_t::__align"
14256    );
14257}
14258impl Default for pthread_barrierattr_t {
14259    fn default() -> Self {
14260        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14261        unsafe {
14262            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14263            s.assume_init()
14264        }
14265    }
14266}
14267extern "C" {
14268    pub fn random() -> ::std::os::raw::c_long;
14269}
14270extern "C" {
14271    pub fn srandom(__seed: ::std::os::raw::c_uint);
14272}
14273extern "C" {
14274    pub fn initstate(
14275        __seed: ::std::os::raw::c_uint,
14276        __statebuf: *mut ::std::os::raw::c_char,
14277        __statelen: size_t,
14278    ) -> *mut ::std::os::raw::c_char;
14279}
14280extern "C" {
14281    pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
14282}
14283#[repr(C)]
14284#[derive(Debug, Copy, Clone)]
14285pub struct random_data {
14286    pub fptr: *mut i32,
14287    pub rptr: *mut i32,
14288    pub state: *mut i32,
14289    pub rand_type: ::std::os::raw::c_int,
14290    pub rand_deg: ::std::os::raw::c_int,
14291    pub rand_sep: ::std::os::raw::c_int,
14292    pub end_ptr: *mut i32,
14293}
14294#[test]
14295fn bindgen_test_layout_random_data() {
14296    const UNINIT: ::std::mem::MaybeUninit<random_data> = ::std::mem::MaybeUninit::uninit();
14297    let ptr = UNINIT.as_ptr();
14298    assert_eq!(
14299        ::std::mem::size_of::<random_data>(),
14300        48usize,
14301        "Size of random_data"
14302    );
14303    assert_eq!(
14304        ::std::mem::align_of::<random_data>(),
14305        8usize,
14306        "Alignment of random_data"
14307    );
14308    assert_eq!(
14309        unsafe { ::std::ptr::addr_of!((*ptr).fptr) as usize - ptr as usize },
14310        0usize,
14311        "Offset of field: random_data::fptr"
14312    );
14313    assert_eq!(
14314        unsafe { ::std::ptr::addr_of!((*ptr).rptr) as usize - ptr as usize },
14315        8usize,
14316        "Offset of field: random_data::rptr"
14317    );
14318    assert_eq!(
14319        unsafe { ::std::ptr::addr_of!((*ptr).state) as usize - ptr as usize },
14320        16usize,
14321        "Offset of field: random_data::state"
14322    );
14323    assert_eq!(
14324        unsafe { ::std::ptr::addr_of!((*ptr).rand_type) as usize - ptr as usize },
14325        24usize,
14326        "Offset of field: random_data::rand_type"
14327    );
14328    assert_eq!(
14329        unsafe { ::std::ptr::addr_of!((*ptr).rand_deg) as usize - ptr as usize },
14330        28usize,
14331        "Offset of field: random_data::rand_deg"
14332    );
14333    assert_eq!(
14334        unsafe { ::std::ptr::addr_of!((*ptr).rand_sep) as usize - ptr as usize },
14335        32usize,
14336        "Offset of field: random_data::rand_sep"
14337    );
14338    assert_eq!(
14339        unsafe { ::std::ptr::addr_of!((*ptr).end_ptr) as usize - ptr as usize },
14340        40usize,
14341        "Offset of field: random_data::end_ptr"
14342    );
14343}
14344impl Default for random_data {
14345    fn default() -> Self {
14346        let mut s = ::std::mem::MaybeUninit::<Self>::uninit();
14347        unsafe {
14348            ::std::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
14349            s.assume_init()
14350        }
14351    }
14352}
14353extern "C" {
14354    pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int;
14355}
14356extern "C" {
14357    pub fn srandom_r(
14358        __seed: ::std::os::raw::c_uint,
14359        __buf: *mut random_data,
14360    ) -> ::std::os::raw::c_int;
14361}
14362extern "C" {
14363    pub fn initstate_r(
14364        __seed: ::std::os::raw::c_uint,
14365        __statebuf: *mut ::std::os::raw::c_char,
14366        __statelen: size_t,
14367        __buf: *mut random_data,
14368    ) -> ::std::os::raw::c_int;
14369}
14370extern "C" {
14371    pub fn setstate_r(
14372        __statebuf: *mut ::std::os::raw::c_char,
14373        __buf: *mut random_data,
14374    ) -> ::std::os::raw::c_int;
14375}
14376extern "C" {
14377    pub fn rand() -> ::std::os::raw::c_int;
14378}
14379extern "C" {
14380    pub fn srand(__seed: ::std::os::raw::c_uint);
14381}
14382extern "C" {
14383    pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int;
14384}
14385extern "C" {
14386    pub fn drand48() -> f64;
14387}
14388extern "C" {
14389    pub fn erand48(__xsubi: *mut ::std::os::raw::c_ushort) -> f64;
14390}
14391extern "C" {
14392    pub fn lrand48() -> ::std::os::raw::c_long;
14393}
14394extern "C" {
14395    pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
14396}
14397extern "C" {
14398    pub fn mrand48() -> ::std::os::raw::c_long;
14399}
14400extern "C" {
14401    pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long;
14402}
14403extern "C" {
14404    pub fn srand48(__seedval: ::std::os::raw::c_long);
14405}
14406extern "C" {
14407    pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort;
14408}
14409extern "C" {
14410    pub fn lcong48(__param: *mut ::std::os::raw::c_ushort);
14411}
14412#[repr(C)]
14413#[derive(Debug, Default, Copy, Clone)]
14414pub struct drand48_data {
14415    pub __x: [::std::os::raw::c_ushort; 3usize],
14416    pub __old_x: [::std::os::raw::c_ushort; 3usize],
14417    pub __c: ::std::os::raw::c_ushort,
14418    pub __init: ::std::os::raw::c_ushort,
14419    pub __a: ::std::os::raw::c_ulonglong,
14420}
14421#[test]
14422fn bindgen_test_layout_drand48_data() {
14423    const UNINIT: ::std::mem::MaybeUninit<drand48_data> = ::std::mem::MaybeUninit::uninit();
14424    let ptr = UNINIT.as_ptr();
14425    assert_eq!(
14426        ::std::mem::size_of::<drand48_data>(),
14427        24usize,
14428        "Size of drand48_data"
14429    );
14430    assert_eq!(
14431        ::std::mem::align_of::<drand48_data>(),
14432        8usize,
14433        "Alignment of drand48_data"
14434    );
14435    assert_eq!(
14436        unsafe { ::std::ptr::addr_of!((*ptr).__x) as usize - ptr as usize },
14437        0usize,
14438        "Offset of field: drand48_data::__x"
14439    );
14440    assert_eq!(
14441        unsafe { ::std::ptr::addr_of!((*ptr).__old_x) as usize - ptr as usize },
14442        6usize,
14443        "Offset of field: drand48_data::__old_x"
14444    );
14445    assert_eq!(
14446        unsafe { ::std::ptr::addr_of!((*ptr).__c) as usize - ptr as usize },
14447        12usize,
14448        "Offset of field: drand48_data::__c"
14449    );
14450    assert_eq!(
14451        unsafe { ::std::ptr::addr_of!((*ptr).__init) as usize - ptr as usize },
14452        14usize,
14453        "Offset of field: drand48_data::__init"
14454    );
14455    assert_eq!(
14456        unsafe { ::std::ptr::addr_of!((*ptr).__a) as usize - ptr as usize },
14457        16usize,
14458        "Offset of field: drand48_data::__a"
14459    );
14460}
14461extern "C" {
14462    pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int;
14463}
14464extern "C" {
14465    pub fn erand48_r(
14466        __xsubi: *mut ::std::os::raw::c_ushort,
14467        __buffer: *mut drand48_data,
14468        __result: *mut f64,
14469    ) -> ::std::os::raw::c_int;
14470}
14471extern "C" {
14472    pub fn lrand48_r(
14473        __buffer: *mut drand48_data,
14474        __result: *mut ::std::os::raw::c_long,
14475    ) -> ::std::os::raw::c_int;
14476}
14477extern "C" {
14478    pub fn nrand48_r(
14479        __xsubi: *mut ::std::os::raw::c_ushort,
14480        __buffer: *mut drand48_data,
14481        __result: *mut ::std::os::raw::c_long,
14482    ) -> ::std::os::raw::c_int;
14483}
14484extern "C" {
14485    pub fn mrand48_r(
14486        __buffer: *mut drand48_data,
14487        __result: *mut ::std::os::raw::c_long,
14488    ) -> ::std::os::raw::c_int;
14489}
14490extern "C" {
14491    pub fn jrand48_r(
14492        __xsubi: *mut ::std::os::raw::c_ushort,
14493        __buffer: *mut drand48_data,
14494        __result: *mut ::std::os::raw::c_long,
14495    ) -> ::std::os::raw::c_int;
14496}
14497extern "C" {
14498    pub fn srand48_r(
14499        __seedval: ::std::os::raw::c_long,
14500        __buffer: *mut drand48_data,
14501    ) -> ::std::os::raw::c_int;
14502}
14503extern "C" {
14504    pub fn seed48_r(
14505        __seed16v: *mut ::std::os::raw::c_ushort,
14506        __buffer: *mut drand48_data,
14507    ) -> ::std::os::raw::c_int;
14508}
14509extern "C" {
14510    pub fn lcong48_r(
14511        __param: *mut ::std::os::raw::c_ushort,
14512        __buffer: *mut drand48_data,
14513    ) -> ::std::os::raw::c_int;
14514}
14515extern "C" {
14516    pub fn malloc(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
14517}
14518extern "C" {
14519    pub fn calloc(
14520        __nmemb: ::std::os::raw::c_ulong,
14521        __size: ::std::os::raw::c_ulong,
14522    ) -> *mut ::std::os::raw::c_void;
14523}
14524extern "C" {
14525    pub fn realloc(
14526        __ptr: *mut ::std::os::raw::c_void,
14527        __size: ::std::os::raw::c_ulong,
14528    ) -> *mut ::std::os::raw::c_void;
14529}
14530extern "C" {
14531    pub fn free(__ptr: *mut ::std::os::raw::c_void);
14532}
14533extern "C" {
14534    pub fn reallocarray(
14535        __ptr: *mut ::std::os::raw::c_void,
14536        __nmemb: size_t,
14537        __size: size_t,
14538    ) -> *mut ::std::os::raw::c_void;
14539}
14540extern "C" {
14541    pub fn alloca(__size: ::std::os::raw::c_ulong) -> *mut ::std::os::raw::c_void;
14542}
14543extern "C" {
14544    pub fn valloc(__size: size_t) -> *mut ::std::os::raw::c_void;
14545}
14546extern "C" {
14547    pub fn posix_memalign(
14548        __memptr: *mut *mut ::std::os::raw::c_void,
14549        __alignment: size_t,
14550        __size: size_t,
14551    ) -> ::std::os::raw::c_int;
14552}
14553extern "C" {
14554    pub fn aligned_alloc(
14555        __alignment: ::std::os::raw::c_ulong,
14556        __size: ::std::os::raw::c_ulong,
14557    ) -> *mut ::std::os::raw::c_void;
14558}
14559extern "C" {
14560    pub fn abort() -> !;
14561}
14562extern "C" {
14563    pub fn atexit(__func: ::std::option::Option<unsafe extern "C" fn()>) -> ::std::os::raw::c_int;
14564}
14565extern "C" {
14566    pub fn at_quick_exit(
14567        __func: ::std::option::Option<unsafe extern "C" fn()>,
14568    ) -> ::std::os::raw::c_int;
14569}
14570extern "C" {
14571    pub fn on_exit(
14572        __func: ::std::option::Option<
14573            unsafe extern "C" fn(
14574                __status: ::std::os::raw::c_int,
14575                __arg: *mut ::std::os::raw::c_void,
14576            ),
14577        >,
14578        __arg: *mut ::std::os::raw::c_void,
14579    ) -> ::std::os::raw::c_int;
14580}
14581extern "C" {
14582    pub fn exit(__status: ::std::os::raw::c_int) -> !;
14583}
14584extern "C" {
14585    pub fn quick_exit(__status: ::std::os::raw::c_int) -> !;
14586}
14587extern "C" {
14588    pub fn _Exit(__status: ::std::os::raw::c_int) -> !;
14589}
14590extern "C" {
14591    pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
14592}
14593extern "C" {
14594    pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14595}
14596extern "C" {
14597    pub fn setenv(
14598        __name: *const ::std::os::raw::c_char,
14599        __value: *const ::std::os::raw::c_char,
14600        __replace: ::std::os::raw::c_int,
14601    ) -> ::std::os::raw::c_int;
14602}
14603extern "C" {
14604    pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14605}
14606extern "C" {
14607    pub fn clearenv() -> ::std::os::raw::c_int;
14608}
14609extern "C" {
14610    pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
14611}
14612extern "C" {
14613    pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14614}
14615extern "C" {
14616    pub fn mkstemps(
14617        __template: *mut ::std::os::raw::c_char,
14618        __suffixlen: ::std::os::raw::c_int,
14619    ) -> ::std::os::raw::c_int;
14620}
14621extern "C" {
14622    pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char;
14623}
14624extern "C" {
14625    pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14626}
14627extern "C" {
14628    pub fn realpath(
14629        __name: *const ::std::os::raw::c_char,
14630        __resolved: *mut ::std::os::raw::c_char,
14631    ) -> *mut ::std::os::raw::c_char;
14632}
14633pub type __compar_fn_t = ::std::option::Option<
14634    unsafe extern "C" fn(
14635        arg1: *const ::std::os::raw::c_void,
14636        arg2: *const ::std::os::raw::c_void,
14637    ) -> ::std::os::raw::c_int,
14638>;
14639extern "C" {
14640    pub fn bsearch(
14641        __key: *const ::std::os::raw::c_void,
14642        __base: *const ::std::os::raw::c_void,
14643        __nmemb: size_t,
14644        __size: size_t,
14645        __compar: __compar_fn_t,
14646    ) -> *mut ::std::os::raw::c_void;
14647}
14648extern "C" {
14649    pub fn qsort(
14650        __base: *mut ::std::os::raw::c_void,
14651        __nmemb: size_t,
14652        __size: size_t,
14653        __compar: __compar_fn_t,
14654    );
14655}
14656extern "C" {
14657    pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int;
14658}
14659extern "C" {
14660    pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long;
14661}
14662extern "C" {
14663    pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong;
14664}
14665extern "C" {
14666    pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t;
14667}
14668extern "C" {
14669    pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t;
14670}
14671extern "C" {
14672    pub fn lldiv(
14673        __numer: ::std::os::raw::c_longlong,
14674        __denom: ::std::os::raw::c_longlong,
14675    ) -> lldiv_t;
14676}
14677extern "C" {
14678    pub fn ecvt(
14679        __value: f64,
14680        __ndigit: ::std::os::raw::c_int,
14681        __decpt: *mut ::std::os::raw::c_int,
14682        __sign: *mut ::std::os::raw::c_int,
14683    ) -> *mut ::std::os::raw::c_char;
14684}
14685extern "C" {
14686    pub fn fcvt(
14687        __value: f64,
14688        __ndigit: ::std::os::raw::c_int,
14689        __decpt: *mut ::std::os::raw::c_int,
14690        __sign: *mut ::std::os::raw::c_int,
14691    ) -> *mut ::std::os::raw::c_char;
14692}
14693extern "C" {
14694    pub fn gcvt(
14695        __value: f64,
14696        __ndigit: ::std::os::raw::c_int,
14697        __buf: *mut ::std::os::raw::c_char,
14698    ) -> *mut ::std::os::raw::c_char;
14699}
14700extern "C" {
14701    pub fn qecvt(
14702        __value: u128,
14703        __ndigit: ::std::os::raw::c_int,
14704        __decpt: *mut ::std::os::raw::c_int,
14705        __sign: *mut ::std::os::raw::c_int,
14706    ) -> *mut ::std::os::raw::c_char;
14707}
14708extern "C" {
14709    pub fn qfcvt(
14710        __value: u128,
14711        __ndigit: ::std::os::raw::c_int,
14712        __decpt: *mut ::std::os::raw::c_int,
14713        __sign: *mut ::std::os::raw::c_int,
14714    ) -> *mut ::std::os::raw::c_char;
14715}
14716extern "C" {
14717    pub fn qgcvt(
14718        __value: u128,
14719        __ndigit: ::std::os::raw::c_int,
14720        __buf: *mut ::std::os::raw::c_char,
14721    ) -> *mut ::std::os::raw::c_char;
14722}
14723extern "C" {
14724    pub fn ecvt_r(
14725        __value: f64,
14726        __ndigit: ::std::os::raw::c_int,
14727        __decpt: *mut ::std::os::raw::c_int,
14728        __sign: *mut ::std::os::raw::c_int,
14729        __buf: *mut ::std::os::raw::c_char,
14730        __len: size_t,
14731    ) -> ::std::os::raw::c_int;
14732}
14733extern "C" {
14734    pub fn fcvt_r(
14735        __value: f64,
14736        __ndigit: ::std::os::raw::c_int,
14737        __decpt: *mut ::std::os::raw::c_int,
14738        __sign: *mut ::std::os::raw::c_int,
14739        __buf: *mut ::std::os::raw::c_char,
14740        __len: size_t,
14741    ) -> ::std::os::raw::c_int;
14742}
14743extern "C" {
14744    pub fn qecvt_r(
14745        __value: u128,
14746        __ndigit: ::std::os::raw::c_int,
14747        __decpt: *mut ::std::os::raw::c_int,
14748        __sign: *mut ::std::os::raw::c_int,
14749        __buf: *mut ::std::os::raw::c_char,
14750        __len: size_t,
14751    ) -> ::std::os::raw::c_int;
14752}
14753extern "C" {
14754    pub fn qfcvt_r(
14755        __value: u128,
14756        __ndigit: ::std::os::raw::c_int,
14757        __decpt: *mut ::std::os::raw::c_int,
14758        __sign: *mut ::std::os::raw::c_int,
14759        __buf: *mut ::std::os::raw::c_char,
14760        __len: size_t,
14761    ) -> ::std::os::raw::c_int;
14762}
14763extern "C" {
14764    pub fn mblen(__s: *const ::std::os::raw::c_char, __n: size_t) -> ::std::os::raw::c_int;
14765}
14766extern "C" {
14767    pub fn mbtowc(
14768        __pwc: *mut wchar_t,
14769        __s: *const ::std::os::raw::c_char,
14770        __n: size_t,
14771    ) -> ::std::os::raw::c_int;
14772}
14773extern "C" {
14774    pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int;
14775}
14776extern "C" {
14777    pub fn mbstowcs(
14778        __pwcs: *mut wchar_t,
14779        __s: *const ::std::os::raw::c_char,
14780        __n: size_t,
14781    ) -> size_t;
14782}
14783extern "C" {
14784    pub fn wcstombs(
14785        __s: *mut ::std::os::raw::c_char,
14786        __pwcs: *const wchar_t,
14787        __n: size_t,
14788    ) -> size_t;
14789}
14790extern "C" {
14791    pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int;
14792}
14793extern "C" {
14794    pub fn getsubopt(
14795        __optionp: *mut *mut ::std::os::raw::c_char,
14796        __tokens: *const *mut ::std::os::raw::c_char,
14797        __valuep: *mut *mut ::std::os::raw::c_char,
14798    ) -> ::std::os::raw::c_int;
14799}
14800extern "C" {
14801    pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int)
14802        -> ::std::os::raw::c_int;
14803}
14804extern "C" {
14805    pub fn Tss2_TctiLdr_Finalize(context: *mut *mut TSS2_TCTI_CONTEXT);
14806}
14807extern "C" {
14808    pub fn Tss2_TctiLdr_Initialize_Ex(
14809        name: *const ::std::os::raw::c_char,
14810        conf: *const ::std::os::raw::c_char,
14811        context: *mut *mut TSS2_TCTI_CONTEXT,
14812    ) -> TSS2_RC;
14813}
14814extern "C" {
14815    pub fn Tss2_TctiLdr_Initialize(
14816        nameConf: *const ::std::os::raw::c_char,
14817        context: *mut *mut TSS2_TCTI_CONTEXT,
14818    ) -> TSS2_RC;
14819}
14820extern "C" {
14821    pub fn Tss2_TctiLdr_GetInfo(
14822        name: *const ::std::os::raw::c_char,
14823        info: *mut *mut TSS2_TCTI_INFO,
14824    ) -> TSS2_RC;
14825}
14826extern "C" {
14827    pub fn Tss2_TctiLdr_FreeInfo(info: *mut *mut TSS2_TCTI_INFO);
14828}
14829extern "C" {
14830    pub fn Tss2_Tcti_TctiLdr_Init(
14831        tctiContext: *mut TSS2_TCTI_CONTEXT,
14832        size: *mut size_t,
14833        nameConf: *const ::std::os::raw::c_char,
14834    ) -> TSS2_RC;
14835}
14836extern "C" {
14837    pub fn Tss2_MU_INT8_Marshal(
14838        src: INT8,
14839        buffer: *mut u8,
14840        buffer_size: size_t,
14841        offset: *mut size_t,
14842    ) -> TSS2_RC;
14843}
14844extern "C" {
14845    pub fn Tss2_MU_INT8_Unmarshal(
14846        buffer: *const u8,
14847        buffer_size: size_t,
14848        offset: *mut size_t,
14849        dest: *mut INT8,
14850    ) -> TSS2_RC;
14851}
14852extern "C" {
14853    pub fn Tss2_MU_INT16_Marshal(
14854        src: INT16,
14855        buffer: *mut u8,
14856        buffer_size: size_t,
14857        offset: *mut size_t,
14858    ) -> TSS2_RC;
14859}
14860extern "C" {
14861    pub fn Tss2_MU_INT16_Unmarshal(
14862        buffer: *const u8,
14863        buffer_size: size_t,
14864        offset: *mut size_t,
14865        dest: *mut INT16,
14866    ) -> TSS2_RC;
14867}
14868extern "C" {
14869    pub fn Tss2_MU_INT32_Marshal(
14870        src: INT32,
14871        buffer: *mut u8,
14872        buffer_size: size_t,
14873        offset: *mut size_t,
14874    ) -> TSS2_RC;
14875}
14876extern "C" {
14877    pub fn Tss2_MU_INT32_Unmarshal(
14878        buffer: *const u8,
14879        buffer_size: size_t,
14880        offset: *mut size_t,
14881        dest: *mut INT32,
14882    ) -> TSS2_RC;
14883}
14884extern "C" {
14885    pub fn Tss2_MU_INT64_Marshal(
14886        src: INT64,
14887        buffer: *mut u8,
14888        buffer_size: size_t,
14889        offset: *mut size_t,
14890    ) -> TSS2_RC;
14891}
14892extern "C" {
14893    pub fn Tss2_MU_INT64_Unmarshal(
14894        buffer: *const u8,
14895        buffer_size: size_t,
14896        offset: *mut size_t,
14897        dest: *mut INT64,
14898    ) -> TSS2_RC;
14899}
14900extern "C" {
14901    pub fn Tss2_MU_UINT8_Marshal(
14902        src: UINT8,
14903        buffer: *mut u8,
14904        buffer_size: size_t,
14905        offset: *mut size_t,
14906    ) -> TSS2_RC;
14907}
14908extern "C" {
14909    pub fn Tss2_MU_UINT8_Unmarshal(
14910        buffer: *const u8,
14911        buffer_size: size_t,
14912        offset: *mut size_t,
14913        dest: *mut UINT8,
14914    ) -> TSS2_RC;
14915}
14916extern "C" {
14917    pub fn Tss2_MU_UINT16_Marshal(
14918        src: UINT16,
14919        buffer: *mut u8,
14920        buffer_size: size_t,
14921        offset: *mut size_t,
14922    ) -> TSS2_RC;
14923}
14924extern "C" {
14925    pub fn Tss2_MU_UINT16_Unmarshal(
14926        buffer: *const u8,
14927        buffer_size: size_t,
14928        offset: *mut size_t,
14929        dest: *mut UINT16,
14930    ) -> TSS2_RC;
14931}
14932extern "C" {
14933    pub fn Tss2_MU_UINT32_Marshal(
14934        src: UINT32,
14935        buffer: *mut u8,
14936        buffer_size: size_t,
14937        offset: *mut size_t,
14938    ) -> TSS2_RC;
14939}
14940extern "C" {
14941    pub fn Tss2_MU_UINT32_Unmarshal(
14942        buffer: *const u8,
14943        buffer_size: size_t,
14944        offset: *mut size_t,
14945        dest: *mut UINT32,
14946    ) -> TSS2_RC;
14947}
14948extern "C" {
14949    pub fn Tss2_MU_UINT64_Marshal(
14950        src: UINT64,
14951        buffer: *mut u8,
14952        buffer_size: size_t,
14953        offset: *mut size_t,
14954    ) -> TSS2_RC;
14955}
14956extern "C" {
14957    pub fn Tss2_MU_UINT64_Unmarshal(
14958        buffer: *const u8,
14959        buffer_size: size_t,
14960        offset: *mut size_t,
14961        dest: *mut UINT64,
14962    ) -> TSS2_RC;
14963}
14964extern "C" {
14965    pub fn Tss2_MU_TPM2_CC_Marshal(
14966        src: TPM2_CC,
14967        buffer: *mut u8,
14968        buffer_size: size_t,
14969        offset: *mut size_t,
14970    ) -> TSS2_RC;
14971}
14972extern "C" {
14973    pub fn Tss2_MU_TPM2_CC_Unmarshal(
14974        buffer: *const u8,
14975        buffer_size: size_t,
14976        offset: *mut size_t,
14977        dest: *mut TPM2_CC,
14978    ) -> TSS2_RC;
14979}
14980extern "C" {
14981    pub fn Tss2_MU_TPM2_ST_Marshal(
14982        src: TPM2_ST,
14983        buffer: *mut u8,
14984        buffer_size: size_t,
14985        offset: *mut size_t,
14986    ) -> TSS2_RC;
14987}
14988extern "C" {
14989    pub fn Tss2_MU_TPM2_ST_Unmarshal(
14990        buffer: *const u8,
14991        buffer_size: size_t,
14992        offset: *mut size_t,
14993        dest: *mut TPM2_ST,
14994    ) -> TSS2_RC;
14995}
14996extern "C" {
14997    pub fn Tss2_MU_TPMA_ALGORITHM_Marshal(
14998        src: TPMA_ALGORITHM,
14999        buffer: *mut u8,
15000        buffer_size: size_t,
15001        offset: *mut size_t,
15002    ) -> TSS2_RC;
15003}
15004extern "C" {
15005    pub fn Tss2_MU_TPMA_ALGORITHM_Unmarshal(
15006        buffer: *const u8,
15007        buffer_size: size_t,
15008        offset: *mut size_t,
15009        dest: *mut TPMA_ALGORITHM,
15010    ) -> TSS2_RC;
15011}
15012extern "C" {
15013    pub fn Tss2_MU_TPMA_CC_Marshal(
15014        src: TPMA_CC,
15015        buffer: *mut u8,
15016        buffer_size: size_t,
15017        offset: *mut size_t,
15018    ) -> TSS2_RC;
15019}
15020extern "C" {
15021    pub fn Tss2_MU_TPMA_CC_Unmarshal(
15022        buffer: *const u8,
15023        buffer_size: size_t,
15024        offset: *mut size_t,
15025        dest: *mut TPMA_CC,
15026    ) -> TSS2_RC;
15027}
15028extern "C" {
15029    pub fn Tss2_MU_TPMA_LOCALITY_Marshal(
15030        src: TPMA_LOCALITY,
15031        buffer: *mut u8,
15032        buffer_size: size_t,
15033        offset: *mut size_t,
15034    ) -> TSS2_RC;
15035}
15036extern "C" {
15037    pub fn Tss2_MU_TPMA_LOCALITY_Unmarshal(
15038        buffer: *const u8,
15039        buffer_size: size_t,
15040        offset: *mut size_t,
15041        dest: *mut TPMA_LOCALITY,
15042    ) -> TSS2_RC;
15043}
15044extern "C" {
15045    pub fn Tss2_MU_TPMA_NV_Marshal(
15046        src: TPMA_NV,
15047        buffer: *mut u8,
15048        buffer_size: size_t,
15049        offset: *mut size_t,
15050    ) -> TSS2_RC;
15051}
15052extern "C" {
15053    pub fn Tss2_MU_TPMA_NV_Unmarshal(
15054        buffer: *const u8,
15055        buffer_size: size_t,
15056        offset: *mut size_t,
15057        dest: *mut TPMA_NV,
15058    ) -> TSS2_RC;
15059}
15060extern "C" {
15061    pub fn Tss2_MU_TPMA_OBJECT_Marshal(
15062        src: TPMA_OBJECT,
15063        buffer: *mut u8,
15064        buffer_size: size_t,
15065        offset: *mut size_t,
15066    ) -> TSS2_RC;
15067}
15068extern "C" {
15069    pub fn Tss2_MU_TPMA_OBJECT_Unmarshal(
15070        buffer: *const u8,
15071        buffer_size: size_t,
15072        offset: *mut size_t,
15073        dest: *mut TPMA_OBJECT,
15074    ) -> TSS2_RC;
15075}
15076extern "C" {
15077    pub fn Tss2_MU_TPMA_PERMANENT_Marshal(
15078        src: TPMA_PERMANENT,
15079        buffer: *mut u8,
15080        buffer_size: size_t,
15081        offset: *mut size_t,
15082    ) -> TSS2_RC;
15083}
15084extern "C" {
15085    pub fn Tss2_MU_TPMA_PERMANENT_Unmarshal(
15086        buffer: *const u8,
15087        buffer_size: size_t,
15088        offset: *mut size_t,
15089        dest: *mut TPMA_PERMANENT,
15090    ) -> TSS2_RC;
15091}
15092extern "C" {
15093    pub fn Tss2_MU_TPMA_SESSION_Marshal(
15094        src: TPMA_SESSION,
15095        buffer: *mut u8,
15096        buffer_size: size_t,
15097        offset: *mut size_t,
15098    ) -> TSS2_RC;
15099}
15100extern "C" {
15101    pub fn Tss2_MU_TPMA_SESSION_Unmarshal(
15102        buffer: *const u8,
15103        buffer_size: size_t,
15104        offset: *mut size_t,
15105        dest: *mut TPMA_SESSION,
15106    ) -> TSS2_RC;
15107}
15108extern "C" {
15109    pub fn Tss2_MU_TPMA_STARTUP_CLEAR_Marshal(
15110        src: TPMA_STARTUP_CLEAR,
15111        buffer: *mut u8,
15112        buffer_size: size_t,
15113        offset: *mut size_t,
15114    ) -> TSS2_RC;
15115}
15116extern "C" {
15117    pub fn Tss2_MU_TPMA_STARTUP_CLEAR_Unmarshal(
15118        buffer: *const u8,
15119        buffer_size: size_t,
15120        offset: *mut size_t,
15121        dest: *mut TPMA_STARTUP_CLEAR,
15122    ) -> TSS2_RC;
15123}
15124extern "C" {
15125    pub fn Tss2_MU_TPM2B_DIGEST_Marshal(
15126        src: *const TPM2B_DIGEST,
15127        buffer: *mut u8,
15128        buffer_size: size_t,
15129        offset: *mut size_t,
15130    ) -> TSS2_RC;
15131}
15132extern "C" {
15133    pub fn Tss2_MU_TPM2B_DIGEST_Unmarshal(
15134        buffer: *const u8,
15135        buffer_size: size_t,
15136        offset: *mut size_t,
15137        dest: *mut TPM2B_DIGEST,
15138    ) -> TSS2_RC;
15139}
15140extern "C" {
15141    pub fn Tss2_MU_TPM2B_ATTEST_Marshal(
15142        src: *const TPM2B_ATTEST,
15143        buffer: *mut u8,
15144        buffer_size: size_t,
15145        offset: *mut size_t,
15146    ) -> TSS2_RC;
15147}
15148extern "C" {
15149    pub fn Tss2_MU_TPM2B_ATTEST_Unmarshal(
15150        buffer: *const u8,
15151        buffer_size: size_t,
15152        offset: *mut size_t,
15153        dest: *mut TPM2B_ATTEST,
15154    ) -> TSS2_RC;
15155}
15156extern "C" {
15157    pub fn Tss2_MU_TPM2B_NAME_Marshal(
15158        src: *const TPM2B_NAME,
15159        buffer: *mut u8,
15160        buffer_size: size_t,
15161        offset: *mut size_t,
15162    ) -> TSS2_RC;
15163}
15164extern "C" {
15165    pub fn Tss2_MU_TPM2B_NAME_Unmarshal(
15166        buffer: *const u8,
15167        buffer_size: size_t,
15168        offset: *mut size_t,
15169        dest: *mut TPM2B_NAME,
15170    ) -> TSS2_RC;
15171}
15172extern "C" {
15173    pub fn Tss2_MU_TPM2B_MAX_NV_BUFFER_Marshal(
15174        src: *const TPM2B_MAX_NV_BUFFER,
15175        buffer: *mut u8,
15176        buffer_size: size_t,
15177        offset: *mut size_t,
15178    ) -> TSS2_RC;
15179}
15180extern "C" {
15181    pub fn Tss2_MU_TPM2B_MAX_NV_BUFFER_Unmarshal(
15182        buffer: *const u8,
15183        buffer_size: size_t,
15184        offset: *mut size_t,
15185        dest: *mut TPM2B_MAX_NV_BUFFER,
15186    ) -> TSS2_RC;
15187}
15188extern "C" {
15189    pub fn Tss2_MU_TPM2B_SENSITIVE_DATA_Marshal(
15190        src: *const TPM2B_SENSITIVE_DATA,
15191        buffer: *mut u8,
15192        buffer_size: size_t,
15193        offset: *mut size_t,
15194    ) -> TSS2_RC;
15195}
15196extern "C" {
15197    pub fn Tss2_MU_TPM2B_SENSITIVE_DATA_Unmarshal(
15198        buffer: *const u8,
15199        buffer_size: size_t,
15200        offset: *mut size_t,
15201        dest: *mut TPM2B_SENSITIVE_DATA,
15202    ) -> TSS2_RC;
15203}
15204extern "C" {
15205    pub fn Tss2_MU_TPM2B_ECC_PARAMETER_Marshal(
15206        src: *const TPM2B_ECC_PARAMETER,
15207        buffer: *mut u8,
15208        buffer_size: size_t,
15209        offset: *mut size_t,
15210    ) -> TSS2_RC;
15211}
15212extern "C" {
15213    pub fn Tss2_MU_TPM2B_ECC_PARAMETER_Unmarshal(
15214        buffer: *const u8,
15215        buffer_size: size_t,
15216        offset: *mut size_t,
15217        dest: *mut TPM2B_ECC_PARAMETER,
15218    ) -> TSS2_RC;
15219}
15220extern "C" {
15221    pub fn Tss2_MU_TPM2B_PUBLIC_KEY_RSA_Marshal(
15222        src: *const TPM2B_PUBLIC_KEY_RSA,
15223        buffer: *mut u8,
15224        buffer_size: size_t,
15225        offset: *mut size_t,
15226    ) -> TSS2_RC;
15227}
15228extern "C" {
15229    pub fn Tss2_MU_TPM2B_PUBLIC_KEY_RSA_Unmarshal(
15230        buffer: *const u8,
15231        buffer_size: size_t,
15232        offset: *mut size_t,
15233        dest: *mut TPM2B_PUBLIC_KEY_RSA,
15234    ) -> TSS2_RC;
15235}
15236extern "C" {
15237    pub fn Tss2_MU_TPM2B_PRIVATE_KEY_RSA_Marshal(
15238        src: *const TPM2B_PRIVATE_KEY_RSA,
15239        buffer: *mut u8,
15240        buffer_size: size_t,
15241        offset: *mut size_t,
15242    ) -> TSS2_RC;
15243}
15244extern "C" {
15245    pub fn Tss2_MU_TPM2B_PRIVATE_KEY_RSA_Unmarshal(
15246        buffer: *const u8,
15247        buffer_size: size_t,
15248        offset: *mut size_t,
15249        dest: *mut TPM2B_PRIVATE_KEY_RSA,
15250    ) -> TSS2_RC;
15251}
15252extern "C" {
15253    pub fn Tss2_MU_TPM2B_PRIVATE_Marshal(
15254        src: *const TPM2B_PRIVATE,
15255        buffer: *mut u8,
15256        buffer_size: size_t,
15257        offset: *mut size_t,
15258    ) -> TSS2_RC;
15259}
15260extern "C" {
15261    pub fn Tss2_MU_TPM2B_PRIVATE_Unmarshal(
15262        buffer: *const u8,
15263        buffer_size: size_t,
15264        offset: *mut size_t,
15265        dest: *mut TPM2B_PRIVATE,
15266    ) -> TSS2_RC;
15267}
15268extern "C" {
15269    pub fn Tss2_MU_TPM2B_CONTEXT_SENSITIVE_Marshal(
15270        src: *const TPM2B_CONTEXT_SENSITIVE,
15271        buffer: *mut u8,
15272        buffer_size: size_t,
15273        offset: *mut size_t,
15274    ) -> TSS2_RC;
15275}
15276extern "C" {
15277    pub fn Tss2_MU_TPM2B_CONTEXT_SENSITIVE_Unmarshal(
15278        buffer: *const u8,
15279        buffer_size: size_t,
15280        offset: *mut size_t,
15281        dest: *mut TPM2B_CONTEXT_SENSITIVE,
15282    ) -> TSS2_RC;
15283}
15284extern "C" {
15285    pub fn Tss2_MU_TPM2B_CONTEXT_DATA_Marshal(
15286        src: *const TPM2B_CONTEXT_DATA,
15287        buffer: *mut u8,
15288        buffer_size: size_t,
15289        offset: *mut size_t,
15290    ) -> TSS2_RC;
15291}
15292extern "C" {
15293    pub fn Tss2_MU_TPM2B_CONTEXT_DATA_Unmarshal(
15294        buffer: *const u8,
15295        buffer_size: size_t,
15296        offset: *mut size_t,
15297        dest: *mut TPM2B_CONTEXT_DATA,
15298    ) -> TSS2_RC;
15299}
15300extern "C" {
15301    pub fn Tss2_MU_TPM2B_DATA_Marshal(
15302        src: *const TPM2B_DATA,
15303        buffer: *mut u8,
15304        buffer_size: size_t,
15305        offset: *mut size_t,
15306    ) -> TSS2_RC;
15307}
15308extern "C" {
15309    pub fn Tss2_MU_TPM2B_DATA_Unmarshal(
15310        buffer: *const u8,
15311        buffer_size: size_t,
15312        offset: *mut size_t,
15313        dest: *mut TPM2B_DATA,
15314    ) -> TSS2_RC;
15315}
15316extern "C" {
15317    pub fn Tss2_MU_TPM2B_SYM_KEY_Marshal(
15318        src: *const TPM2B_SYM_KEY,
15319        buffer: *mut u8,
15320        buffer_size: size_t,
15321        offset: *mut size_t,
15322    ) -> TSS2_RC;
15323}
15324extern "C" {
15325    pub fn Tss2_MU_TPM2B_SYM_KEY_Unmarshal(
15326        buffer: *const u8,
15327        buffer_size: size_t,
15328        offset: *mut size_t,
15329        dest: *mut TPM2B_SYM_KEY,
15330    ) -> TSS2_RC;
15331}
15332extern "C" {
15333    pub fn Tss2_MU_TPM2B_ECC_POINT_Marshal(
15334        src: *const TPM2B_ECC_POINT,
15335        buffer: *mut u8,
15336        buffer_size: size_t,
15337        offset: *mut size_t,
15338    ) -> TSS2_RC;
15339}
15340extern "C" {
15341    pub fn Tss2_MU_TPM2B_ECC_POINT_Unmarshal(
15342        buffer: *const u8,
15343        buffer_size: size_t,
15344        offset: *mut size_t,
15345        dest: *mut TPM2B_ECC_POINT,
15346    ) -> TSS2_RC;
15347}
15348extern "C" {
15349    pub fn Tss2_MU_TPM2B_NV_PUBLIC_Marshal(
15350        src: *const TPM2B_NV_PUBLIC,
15351        buffer: *mut u8,
15352        buffer_size: size_t,
15353        offset: *mut size_t,
15354    ) -> TSS2_RC;
15355}
15356extern "C" {
15357    pub fn Tss2_MU_TPM2B_NV_PUBLIC_Unmarshal(
15358        buffer: *const u8,
15359        buffer_size: size_t,
15360        offset: *mut size_t,
15361        dest: *mut TPM2B_NV_PUBLIC,
15362    ) -> TSS2_RC;
15363}
15364extern "C" {
15365    pub fn Tss2_MU_TPM2B_SENSITIVE_Marshal(
15366        src: *const TPM2B_SENSITIVE,
15367        buffer: *mut u8,
15368        buffer_size: size_t,
15369        offset: *mut size_t,
15370    ) -> TSS2_RC;
15371}
15372extern "C" {
15373    pub fn Tss2_MU_TPM2B_SENSITIVE_Unmarshal(
15374        buffer: *const u8,
15375        buffer_size: size_t,
15376        offset: *mut size_t,
15377        dest: *mut TPM2B_SENSITIVE,
15378    ) -> TSS2_RC;
15379}
15380extern "C" {
15381    pub fn Tss2_MU_TPM2B_SENSITIVE_CREATE_Marshal(
15382        src: *const TPM2B_SENSITIVE_CREATE,
15383        buffer: *mut u8,
15384        buffer_size: size_t,
15385        offset: *mut size_t,
15386    ) -> TSS2_RC;
15387}
15388extern "C" {
15389    pub fn Tss2_MU_TPM2B_SENSITIVE_CREATE_Unmarshal(
15390        buffer: *const u8,
15391        buffer_size: size_t,
15392        offset: *mut size_t,
15393        dest: *mut TPM2B_SENSITIVE_CREATE,
15394    ) -> TSS2_RC;
15395}
15396extern "C" {
15397    pub fn Tss2_MU_TPM2B_CREATION_DATA_Marshal(
15398        src: *const TPM2B_CREATION_DATA,
15399        buffer: *mut u8,
15400        buffer_size: size_t,
15401        offset: *mut size_t,
15402    ) -> TSS2_RC;
15403}
15404extern "C" {
15405    pub fn Tss2_MU_TPM2B_CREATION_DATA_Unmarshal(
15406        buffer: *const u8,
15407        buffer_size: size_t,
15408        offset: *mut size_t,
15409        dest: *mut TPM2B_CREATION_DATA,
15410    ) -> TSS2_RC;
15411}
15412extern "C" {
15413    pub fn Tss2_MU_TPM2B_PUBLIC_Marshal(
15414        src: *const TPM2B_PUBLIC,
15415        buffer: *mut u8,
15416        buffer_size: size_t,
15417        offset: *mut size_t,
15418    ) -> TSS2_RC;
15419}
15420extern "C" {
15421    pub fn Tss2_MU_TPM2B_PUBLIC_Unmarshal(
15422        buffer: *const u8,
15423        buffer_size: size_t,
15424        offset: *mut size_t,
15425        dest: *mut TPM2B_PUBLIC,
15426    ) -> TSS2_RC;
15427}
15428extern "C" {
15429    pub fn Tss2_MU_TPM2B_ENCRYPTED_SECRET_Marshal(
15430        src: *const TPM2B_ENCRYPTED_SECRET,
15431        buffer: *mut u8,
15432        buffer_size: size_t,
15433        offset: *mut size_t,
15434    ) -> TSS2_RC;
15435}
15436extern "C" {
15437    pub fn Tss2_MU_TPM2B_ENCRYPTED_SECRET_Unmarshal(
15438        buffer: *const u8,
15439        buffer_size: size_t,
15440        offset: *mut size_t,
15441        dest: *mut TPM2B_ENCRYPTED_SECRET,
15442    ) -> TSS2_RC;
15443}
15444extern "C" {
15445    pub fn Tss2_MU_TPM2B_ID_OBJECT_Marshal(
15446        src: *const TPM2B_ID_OBJECT,
15447        buffer: *mut u8,
15448        buffer_size: size_t,
15449        offset: *mut size_t,
15450    ) -> TSS2_RC;
15451}
15452extern "C" {
15453    pub fn Tss2_MU_TPM2B_ID_OBJECT_Unmarshal(
15454        buffer: *const u8,
15455        buffer_size: size_t,
15456        offset: *mut size_t,
15457        dest: *mut TPM2B_ID_OBJECT,
15458    ) -> TSS2_RC;
15459}
15460extern "C" {
15461    pub fn Tss2_MU_TPM2B_IV_Marshal(
15462        src: *const TPM2B_IV,
15463        buffer: *mut u8,
15464        buffer_size: size_t,
15465        offset: *mut size_t,
15466    ) -> TSS2_RC;
15467}
15468extern "C" {
15469    pub fn Tss2_MU_TPM2B_IV_Unmarshal(
15470        buffer: *const u8,
15471        buffer_size: size_t,
15472        offset: *mut size_t,
15473        dest: *mut TPM2B_IV,
15474    ) -> TSS2_RC;
15475}
15476extern "C" {
15477    pub fn Tss2_MU_TPM2B_AUTH_Marshal(
15478        src: *const TPM2B_AUTH,
15479        buffer: *mut u8,
15480        buffer_size: size_t,
15481        offset: *mut size_t,
15482    ) -> TSS2_RC;
15483}
15484extern "C" {
15485    pub fn Tss2_MU_TPM2B_AUTH_Unmarshal(
15486        buffer: *const u8,
15487        buffer_size: size_t,
15488        offset: *mut size_t,
15489        dest: *mut TPM2B_AUTH,
15490    ) -> TSS2_RC;
15491}
15492extern "C" {
15493    pub fn Tss2_MU_TPM2B_EVENT_Marshal(
15494        src: *const TPM2B_EVENT,
15495        buffer: *mut u8,
15496        buffer_size: size_t,
15497        offset: *mut size_t,
15498    ) -> TSS2_RC;
15499}
15500extern "C" {
15501    pub fn Tss2_MU_TPM2B_EVENT_Unmarshal(
15502        buffer: *const u8,
15503        buffer_size: size_t,
15504        offset: *mut size_t,
15505        dest: *mut TPM2B_EVENT,
15506    ) -> TSS2_RC;
15507}
15508extern "C" {
15509    pub fn Tss2_MU_TPM2B_MAX_BUFFER_Marshal(
15510        src: *const TPM2B_MAX_BUFFER,
15511        buffer: *mut u8,
15512        buffer_size: size_t,
15513        offset: *mut size_t,
15514    ) -> TSS2_RC;
15515}
15516extern "C" {
15517    pub fn Tss2_MU_TPM2B_MAX_BUFFER_Unmarshal(
15518        buffer: *const u8,
15519        buffer_size: size_t,
15520        offset: *mut size_t,
15521        dest: *mut TPM2B_MAX_BUFFER,
15522    ) -> TSS2_RC;
15523}
15524extern "C" {
15525    pub fn Tss2_MU_TPM2B_NONCE_Marshal(
15526        src: *const TPM2B_NONCE,
15527        buffer: *mut u8,
15528        buffer_size: size_t,
15529        offset: *mut size_t,
15530    ) -> TSS2_RC;
15531}
15532extern "C" {
15533    pub fn Tss2_MU_TPM2B_NONCE_Unmarshal(
15534        buffer: *const u8,
15535        buffer_size: size_t,
15536        offset: *mut size_t,
15537        dest: *mut TPM2B_NONCE,
15538    ) -> TSS2_RC;
15539}
15540extern "C" {
15541    pub fn Tss2_MU_TPM2B_OPERAND_Marshal(
15542        src: *const TPM2B_OPERAND,
15543        buffer: *mut u8,
15544        buffer_size: size_t,
15545        offset: *mut size_t,
15546    ) -> TSS2_RC;
15547}
15548extern "C" {
15549    pub fn Tss2_MU_TPM2B_OPERAND_Unmarshal(
15550        buffer: *const u8,
15551        buffer_size: size_t,
15552        offset: *mut size_t,
15553        dest: *mut TPM2B_OPERAND,
15554    ) -> TSS2_RC;
15555}
15556extern "C" {
15557    pub fn Tss2_MU_TPM2B_TIMEOUT_Marshal(
15558        src: *const TPM2B_TIMEOUT,
15559        buffer: *mut u8,
15560        buffer_size: size_t,
15561        offset: *mut size_t,
15562    ) -> TSS2_RC;
15563}
15564extern "C" {
15565    pub fn Tss2_MU_TPM2B_TIMEOUT_Unmarshal(
15566        buffer: *const u8,
15567        buffer_size: size_t,
15568        offset: *mut size_t,
15569        dest: *mut TPM2B_TIMEOUT,
15570    ) -> TSS2_RC;
15571}
15572extern "C" {
15573    pub fn Tss2_MU_TPM2B_TEMPLATE_Marshal(
15574        src: *const TPM2B_TEMPLATE,
15575        buffer: *mut u8,
15576        buffer_size: size_t,
15577        offset: *mut size_t,
15578    ) -> TSS2_RC;
15579}
15580extern "C" {
15581    pub fn Tss2_MU_TPM2B_TEMPLATE_Unmarshal(
15582        buffer: *const u8,
15583        buffer_size: size_t,
15584        offset: *mut size_t,
15585        dest: *mut TPM2B_TEMPLATE,
15586    ) -> TSS2_RC;
15587}
15588extern "C" {
15589    pub fn Tss2_MU_TPMS_CONTEXT_Marshal(
15590        src: *const TPMS_CONTEXT,
15591        buffer: *mut u8,
15592        buffer_size: size_t,
15593        offset: *mut size_t,
15594    ) -> TSS2_RC;
15595}
15596extern "C" {
15597    pub fn Tss2_MU_TPMS_CONTEXT_Unmarshal(
15598        buffer: *const u8,
15599        buffer_size: size_t,
15600        offset: *mut size_t,
15601        dest: *mut TPMS_CONTEXT,
15602    ) -> TSS2_RC;
15603}
15604extern "C" {
15605    pub fn Tss2_MU_TPMS_TIME_INFO_Marshal(
15606        src: *const TPMS_TIME_INFO,
15607        buffer: *mut u8,
15608        buffer_size: size_t,
15609        offset: *mut size_t,
15610    ) -> TSS2_RC;
15611}
15612extern "C" {
15613    pub fn Tss2_MU_TPMS_TIME_INFO_Unmarshal(
15614        buffer: *const u8,
15615        buffer_size: size_t,
15616        offset: *mut size_t,
15617        dest: *mut TPMS_TIME_INFO,
15618    ) -> TSS2_RC;
15619}
15620extern "C" {
15621    pub fn Tss2_MU_TPMS_ECC_POINT_Marshal(
15622        src: *const TPMS_ECC_POINT,
15623        buffer: *mut u8,
15624        buffer_size: size_t,
15625        offset: *mut size_t,
15626    ) -> TSS2_RC;
15627}
15628extern "C" {
15629    pub fn Tss2_MU_TPMS_ECC_POINT_Unmarshal(
15630        buffer: *const u8,
15631        buffer_size: size_t,
15632        offset: *mut size_t,
15633        dest: *mut TPMS_ECC_POINT,
15634    ) -> TSS2_RC;
15635}
15636extern "C" {
15637    pub fn Tss2_MU_TPMS_NV_PUBLIC_Marshal(
15638        src: *const TPMS_NV_PUBLIC,
15639        buffer: *mut u8,
15640        buffer_size: size_t,
15641        offset: *mut size_t,
15642    ) -> TSS2_RC;
15643}
15644extern "C" {
15645    pub fn Tss2_MU_TPMS_NV_PUBLIC_Unmarshal(
15646        buffer: *const u8,
15647        buffer_size: size_t,
15648        offset: *mut size_t,
15649        dest: *mut TPMS_NV_PUBLIC,
15650    ) -> TSS2_RC;
15651}
15652extern "C" {
15653    pub fn Tss2_MU_TPMS_ALG_PROPERTY_Marshal(
15654        src: *const TPMS_ALG_PROPERTY,
15655        buffer: *mut u8,
15656        buffer_size: size_t,
15657        offset: *mut size_t,
15658    ) -> TSS2_RC;
15659}
15660extern "C" {
15661    pub fn Tss2_MU_TPMS_ALG_PROPERTY_Unmarshal(
15662        buffer: *const u8,
15663        buffer_size: size_t,
15664        offset: *mut size_t,
15665        dest: *mut TPMS_ALG_PROPERTY,
15666    ) -> TSS2_RC;
15667}
15668extern "C" {
15669    pub fn Tss2_MU_TPMS_TAGGED_PROPERTY_Marshal(
15670        src: *const TPMS_TAGGED_PROPERTY,
15671        buffer: *mut u8,
15672        buffer_size: size_t,
15673        offset: *mut size_t,
15674    ) -> TSS2_RC;
15675}
15676extern "C" {
15677    pub fn Tss2_MU_TPMS_TAGGED_PROPERTY_Unmarshal(
15678        buffer: *const u8,
15679        buffer_size: size_t,
15680        offset: *mut size_t,
15681        dest: *mut TPMS_TAGGED_PROPERTY,
15682    ) -> TSS2_RC;
15683}
15684extern "C" {
15685    pub fn Tss2_MU_TPMS_TAGGED_POLICY_Marshal(
15686        src: *const TPMS_TAGGED_POLICY,
15687        buffer: *mut u8,
15688        buffer_size: size_t,
15689        offset: *mut size_t,
15690    ) -> TSS2_RC;
15691}
15692extern "C" {
15693    pub fn Tss2_MU_TPMS_TAGGED_POLICY_Unmarshal(
15694        buffer: *const u8,
15695        buffer_size: size_t,
15696        offset: *mut size_t,
15697        dest: *mut TPMS_TAGGED_POLICY,
15698    ) -> TSS2_RC;
15699}
15700extern "C" {
15701    pub fn Tss2_MU_TPMS_CLOCK_INFO_Marshal(
15702        src: *const TPMS_CLOCK_INFO,
15703        buffer: *mut u8,
15704        buffer_size: size_t,
15705        offset: *mut size_t,
15706    ) -> TSS2_RC;
15707}
15708extern "C" {
15709    pub fn Tss2_MU_TPMS_CLOCK_INFO_Unmarshal(
15710        buffer: *const u8,
15711        buffer_size: size_t,
15712        offset: *mut size_t,
15713        dest: *mut TPMS_CLOCK_INFO,
15714    ) -> TSS2_RC;
15715}
15716extern "C" {
15717    pub fn Tss2_MU_TPMS_TIME_ATTEST_INFO_Marshal(
15718        src: *const TPMS_TIME_ATTEST_INFO,
15719        buffer: *mut u8,
15720        buffer_size: size_t,
15721        offset: *mut size_t,
15722    ) -> TSS2_RC;
15723}
15724extern "C" {
15725    pub fn Tss2_MU_TPMS_TIME_ATTEST_INFO_Unmarshal(
15726        buffer: *const u8,
15727        buffer_size: size_t,
15728        offset: *mut size_t,
15729        dest: *mut TPMS_TIME_ATTEST_INFO,
15730    ) -> TSS2_RC;
15731}
15732extern "C" {
15733    pub fn Tss2_MU_TPMS_CERTIFY_INFO_Marshal(
15734        src: *const TPMS_CERTIFY_INFO,
15735        buffer: *mut u8,
15736        buffer_size: size_t,
15737        offset: *mut size_t,
15738    ) -> TSS2_RC;
15739}
15740extern "C" {
15741    pub fn Tss2_MU_TPMS_CERTIFY_INFO_Unmarshal(
15742        buffer: *const u8,
15743        buffer_size: size_t,
15744        offset: *mut size_t,
15745        dest: *mut TPMS_CERTIFY_INFO,
15746    ) -> TSS2_RC;
15747}
15748extern "C" {
15749    pub fn Tss2_MU_TPMS_COMMAND_AUDIT_INFO_Marshal(
15750        src: *const TPMS_COMMAND_AUDIT_INFO,
15751        buffer: *mut u8,
15752        buffer_size: size_t,
15753        offset: *mut size_t,
15754    ) -> TSS2_RC;
15755}
15756extern "C" {
15757    pub fn Tss2_MU_TPMS_COMMAND_AUDIT_INFO_Unmarshal(
15758        buffer: *const u8,
15759        buffer_size: size_t,
15760        offset: *mut size_t,
15761        dest: *mut TPMS_COMMAND_AUDIT_INFO,
15762    ) -> TSS2_RC;
15763}
15764extern "C" {
15765    pub fn Tss2_MU_TPMS_SESSION_AUDIT_INFO_Marshal(
15766        src: *const TPMS_SESSION_AUDIT_INFO,
15767        buffer: *mut u8,
15768        buffer_size: size_t,
15769        offset: *mut size_t,
15770    ) -> TSS2_RC;
15771}
15772extern "C" {
15773    pub fn Tss2_MU_TPMS_SESSION_AUDIT_INFO_Unmarshal(
15774        buffer: *const u8,
15775        buffer_size: size_t,
15776        offset: *mut size_t,
15777        dest: *mut TPMS_SESSION_AUDIT_INFO,
15778    ) -> TSS2_RC;
15779}
15780extern "C" {
15781    pub fn Tss2_MU_TPMS_CREATION_INFO_Marshal(
15782        src: *const TPMS_CREATION_INFO,
15783        buffer: *mut u8,
15784        buffer_size: size_t,
15785        offset: *mut size_t,
15786    ) -> TSS2_RC;
15787}
15788extern "C" {
15789    pub fn Tss2_MU_TPMS_CREATION_INFO_Unmarshal(
15790        buffer: *const u8,
15791        buffer_size: size_t,
15792        offset: *mut size_t,
15793        dest: *mut TPMS_CREATION_INFO,
15794    ) -> TSS2_RC;
15795}
15796extern "C" {
15797    pub fn Tss2_MU_TPMS_NV_CERTIFY_INFO_Marshal(
15798        src: *const TPMS_NV_CERTIFY_INFO,
15799        buffer: *mut u8,
15800        buffer_size: size_t,
15801        offset: *mut size_t,
15802    ) -> TSS2_RC;
15803}
15804extern "C" {
15805    pub fn Tss2_MU_TPMS_NV_CERTIFY_INFO_Unmarshal(
15806        buffer: *const u8,
15807        buffer_size: size_t,
15808        offset: *mut size_t,
15809        dest: *mut TPMS_NV_CERTIFY_INFO,
15810    ) -> TSS2_RC;
15811}
15812extern "C" {
15813    pub fn Tss2_MU_TPMS_AUTH_COMMAND_Marshal(
15814        src: *const TPMS_AUTH_COMMAND,
15815        buffer: *mut u8,
15816        buffer_size: size_t,
15817        offset: *mut size_t,
15818    ) -> TSS2_RC;
15819}
15820extern "C" {
15821    pub fn Tss2_MU_TPMS_AUTH_COMMAND_Unmarshal(
15822        buffer: *const u8,
15823        buffer_size: size_t,
15824        offset: *mut size_t,
15825        dest: *mut TPMS_AUTH_COMMAND,
15826    ) -> TSS2_RC;
15827}
15828extern "C" {
15829    pub fn Tss2_MU_TPMS_AUTH_RESPONSE_Marshal(
15830        src: *const TPMS_AUTH_RESPONSE,
15831        buffer: *mut u8,
15832        buffer_size: size_t,
15833        offset: *mut size_t,
15834    ) -> TSS2_RC;
15835}
15836extern "C" {
15837    pub fn Tss2_MU_TPMS_AUTH_RESPONSE_Unmarshal(
15838        buffer: *const u8,
15839        buffer_size: size_t,
15840        offset: *mut size_t,
15841        dest: *mut TPMS_AUTH_RESPONSE,
15842    ) -> TSS2_RC;
15843}
15844extern "C" {
15845    pub fn Tss2_MU_TPMS_SENSITIVE_CREATE_Marshal(
15846        src: *const TPMS_SENSITIVE_CREATE,
15847        buffer: *mut u8,
15848        buffer_size: size_t,
15849        offset: *mut size_t,
15850    ) -> TSS2_RC;
15851}
15852extern "C" {
15853    pub fn Tss2_MU_TPMS_SENSITIVE_CREATE_Unmarshal(
15854        buffer: *const u8,
15855        buffer_size: size_t,
15856        offset: *mut size_t,
15857        dest: *mut TPMS_SENSITIVE_CREATE,
15858    ) -> TSS2_RC;
15859}
15860extern "C" {
15861    pub fn Tss2_MU_TPMS_SCHEME_HASH_Marshal(
15862        src: *const TPMS_SCHEME_HASH,
15863        buffer: *mut u8,
15864        buffer_size: size_t,
15865        offset: *mut size_t,
15866    ) -> TSS2_RC;
15867}
15868extern "C" {
15869    pub fn Tss2_MU_TPMS_SCHEME_HASH_Unmarshal(
15870        buffer: *const u8,
15871        buffer_size: size_t,
15872        offset: *mut size_t,
15873        dest: *mut TPMS_SCHEME_HASH,
15874    ) -> TSS2_RC;
15875}
15876extern "C" {
15877    pub fn Tss2_MU_TPMS_SCHEME_ECDAA_Marshal(
15878        src: *const TPMS_SCHEME_ECDAA,
15879        buffer: *mut u8,
15880        buffer_size: size_t,
15881        offset: *mut size_t,
15882    ) -> TSS2_RC;
15883}
15884extern "C" {
15885    pub fn Tss2_MU_TPMS_SCHEME_ECDAA_Unmarshal(
15886        buffer: *const u8,
15887        buffer_size: size_t,
15888        offset: *mut size_t,
15889        dest: *mut TPMS_SCHEME_ECDAA,
15890    ) -> TSS2_RC;
15891}
15892extern "C" {
15893    pub fn Tss2_MU_TPMS_SCHEME_XOR_Marshal(
15894        src: *const TPMS_SCHEME_XOR,
15895        buffer: *mut u8,
15896        buffer_size: size_t,
15897        offset: *mut size_t,
15898    ) -> TSS2_RC;
15899}
15900extern "C" {
15901    pub fn Tss2_MU_TPMS_SCHEME_XOR_Unmarshal(
15902        buffer: *const u8,
15903        buffer_size: size_t,
15904        offset: *mut size_t,
15905        dest: *mut TPMS_SCHEME_XOR,
15906    ) -> TSS2_RC;
15907}
15908extern "C" {
15909    pub fn Tss2_MU_TPMS_SIGNATURE_RSA_Marshal(
15910        src: *const TPMS_SIGNATURE_RSA,
15911        buffer: *mut u8,
15912        buffer_size: size_t,
15913        offset: *mut size_t,
15914    ) -> TSS2_RC;
15915}
15916extern "C" {
15917    pub fn Tss2_MU_TPMS_SIGNATURE_RSA_Unmarshal(
15918        buffer: *const u8,
15919        buffer_size: size_t,
15920        offset: *mut size_t,
15921        dest: *mut TPMS_SIGNATURE_RSA,
15922    ) -> TSS2_RC;
15923}
15924extern "C" {
15925    pub fn Tss2_MU_TPMS_SIGNATURE_ECC_Marshal(
15926        src: *const TPMS_SIGNATURE_ECC,
15927        buffer: *mut u8,
15928        buffer_size: size_t,
15929        offset: *mut size_t,
15930    ) -> TSS2_RC;
15931}
15932extern "C" {
15933    pub fn Tss2_MU_TPMS_SIGNATURE_ECC_Unmarshal(
15934        buffer: *const u8,
15935        buffer_size: size_t,
15936        offset: *mut size_t,
15937        dest: *mut TPMS_SIGNATURE_ECC,
15938    ) -> TSS2_RC;
15939}
15940extern "C" {
15941    pub fn Tss2_MU_TPMS_NV_PIN_COUNTER_PARAMETERS_Marshal(
15942        src: *const TPMS_NV_PIN_COUNTER_PARAMETERS,
15943        buffer: *mut u8,
15944        buffer_size: size_t,
15945        offset: *mut size_t,
15946    ) -> TSS2_RC;
15947}
15948extern "C" {
15949    pub fn Tss2_MU_TPMS_NV_PIN_COUNTER_PARAMETERS_Unmarshal(
15950        buffer: *const u8,
15951        buffer_size: size_t,
15952        offset: *mut size_t,
15953        dest: *mut TPMS_NV_PIN_COUNTER_PARAMETERS,
15954    ) -> TSS2_RC;
15955}
15956extern "C" {
15957    pub fn Tss2_MU_TPMS_CONTEXT_DATA_Marshal(
15958        src: *const TPMS_CONTEXT_DATA,
15959        buffer: *mut u8,
15960        buffer_size: size_t,
15961        offset: *mut size_t,
15962    ) -> TSS2_RC;
15963}
15964extern "C" {
15965    pub fn Tss2_MU_TPMS_CONTEXT_DATA_Unmarshal(
15966        buffer: *const u8,
15967        buffer_size: size_t,
15968        offset: *mut size_t,
15969        dest: *mut TPMS_CONTEXT_DATA,
15970    ) -> TSS2_RC;
15971}
15972extern "C" {
15973    pub fn Tss2_MU_TPMS_PCR_SELECT_Marshal(
15974        src: *const TPMS_PCR_SELECT,
15975        buffer: *mut u8,
15976        buffer_size: size_t,
15977        offset: *mut size_t,
15978    ) -> TSS2_RC;
15979}
15980extern "C" {
15981    pub fn Tss2_MU_TPMS_PCR_SELECT_Unmarshal(
15982        buffer: *const u8,
15983        buffer_size: size_t,
15984        offset: *mut size_t,
15985        dest: *mut TPMS_PCR_SELECT,
15986    ) -> TSS2_RC;
15987}
15988extern "C" {
15989    pub fn Tss2_MU_TPMS_PCR_SELECTION_Marshal(
15990        src: *const TPMS_PCR_SELECTION,
15991        buffer: *mut u8,
15992        buffer_size: size_t,
15993        offset: *mut size_t,
15994    ) -> TSS2_RC;
15995}
15996extern "C" {
15997    pub fn Tss2_MU_TPMS_PCR_SELECTION_Unmarshal(
15998        buffer: *const u8,
15999        buffer_size: size_t,
16000        offset: *mut size_t,
16001        dest: *mut TPMS_PCR_SELECTION,
16002    ) -> TSS2_RC;
16003}
16004extern "C" {
16005    pub fn Tss2_MU_TPMS_TAGGED_PCR_SELECT_Marshal(
16006        src: *const TPMS_TAGGED_PCR_SELECT,
16007        buffer: *mut u8,
16008        buffer_size: size_t,
16009        offset: *mut size_t,
16010    ) -> TSS2_RC;
16011}
16012extern "C" {
16013    pub fn Tss2_MU_TPMS_TAGGED_PCR_SELECT_Unmarshal(
16014        buffer: *const u8,
16015        buffer_size: size_t,
16016        offset: *mut size_t,
16017        dest: *mut TPMS_TAGGED_PCR_SELECT,
16018    ) -> TSS2_RC;
16019}
16020extern "C" {
16021    pub fn Tss2_MU_TPMS_QUOTE_INFO_Marshal(
16022        src: *const TPMS_QUOTE_INFO,
16023        buffer: *mut u8,
16024        buffer_size: size_t,
16025        offset: *mut size_t,
16026    ) -> TSS2_RC;
16027}
16028extern "C" {
16029    pub fn Tss2_MU_TPMS_QUOTE_INFO_Unmarshal(
16030        buffer: *const u8,
16031        buffer_size: size_t,
16032        offset: *mut size_t,
16033        dest: *mut TPMS_QUOTE_INFO,
16034    ) -> TSS2_RC;
16035}
16036extern "C" {
16037    pub fn Tss2_MU_TPMS_CREATION_DATA_Marshal(
16038        src: *const TPMS_CREATION_DATA,
16039        buffer: *mut u8,
16040        buffer_size: size_t,
16041        offset: *mut size_t,
16042    ) -> TSS2_RC;
16043}
16044extern "C" {
16045    pub fn Tss2_MU_TPMS_CREATION_DATA_Unmarshal(
16046        buffer: *const u8,
16047        buffer_size: size_t,
16048        offset: *mut size_t,
16049        dest: *mut TPMS_CREATION_DATA,
16050    ) -> TSS2_RC;
16051}
16052extern "C" {
16053    pub fn Tss2_MU_TPMS_ECC_PARMS_Marshal(
16054        src: *const TPMS_ECC_PARMS,
16055        buffer: *mut u8,
16056        buffer_size: size_t,
16057        offset: *mut size_t,
16058    ) -> TSS2_RC;
16059}
16060extern "C" {
16061    pub fn Tss2_MU_TPMS_ECC_PARMS_Unmarshal(
16062        buffer: *const u8,
16063        buffer_size: size_t,
16064        offset: *mut size_t,
16065        dest: *mut TPMS_ECC_PARMS,
16066    ) -> TSS2_RC;
16067}
16068extern "C" {
16069    pub fn Tss2_MU_TPMS_ATTEST_Marshal(
16070        src: *const TPMS_ATTEST,
16071        buffer: *mut u8,
16072        buffer_size: size_t,
16073        offset: *mut size_t,
16074    ) -> TSS2_RC;
16075}
16076extern "C" {
16077    pub fn Tss2_MU_TPMS_ATTEST_Unmarshal(
16078        buffer: *const u8,
16079        buffer_size: size_t,
16080        offset: *mut size_t,
16081        dest: *mut TPMS_ATTEST,
16082    ) -> TSS2_RC;
16083}
16084extern "C" {
16085    pub fn Tss2_MU_TPMS_ALGORITHM_DETAIL_ECC_Marshal(
16086        src: *const TPMS_ALGORITHM_DETAIL_ECC,
16087        buffer: *mut u8,
16088        buffer_size: size_t,
16089        offset: *mut size_t,
16090    ) -> TSS2_RC;
16091}
16092extern "C" {
16093    pub fn Tss2_MU_TPMS_ALGORITHM_DETAIL_ECC_Unmarshal(
16094        buffer: *const u8,
16095        buffer_size: size_t,
16096        offset: *mut size_t,
16097        dest: *mut TPMS_ALGORITHM_DETAIL_ECC,
16098    ) -> TSS2_RC;
16099}
16100extern "C" {
16101    pub fn Tss2_MU_TPMS_CAPABILITY_DATA_Marshal(
16102        src: *const TPMS_CAPABILITY_DATA,
16103        buffer: *mut u8,
16104        buffer_size: size_t,
16105        offset: *mut size_t,
16106    ) -> TSS2_RC;
16107}
16108extern "C" {
16109    pub fn Tss2_MU_TPMS_CAPABILITY_DATA_Unmarshal(
16110        buffer: *const u8,
16111        buffer_size: size_t,
16112        offset: *mut size_t,
16113        dest: *mut TPMS_CAPABILITY_DATA,
16114    ) -> TSS2_RC;
16115}
16116extern "C" {
16117    pub fn Tss2_MU_TPMS_KEYEDHASH_PARMS_Marshal(
16118        src: *const TPMS_KEYEDHASH_PARMS,
16119        buffer: *mut u8,
16120        buffer_size: size_t,
16121        offset: *mut size_t,
16122    ) -> TSS2_RC;
16123}
16124extern "C" {
16125    pub fn Tss2_MU_TPMS_KEYEDHASH_PARMS_Unmarshal(
16126        buffer: *const u8,
16127        buffer_size: size_t,
16128        offset: *mut size_t,
16129        dest: *mut TPMS_KEYEDHASH_PARMS,
16130    ) -> TSS2_RC;
16131}
16132extern "C" {
16133    pub fn Tss2_MU_TPMS_RSA_PARMS_Marshal(
16134        src: *const TPMS_RSA_PARMS,
16135        buffer: *mut u8,
16136        buffer_size: size_t,
16137        offset: *mut size_t,
16138    ) -> TSS2_RC;
16139}
16140extern "C" {
16141    pub fn Tss2_MU_TPMS_RSA_PARMS_Unmarshal(
16142        buffer: *const u8,
16143        buffer_size: size_t,
16144        offset: *mut size_t,
16145        dest: *mut TPMS_RSA_PARMS,
16146    ) -> TSS2_RC;
16147}
16148extern "C" {
16149    pub fn Tss2_MU_TPMS_SYMCIPHER_PARMS_Marshal(
16150        src: *const TPMS_SYMCIPHER_PARMS,
16151        buffer: *mut u8,
16152        buffer_size: size_t,
16153        offset: *mut size_t,
16154    ) -> TSS2_RC;
16155}
16156extern "C" {
16157    pub fn Tss2_MU_TPMS_SYMCIPHER_PARMS_Unmarshal(
16158        buffer: *const u8,
16159        buffer_size: size_t,
16160        offset: *mut size_t,
16161        dest: *mut TPMS_SYMCIPHER_PARMS,
16162    ) -> TSS2_RC;
16163}
16164extern "C" {
16165    pub fn Tss2_MU_TPMS_AC_OUTPUT_Marshal(
16166        src: *const TPMS_AC_OUTPUT,
16167        buffer: *mut u8,
16168        buffer_size: size_t,
16169        offset: *mut size_t,
16170    ) -> TSS2_RC;
16171}
16172extern "C" {
16173    pub fn Tss2_MU_TPMS_AC_OUTPUT_Unmarshal(
16174        buffer: *const u8,
16175        buffer_size: size_t,
16176        offset: *mut size_t,
16177        dest: *mut TPMS_AC_OUTPUT,
16178    ) -> TSS2_RC;
16179}
16180extern "C" {
16181    pub fn Tss2_MU_TPMS_ID_OBJECT_Marshal(
16182        src: *const TPMS_ID_OBJECT,
16183        buffer: *mut u8,
16184        buffer_size: size_t,
16185        offset: *mut size_t,
16186    ) -> TSS2_RC;
16187}
16188extern "C" {
16189    pub fn Tss2_MU_TPMS_ID_OBJECT_Unmarshal(
16190        buffer: *const u8,
16191        buffer_size: size_t,
16192        offset: *mut size_t,
16193        dest: *mut TPMS_ID_OBJECT,
16194    ) -> TSS2_RC;
16195}
16196extern "C" {
16197    pub fn Tss2_MU_TPMS_ACT_DATA_Marshal(
16198        src: *const TPMS_ACT_DATA,
16199        buffer: *mut u8,
16200        buffer_size: size_t,
16201        offset: *mut size_t,
16202    ) -> TSS2_RC;
16203}
16204extern "C" {
16205    pub fn Tss2_MU_TPMS_ACT_DATA_Unmarshal(
16206        buffer: *const u8,
16207        buffer_size: size_t,
16208        offset: *mut size_t,
16209        dest: *mut TPMS_ACT_DATA,
16210    ) -> TSS2_RC;
16211}
16212extern "C" {
16213    pub fn Tss2_MU_TPMS_NV_DIGEST_CERTIFY_INFO_Marshal(
16214        src: *const TPMS_NV_DIGEST_CERTIFY_INFO,
16215        buffer: *mut u8,
16216        buffer_size: size_t,
16217        offset: *mut size_t,
16218    ) -> TSS2_RC;
16219}
16220extern "C" {
16221    pub fn Tss2_MU_TPMS_NV_DIGEST_CERTIFY_INFO_Unmarshal(
16222        buffer: *const u8,
16223        buffer_size: size_t,
16224        offset: *mut size_t,
16225        dest: *mut TPMS_NV_DIGEST_CERTIFY_INFO,
16226    ) -> TSS2_RC;
16227}
16228extern "C" {
16229    pub fn Tss2_MU_TPML_CC_Marshal(
16230        src: *const TPML_CC,
16231        buffer: *mut u8,
16232        buffer_size: size_t,
16233        offset: *mut size_t,
16234    ) -> TSS2_RC;
16235}
16236extern "C" {
16237    pub fn Tss2_MU_TPML_CC_Unmarshal(
16238        buffer: *const u8,
16239        buffer_size: size_t,
16240        offset: *mut size_t,
16241        dest: *mut TPML_CC,
16242    ) -> TSS2_RC;
16243}
16244extern "C" {
16245    pub fn Tss2_MU_TPML_CCA_Marshal(
16246        src: *const TPML_CCA,
16247        buffer: *mut u8,
16248        buffer_size: size_t,
16249        offset: *mut size_t,
16250    ) -> TSS2_RC;
16251}
16252extern "C" {
16253    pub fn Tss2_MU_TPML_CCA_Unmarshal(
16254        buffer: *const u8,
16255        buffer_size: size_t,
16256        offset: *mut size_t,
16257        dest: *mut TPML_CCA,
16258    ) -> TSS2_RC;
16259}
16260extern "C" {
16261    pub fn Tss2_MU_TPML_ALG_Marshal(
16262        src: *const TPML_ALG,
16263        buffer: *mut u8,
16264        buffer_size: size_t,
16265        offset: *mut size_t,
16266    ) -> TSS2_RC;
16267}
16268extern "C" {
16269    pub fn Tss2_MU_TPML_ALG_Unmarshal(
16270        buffer: *const u8,
16271        buffer_size: size_t,
16272        offset: *mut size_t,
16273        dest: *mut TPML_ALG,
16274    ) -> TSS2_RC;
16275}
16276extern "C" {
16277    pub fn Tss2_MU_TPML_HANDLE_Marshal(
16278        src: *const TPML_HANDLE,
16279        buffer: *mut u8,
16280        buffer_size: size_t,
16281        offset: *mut size_t,
16282    ) -> TSS2_RC;
16283}
16284extern "C" {
16285    pub fn Tss2_MU_TPML_HANDLE_Unmarshal(
16286        buffer: *const u8,
16287        buffer_size: size_t,
16288        offset: *mut size_t,
16289        dest: *mut TPML_HANDLE,
16290    ) -> TSS2_RC;
16291}
16292extern "C" {
16293    pub fn Tss2_MU_TPML_DIGEST_Marshal(
16294        src: *const TPML_DIGEST,
16295        buffer: *mut u8,
16296        buffer_size: size_t,
16297        offset: *mut size_t,
16298    ) -> TSS2_RC;
16299}
16300extern "C" {
16301    pub fn Tss2_MU_TPML_DIGEST_Unmarshal(
16302        buffer: *const u8,
16303        buffer_size: size_t,
16304        offset: *mut size_t,
16305        dest: *mut TPML_DIGEST,
16306    ) -> TSS2_RC;
16307}
16308extern "C" {
16309    pub fn Tss2_MU_TPML_DIGEST_VALUES_Marshal(
16310        src: *const TPML_DIGEST_VALUES,
16311        buffer: *mut u8,
16312        buffer_size: size_t,
16313        offset: *mut size_t,
16314    ) -> TSS2_RC;
16315}
16316extern "C" {
16317    pub fn Tss2_MU_TPML_DIGEST_VALUES_Unmarshal(
16318        buffer: *const u8,
16319        buffer_size: size_t,
16320        offset: *mut size_t,
16321        dest: *mut TPML_DIGEST_VALUES,
16322    ) -> TSS2_RC;
16323}
16324extern "C" {
16325    pub fn Tss2_MU_TPML_PCR_SELECTION_Marshal(
16326        src: *const TPML_PCR_SELECTION,
16327        buffer: *mut u8,
16328        buffer_size: size_t,
16329        offset: *mut size_t,
16330    ) -> TSS2_RC;
16331}
16332extern "C" {
16333    pub fn Tss2_MU_TPML_PCR_SELECTION_Unmarshal(
16334        buffer: *const u8,
16335        buffer_size: size_t,
16336        offset: *mut size_t,
16337        dest: *mut TPML_PCR_SELECTION,
16338    ) -> TSS2_RC;
16339}
16340extern "C" {
16341    pub fn Tss2_MU_TPML_ALG_PROPERTY_Marshal(
16342        src: *const TPML_ALG_PROPERTY,
16343        buffer: *mut u8,
16344        buffer_size: size_t,
16345        offset: *mut size_t,
16346    ) -> TSS2_RC;
16347}
16348extern "C" {
16349    pub fn Tss2_MU_TPML_ALG_PROPERTY_Unmarshal(
16350        buffer: *const u8,
16351        buffer_size: size_t,
16352        offset: *mut size_t,
16353        dest: *mut TPML_ALG_PROPERTY,
16354    ) -> TSS2_RC;
16355}
16356extern "C" {
16357    pub fn Tss2_MU_TPML_ECC_CURVE_Marshal(
16358        src: *const TPML_ECC_CURVE,
16359        buffer: *mut u8,
16360        buffer_size: size_t,
16361        offset: *mut size_t,
16362    ) -> TSS2_RC;
16363}
16364extern "C" {
16365    pub fn Tss2_MU_TPML_ECC_CURVE_Unmarshal(
16366        buffer: *const u8,
16367        buffer_size: size_t,
16368        offset: *mut size_t,
16369        dest: *mut TPML_ECC_CURVE,
16370    ) -> TSS2_RC;
16371}
16372extern "C" {
16373    pub fn Tss2_MU_TPML_TAGGED_PCR_PROPERTY_Marshal(
16374        src: *const TPML_TAGGED_PCR_PROPERTY,
16375        buffer: *mut u8,
16376        buffer_size: size_t,
16377        offset: *mut size_t,
16378    ) -> TSS2_RC;
16379}
16380extern "C" {
16381    pub fn Tss2_MU_TPML_TAGGED_PCR_PROPERTY_Unmarshal(
16382        buffer: *const u8,
16383        buffer_size: size_t,
16384        offset: *mut size_t,
16385        dest: *mut TPML_TAGGED_PCR_PROPERTY,
16386    ) -> TSS2_RC;
16387}
16388extern "C" {
16389    pub fn Tss2_MU_TPML_TAGGED_TPM_PROPERTY_Marshal(
16390        src: *const TPML_TAGGED_TPM_PROPERTY,
16391        buffer: *mut u8,
16392        buffer_size: size_t,
16393        offset: *mut size_t,
16394    ) -> TSS2_RC;
16395}
16396extern "C" {
16397    pub fn Tss2_MU_TPML_TAGGED_TPM_PROPERTY_Unmarshal(
16398        buffer: *const u8,
16399        buffer_size: size_t,
16400        offset: *mut size_t,
16401        dest: *mut TPML_TAGGED_TPM_PROPERTY,
16402    ) -> TSS2_RC;
16403}
16404extern "C" {
16405    pub fn Tss2_MU_TPML_AC_CAPABILITIES_Marshal(
16406        src: *const TPML_AC_CAPABILITIES,
16407        buffer: *mut u8,
16408        buffer_size: size_t,
16409        offset: *mut size_t,
16410    ) -> TSS2_RC;
16411}
16412extern "C" {
16413    pub fn Tss2_MU_TPML_AC_CAPABILITIES_Unmarshal(
16414        buffer: *const u8,
16415        buffer_size: size_t,
16416        offset: *mut size_t,
16417        dest: *mut TPML_AC_CAPABILITIES,
16418    ) -> TSS2_RC;
16419}
16420extern "C" {
16421    pub fn Tss2_MU_TPML_TAGGED_POLICY_Marshal(
16422        src: *const TPML_TAGGED_POLICY,
16423        buffer: *mut u8,
16424        buffer_size: size_t,
16425        offset: *mut size_t,
16426    ) -> TSS2_RC;
16427}
16428extern "C" {
16429    pub fn Tss2_MU_TPML_TAGGED_POLICY_Unmarshal(
16430        buffer: *const u8,
16431        buffer_size: size_t,
16432        offset: *mut size_t,
16433        dest: *mut TPML_TAGGED_POLICY,
16434    ) -> TSS2_RC;
16435}
16436extern "C" {
16437    pub fn Tss2_MU_TPML_ACT_DATA_Marshal(
16438        src: *const TPML_ACT_DATA,
16439        buffer: *mut u8,
16440        buffer_size: size_t,
16441        offset: *mut size_t,
16442    ) -> TSS2_RC;
16443}
16444extern "C" {
16445    pub fn Tss2_MU_TPML_ACT_DATA_Unmarshal(
16446        buffer: *const u8,
16447        buffer_size: size_t,
16448        offset: *mut size_t,
16449        dest: *mut TPML_ACT_DATA,
16450    ) -> TSS2_RC;
16451}
16452extern "C" {
16453    pub fn Tss2_MU_TPMU_HA_Marshal(
16454        src: *const TPMU_HA,
16455        selector_value: u32,
16456        buffer: *mut u8,
16457        buffer_size: size_t,
16458        offset: *mut size_t,
16459    ) -> TSS2_RC;
16460}
16461extern "C" {
16462    pub fn Tss2_MU_TPMU_HA_Unmarshal(
16463        buffer: *const u8,
16464        buffer_size: size_t,
16465        offset: *mut size_t,
16466        selector_value: u32,
16467        dest: *mut TPMU_HA,
16468    ) -> TSS2_RC;
16469}
16470extern "C" {
16471    pub fn Tss2_MU_TPMU_CAPABILITIES_Marshal(
16472        src: *const TPMU_CAPABILITIES,
16473        selector_value: u32,
16474        buffer: *mut u8,
16475        buffer_size: size_t,
16476        offset: *mut size_t,
16477    ) -> TSS2_RC;
16478}
16479extern "C" {
16480    pub fn Tss2_MU_TPMU_CAPABILITIES_Unmarshal(
16481        buffer: *const u8,
16482        buffer_size: size_t,
16483        offset: *mut size_t,
16484        selector_value: u32,
16485        dest: *mut TPMU_CAPABILITIES,
16486    ) -> TSS2_RC;
16487}
16488extern "C" {
16489    pub fn Tss2_MU_TPMU_ATTEST_Marshal(
16490        src: *const TPMU_ATTEST,
16491        selector_value: u32,
16492        buffer: *mut u8,
16493        buffer_size: size_t,
16494        offset: *mut size_t,
16495    ) -> TSS2_RC;
16496}
16497extern "C" {
16498    pub fn Tss2_MU_TPMU_ATTEST_Unmarshal(
16499        buffer: *const u8,
16500        buffer_size: size_t,
16501        offset: *mut size_t,
16502        selector_value: u32,
16503        dest: *mut TPMU_ATTEST,
16504    ) -> TSS2_RC;
16505}
16506extern "C" {
16507    pub fn Tss2_MU_TPMU_SYM_KEY_BITS_Marshal(
16508        src: *const TPMU_SYM_KEY_BITS,
16509        selector_value: u32,
16510        buffer: *mut u8,
16511        buffer_size: size_t,
16512        offset: *mut size_t,
16513    ) -> TSS2_RC;
16514}
16515extern "C" {
16516    pub fn Tss2_MU_TPMU_SYM_KEY_BITS_Unmarshal(
16517        buffer: *const u8,
16518        buffer_size: size_t,
16519        offset: *mut size_t,
16520        selector_value: u32,
16521        dest: *mut TPMU_SYM_KEY_BITS,
16522    ) -> TSS2_RC;
16523}
16524extern "C" {
16525    pub fn Tss2_MU_TPMU_SYM_MODE_Marshal(
16526        src: *const TPMU_SYM_MODE,
16527        selector_value: u32,
16528        buffer: *mut u8,
16529        buffer_size: size_t,
16530        offset: *mut size_t,
16531    ) -> TSS2_RC;
16532}
16533extern "C" {
16534    pub fn Tss2_MU_TPMU_SYM_MODE_Unmarshal(
16535        buffer: *const u8,
16536        buffer_size: size_t,
16537        offset: *mut size_t,
16538        selector_value: u32,
16539        dest: *mut TPMU_SYM_MODE,
16540    ) -> TSS2_RC;
16541}
16542extern "C" {
16543    pub fn Tss2_MU_TPMU_SIG_SCHEME_Marshal(
16544        src: *const TPMU_SIG_SCHEME,
16545        selector_value: u32,
16546        buffer: *mut u8,
16547        buffer_size: size_t,
16548        offset: *mut size_t,
16549    ) -> TSS2_RC;
16550}
16551extern "C" {
16552    pub fn Tss2_MU_TPMU_SIG_SCHEME_Unmarshal(
16553        buffer: *const u8,
16554        buffer_size: size_t,
16555        offset: *mut size_t,
16556        selector_value: u32,
16557        dest: *mut TPMU_SIG_SCHEME,
16558    ) -> TSS2_RC;
16559}
16560extern "C" {
16561    pub fn Tss2_MU_TPMU_KDF_SCHEME_Marshal(
16562        src: *const TPMU_KDF_SCHEME,
16563        selector_value: u32,
16564        buffer: *mut u8,
16565        buffer_size: size_t,
16566        offset: *mut size_t,
16567    ) -> TSS2_RC;
16568}
16569extern "C" {
16570    pub fn Tss2_MU_TPMU_KDF_SCHEME_Unmarshal(
16571        buffer: *const u8,
16572        buffer_size: size_t,
16573        offset: *mut size_t,
16574        selector_value: u32,
16575        dest: *mut TPMU_KDF_SCHEME,
16576    ) -> TSS2_RC;
16577}
16578extern "C" {
16579    pub fn Tss2_MU_TPMU_ASYM_SCHEME_Marshal(
16580        src: *const TPMU_ASYM_SCHEME,
16581        selector_value: u32,
16582        buffer: *mut u8,
16583        buffer_size: size_t,
16584        offset: *mut size_t,
16585    ) -> TSS2_RC;
16586}
16587extern "C" {
16588    pub fn Tss2_MU_TPMU_ASYM_SCHEME_Unmarshal(
16589        buffer: *const u8,
16590        buffer_size: size_t,
16591        offset: *mut size_t,
16592        selector_value: u32,
16593        dest: *mut TPMU_ASYM_SCHEME,
16594    ) -> TSS2_RC;
16595}
16596extern "C" {
16597    pub fn Tss2_MU_TPMU_SCHEME_KEYEDHASH_Marshal(
16598        src: *const TPMU_SCHEME_KEYEDHASH,
16599        selector_value: u32,
16600        buffer: *mut u8,
16601        buffer_size: size_t,
16602        offset: *mut size_t,
16603    ) -> TSS2_RC;
16604}
16605extern "C" {
16606    pub fn Tss2_MU_TPMU_SCHEME_KEYEDHASH_Unmarshal(
16607        buffer: *const u8,
16608        buffer_size: size_t,
16609        offset: *mut size_t,
16610        selector_value: u32,
16611        dest: *mut TPMU_SCHEME_KEYEDHASH,
16612    ) -> TSS2_RC;
16613}
16614extern "C" {
16615    pub fn Tss2_MU_TPMU_SIGNATURE_Marshal(
16616        src: *const TPMU_SIGNATURE,
16617        selector_value: u32,
16618        buffer: *mut u8,
16619        buffer_size: size_t,
16620        offset: *mut size_t,
16621    ) -> TSS2_RC;
16622}
16623extern "C" {
16624    pub fn Tss2_MU_TPMU_SIGNATURE_Unmarshal(
16625        buffer: *const u8,
16626        buffer_size: size_t,
16627        offset: *mut size_t,
16628        selector_value: u32,
16629        dest: *mut TPMU_SIGNATURE,
16630    ) -> TSS2_RC;
16631}
16632extern "C" {
16633    pub fn Tss2_MU_TPMU_SENSITIVE_COMPOSITE_Marshal(
16634        src: *const TPMU_SENSITIVE_COMPOSITE,
16635        selector_value: u32,
16636        buffer: *mut u8,
16637        buffer_size: size_t,
16638        offset: *mut size_t,
16639    ) -> TSS2_RC;
16640}
16641extern "C" {
16642    pub fn Tss2_MU_TPMU_SENSITIVE_COMPOSITE_Unmarshal(
16643        buffer: *const u8,
16644        buffer_size: size_t,
16645        offset: *mut size_t,
16646        selector_value: u32,
16647        dest: *mut TPMU_SENSITIVE_COMPOSITE,
16648    ) -> TSS2_RC;
16649}
16650extern "C" {
16651    pub fn Tss2_MU_TPMU_ENCRYPTED_SECRET_Marshal(
16652        src: *const TPMU_ENCRYPTED_SECRET,
16653        selector_value: u32,
16654        buffer: *mut u8,
16655        buffer_size: size_t,
16656        offset: *mut size_t,
16657    ) -> TSS2_RC;
16658}
16659extern "C" {
16660    pub fn Tss2_MU_TPMU_ENCRYPTED_SECRET_Unmarshal(
16661        buffer: *const u8,
16662        buffer_size: size_t,
16663        offset: *mut size_t,
16664        selector_value: u32,
16665        dest: *mut TPMU_ENCRYPTED_SECRET,
16666    ) -> TSS2_RC;
16667}
16668extern "C" {
16669    pub fn Tss2_MU_TPMU_PUBLIC_PARMS_Marshal(
16670        src: *const TPMU_PUBLIC_PARMS,
16671        selector_value: u32,
16672        buffer: *mut u8,
16673        buffer_size: size_t,
16674        offset: *mut size_t,
16675    ) -> TSS2_RC;
16676}
16677extern "C" {
16678    pub fn Tss2_MU_TPMU_PUBLIC_PARMS_Unmarshal(
16679        buffer: *const u8,
16680        buffer_size: size_t,
16681        offset: *mut size_t,
16682        selector_value: u32,
16683        dest: *mut TPMU_PUBLIC_PARMS,
16684    ) -> TSS2_RC;
16685}
16686extern "C" {
16687    pub fn Tss2_MU_TPMU_PUBLIC_ID_Marshal(
16688        src: *const TPMU_PUBLIC_ID,
16689        selector_value: u32,
16690        buffer: *mut u8,
16691        buffer_size: size_t,
16692        offset: *mut size_t,
16693    ) -> TSS2_RC;
16694}
16695extern "C" {
16696    pub fn Tss2_MU_TPMU_PUBLIC_ID_Unmarshal(
16697        buffer: *const u8,
16698        buffer_size: size_t,
16699        offset: *mut size_t,
16700        selector_value: u32,
16701        dest: *mut TPMU_PUBLIC_ID,
16702    ) -> TSS2_RC;
16703}
16704extern "C" {
16705    pub fn Tss2_MU_TPMU_NAME_Marshal(
16706        src: *const TPMU_NAME,
16707        selector_value: u32,
16708        buffer: *mut u8,
16709        buffer_size: size_t,
16710        offset: *mut size_t,
16711    ) -> TSS2_RC;
16712}
16713extern "C" {
16714    pub fn Tss2_MU_TPMU_NAME_Unmarshal(
16715        buffer: *const u8,
16716        buffer_size: size_t,
16717        offset: *mut size_t,
16718        selector_value: u32,
16719        dest: *mut TPMU_NAME,
16720    ) -> TSS2_RC;
16721}
16722extern "C" {
16723    pub fn Tss2_MU_TPMT_HA_Marshal(
16724        src: *const TPMT_HA,
16725        buffer: *mut u8,
16726        buffer_size: size_t,
16727        offset: *mut size_t,
16728    ) -> TSS2_RC;
16729}
16730extern "C" {
16731    pub fn Tss2_MU_TPMT_HA_Unmarshal(
16732        buffer: *const u8,
16733        buffer_size: size_t,
16734        offset: *mut size_t,
16735        dest: *mut TPMT_HA,
16736    ) -> TSS2_RC;
16737}
16738extern "C" {
16739    pub fn Tss2_MU_TPMT_SYM_DEF_Marshal(
16740        src: *const TPMT_SYM_DEF,
16741        buffer: *mut u8,
16742        buffer_size: size_t,
16743        offset: *mut size_t,
16744    ) -> TSS2_RC;
16745}
16746extern "C" {
16747    pub fn Tss2_MU_TPMT_SYM_DEF_Unmarshal(
16748        buffer: *const u8,
16749        buffer_size: size_t,
16750        offset: *mut size_t,
16751        dest: *mut TPMT_SYM_DEF,
16752    ) -> TSS2_RC;
16753}
16754extern "C" {
16755    pub fn Tss2_MU_TPMT_SYM_DEF_OBJECT_Marshal(
16756        src: *const TPMT_SYM_DEF_OBJECT,
16757        buffer: *mut u8,
16758        buffer_size: size_t,
16759        offset: *mut size_t,
16760    ) -> TSS2_RC;
16761}
16762extern "C" {
16763    pub fn Tss2_MU_TPMT_SYM_DEF_OBJECT_Unmarshal(
16764        buffer: *const u8,
16765        buffer_size: size_t,
16766        offset: *mut size_t,
16767        dest: *mut TPMT_SYM_DEF_OBJECT,
16768    ) -> TSS2_RC;
16769}
16770extern "C" {
16771    pub fn Tss2_MU_TPMT_KEYEDHASH_SCHEME_Marshal(
16772        src: *const TPMT_KEYEDHASH_SCHEME,
16773        buffer: *mut u8,
16774        buffer_size: size_t,
16775        offset: *mut size_t,
16776    ) -> TSS2_RC;
16777}
16778extern "C" {
16779    pub fn Tss2_MU_TPMT_KEYEDHASH_SCHEME_Unmarshal(
16780        buffer: *const u8,
16781        buffer_size: size_t,
16782        offset: *mut size_t,
16783        dest: *mut TPMT_KEYEDHASH_SCHEME,
16784    ) -> TSS2_RC;
16785}
16786extern "C" {
16787    pub fn Tss2_MU_TPMT_SIG_SCHEME_Marshal(
16788        src: *const TPMT_SIG_SCHEME,
16789        buffer: *mut u8,
16790        buffer_size: size_t,
16791        offset: *mut size_t,
16792    ) -> TSS2_RC;
16793}
16794extern "C" {
16795    pub fn Tss2_MU_TPMT_SIG_SCHEME_Unmarshal(
16796        buffer: *const u8,
16797        buffer_size: size_t,
16798        offset: *mut size_t,
16799        dest: *mut TPMT_SIG_SCHEME,
16800    ) -> TSS2_RC;
16801}
16802extern "C" {
16803    pub fn Tss2_MU_TPMT_KDF_SCHEME_Marshal(
16804        src: *const TPMT_KDF_SCHEME,
16805        buffer: *mut u8,
16806        buffer_size: size_t,
16807        offset: *mut size_t,
16808    ) -> TSS2_RC;
16809}
16810extern "C" {
16811    pub fn Tss2_MU_TPMT_KDF_SCHEME_Unmarshal(
16812        buffer: *const u8,
16813        buffer_size: size_t,
16814        offset: *mut size_t,
16815        dest: *mut TPMT_KDF_SCHEME,
16816    ) -> TSS2_RC;
16817}
16818extern "C" {
16819    pub fn Tss2_MU_TPMT_ASYM_SCHEME_Marshal(
16820        src: *const TPMT_ASYM_SCHEME,
16821        buffer: *mut u8,
16822        buffer_size: size_t,
16823        offset: *mut size_t,
16824    ) -> TSS2_RC;
16825}
16826extern "C" {
16827    pub fn Tss2_MU_TPMT_ASYM_SCHEME_Unmarshal(
16828        buffer: *const u8,
16829        buffer_size: size_t,
16830        offset: *mut size_t,
16831        dest: *mut TPMT_ASYM_SCHEME,
16832    ) -> TSS2_RC;
16833}
16834extern "C" {
16835    pub fn Tss2_MU_TPMT_RSA_SCHEME_Marshal(
16836        src: *const TPMT_RSA_SCHEME,
16837        buffer: *mut u8,
16838        buffer_size: size_t,
16839        offset: *mut size_t,
16840    ) -> TSS2_RC;
16841}
16842extern "C" {
16843    pub fn Tss2_MU_TPMT_RSA_SCHEME_Unmarshal(
16844        buffer: *const u8,
16845        buffer_size: size_t,
16846        offset: *mut size_t,
16847        dest: *mut TPMT_RSA_SCHEME,
16848    ) -> TSS2_RC;
16849}
16850extern "C" {
16851    pub fn Tss2_MU_TPMT_RSA_DECRYPT_Marshal(
16852        src: *const TPMT_RSA_DECRYPT,
16853        buffer: *mut u8,
16854        buffer_size: size_t,
16855        offset: *mut size_t,
16856    ) -> TSS2_RC;
16857}
16858extern "C" {
16859    pub fn Tss2_MU_TPMT_RSA_DECRYPT_Unmarshal(
16860        buffer: *const u8,
16861        buffer_size: size_t,
16862        offset: *mut size_t,
16863        dest: *mut TPMT_RSA_DECRYPT,
16864    ) -> TSS2_RC;
16865}
16866extern "C" {
16867    pub fn Tss2_MU_TPMT_ECC_SCHEME_Marshal(
16868        src: *const TPMT_ECC_SCHEME,
16869        buffer: *mut u8,
16870        buffer_size: size_t,
16871        offset: *mut size_t,
16872    ) -> TSS2_RC;
16873}
16874extern "C" {
16875    pub fn Tss2_MU_TPMT_ECC_SCHEME_Unmarshal(
16876        buffer: *const u8,
16877        buffer_size: size_t,
16878        offset: *mut size_t,
16879        dest: *mut TPMT_ECC_SCHEME,
16880    ) -> TSS2_RC;
16881}
16882extern "C" {
16883    pub fn Tss2_MU_TPMT_SIGNATURE_Marshal(
16884        src: *const TPMT_SIGNATURE,
16885        buffer: *mut u8,
16886        buffer_size: size_t,
16887        offset: *mut size_t,
16888    ) -> TSS2_RC;
16889}
16890extern "C" {
16891    pub fn Tss2_MU_TPMT_SIGNATURE_Unmarshal(
16892        buffer: *const u8,
16893        buffer_size: size_t,
16894        offset: *mut size_t,
16895        dest: *mut TPMT_SIGNATURE,
16896    ) -> TSS2_RC;
16897}
16898extern "C" {
16899    pub fn Tss2_MU_TPMT_SENSITIVE_Marshal(
16900        src: *const TPMT_SENSITIVE,
16901        buffer: *mut u8,
16902        buffer_size: size_t,
16903        offset: *mut size_t,
16904    ) -> TSS2_RC;
16905}
16906extern "C" {
16907    pub fn Tss2_MU_TPMT_SENSITIVE_Unmarshal(
16908        buffer: *const u8,
16909        buffer_size: size_t,
16910        offset: *mut size_t,
16911        dest: *mut TPMT_SENSITIVE,
16912    ) -> TSS2_RC;
16913}
16914extern "C" {
16915    pub fn Tss2_MU_TPMT_PUBLIC_Marshal(
16916        src: *const TPMT_PUBLIC,
16917        buffer: *mut u8,
16918        buffer_size: size_t,
16919        offset: *mut size_t,
16920    ) -> TSS2_RC;
16921}
16922extern "C" {
16923    pub fn Tss2_MU_TPMT_PUBLIC_Unmarshal(
16924        buffer: *const u8,
16925        buffer_size: size_t,
16926        offset: *mut size_t,
16927        dest: *mut TPMT_PUBLIC,
16928    ) -> TSS2_RC;
16929}
16930extern "C" {
16931    pub fn Tss2_MU_TPMT_PUBLIC_PARMS_Marshal(
16932        src: *const TPMT_PUBLIC_PARMS,
16933        buffer: *mut u8,
16934        buffer_size: size_t,
16935        offset: *mut size_t,
16936    ) -> TSS2_RC;
16937}
16938extern "C" {
16939    pub fn Tss2_MU_TPMT_PUBLIC_PARMS_Unmarshal(
16940        buffer: *const u8,
16941        buffer_size: size_t,
16942        offset: *mut size_t,
16943        dest: *mut TPMT_PUBLIC_PARMS,
16944    ) -> TSS2_RC;
16945}
16946extern "C" {
16947    pub fn Tss2_MU_TPMT_TK_CREATION_Marshal(
16948        src: *const TPMT_TK_CREATION,
16949        buffer: *mut u8,
16950        buffer_size: size_t,
16951        offset: *mut size_t,
16952    ) -> TSS2_RC;
16953}
16954extern "C" {
16955    pub fn Tss2_MU_TPMT_TK_CREATION_Unmarshal(
16956        buffer: *const u8,
16957        buffer_size: size_t,
16958        offset: *mut size_t,
16959        dest: *mut TPMT_TK_CREATION,
16960    ) -> TSS2_RC;
16961}
16962extern "C" {
16963    pub fn Tss2_MU_TPMT_TK_VERIFIED_Marshal(
16964        src: *const TPMT_TK_VERIFIED,
16965        buffer: *mut u8,
16966        buffer_size: size_t,
16967        offset: *mut size_t,
16968    ) -> TSS2_RC;
16969}
16970extern "C" {
16971    pub fn Tss2_MU_TPMT_TK_VERIFIED_Unmarshal(
16972        buffer: *const u8,
16973        buffer_size: size_t,
16974        offset: *mut size_t,
16975        dest: *mut TPMT_TK_VERIFIED,
16976    ) -> TSS2_RC;
16977}
16978extern "C" {
16979    pub fn Tss2_MU_TPMT_TK_AUTH_Marshal(
16980        src: *const TPMT_TK_AUTH,
16981        buffer: *mut u8,
16982        buffer_size: size_t,
16983        offset: *mut size_t,
16984    ) -> TSS2_RC;
16985}
16986extern "C" {
16987    pub fn Tss2_MU_TPMT_TK_AUTH_Unmarshal(
16988        buffer: *const u8,
16989        buffer_size: size_t,
16990        offset: *mut size_t,
16991        dest: *mut TPMT_TK_AUTH,
16992    ) -> TSS2_RC;
16993}
16994extern "C" {
16995    pub fn Tss2_MU_TPMT_TK_HASHCHECK_Marshal(
16996        src: *const TPMT_TK_HASHCHECK,
16997        buffer: *mut u8,
16998        buffer_size: size_t,
16999        offset: *mut size_t,
17000    ) -> TSS2_RC;
17001}
17002extern "C" {
17003    pub fn Tss2_MU_TPMT_TK_HASHCHECK_Unmarshal(
17004        buffer: *const u8,
17005        buffer_size: size_t,
17006        offset: *mut size_t,
17007        dest: *mut TPMT_TK_HASHCHECK,
17008    ) -> TSS2_RC;
17009}
17010extern "C" {
17011    pub fn Tss2_MU_TPM2_HANDLE_Marshal(
17012        in_: TPM2_HANDLE,
17013        buffer: *mut u8,
17014        size: size_t,
17015        offset: *mut size_t,
17016    ) -> TSS2_RC;
17017}
17018extern "C" {
17019    pub fn Tss2_MU_TPM2_HANDLE_Unmarshal(
17020        buffer: *const u8,
17021        size: size_t,
17022        offset: *mut size_t,
17023        out: *mut TPM2_HANDLE,
17024    ) -> TSS2_RC;
17025}
17026extern "C" {
17027    pub fn Tss2_MU_TPMI_ALG_HASH_Marshal(
17028        in_: TPMI_ALG_HASH,
17029        buffer: *mut u8,
17030        size: size_t,
17031        offset: *mut size_t,
17032    ) -> TSS2_RC;
17033}
17034extern "C" {
17035    pub fn Tss2_MU_TPMI_ALG_HASH_Unmarshal(
17036        buffer: *const u8,
17037        size: size_t,
17038        offset: *mut size_t,
17039        out: *mut TPMI_ALG_HASH,
17040    ) -> TSS2_RC;
17041}
17042extern "C" {
17043    pub fn Tss2_MU_BYTE_Marshal(
17044        in_: BYTE,
17045        buffer: *mut u8,
17046        size: size_t,
17047        offset: *mut size_t,
17048    ) -> TSS2_RC;
17049}
17050extern "C" {
17051    pub fn Tss2_MU_BYTE_Unmarshal(
17052        buffer: *const u8,
17053        size: size_t,
17054        offset: *mut size_t,
17055        out: *mut BYTE,
17056    ) -> TSS2_RC;
17057}
17058extern "C" {
17059    pub fn Tss2_MU_TPM2_SE_Marshal(
17060        in_: TPM2_SE,
17061        buffer: *mut u8,
17062        size: size_t,
17063        offset: *mut size_t,
17064    ) -> TSS2_RC;
17065}
17066extern "C" {
17067    pub fn Tss2_MU_TPM2_SE_Unmarshal(
17068        buffer: *const u8,
17069        size: size_t,
17070        offset: *mut size_t,
17071        out: *mut TPM2_SE,
17072    ) -> TSS2_RC;
17073}
17074extern "C" {
17075    pub fn Tss2_MU_TPM2_NT_Marshal(
17076        in_: TPM2_NT,
17077        buffer: *mut u8,
17078        size: size_t,
17079        offset: *mut size_t,
17080    ) -> TSS2_RC;
17081}
17082extern "C" {
17083    pub fn Tss2_MU_TPM2_NT_Unmarshal(
17084        buffer: *const u8,
17085        size: size_t,
17086        offset: *mut size_t,
17087        out: *mut TPM2_NT,
17088    ) -> TSS2_RC;
17089}
17090extern "C" {
17091    pub fn Tss2_MU_TPMS_EMPTY_Marshal(
17092        in_: *const TPMS_EMPTY,
17093        buffer: *mut u8,
17094        size: size_t,
17095        offset: *mut size_t,
17096    ) -> TSS2_RC;
17097}
17098extern "C" {
17099    pub fn Tss2_MU_TPMS_EMPTY_Unmarshal(
17100        buffer: *const u8,
17101        size: size_t,
17102        offset: *mut size_t,
17103        out: *mut TPMS_EMPTY,
17104    ) -> TSS2_RC;
17105}
17106extern "C" {
17107    pub fn Tss2_MU_TPM2B_MAX_CAP_BUFFER_Marshal(
17108        src: *const TPM2B_MAX_CAP_BUFFER,
17109        buffer: *mut u8,
17110        buffer_size: size_t,
17111        offset: *mut size_t,
17112    ) -> TSS2_RC;
17113}
17114extern "C" {
17115    pub fn Tss2_MU_TPM2B_MAX_CAP_BUFFER_Unmarshal(
17116        buffer: *const u8,
17117        buffer_size: size_t,
17118        offset: *mut size_t,
17119        dest: *mut TPM2B_MAX_CAP_BUFFER,
17120    ) -> TSS2_RC;
17121}
17122extern "C" {
17123    pub fn Tss2_MU_TPML_INTEL_PTT_PROPERTY_Marshal(
17124        src: *const TPML_INTEL_PTT_PROPERTY,
17125        buffer: *mut u8,
17126        buffer_size: size_t,
17127        offset: *mut size_t,
17128    ) -> TSS2_RC;
17129}
17130extern "C" {
17131    pub fn Tss2_MU_TPML_INTEL_PTT_PROPERTY_Unmarshal(
17132        buffer: *const u8,
17133        buffer_size: size_t,
17134        offset: *mut size_t,
17135        dest: *mut TPML_INTEL_PTT_PROPERTY,
17136    ) -> TSS2_RC;
17137}