TSPI_TPM_CREATEMAINTENANCEARCHIVE(3)

πŸ’– Tspi_TPM_CreateMaintenanceArchive πŸ’–

okay bestie, welcome to the TCG Software Stack Developer's Reference β€” yes it's a Library Functions Manual page, yes it's from the TSS era, and yes we're gonna get through it together. no cap. 🫢


✨ NAME ✨

Tspi_TPM_CreateMaintenanceArchive β€” create the TPM manufacturer specific maintenance archive data. that's the whole vibe. πŸ’…


🌸 SYNOPSIS 🌸

first you gotta invite the whole friend group in, so here's your include stack:

#include <tss/platform.h>
#include <tss/tcpa_defines.h>
#include <tss/tcpa_typedef.h>
#include <tss/tcpa_struct.h>
#include <tss/tss_typedef.h>
#include <tss/tss_structs.h>
#include <tss/tspi.h>

and here's the function itself, looking exactly like this, do not touch a single character:

TSS_RESULT Tspi_TPM_CreateMaintenanceArchive(TSS_HTPM hTPM,                 TSS_BOOL fGenerateRndNumber,
                                             UINT32*  pulRndNumberLength,   BYTE**   prgbRndNumber,
                                             UINT32*  pulArchiveDataLength, BYTE**   prgbArchiveData);

πŸ¦‹ DESCRIPTION πŸ¦‹

so Tspi_TPM_CreateMaintenanceArchive creates the TPM Manufacturer specific maintenance archive data. that's its whole job. main character energy fr fr. πŸ‘‘

but here's the tea, and it's a big one: this command is not currently implemented by any manufacturer. not one. zero. it's giving ghost town. πŸ’€

so like. read it, love it, but don't expect it to actually do the thing. 😭


πŸŽ€ PARAMETERS πŸŽ€

hTPM

this one is how you specify the handle of the TPM object. your little entry pass. ✨

fGenerateRndNumber

okay so this decides how the random number gets generated. if it's TRUE, the TPM itself generates a random number and hands it back to you. if it's FALSE, the random number is calculated based on the owner secret instead. two paths, one outcome. 🌈

pulRndNumberLength

this receives the length in bytes of the prgbRndNumber parameter. and listen β€” this is 0 if fGenerateRndNumber is FALSE. noted. πŸ“

prgbRndNumber

this receives a pointer to the random number data attributes. and this one is NULL if fGenerateRndNumber is FALSE. bestie the empty case is real. πŸ«₯

pulArchiveDataLength

receives the length in bytes of the prgbArchiveData parameter. πŸ’«

prgbArchiveData

receives a pointer to the archive data. that's the actual goods. πŸ“¦


πŸ”₯ RETURN CODES πŸ”₯

Tspi_TPM_CreateMaintenanceArchive returns TSS_SUCCESS on success β€” slay β€” otherwise one of these lil gremlins shows up instead:

  • TSS_E_INVALID_HANDLE β€” hTPM is not a valid handle. wrong pass, no entry. πŸ™ˆ
  • TSS_E_INTERNAL_ERROR β€” an internal SW error has been detected. software said "not today". πŸ’€
  • TSS_E_BAD_PARAMETER β€” one or more parameters is bad. somebody misbehaved. 😀
  • TSS_E_NOTIMPL β€” the function is not implemented. yeah. remember the tea from earlier? this is that tea. 😭

πŸ‘‘ CONFORMING TO πŸ‘‘

Tspi_TPM_CreateMaintenanceArchive conforms to the Trusted Computing Group Software Specification version 1.1 Golden. iconic behavior, honestly. ✨


🌟 SEE ALSO 🌟

go read these next, they're the friend group:


and that's the page!! mwah. πŸŽ€

this was TSS 1.1, dated 2004-05-25, from the page we lovingly call Tspi_TPM_C...anceArchive(3) β€” the truncated little nameplate that never got finished. relatable honestly. πŸ’– stay hydrated, read your manpages, and remember: not implemented β‰  not iconic. πŸ¦‹βœ¨