1 /* SPDX-License-Identifier: BSD-2-Clause */ 2 /******************************************************************************* 3 * Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG 4 * All rights reserved. 5 ******************************************************************************/ 6 #ifndef FAPI_TPM_JSON_SERIALIZE_H 7 #define FAPI_TPM_JSON_SERIALIZE_H 8 9 #include <stdbool.h> 10 #include <json-c/json.h> 11 #include <json-c/json_util.h> 12 13 #include "tss2_tpm2_types.h" 14 #include "fapi_int.h" 15 16 #define YES 1 17 #define NO 0 18 19 TSS2_RC 20 ifapi_json_TPM2_HANDLE_serialize(const TPM2_HANDLE in, json_object **jso); 21 22 TSS2_RC 23 ifapi_json_UINT16_serialize(const UINT16 in, json_object **jso); 24 25 TSS2_RC 26 ifapi_json_UINT32_serialize(const UINT32 in, json_object **jso); 27 28 TSS2_RC 29 ifapi_json_INT32_serialize(const INT32 in, json_object **jso); 30 31 TSS2_RC 32 ifapi_json_UINT64_serialize(const UINT64 in, json_object **jso); 33 34 TSS2_RC 35 ifapi_json_TPM2_GENERATED_serialize(const TPM2_GENERATED in, json_object **jso); 36 37 TSS2_RC 38 ifapi_json_TPM2_ALG_ID_serialize(const TPM2_ALG_ID in, json_object **jso); 39 40 TSS2_RC 41 ifapi_json_TPM2_ECC_CURVE_serialize(const TPM2_ECC_CURVE in, json_object **jso); 42 43 TSS2_RC 44 ifapi_json_TPM2_CC_serialize(const TPM2_CC in, json_object **jso); 45 46 TSS2_RC 47 ifapi_json_TPM2_EO_serialize(const TPM2_EO in, json_object **jso); 48 49 TSS2_RC 50 ifapi_json_TPM2_ST_serialize(const TPM2_ST in, json_object **jso); 51 52 TSS2_RC 53 ifapi_json_TPM2_CAP_serialize(const TPM2_CAP in, json_object **jso); 54 55 TSS2_RC 56 ifapi_json_TPM2_PT_serialize(const TPM2_PT in, json_object **jso); 57 58 TSS2_RC 59 ifapi_json_TPM2_PT_PCR_serialize(const TPM2_PT_PCR in, json_object **jso); 60 61 TSS2_RC 62 ifapi_json_TPMA_ALGORITHM_serialize(const TPMA_ALGORITHM in, json_object **jso); 63 64 TSS2_RC 65 ifapi_json_TPMA_OBJECT_serialize(const TPMA_OBJECT in, json_object **jso); 66 67 TSS2_RC 68 ifapi_json_TPMA_LOCALITY_serialize(const TPMA_LOCALITY in, json_object **jso); 69 70 TSS2_RC 71 ifapi_json_TPMA_CC_serialize(const TPMA_CC in, json_object **jso); 72 73 TSS2_RC 74 ifapi_json_TPMI_YES_NO_serialize(const TPMI_YES_NO in, json_object **jso); 75 76 TSS2_RC 77 ifapi_json_TPMI_RH_HIERARCHY_serialize(const TPMI_RH_HIERARCHY in, 78 json_object **jso); 79 80 TSS2_RC 81 ifapi_json_TPMI_RH_NV_INDEX_serialize(const TPMI_RH_NV_INDEX in, 82 json_object **jso); 83 84 TSS2_RC 85 ifapi_json_TPMI_ALG_HASH_serialize(const TPMI_ALG_HASH in, json_object **jso); 86 87 TSS2_RC 88 ifapi_json_TPMI_ALG_SYM_OBJECT_serialize(const TPMI_ALG_SYM_OBJECT in, 89 json_object **jso); 90 91 TSS2_RC 92 ifapi_json_TPMI_ALG_SYM_MODE_serialize(const TPMI_ALG_SYM_MODE in, 93 json_object **jso); 94 95 TSS2_RC 96 ifapi_json_TPMI_ALG_KDF_serialize(const TPMI_ALG_KDF in, json_object **jso); 97 98 TSS2_RC 99 ifapi_json_TPMI_ALG_SIG_SCHEME_serialize(const TPMI_ALG_SIG_SCHEME in, 100 json_object **jso); 101 102 TSS2_RC 103 ifapi_json_TPMS_EMPTY_serialize(const TPMS_EMPTY *in, json_object **jso); 104 105 TSS2_RC 106 ifapi_json_TPMU_HA_serialize(const TPMU_HA *in, UINT32 selector, 107 json_object **jso); 108 109 TSS2_RC 110 ifapi_json_TPMT_HA_serialize(const TPMT_HA *in, json_object **jso); 111 112 TSS2_RC 113 ifapi_json_TPM2B_DIGEST_serialize(const TPM2B_DIGEST *in, json_object **jso); 114 115 TSS2_RC 116 ifapi_json_TPM2B_DATA_serialize(const TPM2B_DATA *in, json_object **jso); 117 118 TSS2_RC 119 ifapi_json_TPM2B_NONCE_serialize(const TPM2B_NONCE *in, json_object **jso); 120 121 TSS2_RC 122 ifapi_json_TPM2B_OPERAND_serialize(const TPM2B_OPERAND *in, json_object **jso); 123 124 TSS2_RC 125 ifapi_json_TPM2B_EVENT_serialize(const TPM2B_EVENT *in, json_object **jso); 126 127 TSS2_RC 128 ifapi_json_TPM2B_MAX_NV_BUFFER_serialize(const TPM2B_MAX_NV_BUFFER *in, 129 json_object **jso); 130 131 TSS2_RC 132 ifapi_json_TPM2B_NAME_serialize(const TPM2B_NAME *in, json_object **jso); 133 134 TSS2_RC 135 ifapi_json_TPMS_PCR_SELECT_serialize(const TPMS_PCR_SELECT *in, 136 json_object **jso); 137 138 TSS2_RC 139 ifapi_json_TPMS_PCR_SELECTION_serialize(const TPMS_PCR_SELECTION *in, 140 json_object **jso); 141 142 TSS2_RC 143 ifapi_json_TPMT_TK_CREATION_serialize(const TPMT_TK_CREATION *in, 144 json_object **jso); 145 146 TSS2_RC 147 ifapi_json_TPMS_ALG_PROPERTY_serialize(const TPMS_ALG_PROPERTY *in, 148 json_object **jso); 149 150 TSS2_RC 151 ifapi_json_TPMS_TAGGED_PROPERTY_serialize(const TPMS_TAGGED_PROPERTY *in, 152 json_object **jso); 153 154 TSS2_RC 155 ifapi_json_TPMS_TAGGED_PCR_SELECT_serialize(const TPMS_TAGGED_PCR_SELECT *in, 156 json_object **jso); 157 158 TSS2_RC 159 ifapi_json_TPML_CC_serialize(const TPML_CC *in, json_object **jso); 160 161 TSS2_RC 162 ifapi_json_TPML_CCA_serialize(const TPML_CCA *in, json_object **jso); 163 164 TSS2_RC 165 ifapi_json_TPML_HANDLE_serialize(const TPML_HANDLE *in, json_object **jso); 166 167 TSS2_RC 168 ifapi_json_TPML_DIGEST_VALUES_serialize(const TPML_DIGEST_VALUES *in, 169 json_object **jso); 170 171 TSS2_RC 172 ifapi_json_TPML_PCR_SELECTION_serialize(const TPML_PCR_SELECTION *in, 173 json_object **jso); 174 175 TSS2_RC 176 ifapi_json_TPML_ALG_PROPERTY_serialize(const TPML_ALG_PROPERTY *in, 177 json_object **jso); 178 179 TSS2_RC 180 ifapi_json_TPML_TAGGED_TPM_PROPERTY_serialize(const TPML_TAGGED_TPM_PROPERTY 181 *in, json_object **jso); 182 183 TSS2_RC 184 ifapi_json_TPML_TAGGED_PCR_PROPERTY_serialize(const TPML_TAGGED_PCR_PROPERTY 185 *in, json_object **jso); 186 187 TSS2_RC 188 ifapi_json_TPML_ECC_CURVE_serialize(const TPML_ECC_CURVE *in, 189 json_object **jso); 190 191 TSS2_RC 192 ifapi_json_TPMU_CAPABILITIES_serialize(const TPMU_CAPABILITIES *in, 193 UINT32 selector, json_object **jso); 194 195 TSS2_RC 196 ifapi_json_TPMS_CAPABILITY_DATA_serialize(const TPMS_CAPABILITY_DATA *in, 197 json_object **jso); 198 199 TSS2_RC 200 ifapi_json_TPMS_CLOCK_INFO_serialize(const TPMS_CLOCK_INFO *in, 201 json_object **jso); 202 203 TSS2_RC 204 ifapi_json_TPMS_TIME_INFO_serialize(const TPMS_TIME_INFO *in, 205 json_object **jso); 206 207 TSS2_RC 208 ifapi_json_TPMS_TIME_ATTEST_INFO_serialize(const TPMS_TIME_ATTEST_INFO *in, 209 json_object **jso); 210 211 TSS2_RC 212 ifapi_json_TPMS_CERTIFY_INFO_serialize(const TPMS_CERTIFY_INFO *in, 213 json_object **jso); 214 215 TSS2_RC 216 ifapi_json_TPMS_QUOTE_INFO_serialize(const TPMS_QUOTE_INFO *in, 217 json_object **jso); 218 219 TSS2_RC 220 ifapi_json_TPMS_COMMAND_AUDIT_INFO_serialize(const TPMS_COMMAND_AUDIT_INFO *in, 221 json_object **jso); 222 223 TSS2_RC 224 ifapi_json_TPMS_SESSION_AUDIT_INFO_serialize(const TPMS_SESSION_AUDIT_INFO *in, 225 json_object **jso); 226 227 TSS2_RC 228 ifapi_json_TPMS_CREATION_INFO_serialize(const TPMS_CREATION_INFO *in, 229 json_object **jso); 230 231 TSS2_RC 232 ifapi_json_TPMS_NV_CERTIFY_INFO_serialize(const TPMS_NV_CERTIFY_INFO *in, 233 json_object **jso); 234 235 TSS2_RC 236 ifapi_json_TPMI_ST_ATTEST_serialize(const TPMI_ST_ATTEST in, json_object **jso); 237 238 TSS2_RC 239 ifapi_json_TPMU_ATTEST_serialize(const TPMU_ATTEST *in, UINT32 selector, 240 json_object **jso); 241 242 TSS2_RC 243 ifapi_json_TPMS_ATTEST_serialize(const TPMS_ATTEST *in, json_object **jso); 244 245 TSS2_RC 246 ifapi_json_TPMI_AES_KEY_BITS_serialize(const TPMI_AES_KEY_BITS in, 247 json_object **jso); 248 249 TSS2_RC 250 ifapi_json_TPMU_SYM_KEY_BITS_serialize(const TPMU_SYM_KEY_BITS *in, 251 UINT32 selector, json_object **jso); 252 253 TSS2_RC 254 ifapi_json_TPMU_SYM_MODE_serialize(const TPMU_SYM_MODE *in, UINT32 selector, 255 json_object **jso); 256 257 TSS2_RC 258 ifapi_json_TPMT_SYM_DEF_OBJECT_serialize(const TPMT_SYM_DEF_OBJECT *in, 259 json_object **jso); 260 261 TSS2_RC 262 ifapi_json_TPMS_SYMCIPHER_PARMS_serialize(const TPMS_SYMCIPHER_PARMS *in, 263 json_object **jso); 264 265 TSS2_RC 266 ifapi_json_TPMS_SCHEME_HASH_serialize(const TPMS_SCHEME_HASH *in, 267 json_object **jso); 268 269 TSS2_RC 270 ifapi_json_TPMS_SCHEME_ECDAA_serialize(const TPMS_SCHEME_ECDAA *in, 271 json_object **jso); 272 273 TSS2_RC 274 ifapi_json_TPMI_ALG_KEYEDHASH_SCHEME_serialize(const TPMI_ALG_KEYEDHASH_SCHEME 275 in, json_object **jso); 276 277 TSS2_RC 278 ifapi_json_TPMS_SCHEME_HMAC_serialize(const TPMS_SCHEME_HMAC *in, 279 json_object **jso); 280 281 TSS2_RC 282 ifapi_json_TPMS_SCHEME_XOR_serialize(const TPMS_SCHEME_XOR *in, 283 json_object **jso); 284 285 TSS2_RC 286 ifapi_json_TPMU_SCHEME_KEYEDHASH_serialize(const TPMU_SCHEME_KEYEDHASH *in, 287 UINT32 selector, json_object **jso); 288 289 TSS2_RC 290 ifapi_json_TPMT_KEYEDHASH_SCHEME_serialize(const TPMT_KEYEDHASH_SCHEME *in, 291 json_object **jso); 292 293 TSS2_RC 294 ifapi_json_TPMS_SIG_SCHEME_RSASSA_serialize(const TPMS_SIG_SCHEME_RSASSA *in, 295 json_object **jso); 296 297 TSS2_RC 298 ifapi_json_TPMS_SIG_SCHEME_RSAPSS_serialize(const TPMS_SIG_SCHEME_RSAPSS *in, 299 json_object **jso); 300 301 TSS2_RC 302 ifapi_json_TPMS_SIG_SCHEME_ECDSA_serialize(const TPMS_SIG_SCHEME_ECDSA *in, 303 json_object **jso); 304 305 TSS2_RC 306 ifapi_json_TPMS_SIG_SCHEME_SM2_serialize(const TPMS_SIG_SCHEME_SM2 *in, 307 json_object **jso); 308 309 TSS2_RC 310 ifapi_json_TPMS_SIG_SCHEME_ECSCHNORR_serialize(const TPMS_SIG_SCHEME_ECSCHNORR 311 *in, json_object **jso); 312 313 TSS2_RC 314 ifapi_json_TPMS_SIG_SCHEME_ECDAA_serialize(const TPMS_SIG_SCHEME_ECDAA *in, 315 json_object **jso); 316 317 TSS2_RC 318 ifapi_json_TPMU_SIG_SCHEME_serialize(const TPMU_SIG_SCHEME *in, UINT32 selector, 319 json_object **jso); 320 321 TSS2_RC 322 ifapi_json_TPMT_SIG_SCHEME_serialize(const TPMT_SIG_SCHEME *in, 323 json_object **jso); 324 325 TSS2_RC 326 ifapi_json_TPMS_ENC_SCHEME_OAEP_serialize(const TPMS_ENC_SCHEME_OAEP *in, 327 json_object **jso); 328 329 TSS2_RC 330 ifapi_json_TPMS_ENC_SCHEME_RSAES_serialize(const TPMS_ENC_SCHEME_RSAES *in, 331 json_object **jso); 332 333 TSS2_RC 334 ifapi_json_TPMS_KEY_SCHEME_ECDH_serialize(const TPMS_KEY_SCHEME_ECDH *in, 335 json_object **jso); 336 337 TSS2_RC 338 ifapi_json_TPMS_SCHEME_MGF1_serialize(const TPMS_SCHEME_MGF1 *in, 339 json_object **jso); 340 341 TSS2_RC 342 ifapi_json_TPMS_SCHEME_KDF1_SP800_56A_serialize(const TPMS_SCHEME_KDF1_SP800_56A 343 *in, json_object **jso); 344 345 TSS2_RC 346 ifapi_json_TPMS_SCHEME_KDF1_SP800_108_serialize(const TPMS_SCHEME_KDF1_SP800_108 347 *in, json_object **jso); 348 349 TSS2_RC 350 ifapi_json_TPMU_KDF_SCHEME_serialize(const TPMU_KDF_SCHEME *in, UINT32 selector, 351 json_object **jso); 352 353 TSS2_RC 354 ifapi_json_TPMT_KDF_SCHEME_serialize(const TPMT_KDF_SCHEME *in, 355 json_object **jso); 356 357 TSS2_RC 358 ifapi_json_TPMI_ALG_ASYM_SCHEME_serialize(const TPMI_ALG_ASYM_SCHEME in, 359 json_object **jso); 360 361 TSS2_RC 362 ifapi_json_TPMU_ASYM_SCHEME_serialize(const TPMU_ASYM_SCHEME *in, 363 UINT32 selector, json_object **jso); 364 365 TSS2_RC 366 ifapi_json_TPMT_ASYM_SCHEME_serialize(const TPMT_ASYM_SCHEME *in, 367 json_object **jso); 368 369 TSS2_RC 370 ifapi_json_TPMI_ALG_RSA_SCHEME_serialize(const TPMI_ALG_RSA_SCHEME in, 371 json_object **jso); 372 373 TSS2_RC 374 ifapi_json_TPMT_RSA_SCHEME_serialize(const TPMT_RSA_SCHEME *in, 375 json_object **jso); 376 377 TSS2_RC 378 ifapi_json_TPM2B_PUBLIC_KEY_RSA_serialize(const TPM2B_PUBLIC_KEY_RSA *in, 379 json_object **jso); 380 381 TSS2_RC 382 ifapi_json_TPMI_RSA_KEY_BITS_serialize(const TPMI_RSA_KEY_BITS in, 383 json_object **jso); 384 385 TSS2_RC 386 ifapi_json_TPM2B_ECC_PARAMETER_serialize(const TPM2B_ECC_PARAMETER *in, 387 json_object **jso); 388 389 TSS2_RC 390 ifapi_json_TPMS_ECC_POINT_serialize(const TPMS_ECC_POINT *in, 391 json_object **jso); 392 393 TSS2_RC 394 ifapi_json_TPMI_ALG_ECC_SCHEME_serialize(const TPMI_ALG_ECC_SCHEME in, 395 json_object **jso); 396 397 TSS2_RC 398 ifapi_json_TPMI_ECC_CURVE_serialize(const TPMI_ECC_CURVE in, json_object **jso); 399 400 TSS2_RC 401 ifapi_json_TPMT_ECC_SCHEME_serialize(const TPMT_ECC_SCHEME *in, 402 json_object **jso); 403 404 TSS2_RC 405 ifapi_json_TPMS_SIGNATURE_RSA_serialize(const TPMS_SIGNATURE_RSA *in, 406 json_object **jso); 407 408 TSS2_RC 409 ifapi_json_TPMS_SIGNATURE_RSASSA_serialize(const TPMS_SIGNATURE_RSASSA *in, 410 json_object **jso); 411 412 TSS2_RC 413 ifapi_json_TPMS_SIGNATURE_RSAPSS_serialize(const TPMS_SIGNATURE_RSAPSS *in, 414 json_object **jso); 415 416 TSS2_RC 417 ifapi_json_TPMS_SIGNATURE_ECC_serialize(const TPMS_SIGNATURE_ECC *in, 418 json_object **jso); 419 420 TSS2_RC 421 ifapi_json_TPMS_SIGNATURE_ECDSA_serialize(const TPMS_SIGNATURE_ECDSA *in, 422 json_object **jso); 423 424 TSS2_RC 425 ifapi_json_TPMS_SIGNATURE_ECDAA_serialize(const TPMS_SIGNATURE_ECDAA *in, 426 json_object **jso); 427 428 TSS2_RC 429 ifapi_json_TPMS_SIGNATURE_SM2_serialize(const TPMS_SIGNATURE_SM2 *in, 430 json_object **jso); 431 432 TSS2_RC 433 ifapi_json_TPMS_SIGNATURE_ECSCHNORR_serialize(const TPMS_SIGNATURE_ECSCHNORR 434 *in, json_object **jso); 435 436 TSS2_RC 437 ifapi_json_TPMU_SIGNATURE_serialize(const TPMU_SIGNATURE *in, UINT32 selector, 438 json_object **jso); 439 440 TSS2_RC 441 ifapi_json_TPMT_SIGNATURE_serialize(const TPMT_SIGNATURE *in, 442 json_object **jso); 443 444 TSS2_RC 445 ifapi_json_TPM2B_ENCRYPTED_SECRET_serialize(const TPM2B_ENCRYPTED_SECRET *in, 446 json_object **jso); 447 448 TSS2_RC 449 ifapi_json_TPMI_ALG_PUBLIC_serialize(const TPMI_ALG_PUBLIC in, 450 json_object **jso); 451 452 TSS2_RC 453 ifapi_json_TPMU_PUBLIC_ID_serialize(const TPMU_PUBLIC_ID *in, UINT32 selector, 454 json_object **jso); 455 456 TSS2_RC 457 ifapi_json_TPMS_KEYEDHASH_PARMS_serialize(const TPMS_KEYEDHASH_PARMS *in, 458 json_object **jso); 459 460 TSS2_RC 461 ifapi_json_TPMS_ASYM_PARMS_serialize(const TPMS_ASYM_PARMS *in, 462 json_object **jso); 463 464 TSS2_RC 465 ifapi_json_TPMS_RSA_PARMS_serialize(const TPMS_RSA_PARMS *in, 466 json_object **jso); 467 468 TSS2_RC 469 ifapi_json_TPMS_ECC_PARMS_serialize(const TPMS_ECC_PARMS *in, 470 json_object **jso); 471 472 TSS2_RC 473 ifapi_json_TPMU_PUBLIC_PARMS_serialize(const TPMU_PUBLIC_PARMS *in, 474 UINT32 selector, json_object **jso); 475 476 TSS2_RC 477 ifapi_json_TPMT_PUBLIC_serialize(const TPMT_PUBLIC *in, json_object **jso); 478 479 TSS2_RC 480 ifapi_json_TPM2B_PUBLIC_serialize(const TPM2B_PUBLIC *in, json_object **jso); 481 482 TSS2_RC 483 ifapi_json_TPM2B_PRIVATE_serialize(const TPM2B_PRIVATE *in, json_object **jso); 484 485 TSS2_RC 486 ifapi_json_TPM2_NT_serialize(const TPM2_NT in, json_object **jso); 487 488 TSS2_RC 489 ifapi_json_TPMA_NV_serialize(const TPMA_NV in, json_object **jso); 490 491 TSS2_RC 492 ifapi_json_TPMS_NV_PUBLIC_serialize(const TPMS_NV_PUBLIC *in, 493 json_object **jso); 494 495 TSS2_RC 496 ifapi_json_TPM2B_NV_PUBLIC_serialize(const TPM2B_NV_PUBLIC *in, 497 json_object **jso); 498 499 TSS2_RC 500 ifapi_json_TPMS_CREATION_DATA_serialize(const TPMS_CREATION_DATA *in, 501 json_object **jso); 502 503 TSS2_RC 504 ifapi_json_TPM2B_CREATION_DATA_serialize(const TPM2B_CREATION_DATA *in, 505 json_object **jso); 506 507 #endif /* FAPI_TPM_JSON_SERIALIZE_H */ 508