Tspi_C...terKey(3)
β¨ NAME β¨
Tspi_Context_UnregisterKey β bestie, this is the one that unregisters a key from the persistent storage device. Yes, we're deleting. We're cleaning up. We're letting go π
πΈ 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_Context_UnregisterKey(TSS_HCONTEXT hContext, TSS_FLAG persistentStorageType,
TSS_UUID uuidKey, TSS_HKEY* phKey);
okay so like all seven of those includes? yeah you need every single one of them, no skipping π that's the whole TCG Software Stack Developer's Reference vibe, and this page lives in it.
π¦ DESCRIPTION π¦
TSS_Context_UnregisterKey provides the capabilities of the TSS Core Service or TSS Service Provider. that's it, that's the whole description, it's giving minimal but iconic π
π PARAMETERS π
hContextβ the handle of the context object. your little context bestie π«ΆpersistentStorageTypeβ a flag indicating the persistent storage.uuidKeyβ the UUID of the key to be removed from the persistent storage. this is the one getting evicted, no hard feelings β¨phKeyβ recieves the handle of a key object containing the information from the archive. (yes, "recieves". we keep the typo, we respect the typo π)pulRespDataLengthβ recieves the length (in bytes) of theprgbRespDataparameter.prgbRespDataβ on successful completion of the command, this parameter points to the buffer containing the actual data of the specified capability. The handle of the object to be destroyed.
β RETURN CODES β
Tspi_Context_UnregisterKey returns TSS_SUCCESS on success π otherwise, one of these lil guys comes back instead:
TSS_E_INVALID_HANDLEβ the parameterhContextis an invalid parameter. not it πTSS_E_PS_KEY_NOTFOUNDβ the parameteruuidKeyis an invalid UUID.TSS_E_INTERNAL_ERRORβ An error occurred internal to the TSS.
π₯ EXAMPLE π₯
here's the whole thing, verbatim, no cap:
#include <trousers/tss.h>
int
main(void)
{
TSS_FLAGS initFlags = ...;
TSS_HKEY hKey, hSRK;
TSS_UUID keyUUID = {...};
// Create a TSP handle
result = Tspi_Context_Create(&hContext);
if (result != TSS_SUCCESS)
Error_Path();
// Connect to the TCSD
result = Tspi_Context_Connect(hContext, GLOBALSERVER);
if (result != TSS_SUCCESS)
Error_Path();
// Create the Key Object
result = Tspi_Context_CreateObject(hContext,
TSS_OBJECT_TYPE_RSAKEY,
initFlags, &hKey);
if (result != TSS_SUCCESS)
Error_Path();
// Load parent Key by UUID
result = Tspi_Context_LoadKeyByUUID(hContext, TSS_PS_TYPE_SYSTEM,
SRK_UUID, &hSRK);
if (result != TSS_SUCCESS)
Error_Path();
// Do policy/secret handling here
result = Tspi_Key_CreateKey(hKey, hSRK, 0);
if (result != TSS_SUCCESS)
Error_Path();
// Register the Key in System PS (on the TCSD's platform)
result = Tspi_Context_RegisterKey(hContext, hKey, TSS_PS_TYPE_SYSTEM,
keyUUID, TSS_PS_TYPE_SYSTEM,
SRK_UUID);
if (result != TSS_SUCCESS)
Error_Path();
/* ...
*
* Use the key as needed, exiting the program if necessary, reloading
* the key using Tspi_Context_LoadKeyByUUID() after each restart. Once
* the key is no longer useful, unregister it from system PS as part
* of clean up.
*/
// Unregister the Key
result = Tspi_Context_UnregisterKey(hContext, TSS_PS_TYPE_SYSTEM,
migratableSignUUID, &hKey);
if (result != TSS_SUCCESS)
Error_Path();
// exit, discarding hKey
}
π CONFORMING TO π
Tspi_Context_UnregisterKey conforms to the Trusted Computing Group Software Specification version 1.1 Golden β¨ (yes, Golden, it's giving main character energy fr fr)
π SEE ALSO π
and that's the page bestie!! this gem is from the TCG Software Stack Developer's Reference, TSS 1.1, dated 2004-05-26 β old but iconic, we stan a vintage manpage ππ mwah, go unregister something responsibly β¨
π¦ where this page comes from
- debian bookworm: libtspi-dev 0.3.15-0.3 Β· BSD-3-Clause
- debian trixie: libtspi-dev 0.3.15-0.4 Β· BSD-3-Clause
- epel 10: trousers-devel 0.3.15-11.el10_0 Β· BSD
- epel 9: trousers-devel 0.3.15-5.el9 Β· BSD
- fedora 43: trousers-devel 0.3.15-15.fc43 Β· LicenseRef-Callaway-BSD
- fedora 43: trousers-devel 0.3.15-15.fc43 Β· LicenseRef-Callaway-BSD
- fedora 43: trousers-devel 0.3.15-16.fc43 Β· LicenseRef-Callaway-BSD
- fedora 43: trousers-devel 0.3.15-16.fc43 Β· LicenseRef-Callaway-BSD
- fedora 44: trousers-devel 0.3.15-17.fc44 Β· LicenseRef-Callaway-BSD
- fedora 44: trousers-devel 0.3.15-17.fc44 Β· LicenseRef-Callaway-BSD
- nixos 26.05: trousers 0.3.15
- nixpkgs unstable: netbsd-source 11.0
- nixpkgs unstable: trousers 0.3.15
- opensuse-leap 16.0: trousers-devel 0.3.15-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: trousers-devel 0.3.15-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: trousers-devel 0.3.15-160000.2.2 Β· BSD-3-Clause
- opensuse-leap 16.0: trousers-devel 0.3.15-160000.2.2 Β· BSD-3-Clause
- ubuntu jammy: libtspi-dev 0.3.15-0.2 Β· BSD-3-Clause
- ubuntu noble: libtspi-dev 0.3.15-0.3build2 Β· BSD-3-Clause
- ubuntu questing: libtspi-dev 0.3.15-0.4
- ubuntu resolute: libtspi-dev 0.3.15-1 Β· BSD-3-Clause
- ubuntu stonking: libtspi-dev 0.3.15-1ubuntu2 Β· BSD-3-Clause
- Copyright (C) 2004 International Business Machines Corporation
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms