Introduction to Library Functions Tspi_Context_RegisterKey(3)
TCG Software Stack Developers ReferenceNAME
Tspi_Context_RegisterKey - register a key in the TSS Per-
sistent Storage databaseSYNOPSIS
#include
#include
#include
#include
#include
#include
#include
TSS_RESULT Tspi_Context_RegisterKey(TSS_HCONTEXT hContext, TSS_HKEY hKey,
TSS_FLAG persistentStorageType, TSS_UUID uuidKey,
TSS_FLAG persistentStorageTypeParent, TSS_UUID uuidParentKey);
DESCRIPTION
Tspi_Context_RegisterKey is the API that registers a key
with the TSS Persistent Storage database so that it can beloaded as necessary. It also includes all information re-
quired for loading the key, as well as information about its parent key.PARAMETERS
hContext The hContext parameter is the handle of the context object. hKeyThe hKey parameter is the handle of the key object address-
ing the key to be registered. persistentStorageType The persistentStorageType parameter indicates the persistent storage the key is registered in. uuidKeyThe uuidKey parameter is the UUID by which the key is re-
gistered in persistent storage. persistentStorageTypeParentThe persistentStorageTypeParent parameter indicates the per-
sistent storage that the parent key is registered in. uuidParentKey The uuidParentKey parameter is the UUID by which the parent key is registered in persistent storage.TSS 1.1 Last change: 2004-05-25 1
Introduction to Library Functions Tspi_Context_RegisterKey(3)
RETURN CODESTspi_Context_RegisterKey returns TSS_SUCCESS on success,
otherwise one of the following values is returned:TSS_E_INVALID_HANDLE
hContext is not a valid handle.TSS_E_PS_KEY_NOTFOUND
The key cannot be found in the persistent storage data-
base.TSS_E_INTERNAL_ERROR
An internal SW error has been detected.TSS_E_BAD_PARAMETER
One or more parameters is bad.EXAMPLE
#include
int main(void) {TSS_FLAGS initFlags = ...;
TSS_HKEY hKey, hSRK;
TSS_UUID keyUUID = {...};
// Create a TSP handleresult = Tspi_Context_Create(&hContext);
if (result != TSS_SUCCESS)
Error_Path();
// Connect to the TCSDresult = Tspi_Context_Connect(hContext, GLOBALSERVER);
if (result != TSS_SUCCESS)
Error_Path();
// Create the Key Objectresult = Tspi_Context_CreateObject(hContext,
TSS_OBJECT_TYPE_RSAKEY,
initFlags, &hKey);if (result != TSS_SUCCESS)
Error_Path();
// Load parent Key by UUIDresult = Tspi_Context_LoadKeyByUUID(hContext, TSS_PS_TYPE_SYSTEM,
SRK_UUID, &hSRK);
if (result != TSS_SUCCESS)
TSS 1.1 Last change: 2004-05-25 2
Introduction to Library Functions Tspi_Context_RegisterKey(3)
Error_Path();
// Do policy/secret handling hereresult = 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 Keyresult = Tspi_Context_UnregisterKey(hContext, TSS_PS_TYPE_SYSTEM,
migratableSignUUID, &hKey);if (result != TSS_SUCCESS)
Error_Path();
// exit, discarding hKey } CONFORMING TOTspi_Context_RegisterKey conforms to the Trusted Computing
Group Software Specification version 1.1 GoldenSEE ALSO
Tspi_Context_UnregisterKey(3),
Tspi_Context_LoadKeyByUUID(3),
Tspi_Context_GetRegisteredKeyByUUID(3).
ATTRIBUTES
See attributes(5) for descriptions of the following attri-
butes:TSS 1.1 Last change: 2004-05-25 3
Introduction to Library Functions Tspi_Context_RegisterKey(3)
__________________________________________________
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|____________________|_____________________________|_
| Availability | library/security/trousers ||____________________|_____________________________|_
| Interface Stability| Uncommitted ||____________________|____________________________|
NOTES Source for trousers is available at http://opensolaris.organd at http://sourceforge.net/projects/trousers. Documenta-
tion is available at file:///usr/share/man, and http://sourceforge.net/projects/trousers.TSS 1.1 Last change: 2004-05-25 4