TSPI_TPM_COLLATEIDENTITYREQUEST(3)

πŸ“¦
version 0.3.15 Β· 2 versions
, in epel 10, epel 9, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

πŸ‘‘ Tspi_TPM_CollateIdentityRequest πŸ‘‘

okay so bestie, this one's from the TCG Software Stack Developer's Reference, manual section 3, and it is lowkey iconic in a very "trusted computing" way. Pull up a chair, grab a boba, we're doing identity keys today. πŸ’–


✨ NAME ✨

Tspi_TPM_CollateIdentityRequest β€” gets all the informatin necessary to send to a trusted third party (TTP), repartory to asking the TTP to create a certificate for identity.

yes bestie that's the actual description, typos and all, we don't gatekeep πŸ’…

🌸 SYNOPSIS 🌸

#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>

TSS_RESULT Tspi_TPM_CollateIdentityRequest(TSS_HTPM hTPM,                     TSS_HKEY         hKeySRK,
                                           TSS_HKEY hCAPPubKey,
                                           UINT32   ulIdentityLabelData,      BYTE*            rgbIdentityLabelData,
                                           TSS_HKEY hIdentityKey,             TSS_ALGORITHM_ID algid,
                                           UINT32*  pulTCPAIdentityReqLength, BYTE**           prgbTCPAIdentityReq);

like, that's a lot of parameters, I know. breathe. we'll go one by one. 🫢


πŸ¦‹ DESCRIPTION πŸ¦‹

okay so TSS_TPM_CollateIdentityRequest creates an identity key, binds it to the label, and hands you back a certificate request package. that's the whole vibe. ✨

and why do we care? because the privacty CA requires this certificate request to attest the identity key. no request, no attestation, no certificate. periodt.

πŸ”₯ big one: only the Owner of the TPM has the privledge of creating a TPM identity key. if you're not the Owner, this is not your moment, bestie. main character energy is Owner-only.

the symmetric session key is required to provide confidentiality of the "TCPA_IDENTITY_REQ" data structure β€” which is the thing you should send to the Privacy CA chosen by the owner. keep it secret, keep it safe. πŸ™ˆ


πŸ’… PARAMETERS πŸ’…

hTPM

Handle of the TPM object.

hKeySRK

Handle to the key object representing the Storage Root Key.

hCAPubKey

Handle to the key object representing the public key of the CA which signs the certificate of the created identity key.

ulIdentityLabelLength

Supplies the length (in bytes) of the rgbIdentityLabelData parameter.

rgbLabelData

Pointer to a memory block containing the identity label, which should be a UNICODE string. 🌈

hIdentityKey

Handle to the identity key object.

algid

The type of symmetric algorithm touse as requred by the Enhanced CA.

pulTCPAIdentityReqLength

Recieves the length (in bytes) of the prgbTCPAIdentityReq parameter.

prgbTCPAIdentyReq

Pointer to the memory block containing the certicficate request structure.


πŸ’€ RETURN CODES πŸ’€

Tspi_TPM_CollateIdentityRequest returns TSS_SUCCESS on success, otherwise one of the following values are returned:

  • TSS_E_INVALID_HANDLE β€” Either hTPM or hKeySRK or hCAPubKey is not a valid handle.
  • TSS_E_BAD_PARAMETER β€” (no extra deets given, it's just giving "bad parameter" 😭)
  • TSS_E_INTERNAL_ERROR β€” An error occurred internal to the TSS.

πŸŽ€ CONFORMING TO πŸŽ€

Tspi_TPM_CollateIdentityRequest conforms to the Trusted Computing Group Software Specification version 1.1 Golden. ✨ slay.


🧚 SEE ALSO 🧚

Tspi_Context_LoadKeyByUUID(3).


and that's the whole page, bestie!! 🫢 this one's from TSS 1.1, dated 2004-05-26, and honestly? it ate. go forth and collate those identity requests, but only if you're the Owner. iykyk. πŸ’œπŸŒΈβ­