Go to main content

man pages section 3: Library Interfaces and Headers

Exit Print View

Updated: Wednesday, July 27, 2022
 
 

Tspi_Context_RegisterKey (3)

Name

Tspi_Context_RegisterKey - register a key in the TSS Persistent Storage database

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_RegisterKey(TSS_HCONTEXT hContext,                    TSS_HKEY hKey,
TSS_FLAG     persistentStorageType,       TSS_UUID uuidKey,
TSS_FLAG     persistentStorageTypeParent, TSS_UUID uuidParentKey);

Description

Library Functions Manual                           Tspi_Context_RegisterKey(3)



                   TCG Software Stack Developers Reference

NAME
       Tspi_Context_RegisterKey - register a key in the TSS Persistent Storage
       database

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_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 be loaded as necessary. It
       also includes all information required for loading the key, as well  as
       information about its parent key.


PARAMETERS
   hContext
       The hContext parameter is the handle of the context object.

   hKey
       The  hKey  parameter is the handle of the key object addressing the key
       to be registered.

   persistentStorageType
       The persistentStorageType parameter indicates  the  persistent  storage
       the key is registered in.

   uuidKey
       The  uuidKey  parameter  is  the UUID by which the key is registered in
       persistent storage.

   persistentStorageTypeParent
       The  persistentStorageTypeParent  parameter  indicates  the  persistent
       storage that the parent key is registered in.

   uuidParentKey
       The uuidParentKey parameter is the UUID by which the parent key is reg-
       istered in persistent storage.


RETURN CODES
       Tspi_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 database.


       TSS_E_INTERNAL_ERROR
              An internal SW error has been detected.


       TSS_E_BAD_PARAMETER
              One or more parameters is bad.


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
       }


CONFORMING TO
       Tspi_Context_RegisterKey  conforms to the Trusted Computing Group Soft-
       ware Specification version 1.1 Golden



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:


       +---------------+---------------------------+
       |ATTRIBUTE TYPE |     ATTRIBUTE VALUE       |
       +---------------+---------------------------+
       |Availability   | library/security/trousers |
       +---------------+---------------------------+
       |Stability      | Uncommitted               |
       +---------------+---------------------------+

SEE ALSO
       Tspi_Context_UnregisterKey(3), Tspi_Context_LoadKeyByUUID(3), Tspi_Con-
       text_GetRegisteredKeyByUUID(3).




NOTES
       Source  code  for open source software components in Oracle Solaris can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-
       code-downloads.html.

       This software was built from source available at https://github.com/or-
       acle/solaris-userland.  The original community  source  was  downloaded
       from                                                    https://source-
       forge.net/projects/trousers/files/trousers/0.3.15/trousers-0.3.15.tar.gz.

       Further information about this software can be found on the open source
       community website at http://trousers.sourceforge.net/.



TSS 1.1                           2004-05-25
                                                   Tspi_Context_RegisterKey(3)