VirtualBox

Changeset 104918 in vbox for trunk/src/VBox/Devices/Trace


Ignore:
Timestamp:
Jun 14, 2024 9:01:03 AM (8 months ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
163520
Message:

Devices/Trace: Some more decoding for TPM commands, bugref:10701

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Trace/VBoxTraceLogDecoders.cpp

    r104903 r104918  
    7878
    7979
     80static struct
     81{
     82    const char     *pszCap;
     83    const uint32_t *paProperties;   
     84} s_aTpm2Caps[] =
     85{
     86    { RT_STR(TPM2_CAP_ALGS),            NULL },
     87    { RT_STR(TPM2_CAP_HANDLES),         NULL },
     88    { RT_STR(TPM2_CAP_COMMANDS),        NULL },
     89    { RT_STR(TPM2_CAP_PP_COMMANDS),     NULL },
     90    { RT_STR(TPM2_CAP_AUDIT_COMMANDS),  NULL },
     91    { RT_STR(TPM2_CAP_PCRS),            NULL },
     92    { RT_STR(TPM2_CAP_TPM_PROPERTIES),  NULL },
     93    { RT_STR(TPM2_CAP_PCR_PROPERTIES),  NULL },
     94    { RT_STR(TPM2_CAP_ECC_CURVES),      NULL },
     95    { RT_STR(TPM2_CAP_AUTH_POLICIES),   NULL },
     96    { RT_STR(TPM2_CAP_ACT),             NULL },
     97};
     98
    8099static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeGetCapability(PCTPMREQHDR pHdr, size_t cb)
    81100{
     
    83102    {
    84103        PCTPM2REQGETCAPABILITY pReq = (PCTPM2REQGETCAPABILITY)pHdr;
    85         RTMsgInfo("        u32Cap:      %#x\n"
    86                   "        u32Property: %#x\n"
    87                   "        u32Count:    %#x\n",
    88                   RT_BE2H_U32(pReq->u32Cap),
    89                   RT_BE2H_U32(pReq->u32Property),
    90                   RT_BE2H_U32(pReq->u32Count));
     104        uint32_t u32Cap      = RT_BE2H_U32(pReq->u32Cap);
     105        uint32_t u32Property = RT_BE2H_U32(pReq->u32Property);
     106        uint32_t u32Count    = RT_BE2H_U32(pReq->u32Count);
     107        if (u32Cap < RT_ELEMENTS(s_aTpm2Caps))
     108            RTMsgInfo("        u32Cap:      %s\n"
     109                      "        u32Property: %#x\n"
     110                      "        u32Count:    %#x\n",
     111                      s_aTpm2Caps[u32Cap], u32Property, u32Count);
     112        else
     113            RTMsgInfo("        u32Cap:      %#x (UNKNOWN)\n"
     114                      "        u32Property: %#x\n"
     115                      "        u32Count:    %#x\n",
     116                      u32Cap, u32Property, u32Count);
    91117        return;
    92118    }
    93119
    94120    RTMsgError("Malformed TPM2_CC_GET_CAPABILITY command, not enough room for the input\n");
     121}
     122
     123
     124static DECLCALLBACK(void) vboxTraceLogDecodeEvtTpmDecodeReadPublic(PCTPMREQHDR pHdr, size_t cb)
     125{
     126    if (cb >= sizeof(TPM2REQREADPUBLIC))
     127    {
     128        PCTPM2REQREADPUBLIC pReq = (PCTPM2REQREADPUBLIC)pHdr;
     129        TPMIDHOBJECT hObj = RT_BE2H_U32(pReq->hObj);
     130        RTMsgInfo("        hObj:      %#x\n", hObj);
     131        return;
     132    }
     133
     134    RTMsgError("Malformed TPM2_CC_READ_PUBLIC command, not enough room for the input\n");
    95135}
    96136
     
    184224    TPM_CMD_CODE_INIT(TPM2_CC_POLICY_OR,                        NULL),
    185225    TPM_CMD_CODE_INIT(TPM2_CC_POLICY_TICKET,                    NULL),
    186     TPM_CMD_CODE_INIT(TPM2_CC_READ_PUBLIC,                      NULL),
     226    TPM_CMD_CODE_INIT(TPM2_CC_READ_PUBLIC,                      vboxTraceLogDecodeEvtTpmDecodeReadPublic),
    187227    TPM_CMD_CODE_INIT(TPM2_CC_RSA_ENCRYPT,                      NULL),
    188228    TPM_CMD_CODE_INIT(TPM2_CC_START_AUTH_SESSION,               NULL),
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette