Fapi_CreateKey
Feature API

## Functions

TSS2_RC | Fapi_CreateKey (FAPI_CONTEXT *context, char const *path, char const *type, char const *policyPath, char const *authValue)
TSS2_RC | Fapi_CreateKey_Async (FAPI_CONTEXT *context, char const *path, char const *type, char const *policyPath, char const *authValue)
TSS2_RC | Fapi_CreateKey_Finish (FAPI_CONTEXT *context)

## Detailed Description

FAPI functions to invoke CreateKey either as one-call or in an asynchronous manner.

## Function Documentation

## Fapi_CreateKey()

TSS2_RC Fapi_CreateKey | ( | FAPI_CONTEXT * | context,
|  | char const * | path,
|  | char const * | type,
|  | char const * | policyPath,
|  | char const * | authValue )

One-Call function for Fapi_CreateKey

Creates a key inside the TPM based on the Key type, using the supplied policy and authValue. The key is then stored either in the FAPI metadata store or the TPM.

Parameters

  [in,out] | context | The FAPI_CONTEXT
  [in] | path | The path where the new key is stored
  [in] | type | The type of the new key. May be NULL
  [in] | policyPath | The path to the policy that is associated with the new key. May be NULL
  [in] | authValue | The authorization value for the new key. May be NULL

Return values

  TSS2_RC_SUCCESS | if the function call was a success.
  TSS2_FAPI_RC_BAD_REFERENCE | if context or path is NULL.
  TSS2_FAPI_RC_BAD_CONTEXT | if context corruption is detected.
  TSS2_FAPI_RC_BAD_PATH | if policyPath is non-NULL and does not map to a FAPI policy.
  TSS2_FAPI_RC_KEY_NOT_FOUND | if the parent key does not map to a FAPI key.
  TSS2_FAPI_RC_PATH_ALREADY_EXISTS | if a file already exists at path.
  TSS2_FAPI_RC_BAD_VALUE | if the keyType is non-NULL and invalid.
  TSS2_FAPI_RC_BAD_SEQUENCE | if the context has an asynchronous operation already pending.
  TSS2_FAPI_RC_IO_ERROR | if the data cannot be saved.
  TSS2_FAPI_RC_MEMORY | if the FAPI cannot allocate enough memory for internal operations or return parameters.
  TSS2_FAPI_RC_NO_TPM | if FAPI was initialized in no-TPM-mode via its config file.
  TSS2_FAPI_RC_TRY_AGAIN | if an I/O operation is not finished yet and this function needs to be called again.
  TSS2_FAPI_RC_AUTHORIZATION_UNKNOWN | if a required authorization callback is not set.
  TSS2_ESYS_RC_* | possible error codes of ESAPI.
  TSS2_FAPI_RC_PATH_NOT_FOUND | if a FAPI object path was not found during authorization.
  TSS2_FAPI_RC_GENERAL_FAILURE | if an internal error occured.
  TSS2_FAPI_RC_NOT_PROVISIONED | FAPI was not provisioned.
  TSS2_FAPI_RC_AUTHORIZATION_FAILED | if the authorization attempt fails.
  TSS2_FAPI_RC_POLICY_UNKNOWN | if policy search for a certain policy digest was not successful.

## Fapi_CreateKey_Async()

TSS2_RC Fapi_CreateKey_Async | ( | FAPI_CONTEXT * | context,
|  | char const * | path,
|  | char const * | type,
|  | char const * | policyPath,
|  | char const * | authValue )

Asynchronous function for Fapi_CreateKey

Creates a key inside the TPM based on the Key type, using the supplied policy and authValue. The key is then stored either in the FAPI metadata store or the TPM.

Call Fapi_CreateKey_Finish to finish the execution of this command.

Parameters

  [in,out] | context | The FAPI_CONTEXT
  [in] | path | The path where the new key is stored
  [in] | type | The type of the new key. May be NULL
  [in] | policyPath | The path to the policy that is associated with the new key. May be NULL
  [in] | authValue | The authorization value for the new key. May be NULL

Return values

  TSS2_RC_SUCCESS | if the function call was a success.
  TSS2_FAPI_RC_BAD_REFERENCE | if context or path is NULL.
  TSS2_FAPI_RC_BAD_CONTEXT | if context corruption is detected.
  TSS2_FAPI_RC_BAD_PATH | if policyPath is non-NULL and does not map to a FAPI policy.
  TSS2_FAPI_RC_KEY_NOT_FOUND | if the parent key does not map to a FAPI key.
  TSS2_FAPI_RC_PATH_ALREADY_EXISTS | if a file already exists at path.
  TSS2_FAPI_RC_BAD_VALUE | if the keyType is non-NULL and invalid.
  TSS2_FAPI_RC_BAD_SEQUENCE | if the context has an asynchronous operation already pending.
  TSS2_FAPI_RC_IO_ERROR | if the data cannot be saved.
  TSS2_FAPI_RC_MEMORY | if the FAPI cannot allocate enough memory for internal operations or return parameters.
  TSS2_FAPI_RC_NO_TPM | if FAPI was initialized in no-TPM-mode via its config file.
  TSS2_FAPI_RC_PATH_NOT_FOUND | if a FAPI object path was not found during authorization.

## Fapi_CreateKey_Finish()

TSS2_RC Fapi_CreateKey_Finish | ( | FAPI_CONTEXT * | context | ) |

Asynchronous finish function for Fapi_CreateKey

This function should be called after a previous Fapi_CreateKey_Async.

Parameters

  [in,out] | context | The FAPI_CONTEXT

Return values

  TSS2_RC_SUCCESS | if the function call was a success.
  TSS2_FAPI_RC_BAD_REFERENCE | if context is NULL.
  TSS2_FAPI_RC_BAD_CONTEXT | if context corruption is detected.
  TSS2_FAPI_RC_BAD_SEQUENCE | if the context has an asynchronous operation already pending.
  TSS2_FAPI_RC_IO_ERROR | if the data cannot be saved.
  TSS2_FAPI_RC_MEMORY | if the FAPI cannot allocate enough memory for internal operations or return parameters.
  TSS2_FAPI_RC_TRY_AGAIN | if the asynchronous operation is not yet complete. Call this function again later.
  TSS2_FAPI_RC_BAD_VALUE | if an invalid value was passed into the function.
  TSS2_FAPI_RC_AUTHORIZATION_UNKNOWN | if a required authorization callback is not set.
  TSS2_ESYS_RC_* | possible error codes of ESAPI.
  TSS2_FAPI_RC_GENERAL_FAILURE | if an internal error occured.
  TSS2_FAPI_RC_NOT_PROVISIONED | FAPI was not provisioned.
  TSS2_FAPI_RC_KEY_NOT_FOUND | if a key was not found.
  TSS2_FAPI_RC_BAD_PATH | if the path is used in inappropriate context or contains illegal characters.
  TSS2_FAPI_RC_PATH_NOT_FOUND | if a FAPI object path was not found during authorization.
  TSS2_FAPI_RC_AUTHORIZATION_FAILED | if the authorization attempt fails.
  TSS2_FAPI_RC_POLICY_UNKNOWN | if policy search for a certain policy digest was not successful.
  TSS2_FAPI_RC_PATH_ALREADY_EXISTS | if the object already exists in object store.