Changeset 104961 in vbox
- Timestamp:
- Jun 19, 2024 10:47:52 AM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Trace/VBoxTraceLogDecoders.cpp
r104958 r104961 213 213 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 214 214 pszItem, sizeof(uint8_t), pCtx->cbLeft); 215 AssertFailed();215 //AssertFailed(); 216 216 pCtx->fError = true; 217 217 return 0; … … 232 232 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 233 233 pszItem, sizeof(uint16_t), pCtx->cbLeft); 234 AssertFailed();234 //AssertFailed(); 235 235 pCtx->fError = true; 236 236 return 0; … … 253 253 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 254 254 pszItem, sizeof(uint32_t), pCtx->cbLeft); 255 AssertFailed();255 //AssertFailed(); 256 256 pCtx->fError = true; 257 257 return 0; … … 265 265 266 266 267 static int32_t vboxTraceLogDecodeEvtTpmDecodeCtxGetI32(PTPMDECODECTX pCtx, PRTTRACELOGDECODERHLP pHlp, const char *pszItem) 268 { 269 return (int32_t)vboxTraceLogDecodeEvtTpmDecodeCtxGetU32(pCtx, pHlp, pszItem); 270 } 271 272 267 273 static uint64_t vboxTraceLogDecodeEvtTpmDecodeCtxGetU64(PTPMDECODECTX pCtx, PRTTRACELOGDECODERHLP pHlp, const char *pszItem) 268 274 { … … 274 280 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 275 281 pszItem, sizeof(uint64_t), pCtx->cbLeft); 276 AssertFailed();282 //AssertFailed(); 277 283 pCtx->fError = true; 278 284 return 0; … … 295 301 pHlp->pfnErrorMsg(pHlp, "Failed to decode '%s' as there is not enough space in the buffer (required %u, available %u)", 296 302 pszItem, cbBuf, pCtx->cbLeft); 297 AssertFailed();303 //AssertFailed(); 298 304 pCtx->fError = true; 299 305 return 0; … … 351 357 #define TPM_DECODE_U64(a_Var, a_Name) \ 352 358 uint64_t a_Var = vboxTraceLogDecodeEvtTpmDecodeCtxGetU64(pCtx, pHlp, #a_Name); \ 359 if (pCtx->fError) break 360 361 #define TPM_DECODE_I32(a_Var, a_Name) \ 362 int32_t a_Var = vboxTraceLogDecodeEvtTpmDecodeCtxGetI32(pCtx, pHlp, #a_Name); \ 353 363 if (pCtx->fError) break 354 364 … … 435 445 436 446 437 static void vboxTraceLogDecodeEvtTpmAuthSession (PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx)447 static void vboxTraceLogDecodeEvtTpmAuthSessionReq(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx) 438 448 { 439 449 TPM_DECODE_INIT(); … … 455 465 if (u16HmacSize) 456 466 pHlp->pfnPrintf(pHlp, " abHmac: %.*Rhxs\n", u16HmacSize, pbHmac); 467 TPM_DECODE_END(); 468 } 469 470 471 static void vboxTraceLogDecodeEvtTpmAuthSessionResp(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx) 472 { 473 TPM_DECODE_INIT(); 474 TPM_DECODE_U16(u16NonceSize, u16NonceSize); 475 TPM_DECODE_BUF(pbNonce, abNonce, u16NonceSize); 476 TPM_DECODE_U8( u8Attr, u8Attr); 477 TPM_DECODE_U16(u16AckSize, u16AckSize); 478 TPM_DECODE_BUF(pbAck, abAck, u16AckSize); 479 480 pHlp->pfnPrintf(pHlp, " u16NonceSize: %u\n", u16NonceSize); 481 if (u16NonceSize) 482 pHlp->pfnPrintf(pHlp, " abNonce: %.*Rhxs\n", u16NonceSize, pbNonce); 483 pHlp->pfnPrintf(pHlp, " u8Attr: %u\n", u8Attr); 484 pHlp->pfnPrintf(pHlp, " u16AckSize: %u\n", u16AckSize); 485 if (u16AckSize) 486 pHlp->pfnPrintf(pHlp, " abAck: %.*Rhxs\n", u16AckSize, pbAck); 457 487 TPM_DECODE_END(); 458 488 } … … 494 524 } 495 525 526 527 static void vboxTraceLogDecodeNvPublic(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 528 { 529 TPM_DECODE_INIT(); 530 pHlp->pfnPrintf(pHlp, " %s:\n", pszName); 531 TPM_DECODE_U16(u16Size, u16Size); 532 pHlp->pfnPrintf(pHlp, " u16Size: %u\n", u16Size); 533 if (u16Size) 534 { 535 TPM_DECODE_U32(hNvIndex, hNvIndex); 536 TPM_DECODE_U16(u16HashAlgName, u16HashAlgName); 537 TPM_DECODE_U32(u32Attr, fAttr); 538 539 pHlp->pfnPrintf(pHlp, " hNvIndex: %#x\n", hNvIndex); 540 pHlp->pfnPrintf(pHlp, " u16HashAlgName: %u\n", u16HashAlgName); 541 pHlp->pfnPrintf(pHlp, " u32Attr: %#x\n", u32Attr); 542 543 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "AuthPolicy"); 544 TPM_DECODE_U16(u16DataSize, u16DataSize); 545 pHlp->pfnPrintf(pHlp, " u16DataSize: %u\n", u16DataSize); 546 } 547 TPM_DECODE_END(); 548 } 549 550 551 static void vboxTraceLogDecodeTicket(PRTTRACELOGDECODERHLP pHlp, PTPMDECODECTX pCtx, const char *pszName) 552 { 553 TPM_DECODE_INIT(); 554 pHlp->pfnPrintf(pHlp, " %s:\n", pszName); 555 556 TPM_DECODE_U16(u16Tag, u16Tag); 557 TPM_DECODE_U32(hHierarchy, hHierarchy); 558 pHlp->pfnPrintf(pHlp, " u16Tag: %#x\n", u16Tag); 559 pHlp->pfnPrintf(pHlp, " hHierarchy: %#x\n", hHierarchy); 560 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Digest"); 561 TPM_DECODE_END(); 562 } 496 563 497 564 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) … … 576 643 } 577 644 default: 578 pHlp->pfnPrintf(pHlp, "%.*Rhxd\n", pCtx->cbLeft, pCtx->pbBuf);579 645 break; 580 646 } 581 647 } 582 648 else 583 {584 649 pHlp->pfnPrintf(pHlp, " u32Cap: %#x (UNKNOWN)\n", u32Cap); 585 pHlp->pfnPrintf(pHlp, "%.*Rhxd\n", pCtx->cbLeft, pCtx->pbBuf); 586 } 587 TPM_DECODE_END(); 588 } 589 590 591 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeReadPublicReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 592 { 593 RT_NOREF(pThis); 594 595 TPM_DECODE_INIT(); 596 TPM_DECODE_U32(hObj, hObj); 597 pHlp->pfnPrintf(pHlp, " hObj: %#x\n", hObj); 598 TPM_DECODE_END(); 599 } 650 TPM_DECODE_END(); 651 } 652 653 654 static const char *g_apszHandlesReadPublicReq[] = 655 { 656 "hObj", 657 NULL 658 }; 600 659 601 660 … … 667 726 668 727 728 static const char *g_apszHandlesPcrExtendReq[] = 729 { 730 "hPcr", 731 NULL 732 }; 733 734 669 735 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePcrExtendReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 670 736 { … … 672 738 673 739 TPM_DECODE_INIT(); 674 TPM_DECODE_U32(hPcr, hPcr);675 pHlp->pfnPrintf(pHlp, " hPcr: %#x\n", hPcr);676 677 vboxTraceLogDecodeEvtTpmAuthSession(pHlp, pCtx);678 TPM_DECODE_END_IF_ERROR();679 740 vboxTraceLogDecodeEvtTpmDigestValuesList(pHlp, pCtx); 680 741 TPM_DECODE_END(); … … 704 765 705 766 706 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeNvReadPublicReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 707 { 708 RT_NOREF(pThis); 709 710 TPM_DECODE_INIT(); 711 TPM_DECODE_U32(hNvIndex, hNvIndex); 712 pHlp->pfnPrintf(pHlp, " hNvIndex: %#x\n", hNvIndex); 713 TPM_DECODE_END(); 714 } 767 static const char *g_apszHandlesNvReadPublicReq[] = 768 { 769 "hNvIndex", 770 NULL 771 }; 715 772 716 773 … … 725 782 726 783 784 static const char *g_apszHandlesStartAuthSessionReq[] = 785 { 786 "hTpmKey", 787 "hBind", 788 NULL 789 }; 790 791 727 792 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 728 793 { … … 730 795 731 796 TPM_DECODE_INIT(); 732 TPM_DECODE_U32(hTpmKey, hTpmKey);733 pHlp->pfnPrintf(pHlp, " hTpmKey: %#x\n", hTpmKey);734 TPM_DECODE_U32(hBind, hBind);735 pHlp->pfnPrintf(pHlp, " hBind: %#x\n", hBind);736 737 797 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "NonceCaller"); 738 798 TPM_DECODE_END_IF_ERROR(); … … 752 812 753 813 814 static const char *g_apszHandlesStartAuthSessionResp[] = 815 { 816 "hSession", 817 NULL 818 }; 819 820 754 821 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 755 822 { … … 757 824 758 825 TPM_DECODE_INIT(); 759 TPM_DECODE_U32(hSession, hSession);760 pHlp->pfnPrintf(pHlp, " hSession: %#x\n", hSession);761 826 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "NonceTpm"); 762 827 TPM_DECODE_END(); … … 764 829 765 830 831 static const char *g_apszHandlesHierarchyChangeAuthReq[] = 832 { 833 "hAuth", 834 NULL 835 }; 836 766 837 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeHierarchyChangeAuthReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 767 838 { … … 769 840 770 841 TPM_DECODE_INIT(); 771 TPM_DECODE_U32(hAuth, hAuth);772 pHlp->pfnPrintf(pHlp, " hAuth: %#x\n", hAuth);773 vboxTraceLogDecodeEvtTpmAuthSession(pHlp, pCtx);774 TPM_DECODE_END_IF_ERROR();775 776 842 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "NewAuth"); 777 TPM_DECODE_END(); 778 } 779 843 TPM_DECODE_END(); 844 } 845 846 847 static const char *g_apszHandlesNvDefineSpaceReq[] = 848 { 849 "hAuth", 850 NULL 851 }; 852 853 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeNvDefineSpaceReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 854 { 855 RT_NOREF(pThis); 856 857 TPM_DECODE_INIT(); 858 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Auth"); 859 TPM_DECODE_END_IF_ERROR(); 860 861 vboxTraceLogDecodeNvPublic(pHlp, pCtx, "PublicInfo"); 862 TPM_DECODE_END(); 863 } 864 865 866 static const char *g_apszHandlesSetPrimaryPolicyReq[] = 867 { 868 "hAuth", 869 NULL 870 }; 871 872 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeSetPrimaryPolicyReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 873 { 874 RT_NOREF(pThis); 875 876 TPM_DECODE_INIT(); 877 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "AuthPolicy"); 878 TPM_DECODE_END_IF_ERROR(); 879 880 TPM_DECODE_U16(u16HashAlg, u16HashAlg); 881 pHlp->pfnPrintf(pHlp, " u16HashAlg: %s\n", vboxTraceLogDecodeEvtTpmAlgId2Str(u16HashAlg)); 882 TPM_DECODE_END(); 883 } 884 885 886 static const char *g_apszHandlesCreatePrimaryReq[] = 887 { 888 "hPrimary", 889 NULL 890 }; 891 892 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCreatePrimaryReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 893 { 894 RT_NOREF(pThis); 895 896 TPM_DECODE_INIT(); 897 /** @todo Decode InSensitive. */ 898 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InSensitive"); 899 TPM_DECODE_END_IF_ERROR(); 900 /** @todo Decode InPublic. */ 901 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InPublic"); 902 TPM_DECODE_END_IF_ERROR(); 903 904 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutsideInfo"); 905 TPM_DECODE_END_IF_ERROR(); 906 907 vboxTraceLogDecodePcrSelectionList(pHlp, pCtx); 908 909 TPM_DECODE_END(); 910 } 911 912 913 static const char *g_apszHandlesCreatePrimaryResp[] = 914 { 915 "hObj", 916 NULL 917 }; 918 919 920 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCreatePrimaryResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 921 { 922 RT_NOREF(pThis); 923 924 TPM_DECODE_INIT(); 925 /** @todo Decode OutPublic. */ 926 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutPublic"); 927 TPM_DECODE_END_IF_ERROR(); 928 /** @todo Decode CreationData. */ 929 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CreationData"); 930 TPM_DECODE_END_IF_ERROR(); 931 932 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CreationHash"); 933 TPM_DECODE_END_IF_ERROR(); 934 935 vboxTraceLogDecodeTicket(pHlp, pCtx, "Ticket"); 936 TPM_DECODE_END_IF_ERROR(); 937 938 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Name"); 939 TPM_DECODE_END(); 940 } 941 942 943 static const char *g_apszHandlesNvIncrementReq[] = 944 { 945 "hAuth", 946 "hNvIndex", 947 NULL 948 }; 949 950 951 static const char *g_apszHandlesNvSetBitsReq[] = 952 { 953 "hAuth", 954 "hNvIndex", 955 NULL 956 }; 957 958 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeNvSetBitsReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 959 { 960 RT_NOREF(pThis); 961 962 TPM_DECODE_INIT(); 963 TPM_DECODE_U64(u64BitsOr, u64BitsOr); 964 pHlp->pfnPrintf(pHlp, " u64BitsOr: %#RX64\n", u64BitsOr); 965 TPM_DECODE_END(); 966 } 967 968 969 static const char *g_apszHandlesNvWriteReq[] = 970 { 971 "hAuth", 972 "hNvIndex", 973 NULL 974 }; 975 976 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeNvWriteReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 977 { 978 RT_NOREF(pThis); 979 980 TPM_DECODE_INIT(); 981 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Data"); 982 TPM_DECODE_END_IF_ERROR(); 983 984 TPM_DECODE_U16(u16Offset, u16Offset); 985 pHlp->pfnPrintf(pHlp, " u16Offset: %u\n", u16Offset); 986 TPM_DECODE_END(); 987 } 988 989 990 static const char *g_apszHandlesDictionaryAttackParametersReq[] = 991 { 992 "hLock", 993 NULL 994 }; 995 996 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeDictionaryAttackParametersReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 997 { 998 RT_NOREF(pThis); 999 1000 TPM_DECODE_INIT(); 1001 TPM_DECODE_U32(u32NewMaxTries, u32NewMaxTries); 1002 TPM_DECODE_U32(u32NewRecoveryTime, u32NewRecoveryTime); 1003 TPM_DECODE_U32(u32LockoutRecovery, u32LockoutRecovery); 1004 1005 pHlp->pfnPrintf(pHlp, " u32NewMaxTries: %u\n", u32NewMaxTries); 1006 pHlp->pfnPrintf(pHlp, " u32NewRecoveryTime: %u\n", u32NewRecoveryTime); 1007 pHlp->pfnPrintf(pHlp, " u32LockoutRecovery: %u\n", u32LockoutRecovery); 1008 TPM_DECODE_END(); 1009 } 1010 1011 1012 static const char *g_apszHandlesCertifyCreationReq[] = 1013 { 1014 "hSign", 1015 "hObj", 1016 NULL 1017 }; 1018 1019 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCertifyCreationReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1020 { 1021 RT_NOREF(pThis); 1022 1023 TPM_DECODE_INIT(); 1024 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "QualifyingData"); 1025 TPM_DECODE_END_IF_ERROR(); 1026 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CreationHash"); 1027 TPM_DECODE_END_IF_ERROR(); 1028 1029 TPM_DECODE_U16(u16SigningScheme, u16SigningScheme); 1030 pHlp->pfnPrintf(pHlp, " u16SigningScheme: %s\n", vboxTraceLogDecodeEvtTpmAlgId2Str(u16SigningScheme)); 1031 1032 vboxTraceLogDecodeTicket(pHlp, pCtx, "CreationTicket"); 1033 TPM_DECODE_END(); 1034 } 1035 1036 1037 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCertifyCreationResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1038 { 1039 RT_NOREF(pThis); 1040 1041 TPM_DECODE_INIT(); 1042 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CertifyInfo"); 1043 1044 /* Decode TPMT_SIGNATURE */ 1045 TPM_DECODE_U16(u16SigningAlg, u16SigningAlg); 1046 pHlp->pfnPrintf(pHlp, " u16SigningAlg: %s\n", vboxTraceLogDecodeEvtTpmAlgId2Str(u16SigningAlg)); 1047 TPM_DECODE_U16(u16HashAlg, u16HashAlg); 1048 pHlp->pfnPrintf(pHlp, " u16HashAlg: %s\n", vboxTraceLogDecodeEvtTpmAlgId2Str(u16HashAlg)); 1049 1050 TPM_DECODE_END(); 1051 } 1052 1053 1054 static const char *g_apszHandlesNvReadReq[] = 1055 { 1056 "hAuth", 1057 "hNvIndex", 1058 NULL 1059 }; 780 1060 781 1061 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeNvReadReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) … … 784 1064 785 1065 TPM_DECODE_INIT(); 786 TPM_DECODE_U32(hAuth, hAuth);787 pHlp->pfnPrintf(pHlp, " hAuth: %#x\n", hAuth);788 TPM_DECODE_U32(hNvIndex, hNvIndex);789 pHlp->pfnPrintf(pHlp, " hNvIndex: %#x\n", hNvIndex);790 791 vboxTraceLogDecodeEvtTpmAuthSession(pHlp, pCtx);792 TPM_DECODE_END_IF_ERROR();793 794 1066 TPM_DECODE_U16(u16Size, u16Size); 795 1067 pHlp->pfnPrintf(pHlp, " u16Size: %u\n", u16Size); … … 806 1078 TPM_DECODE_INIT(); 807 1079 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Data"); 1080 TPM_DECODE_END(); 1081 } 1082 1083 1084 static const char *g_apszHandlesPolicySecretReq[] = 1085 { 1086 "hAuth", 1087 "hPolicySession", 1088 NULL 1089 }; 1090 1091 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePolicySecretReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1092 { 1093 RT_NOREF(pThis); 1094 1095 TPM_DECODE_INIT(); 1096 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "NonceTpm"); 1097 TPM_DECODE_END_IF_ERROR(); 1098 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CpHashA"); 1099 TPM_DECODE_END_IF_ERROR(); 1100 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "PolicyRef"); 1101 TPM_DECODE_END_IF_ERROR(); 1102 1103 TPM_DECODE_I32(i32Expiration, i32Expiration); 1104 pHlp->pfnPrintf(pHlp, " i32Expiration: %u\n", i32Expiration); 1105 TPM_DECODE_END(); 1106 } 1107 1108 1109 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodePolicySecretResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1110 { 1111 RT_NOREF(pThis); 1112 1113 TPM_DECODE_INIT(); 1114 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Timeout"); 1115 TPM_DECODE_END_IF_ERROR(); 1116 1117 vboxTraceLogDecodeTicket(pHlp, pCtx, "Ticket"); 1118 TPM_DECODE_END(); 1119 } 1120 1121 1122 static const char *g_apszHandlesCreateReq[] = 1123 { 1124 "hParent", 1125 NULL 1126 }; 1127 1128 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCreateReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1129 { 1130 RT_NOREF(pThis); 1131 1132 TPM_DECODE_INIT(); 1133 /** @todo Decode InSensitive. */ 1134 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InSensitive"); 1135 TPM_DECODE_END_IF_ERROR(); 1136 /** @todo Decode InPublic. */ 1137 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InPublic"); 1138 TPM_DECODE_END_IF_ERROR(); 1139 1140 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutsideInfo"); 1141 TPM_DECODE_END_IF_ERROR(); 1142 1143 vboxTraceLogDecodePcrSelectionList(pHlp, pCtx); 1144 1145 TPM_DECODE_END(); 1146 } 1147 1148 1149 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeCreateResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1150 { 1151 RT_NOREF(pThis); 1152 1153 TPM_DECODE_INIT(); 1154 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutPrivate"); 1155 TPM_DECODE_END_IF_ERROR(); 1156 /** @todo Decode OutPublic. */ 1157 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "OutPublic"); 1158 TPM_DECODE_END_IF_ERROR(); 1159 /** @todo Decode CreationData. */ 1160 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CreationData"); 1161 TPM_DECODE_END_IF_ERROR(); 1162 1163 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "CreationHash"); 1164 TPM_DECODE_END_IF_ERROR(); 1165 1166 vboxTraceLogDecodeTicket(pHlp, pCtx, "Ticket"); 808 1167 TPM_DECODE_END(); 809 1168 } … … 860 1219 861 1220 1221 static const char *g_apszHandlesQuoteReq[] = 1222 { 1223 "hSign", 1224 NULL 1225 }; 1226 1227 862 1228 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeQuoteReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 863 1229 { … … 865 1231 866 1232 TPM_DECODE_INIT(); 867 TPM_DECODE_U32(hSign, hSign);868 pHlp->pfnPrintf(pHlp, " hSign: %#x\n", hSign);869 870 vboxTraceLogDecodeEvtTpmAuthSession(pHlp, pCtx);871 TPM_DECODE_END_IF_ERROR();872 1233 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "QualifyingData"); 873 1234 TPM_DECODE_END_IF_ERROR(); … … 905 1266 906 1267 1268 static const char *g_apszHandlesHmacMacReq[] = 1269 { 1270 "hSymKey", 1271 NULL 1272 }; 1273 1274 907 1275 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeHmacMacReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 908 1276 { … … 910 1278 911 1279 TPM_DECODE_INIT(); 912 TPM_DECODE_U32(hSymKey, hSymKey);913 pHlp->pfnPrintf(pHlp, " hSymKey: %#x\n", hSymKey);914 915 vboxTraceLogDecodeEvtTpmAuthSession(pHlp, pCtx);916 TPM_DECODE_END_IF_ERROR();917 1280 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Buffer"); 918 1281 TPM_DECODE_END_IF_ERROR(); … … 934 1297 935 1298 936 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeFlushContextReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 937 { 938 RT_NOREF(pThis); 939 940 TPM_DECODE_INIT(); 941 TPM_DECODE_U32(hFlush, hFlush); 942 pHlp->pfnPrintf(pHlp, " hFlush: %#x\n", hFlush); 1299 static const char *g_apszHandlesFlushContextReq[] = 1300 { 1301 "hFlush", 1302 NULL 1303 }; 1304 1305 1306 static const char *g_apszHandlesLoadReq[] = 1307 { 1308 "hParent", 1309 NULL 1310 }; 1311 1312 1313 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeLoadReq(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1314 { 1315 RT_NOREF(pThis); 1316 1317 TPM_DECODE_INIT(); 1318 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InPrivate"); 1319 TPM_DECODE_END_IF_ERROR(); 1320 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "InPublic"); 1321 TPM_DECODE_END_IF_ERROR(); 1322 TPM_DECODE_END(); 1323 } 1324 1325 1326 static const char *g_apszHandlesLoadResp[] = 1327 { 1328 "hObj", 1329 NULL 1330 }; 1331 1332 1333 static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeLoadResp(PRTTRACELOGDECODERHLP pHlp, PTPMSTATE pThis, PTPMDECODECTX pCtx) 1334 { 1335 RT_NOREF(pThis); 1336 1337 TPM_DECODE_INIT(); 1338 vboxTraceLogDecodeSizedBufU16(pHlp, pCtx, "Name"); 1339 TPM_DECODE_END_IF_ERROR(); 943 1340 TPM_DECODE_END(); 944 1341 } … … 949 1346 uint32_t u32CmdCode; 950 1347 const char *pszCmdCode; 951 uint32_t cbReqMin;952 uint32_t cbRespMin;1348 const char **papszHandlesReq; 1349 const char **papszHandlesResp; 953 1350 PFNFNDECODETPM2CCREQ pfnDecodeReq; 954 1351 PFNFNDECODETPM2CCRESP pfnDecodeResp; 955 1352 } s_aTpmCmdCodes[] = 956 1353 { 957 #define TPM_CMD_CODE_INIT_NOT_IMPL(a_CmdCode) { a_CmdCode, #a_CmdCode, 0, 0, NULL, NULL } 958 #define TPM_CMD_CODE_INIT(a_CmdCode, a_ReqStruct, a_RespStruct, a_pfnReq, a_pfnResp) { a_CmdCode, #a_CmdCode, sizeof(a_ReqStruct), \ 959 sizeof(a_RespStruct), a_pfnReq, a_pfnResp } 1354 #define TPM_CMD_CODE_INIT_NOT_IMPL(a_CmdCode) { a_CmdCode, #a_CmdCode, NULL, NULL, NULL, NULL } 1355 #define TPM_CMD_CODE_INIT(a_CmdCode, a_apszHandlesReq, a_apszHandlesResp, a_pfnReq, a_pfnResp) { a_CmdCode, #a_CmdCode, \ 1356 a_apszHandlesReq, a_apszHandlesResp, \ 1357 a_pfnReq, a_pfnResp } 960 1358 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_UNDEFINE_SPACE_SPECIAL), 961 1359 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_EVICT_CONTROL), … … 967 1365 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CLEAR_CONTROL), 968 1366 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CLOCK_SET), 969 TPM_CMD_CODE_INIT( TPM2_CC_HIERARCHY_CHANGE_AUTH, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeHierarchyChangeAuthReq,NULL),970 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_NV_DEFINE_SPACE),1367 TPM_CMD_CODE_INIT( TPM2_CC_HIERARCHY_CHANGE_AUTH, g_apszHandlesHierarchyChangeAuthReq, NULL, vboxTraceLogDecodeEvtTpmDecodeHierarchyChangeAuthReq, NULL), 1368 TPM_CMD_CODE_INIT( TPM2_CC_NV_DEFINE_SPACE, g_apszHandlesNvDefineSpaceReq, NULL, vboxTraceLogDecodeEvtTpmDecodeNvDefineSpaceReq, NULL), 971 1369 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_PCR_ALLOCATE), 972 1370 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_PCR_SET_AUTH_POLICY), 973 1371 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_PP_COMMANDS), 974 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_SET_PRIMARY_POLICY),1372 TPM_CMD_CODE_INIT( TPM2_CC_SET_PRIMARY_POLICY, g_apszHandlesSetPrimaryPolicyReq, NULL, vboxTraceLogDecodeEvtTpmDecodeSetPrimaryPolicyReq, NULL), 975 1373 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_FIELD_UPGRADE_START), 976 1374 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CLOCK_RATE_ADJUST), 977 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CREATE_PRIMARY),1375 TPM_CMD_CODE_INIT( TPM2_CC_CREATE_PRIMARY, g_apszHandlesCreatePrimaryReq, g_apszHandlesCreatePrimaryResp, vboxTraceLogDecodeEvtTpmDecodeCreatePrimaryReq, vboxTraceLogDecodeEvtTpmDecodeCreatePrimaryResp), 978 1376 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_GLOBAL_WRITE_LOCK), 979 1377 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_GET_COMMAND_AUDIT_DIGEST), 980 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_NV_INCREMENT),981 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_NV_SET_BITS),1378 TPM_CMD_CODE_INIT( TPM2_CC_NV_INCREMENT, g_apszHandlesNvIncrementReq, NULL, NULL, NULL), 1379 TPM_CMD_CODE_INIT( TPM2_CC_NV_SET_BITS, g_apszHandlesNvSetBitsReq, NULL, vboxTraceLogDecodeEvtTpmDecodeNvSetBitsReq, NULL), 982 1380 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_EXTEND), 983 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_NV_WRITE),1381 TPM_CMD_CODE_INIT( TPM2_CC_NV_WRITE, g_apszHandlesNvWriteReq, NULL, vboxTraceLogDecodeEvtTpmDecodeNvWriteReq, NULL), 984 1382 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_WRITE_LOCK), 985 1383 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_DICTIONARY_ATTACK_LOCK_RESET), 986 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_DICTIONARY_ATTACK_PARAMETERS),1384 TPM_CMD_CODE_INIT( TPM2_CC_DICTIONARY_ATTACK_PARAMETERS, g_apszHandlesDictionaryAttackParametersReq, NULL, vboxTraceLogDecodeEvtTpmDecodeDictionaryAttackParametersReq, NULL), 987 1385 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_CHANGE_AUTH), 988 1386 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_PCR_EVENT), … … 994 1392 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_INCREMENTAL_SELF_TEST), 995 1393 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_SELF_TEST), 996 TPM_CMD_CODE_INIT( TPM2_CC_STARTUP, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq,NULL),997 TPM_CMD_CODE_INIT( TPM2_CC_SHUTDOWN, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq,NULL),1394 TPM_CMD_CODE_INIT( TPM2_CC_STARTUP, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq, NULL), 1395 TPM_CMD_CODE_INIT( TPM2_CC_SHUTDOWN, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeStartupShutdownReq, NULL), 998 1396 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_STIR_RANDOM), 999 1397 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ACTIVATE_CREDENTIAL), 1000 1398 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_CERTIFY), 1001 1399 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_NV), 1002 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CERTIFY_CREATION),1400 TPM_CMD_CODE_INIT( TPM2_CC_CERTIFY_CREATION, g_apszHandlesCertifyCreationReq, NULL, vboxTraceLogDecodeEvtTpmDecodeCertifyCreationReq, vboxTraceLogDecodeEvtTpmDecodeCertifyCreationResp), 1003 1401 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_DUPLICATE), 1004 1402 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_GET_TIME), 1005 1403 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_GET_SESSION_AUDIT_DIGEST), 1006 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeNvReadReq,vboxTraceLogDecodeEvtTpmDecodeNvReadResp),1404 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ, g_apszHandlesNvReadReq, NULL, vboxTraceLogDecodeEvtTpmDecodeNvReadReq, vboxTraceLogDecodeEvtTpmDecodeNvReadResp), 1007 1405 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_READ_LOCK), 1008 1406 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_OBJECT_CHANGE_AUTH), 1009 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_POLICY_SECRET),1407 TPM_CMD_CODE_INIT( TPM2_CC_POLICY_SECRET, g_apszHandlesPolicySecretReq, NULL, vboxTraceLogDecodeEvtTpmDecodePolicySecretReq, vboxTraceLogDecodeEvtTpmDecodePolicySecretResp), 1010 1408 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_REWRAP), 1011 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_CREATE),1409 TPM_CMD_CODE_INIT( TPM2_CC_CREATE, g_apszHandlesCreateReq, NULL, vboxTraceLogDecodeEvtTpmDecodeCreateReq, vboxTraceLogDecodeEvtTpmDecodeCreateResp), 1012 1410 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ECDH_ZGEN), 1013 TPM_CMD_CODE_INIT( TPM2_CC_HMAC_MAC, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeHmacMacReq,vboxTraceLogDecodeEvtTpmDecodeHmacMacResp),1411 TPM_CMD_CODE_INIT( TPM2_CC_HMAC_MAC, g_apszHandlesHmacMacReq, NULL, vboxTraceLogDecodeEvtTpmDecodeHmacMacReq, vboxTraceLogDecodeEvtTpmDecodeHmacMacResp), 1014 1412 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_IMPORT), 1015 TPM_CMD_CODE_INIT _NOT_IMPL(TPM2_CC_LOAD),1016 TPM_CMD_CODE_INIT( TPM2_CC_QUOTE, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeQuoteReq,vboxTraceLogDecodeEvtTpmDecodeQuoteResp),1413 TPM_CMD_CODE_INIT( TPM2_CC_LOAD, g_apszHandlesLoadReq, g_apszHandlesLoadResp, vboxTraceLogDecodeEvtTpmDecodeLoadReq, vboxTraceLogDecodeEvtTpmDecodeLoadResp), 1414 TPM_CMD_CODE_INIT( TPM2_CC_QUOTE, g_apszHandlesQuoteReq, NULL, vboxTraceLogDecodeEvtTpmDecodeQuoteReq, vboxTraceLogDecodeEvtTpmDecodeQuoteResp), 1017 1415 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_RSA_DECRYPT), 1018 1416 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_HMAC_MAC_START), … … 1025 1423 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ECDH_KEY_GEN), 1026 1424 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_ENCRYPT_DECRYPT), 1027 TPM_CMD_CODE_INIT( TPM2_CC_FLUSH_CONTEXT, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeFlushContextReq,NULL),1425 TPM_CMD_CODE_INIT( TPM2_CC_FLUSH_CONTEXT, g_apszHandlesFlushContextReq, NULL, NULL, NULL), 1028 1426 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_LOAD_EXTERNAL), 1029 1427 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_MAKE_CREDENTIAL), 1030 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ_PUBLIC, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeNvReadPublicReq,vboxTraceLogDecodeEvtTpmDecodeNvReadPublicResp),1428 TPM_CMD_CODE_INIT( TPM2_CC_NV_READ_PUBLIC, g_apszHandlesNvReadPublicReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeNvReadPublicResp), 1031 1429 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_AUTHORIZE), 1032 1430 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_AUTH_VALUE), … … 1038 1436 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_OR), 1039 1437 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_TICKET), 1040 TPM_CMD_CODE_INIT( TPM2_CC_READ_PUBLIC, TPM2REQREADPUBLIC, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeReadPublicReq,vboxTraceLogDecodeEvtTpmDecodeReadPublicResp),1438 TPM_CMD_CODE_INIT( TPM2_CC_READ_PUBLIC, g_apszHandlesReadPublicReq, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeReadPublicResp), 1041 1439 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_RSA_ENCRYPT), 1042 TPM_CMD_CODE_INIT( TPM2_CC_START_AUTH_SESSION, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionReq,vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionResp),1440 TPM_CMD_CODE_INIT( TPM2_CC_START_AUTH_SESSION, g_apszHandlesStartAuthSessionReq, g_apszHandlesStartAuthSessionResp, vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionReq, vboxTraceLogDecodeEvtTpmDecodeStartAuthSessionResp), 1043 1441 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_VERIFY_SIGNATURE), 1044 TPM_CMD_CODE_INIT( TPM2_CC_ECC_PARAMETERS, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodeEccParametersReq,vboxTraceLogDecodeEvtTpmDecodeEccParametersResp),1442 TPM_CMD_CODE_INIT( TPM2_CC_ECC_PARAMETERS, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeEccParametersReq, vboxTraceLogDecodeEvtTpmDecodeEccParametersResp), 1045 1443 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_FIRMWARE_READ), 1046 TPM_CMD_CODE_INIT( TPM2_CC_GET_CAPABILITY, TPM2REQGETCAPABILITY, TPM2RESPGETCAPABILITY, vboxTraceLogDecodeEvtTpmDecodeGetCapabilityReq,vboxTraceLogDecodeEvtTpmDecodeGetCapabilityResp),1047 TPM_CMD_CODE_INIT( TPM2_CC_GET_RANDOM, TPM2REQGETRANDOM, TPM2RESPGETRANDOM, vboxTraceLogDecodeEvtTpmDecodeGetRandomReq,vboxTraceLogDecodeEvtTpmDecodeGetRandomResp),1444 TPM_CMD_CODE_INIT( TPM2_CC_GET_CAPABILITY, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeGetCapabilityReq, vboxTraceLogDecodeEvtTpmDecodeGetCapabilityResp), 1445 TPM_CMD_CODE_INIT( TPM2_CC_GET_RANDOM, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeGetRandomReq, vboxTraceLogDecodeEvtTpmDecodeGetRandomResp), 1048 1446 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_GET_TEST_RESULT), 1049 1447 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_GET_HASH), 1050 TPM_CMD_CODE_INIT( TPM2_CC_PCR_READ, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodePcrReadReq,vboxTraceLogDecodeEvtTpmDecodePcrReadResp),1448 TPM_CMD_CODE_INIT( TPM2_CC_PCR_READ, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodePcrReadReq, vboxTraceLogDecodeEvtTpmDecodePcrReadResp), 1051 1449 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_PCR), 1052 1450 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_POLICY_RESTART), 1053 TPM_CMD_CODE_INIT( TPM2_CC_READ_CLOCK, TPMREQHDR, TPMRESPHDR, NULL,vboxTraceLogDecodeEvtTpmDecodeReadClockResp),1054 TPM_CMD_CODE_INIT( TPM2_CC_PCR_EXTEND, TPMREQHDR, TPMRESPHDR, vboxTraceLogDecodeEvtTpmDecodePcrExtendReq,NULL),1451 TPM_CMD_CODE_INIT( TPM2_CC_READ_CLOCK, NULL, NULL, NULL, vboxTraceLogDecodeEvtTpmDecodeReadClockResp), 1452 TPM_CMD_CODE_INIT( TPM2_CC_PCR_EXTEND, g_apszHandlesPcrExtendReq, NULL, vboxTraceLogDecodeEvtTpmDecodePcrExtendReq, NULL), 1055 1453 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_PCR_SET_AUTH_VALUE), 1056 1454 TPM_CMD_CODE_INIT_NOT_IMPL(TPM2_CC_NV_CERTIFY), … … 1090 1488 if (cbCmd >= sizeof(*pHdr)) 1091 1489 { 1490 uint16_t u16Tag = RT_BE2H_U16(pHdr->u16Tag); 1092 1491 uint32_t u32CmdCode = RT_BE2H_U32(pHdr->u32Ordinal); 1093 1492 uint32_t cbReqPayload = RT_BE2H_U32(pHdr->cbReq) - sizeof(*pHdr); … … 1110 1509 { 1111 1510 pHlp->pfnPrintf(pHlp, " %s (%u bytes):\n", s_aTpmCmdCodes[i].pszCmdCode, cbReqPayload); 1511 pHlp->pfnPrintf(pHlp, " u16Tag: %#x\n", u16Tag); 1512 1513 1514 TPMDECODECTX Ctx; 1515 PTPMDECODECTX pCtx = &Ctx; 1516 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&Ctx, (const uint8_t *)(pHdr + 1), cbReqPayload); 1517 1518 /* Decode the handle area. */ 1519 if (s_aTpmCmdCodes[i].papszHandlesReq) 1520 { 1521 pHlp->pfnPrintf(pHlp, " Handles:\n"); 1522 1523 const char **papszHnd = s_aTpmCmdCodes[i].papszHandlesReq; 1524 while (*papszHnd) 1525 { 1526 TPM_DECODE_U32(u32Hnd, u32Hnd); 1527 pHlp->pfnPrintf(pHlp, " %s: %#x\n", *papszHnd, u32Hnd); 1528 papszHnd++; 1529 } 1530 } 1531 1532 /* Decode authorization area if available. */ 1533 if (u16Tag == TPM2_ST_SESSIONS) 1534 { 1535 pHlp->pfnPrintf(pHlp, " Authorization Area:\n"); 1536 vboxTraceLogDecodeEvtTpmAuthSessionReq(pHlp, pCtx); 1537 } 1538 1539 /* Decode parameters. */ 1112 1540 if (s_aTpmCmdCodes[i].pfnDecodeReq) 1113 1541 { 1114 if (cbCmd >= s_aTpmCmdCodes[i].cbReqMin) 1115 { 1116 TPMDECODECTX Ctx; 1117 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&Ctx, (const uint8_t *)(pHdr + 1), cbReqPayload); 1118 s_aTpmCmdCodes[i].pfnDecodeReq(pHlp, pTpmState, &Ctx); 1119 } 1120 else 1121 pHlp->pfnErrorMsg(pHlp, "Malformed %s command, not enough room for the input\n", s_aTpmCmdCodes[i].pszCmdCode); 1542 pHlp->pfnPrintf(pHlp, " Parameters:\n"); 1543 s_aTpmCmdCodes[i].pfnDecodeReq(pHlp, pTpmState, &Ctx); 1122 1544 } 1123 else if (cbReqPayload) 1124 pHlp->pfnPrintf(pHlp, "%.*Rhxd\n", cbReqPayload, pHdr + 1); 1545 1546 if (pCtx->cbLeft) 1547 pHlp->pfnPrintf(pHlp, " Leftover undecoded data:\n" 1548 "%.*Rhxd\n", pCtx->cbLeft, pCtx->pbBuf); 1125 1549 return; 1126 1550 } … … 1145 1569 uint32_t cbRespPayload = RT_BE2H_U32(pHdr->cbResp) - sizeof(*pHdr); 1146 1570 uint32_t u32ErrCode = RT_BE2H_U32(pHdr->u32ErrCode); 1571 uint16_t u16Tag = RT_BE2H_U16(pHdr->u16Tag); 1147 1572 1148 1573 pHlp->pfnPrintf(pHlp, " Status code: %#x (%u bytes)\n", u32ErrCode, cbRespPayload); 1574 pHlp->pfnPrintf(pHlp, " u16Tag: %#x\n", u16Tag); 1149 1575 PTPMSTATE pTpmState = (PTPMSTATE)pHlp->pfnDecoderStateGet(pHlp); 1150 1576 … … 1153 1579 && u32ErrCode == TPM_SUCCESS) 1154 1580 { 1581 TPMDECODECTX Ctx; 1582 PTPMDECODECTX pCtx = &Ctx; 1583 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&Ctx, (const uint8_t *)(pHdr + 1), cbRespPayload); 1584 1155 1585 for (uint32_t i = 0; i < RT_ELEMENTS(s_aTpmCmdCodes); i++) 1156 1586 { 1157 1587 if (s_aTpmCmdCodes[i].u32CmdCode == pTpmState->u32CmdCode) 1158 1588 { 1589 /* Decode the handle area. */ 1590 if (s_aTpmCmdCodes[i].papszHandlesResp) 1591 { 1592 pHlp->pfnPrintf(pHlp, " Handles:\n"); 1593 1594 const char **papszHnd = s_aTpmCmdCodes[i].papszHandlesResp; 1595 while (*papszHnd) 1596 { 1597 TPM_DECODE_U32(u32Hnd, u32Hnd); 1598 pHlp->pfnPrintf(pHlp, " %s: %#x\n", *papszHnd, u32Hnd); 1599 papszHnd++; 1600 } 1601 } 1602 1603 if (u16Tag == TPM2_ST_SESSIONS) 1604 { 1605 TPM_DECODE_INIT(); 1606 TPM_DECODE_U32(u32ParamSz, u32ParamSize); 1607 pHlp->pfnPrintf(pHlp, " u32ParamSize: %#x\n", u32ParamSz); 1608 TPM_DECODE_END(); 1609 } 1610 1611 /* Decode parameters. */ 1159 1612 if (s_aTpmCmdCodes[i].pfnDecodeResp) 1613 s_aTpmCmdCodes[i].pfnDecodeResp(pHlp, pTpmState, pCtx); 1614 1615 /* Decode authorization area if available. */ 1616 if (u16Tag == TPM2_ST_SESSIONS) 1160 1617 { 1161 if (cbResp >= s_aTpmCmdCodes[i].cbRespMin) 1162 { 1163 TPMDECODECTX Ctx; 1164 vboxTraceLogDecodeEvtTpmDecodeCtxInit(&Ctx, (const uint8_t *)(pHdr + 1), cbRespPayload); 1165 s_aTpmCmdCodes[i].pfnDecodeResp(pHlp, pTpmState, &Ctx); 1166 } 1167 else 1168 pHlp->pfnErrorMsg(pHlp, "Malformed %s response buffer, not enough room for the output\n", s_aTpmCmdCodes[i].pszCmdCode); 1169 return; 1618 pHlp->pfnPrintf(pHlp, " Authorization Area:\n"); 1619 vboxTraceLogDecodeEvtTpmAuthSessionResp(pHlp, pCtx); 1170 1620 } 1171 break; 1621 1622 if (pCtx->cbLeft) 1623 pHlp->pfnPrintf(pHlp, " Leftover undecoded data:\n" 1624 "%.*Rhxd\n", pCtx->cbLeft, pCtx->pbBuf); 1625 1626 return; 1172 1627 } 1173 1628 }
Note:
See TracChangeset
for help on using the changeset viewer.

