NAME¶
Tspi_Context_UnregisterKey - unregister a key from the persistent storage
device.
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);
DESCRIPTION¶
TSS_Context_UnregisterKey provides the capabilities of the TSS Core
Service or TSS Service Provider
PARAMETERS¶
hContext¶
The handle of the context object.
persistentStorageType¶
Flag indicating the persistent storage.
uuidKey¶
The UUID of the key to be removed from the persistent storage.
phKey¶
Recieves the handle of a key object containing the information from the archive.
pulRespDataLength¶
Recieves the length (in bytes) of the prgbRespData parameter.
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 the following values are returned:
- TSS_E_INVALID_HANDLE - the parameter hContext
is an invalid parameter.
- TSS_E_PS_KEY_NOTFOUND - the parameter uuidKey
is an invalid UUID.
- TSS_E_INTERNAL_ERROR - An error occurred internal to
the TSS.
EXAMPLE¶
#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
}
Tspi_Context_UnregisterKey conforms to the Trusted Computing Group
Software Specification version 1.1 Golden
SEE ALSO¶
Tspi_Key_CreateKey(3),
Tspi_Context_RegisterKey(3).