Hi Stefan,
> +static int parse(const int aOpt, const char *aArg)
> +{
> + switch (aOpt) {
> + case 'i':
> + if (parseHexOrDecimal(aArg, &nvindex, UINT_MAX,
> + "NVRAM index") != 0)
> + return -1;
> + break;
> +
> + case 'p':
> + if (!strcmp(aArg, "?")) {
> + displayStringsAndValues(permvalues, "");
> + end = 1;
> + return 0;
> + }
> + if (parseHexOrDecimal(aArg, &nvperm, UINT_MAX,
> + "NVRAM permission") != 0 &&
> + parseStringWithValues(aArg, permvalues, &nvperm, UINT_MAX,
> + "NVRAM permission") != 0)
> + return -1;
> + break;
> +
> + case 's':
> + if (parseHexOrDecimal(aArg, &nvsize, UINT_MAX,
> + "NVRAM index size") != 0)
> + return -1;
> + break;
> +
> + case 'o':
> + ownerpass = aArg;
> + if (!ownerpass)
> + askOwnerPass = TRUE;
> + else
> + askOwnerPass = FALSE;
> + ownerWellKnown = FALSE;
> + break;
> +
> + case 'y':
> + ownerWellKnown = TRUE;
> + ownerpass = NULL;
> + askOwnerPass = FALSE;
> + break;
> +
> + case 'a':
> + datapass = aArg;
> + if (!datapass)
> + askDataPass = TRUE;
> + else
> + askDataPass = FALSE;
> + dataWellKnown = FALSE;
> + break;
> +
> + case 'z':
> + dataWellKnown = TRUE;
> + datapass = NULL;
> + askDataPass = FALSE;
> + break;
> +
> + case 'u':
> + useUnicode = TRUE;
> + break;
> +
> + default:
> + return -1;
> + }
> + return 0;
> +}
> +
> +static void help(const char* aCmd)
> +{
> + logCmdHelp(aCmd);
> + logUnicodeCmdOption();
> + logCmdOption("-y, --owner-well-known",
> + _("Use 20 bytes of zeros (TSS_WELL_KNOWN_SECRET) as the
> TPM owner secret"));
> + logCmdOption("-z, --data-well-known",
> + _("Use 20 bytes of zeros (TSS_WELL_KNOWN_SECRET) as the
> NVRAM area's secret"));
> + logOwnerPassCmdOption();
> + logCmdOption("-a, --pwda",
> + _("NVRAM area password"));
> + logNVIndexCmdOption();
> + logCmdOption("-s, --size",
> + _("Size of the NVRAM area"));
> + logCmdOption("-p, --permissions",
> + _("Permissions of the NVRAM area"));
> +
> + displayStringsAndValues(permvalues, " ");
> +}
> +
> +int main(int argc, char **argv)
> +{
> + TSS_HTPM hTpm;
> + TSS_HNVSTORE nvObject;
> + TSS_FLAG fNvAttrs;
> + TSS_HPOLICY hTpmPolicy, hDataPolicy;
> + int iRc = -1;
> + BYTE well_known_secret[] = TSS_WELL_KNOWN_SECRET;
> + int opswd_len = -1;
> + int dpswd_len = -1;
> + struct option hOpts[] = {
> + {"index" , required_argument, NULL, 'i'},
> + {"size" , required_argument, NULL, 's'},
> + {"permissions" , required_argument, NULL, 'p'},
> + {"pwdo" , optional_argument, NULL, 'o'},
> + {"pwda" , optional_argument, NULL, 'a'},
> + {"use-unicode" , no_argument, NULL, 'u'},
> + {NULL , no_argument, NULL, 0},
> + };
> +
> + initIntlSys();
> +
> + if (genericOptHandler
> + (argc, argv, "i:s:p:o:d:yzu", hOpts,
It looks like 'a' should be in this list?
When compiling with your patch, I get this:
tpm_tspi.c: In function ‘unloadNVDataPublic’:
tpm_tspi.c:706: error: implicit declaration of function
‘Trspi_UnloadBlob_NV_DATA_PUBLIC’
Do you have a patch to trousers, or maybe one I missed that's not
upstream yet?
Thanks,
Kent
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
TrouSerS-tech mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/trousers-tech