Changeset 104973 in vbox
- Timestamp:
- Jun 20, 2024 9:25:36 AM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Trace/VBoxTraceLogDecoders.cpp
r104966 r104973 188 188 TPM_ALGID_2_STR(TPM2_ALG_KMAC128), 189 189 TPM_ALGID_2_STR(TPM2_ALG_KMAC256), 190 { 0, NULL, 0 }190 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_TERM 191 191 #undef TPM_ALGID_2_STR 192 192 }; … … 214 214 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 215 215 pszItem, sizeof(uint8_t), pCtx->cbLeft); 216 //AssertFailed();216 AssertFailed(); 217 217 pCtx->fError = true; 218 218 return 0; … … 233 233 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 234 234 pszItem, sizeof(uint16_t), pCtx->cbLeft); 235 //AssertFailed();235 AssertFailed(); 236 236 pCtx->fError = true; 237 237 return 0; … … 254 254 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 255 255 pszItem, sizeof(uint32_t), pCtx->cbLeft); 256 //AssertFailed();256 AssertFailed(); 257 257 pCtx->fError = true; 258 258 return 0; … … 281 281 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 282 282 pszItem, sizeof(uint64_t), pCtx->cbLeft); 283 //AssertFailed();283 AssertFailed(); 284 284 pCtx->fError = true; 285 285 return 0; … … 302 302 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 303 303 pszItem, cbBuf, pCtx->cbLeft); 304 //AssertFailed();304 AssertFailed(); 305 305 pCtx->fError = true; 306 306 return 0; … … 315 315 pCtx->cbLeft -= cbBuf; 316 316 return pb; 317 }318 319 320 static const char *vboxTraceLogDecodeEvtTpmAlgId2Str(uint16_t u16AlgId)321 {322 for (uint32_t i = 0; i < RT_ELEMENTS(g_aAlgId2Str); i++)323 if (g_aAlgId2Str[i].u64EnumVal == u16AlgId)324 return g_aAlgId2Str[i].pszString;325 326 return "<UNKNOWN>";327 317 } 328 318 … … 434 424 if (pCtx->fError) break; \ 435 425 if (a_Var) \ 436 pHlp->pfnStructBldAddBuf(pHlp, a_pszName, RTTRACELOG_DECODER_HLP_STRUCT_BLD_F_HEX_DUMP_STR, a_Var, a_cb);426 pHlp->pfnStructBldAddBuf(pHlp, a_pszName, 0 /*fFlags*/, a_Var, a_cb); 437 427 438 428 #define TPM_DECODE_END_IF_ERROR() \ … … 520 510 static void vboxTraceLogDecodeEvtTpmAuthSessionReq(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx) 521 511 { 522 pHlp->pfnStructBldBegin(pHlp, "AuthArea"); 523 TPM_DECODE_INIT(); 524 TPM_DECODE_U32( u32Size, u32Size); 512 TPM_DECODE_INIT(); 525 513 TPM_DECODE_U32_HEX(u32SessionHandle, u32SessionHandle); 526 514 TPM_DECODE_U16( u16NonceSize, u16NonceSize); … … 530 518 TPM_DECODE_BUF( pbHmac, abHmac, u16HmacSize); 531 519 TPM_DECODE_END(); 532 pHlp->pfnStructBldEnd(pHlp);533 520 } 534 521 … … 605 592 TPM_DECODE_END(); 606 593 pHlp->pfnStructBldEnd(pHlp); 594 } 595 596 597 static void vboxTraceLogDecode_TPMT_SIGNATURE(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 598 { 599 pHlp->pfnStructBldBegin(pHlp, pszName); 600 TPM_DECODE_INIT(); 601 TPM_DECODE_U16_ENUM(u16SigningAlg, u16SigningAlg, g_aAlgId2Str); 602 if (u16SigningAlg != TPM2_ALG_NULL) 603 { 604 TPM_DECODE_U16_ENUM(u16HashAlg, u16HashAlg, g_aAlgId2Str); 605 } 606 TPM_DECODE_END(); 607 pHlp->pfnStructBldEnd(pHlp); 608 } 609 610 611 static void vboxTraceLogDecode_TPMT_SIG_SCHEME(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 612 { 613 pHlp->pfnStructBldBegin(pHlp, pszName); 614 TPM_DECODE_INIT(); 615 TPM_DECODE_U16_ENUM(u16Scheme, u16Scheme, g_aAlgId2Str); 616 if (u16Scheme != TPM2_ALG_NULL) 617 { 618 TPM_DECODE_U16_ENUM(u16HashAlg, u16HashAlg, g_aAlgId2Str); 619 } 620 TPM_DECODE_END(); 621 pHlp->pfnStructBldEnd(pHlp); 622 } 623 624 625 static void vboxTraceLogDecode_TPML_DIGEST(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 626 { 627 pHlp->pfnStructBldBegin(pHlp, pszName); 628 TPM_DECODE_INIT(); 629 TPM_DECODE_U32(u32Count, u32Count); 630 for (uint32_t i = 0; i < u32Count; i++) 631 { 632 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Digest"); 633 TPM_DECODE_END_IF_ERROR(); 634 } 635 TPM_DECODE_END(); 636 pHlp->pfnStructBldEnd(pHlp); 637 } 638 639 640 static void vboxTraceLogDecode_TPMS_CONTEXT(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 641 { 642 pHlp->pfnStructBldBegin(pHlp, pszName); 643 TPM_DECODE_INIT(); 644 TPM_DECODE_U64( u64Sequence, u64Sequence); 645 TPM_DECODE_U32_HEX(hSaved, hSaved); 646 TPM_DECODE_U32_HEX(hHierarchy, hHierarchy); 647 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "ContextBlob"); 648 TPM_DECODE_END(); 649 pHlp->pfnStructBldEnd(pHlp); 650 } 651 652 653 static const char *g_apszHandlesEvictControlReq[] = 654 { 655 "hAuth", 656 "hObj", 657 NULL 658 }; 659 660 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeEvictControlReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 661 { 662 RT_NOREF(pThis); 663 664 TPM_DECODE_INIT(); 665 TPM_DECODE_U32_HEX(hPersistent, hPersistent); 666 TPM_DECODE_END(); 667 } 668 669 670 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeSelfTestReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 671 { 672 RT_NOREF(pThis); 673 674 TPM_DECODE_INIT(); 675 TPM_DECODE_BOOL(fFullTest, fFullTest); 676 TPM_DECODE_END(); 607 677 } 608 678 … … 636 706 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_INIT(TPM2_CAP_ECC_CURVES), 637 707 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_INIT(TPM2_CAP_AUTH_POLICIES), 638 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_INIT(TPM2_CAP_ACT) 708 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_INIT(TPM2_CAP_ACT), 709 RT_TRACELOG_DECODER_STRUCT_BLD_ENUM_TERM 639 710 }; 640 711 … … 668 739 break; 669 740 } 741 case TPM2_CAP_TPM_PROPERTIES: 742 { 743 TPM_DECODE_U32(u32Count, u32Count); 744 pHlp->pfnStructBldBegin(pHlp, "aProperties"); 745 for (uint32_t i = 0; i < u32Count; i++) 746 { 747 TPM_DECODE_U32_HEX(u32Property, u32Property); 748 TPM_DECODE_U32_HEX(u32Value, u32Value); 749 } 750 pHlp->pfnStructBldEnd(pHlp); 751 break; 752 } 753 case TPM2_CAP_COMMANDS: 754 { 755 TPM_DECODE_U32(u32Count, u32Count); 756 pHlp->pfnStructBldBegin(pHlp, "aCommands"); 757 for (uint32_t i = 0; i < u32Count; i++) 758 { 759 TPM_DECODE_U32_HEX(u32CmdCode, u32CmdCode); 760 } 761 pHlp->pfnStructBldEnd(pHlp); 762 break; 763 } 764 case TPM2_CAP_HANDLES: 765 { 766 TPM_DECODE_U32(u32Count, u32Count); 767 pHlp->pfnStructBldBegin(pHlp, "aCommands"); 768 for (uint32_t i = 0; i < u32Count; i++) 769 { 770 TPM_DECODE_U32_HEX(u32Handle, u32Handle); 771 } 772 pHlp->pfnStructBldEnd(pHlp); 773 break; 774 } 670 775 default: 671 776 break; … … 778 883 779 884 885 static const char *g_apszHandlesContextLoadResp[] = 886 { 887 "hLoaded", 888 NULL 889 }; 890 891 892 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeContextLoadReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 893 { 894 RT_NOREF(pThis); 895 896 TPM_DECODE_INIT(); 897 vboxTraceLogDecode_TPMS_CONTEXT(pHlp, pCtx, "Context"); 898 TPM_DECODE_END(); 899 } 900 901 902 static const char *g_apszHandlesContextSaveReq[] = 903 { 904 "hSave", 905 NULL 906 }; 907 908 909 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeContextSaveResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 910 { 911 RT_NOREF(pThis); 912 913 TPM_DECODE_INIT(); 914 vboxTraceLogDecode_TPMS_CONTEXT(pHlp, pCtx, "Context"); 915 TPM_DECODE_END(); 916 } 917 918 780 919 static const char *g_apszHandlesNvReadPublicReq[] = 781 920 { … … 840 979 841 980 981 static const char *g_apszHandlesClearReq[] = 982 { 983 "hAuth", 984 NULL 985 }; 986 987 842 988 static const char *g_apszHandlesHierarchyChangeAuthReq[] = 843 989 { … … 889 1035 TPM_DECODE_END_IF_ERROR(); 890 1036 891 TPM_DECODE_U16(u16HashAlg, u16HashAlg); 892 pHlp->pfnPrintf(pHlp, " u16HashAlg: %s\n", vboxTraceLogDecodeEvtTpmAlgId2Str(u16HashAlg)); 1037 TPM_DECODE_U16_ENUM(u16HashAlg, u16HashAlg, g_aAlgId2Str); 893 1038 TPM_DECODE_END(); 894 1039 } … … 1015 1160 1016 1161 1017 static const char *g_apszHandlesCertify CreationReq[] =1162 static const char *g_apszHandlesCertifyReq[] = 1018 1163 { 1019 1164 "hSign", … … 1022 1167 }; 1023 1168 1169 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCertifyReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1170 { 1171 RT_NOREF(pThis); 1172 1173 TPM_DECODE_INIT(); 1174 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "QualifyingData"); 1175 TPM_DECODE_END_IF_ERROR(); 1176 1177 /* Decode TPMT_SIG_SCHEME+ */ 1178 TPM_DECODE_U16_ENUM(u16SigningScheme, u16SigningScheme, g_aAlgId2Str); 1179 if (u16SigningScheme != TPM2_ALG_NULL) 1180 { 1181 TPM_DECODE_U16_ENUM(u16HashAlg, u16HashAlg, g_aAlgId2Str); 1182 } 1183 TPM_DECODE_END(); 1184 } 1185 1186 1187 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCertifyResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1188 { 1189 RT_NOREF(pThis); 1190 1191 TPM_DECODE_INIT(); 1192 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CertifyInfo"); 1193 vboxTraceLogDecode_TPMT_SIGNATURE(pHlp, pCtx, "Signature"); 1194 TPM_DECODE_END(); 1195 } 1196 1197 1198 static const char *g_apszHandlesCertifyCreationReq[] = 1199 { 1200 "hSign", 1201 "hObj", 1202 NULL 1203 }; 1204 1024 1205 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCertifyCreationReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1025 1206 { … … 1044 1225 TPM_DECODE_INIT(); 1045 1226 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CertifyInfo"); 1046 1047 /* Decode TPMT_SIGNATURE */ 1048 TPM_DECODE_U16_ENUM(u16SigningAlg, u16SigningAlg, g_aAlgId2Str); 1049 TPM_DECODE_U16_ENUM(u16HashAlg, u16HashAlg, g_aAlgId2Str); 1227 vboxTraceLogDecode_TPMT_SIGNATURE(pHlp, pCtx, "Signature"); 1050 1228 TPM_DECODE_END(); 1051 1229 } … … 1241 1419 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Quoted"); 1242 1420 TPM_DECODE_END_IF_ERROR(); 1243 1244 TPM_DECODE_U16_ENUM(u16SigAlg, u16SigAlg, g_aAlgId2Str); 1245 if (u16SigAlg != TPM2_ALG_NULL) 1246 { 1247 TPM_DECODE_U16_ENUM(u16SigAlgHash, u16SigAlgHash, g_aAlgId2Str); 1248 } 1421 vboxTraceLogDecode_TPMT_SIGNATURE(pHlp, pCtx, "Signature"); 1422 TPM_DECODE_END(); 1423 } 1424 1425 1426 static const char *g_apszHandlesSignReq[] = 1427 { 1428 "hKey", 1429 NULL 1430 }; 1431 1432 1433 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeSignReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1434 { 1435 RT_NOREF(pThis); 1436 1437 TPM_DECODE_INIT(); 1438 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Digest"); 1439 TPM_DECODE_END_IF_ERROR(); 1440 1441 vboxTraceLogDecode_TPMT_SIG_SCHEME(pHlp, pCtx, "InScheme"); 1442 vboxTraceLogDecodeTicket(pHlp, pCtx, "Validation"); /* TPMT_TK_HASHCHECK */ 1443 TPM_DECODE_END(); 1444 } 1445 1446 1447 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeSignResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1448 { 1449 RT_NOREF(pThis); 1450 1451 TPM_DECODE_INIT(); 1452 vboxTraceLogDecode_TPMT_SIGNATURE(pHlp, pCtx, "Signature"); 1249 1453 TPM_DECODE_END(); 1250 1454 } … … 1288 1492 1289 1493 1494 static const char *g_apszHandlesImportReq[] = 1495 { 1496 "hParent", 1497 NULL 1498 }; 1499 1500 1501 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeImportReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1502 { 1503 RT_NOREF(pThis); 1504 1505 TPM_DECODE_INIT(); 1506 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "EncryptionKey"); 1507 TPM_DECODE_END_IF_ERROR(); 1508 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "ObjectPublic"); 1509 TPM_DECODE_END_IF_ERROR(); 1510 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Duplicate"); 1511 TPM_DECODE_END_IF_ERROR(); 1512 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InSymSeed"); 1513 TPM_DECODE_END_IF_ERROR(); 1514 vboxTraceLogDecodeSymEncDef(pHlp, pCtx, "SymmetricAlg"); 1515 TPM_DECODE_END(); 1516 } 1517 1518 1519 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeImportResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1520 { 1521 RT_NOREF(pThis); 1522 1523 TPM_DECODE_INIT(); 1524 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutPrivate"); 1525 TPM_DECODE_END_IF_ERROR(); 1526 TPM_DECODE_END(); 1527 } 1528 1529 1290 1530 static const char *g_apszHandlesLoadReq[] = 1291 1531 { … … 1322 1562 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Name"); 1323 1563 TPM_DECODE_END_IF_ERROR(); 1564 TPM_DECODE_END(); 1565 } 1566 1567 1568 static const char *g_apszHandlesPolicyGetDigestReq[] = 1569 { 1570 "hPolicySession", 1571 NULL 1572 }; 1573 1574 1575 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePolicyGetDigestResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1576 { 1577 RT_NOREF(pThis); 1578 1579 TPM_DECODE_INIT(); 1580 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "PolicyDigest"); 1581 TPM_DECODE_END(); 1582 } 1583 1584 1585 static const char *g_apszHandlesPolicyAuthValueReq[] = 1586 { 1587 "hPolicySession", 1588 NULL 1589 }; 1590 1591 1592 static const char *g_apszHandlesPolicyCommandCodeReq[] = 1593 { 1594 "hPolicySession", 1595 NULL 1596 }; 1597 1598 1599 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePolicyCommandCodeReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1600 { 1601 RT_NOREF(pThis); 1602 1603 TPM_DECODE_INIT(); 1604 TPM_DECODE_U32_HEX(u32CmdCode, u32CmdCode); 1605 TPM_DECODE_END(); 1606 } 1607 1608 1609 static const char *g_apszHandlesPolicyOrReq[] = 1610 { 1611 "hPolicySession", 1612 NULL 1613 }; 1614 1615 1616 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePolicyOrReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1617 { 1618 RT_NOREF(pThis); 1619 1620 TPM_DECODE_INIT(); 1621 vboxTraceLogDecode_TPML_DIGEST(pHlp, pCtx, "HashList"); 1324 1622 TPM_DECODE_END(); 1325 1623 } … … 1341 1639 a_pfnReq, a_pfnResp } 1342 1640 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_UNDEFINE_SPACE_SPECIAL), 1343 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_EVICT_CONTROL),1641 TPM_CMD_CODE_INIT( TPM2_CC_EVICT_CONTROL, g_apszHandlesEvictControlReq, NULL, vboxTraceLogDecodeEvtTpmDecodeEvictControlReq, NULL), 1344 1642 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_HIERARCHY_CONTROL), 1345 1643 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_UNDEFINE_SPACE), 1346 1644 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CHANGE_EPS), 1347 1645 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CHANGE_PPS), 1348 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CLEAR),1646 TPM_CMD_CODE_INIT( TPM2_CC_CLEAR, g_apszHandlesClearReq, NULL, NULL, NULL), 1349 1647 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CLEAR_CONTROL), 1350 1648 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CLOCK_SET), … … 1375 1673 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_FIELD_UPGRADE_DATA), 1376 1674 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_INCREMENTAL_SELF_TEST), 1377 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_SELF_TEST),1675 TPM_CMD_CODE_INIT( TPM2_CC_SELF_TEST, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeSelfTestReq, NULL), 1378 1676 TPM_CMD_CODE_INIT( TPM2_CC_STARTUP, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq, NULL), 1379 1677 TPM_CMD_CODE_INIT( TPM2_CC_SHUTDOWN, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq, NULL), 1380 1678 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_STIR_RANDOM), 1381 1679 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ACTIVATE_CREDENTIAL), 1382 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CERTIFY),1680 TPM_CMD_CODE_INIT( TPM2_CC_CERTIFY, g_apszHandlesCertifyReq, NULL, vboxTraceLogDecodeEvtTpmDecodeCertifyReq, vboxTraceLogDecodeEvtTpmDecodeCertifyResp), 1383 1681 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_NV), 1384 1682 TPM_CMD_CODE_INIT( TPM2_CC_CERTIFY_CREATION, g_apszHandlesCertifyCreationReq, NULL, vboxTraceLogDecodeEvtTpmDecodeCertifyCreationReq, vboxTraceLogDecodeEvtTpmDecodeCertifyCreationResp), … … 1394 1692 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ECDH_ZGEN), 1395 1693 TPM_CMD_CODE_INIT( TPM2_CC_HMAC_MAC, g_apszHandlesHmacMacReq, NULL, vboxTraceLogDecodeEvtTpmDecodeHmacMacReq, vboxTraceLogDecodeEvtTpmDecodeHmacMacResp), 1396 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_IMPORT),1694 TPM_CMD_CODE_INIT( TPM2_CC_IMPORT, g_apszHandlesImportReq, NULL, vboxTraceLogDecodeEvtTpmDecodeImportReq, vboxTraceLogDecodeEvtTpmDecodeImportResp), 1397 1695 TPM_CMD_CODE_INIT( TPM2_CC_LOAD, g_apszHandlesLoadReq, g_apszHandlesLoadResp, vboxTraceLogDecodeEvtTpmDecodeLoadReq, vboxTraceLogDecodeEvtTpmDecodeLoadResp), 1398 1696 TPM_CMD_CODE_INIT( TPM2_CC_QUOTE, g_apszHandlesQuoteReq, NULL, vboxTraceLogDecodeEvtTpmDecodeQuoteReq, vboxTraceLogDecodeEvtTpmDecodeQuoteResp), … … 1400 1698 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_HMAC_MAC_START), 1401 1699 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_SEQUENCE_UPDATE), 1402 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_SIGN),1700 TPM_CMD_CODE_INIT( TPM2_CC_SIGN, g_apszHandlesSignReq, NULL, vboxTraceLogDecodeEvtTpmDecodeSignReq, vboxTraceLogDecodeEvtTpmDecodeSignResp), 1403 1701 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_UNSEAL), 1404 1702 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_SIGNED), 1405 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CONTEXT_LOAD),1406 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CONTEXT_SAVE),1703 TPM_CMD_CODE_INIT( TPM2_CC_CONTEXT_LOAD, NULL, g_apszHandlesContextLoadResp, vboxTraceLogDecodeEvtTpmDecodeContextLoadReq, NULL), 1704 TPM_CMD_CODE_INIT( TPM2_CC_CONTEXT_SAVE, g_apszHandlesContextSaveReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeContextSaveResp), 1407 1705 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ECDH_KEY_GEN), 1408 1706 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ENCRYPT_DECRYPT), 1409 TPM_CMD_CODE_INIT( TPM2_CC_FLUSH_CONTEXT, g_apszHandlesFlushContextReq,NULL, NULL, NULL),1707 TPM_CMD_CODE_INIT( TPM2_CC_FLUSH_CONTEXT, g_apszHandlesFlushContextReq, NULL, NULL, NULL), 1410 1708 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_LOAD_EXTERNAL), 1411 1709 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_MAKE_CREDENTIAL), 1412 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ_PUBLIC, g_apszHandlesNvReadPublicReq,NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeNvReadPublicResp),1710 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ_PUBLIC, g_apszHandlesNvReadPublicReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeNvReadPublicResp), 1413 1711 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_AUTHORIZE), 1414 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_POLICY_AUTH_VALUE),1415 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_POLICY_COMMAND_CODE),1712 TPM_CMD_CODE_INIT( TPM2_CC_POLICY_AUTH_VALUE, g_apszHandlesPolicyAuthValueReq, NULL, NULL, NULL), 1713 TPM_CMD_CODE_INIT( TPM2_CC_POLICY_COMMAND_CODE, g_apszHandlesPolicyCommandCodeReq, NULL, vboxTraceLogDecodeEvtTpmDecodePolicyCommandCodeReq, NULL), 1416 1714 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_COUNTER_TIMER), 1417 1715 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_CP_HASH), 1418 1716 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_LOCALITY), 1419 1717 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_NAME_HASH), 1420 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_POLICY_OR),1718 TPM_CMD_CODE_INIT( TPM2_CC_POLICY_OR, g_apszHandlesPolicyOrReq, NULL, vboxTraceLogDecodeEvtTpmDecodePolicyOrReq, NULL), 1421 1719 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_TICKET), 1422 1720 TPM_CMD_CODE_INIT( TPM2_CC_READ_PUBLIC, g_apszHandlesReadPublicReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeReadPublicResp), … … 1441 1739 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_PHYSICAL_PRESENCE), 1442 1740 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_DUPLICATION_SELECT), 1443 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_POLICY_GET_DIGEST),1741 TPM_CMD_CODE_INIT( TPM2_CC_POLICY_GET_DIGEST, g_apszHandlesPolicyGetDigestReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodePolicyGetDigestResp), 1444 1742 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_TEST_PARMS), 1445 1743 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_COMMIT), … … 1518 1816 /* Decode authorization area if available. */ 1519 1817 if (u16Tag == TPM2_ST_SESSIONS) 1520 vboxTraceLogDecodeEvtTpmAuthSessionReq(pHlp, pCtx); 1818 { 1819 size_t cbAuthArea = 0; 1820 TPM_DECODE_INIT(); 1821 TPM_DECODE_U32(u32AuthSize, u32AuthSize); 1822 cbAuthArea = u32AuthSize; 1823 TPM_DECODE_END(); 1824 1825 if (cbAuthArea) 1826 { 1827 const uint8_t *pb = vboxTraceLogDecodeEvtTpmDecodeCtxGetBuf(pCtx, pHlp, "AuthArea", cbAuthArea); 1828 if (!pCtx->fError) 1829 { 1830 TPMDECODECTX CtxAuth; 1831 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&CtxAuth, pb, cbAuthArea); 1832 1833 pHlp->pfnStructBldBegin(pHlp, "AuthArea"); 1834 while ( CtxAuth.cbLeft 1835 && !CtxAuth.fError) 1836 vboxTraceLogDecodeEvtTpmAuthSessionReq(pHlp, &CtxAuth); 1837 pHlp->pfnStructBldEnd(pHlp); 1838 } 1839 } 1840 } 1521 1841 1522 1842 /* Decode parameters. */ … … 1529 1849 1530 1850 if (pCtx->cbLeft) 1531 pHlp->pfnPrintf(pHlp, " Leftover undecoded data:\n" 1532 "%.*Rhxd\n", pCtx->cbLeft, pCtx->pbBuf); 1851 pHlp->pfnStructBldAddBuf(pHlp, "Leftover undecoded data", 0 /*fFlags*/, pCtx->pbBuf, pCtx->cbLeft); 1533 1852 1534 1853 pHlp->pfnStructBldEnd(pHlp); … … 1578 1897 { 1579 1898 /* Decode the handle area. */ 1899 uint32_t cHandles = 0; 1580 1900 if (s_aTpmCmdCodes[i].papszHandlesResp) 1581 1901 { … … 1587 1907 TPM_DECODE_U32_HEX_STR(u32Hnd, *papszHnd); 1588 1908 papszHnd++; 1909 cHandles++; 1589 1910 } 1590 1911 … … 1592 1913 } 1593 1914 1915 size_t cbParams = cbRespPayload - cHandles * sizeof(uint32_t); 1594 1916 if (u16Tag == TPM2_ST_SESSIONS) 1595 1917 { 1596 1918 TPM_DECODE_INIT(); 1597 1919 TPM_DECODE_U32(u32ParamSz, u32ParamSize); 1920 cbParams = u32ParamSz; 1598 1921 TPM_DECODE_END(); 1599 1922 } 1600 1923 1601 1924 /* Decode parameters. */ 1602 if (s_aTpmCmdCodes[i].pfnDecodeResp) 1925 if ( s_aTpmCmdCodes[i].pfnDecodeResp 1926 && cbParams) 1603 1927 { 1604 pHlp->pfnStructBldBegin(pHlp, "Parameters"); 1605 s_aTpmCmdCodes[i].pfnDecodeResp(pHlp, pTpmState, pCtx); 1606 pHlp->pfnStructBldEnd(pHlp); 1928 const uint8_t *pb = vboxTraceLogDecodeEvtTpmDecodeCtxGetBuf(pCtx, pHlp, "Parameters", cbParams); 1929 if (!pCtx->fError) 1930 { 1931 TPMDECODECTX CtxParams; 1932 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&CtxParams, pb, cbParams); 1933 1934 pHlp->pfnStructBldBegin(pHlp, "Parameters"); 1935 s_aTpmCmdCodes[i].pfnDecodeResp(pHlp, pTpmState, &CtxParams); 1936 1937 if (CtxParams.cbLeft) 1938 pHlp->pfnStructBldAddBuf(pHlp, "Leftover undecoded data", 0 /*fFlags*/, CtxParams.pbBuf, CtxParams.cbLeft); 1939 pHlp->pfnStructBldEnd(pHlp); 1940 } 1607 1941 } 1608 1942
Note:
See TracChangeset
for help on using the changeset viewer.

