.\" Copyright (C) 2004 International Business Machines Corporation .\" Written by Megan Schneider based on the Trusted Computing Group Software Stack Specification Version 1.1 Golden .\" .de Sh \" Subsection .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Ip \" List item .br .ie \\n(.$>=3 .ne \\$3 .el .ne 3 .IP "\\$1" \\$2 .. .TH "Tspi_Context_RegisterKey" 3 "2004-05-25" "TSS 1.1" .ce 1 TCG Software Stack Developers Reference .SH NAME Tspi_Context_RegisterKey \- register a key in the TSS Persistent Storage database .SH "SYNOPSIS" .ad l .hy 0 .nf .B #include .B #include .B #include .B #include .B #include .B #include .B #include .sp .BI "TSS_RESULT Tspi_Context_RegisterKey(TSS_HCONTEXT " hContext ", TSS_HKEY " hKey "," .BI " TSS_FLAG " persistentStorageType ", TSS_UUID " uuidKey "," .BI " TSS_FLAG " persistentStorageTypeParent ", TSS_UUID " uuidParentKey "); " .fi .sp .ad .hy .SH "DESCRIPTION" .PP \fBTspi_Context_RegisterKey\fR is the API that registers a key with the TSS Persistent Storage database so that it can be loaded as necessary. It also includes all information required for loading the key, as well as information about its parent key. .SH "PARAMETERS" .PP .SS hContext The \fIhContext\fR parameter is the handle of the context object. .SS hKey The \fIhKey\fR parameter is the handle of the key object addressing the key to be registered. .SS persistentStorageType The \fIpersistentStorageType\fR parameter indicates the persistent storage the key is registered in. .SS uuidKey The \fIuuidKey\fR parameter is the UUID by which the key is registered in persistent storage. .SS persistentStorageTypeParent The \fIpersistentStorageTypeParent\fR parameter indicates the persistent storage that the parent key is registered in. .SS uuidParentKey The \fIuuidParentKey\fR parameter is the UUID by which the parent key is registered in persistent storage. .SH "RETURN CODES" .PP \fBTspi_Context_RegisterKey\fR returns TSS_SUCCESS on success, otherwise one of the following values is returned: .TP .SM TSS_E_INVALID_HANDLE \fIhContext\fR is not a valid handle. .TP .SM TSS_E_PS_KEY_NOTFOUND The key cannot be found in the persistent storage database. .TP .SM TSS_E_INTERNAL_ERROR An internal SW error has been detected. .TP .SM TSS_E_BAD_PARAMETER One or more parameters is bad. .SH "EXAMPLE" .nf #include 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 } .fi .SH "CONFORMING TO" .PP \fBTspi_Context_RegisterKey\fR conforms to the Trusted Computing Group Software Specification version 1.1 Golden .SH "SEE ALSO" .PP \fBTspi_Context_UnregisterKey\fR(3), \fBTspi_Context_LoadKeyByUUID\fR(3), \fBTspi_Context_GetRegisteredKeyByUUID\fR(3).