This commit is contained in:
Gilles Peskine 2019-06-26 11:21:41 +02:00
Родитель 7a52464fba
Коммит c93a43bed6
1 изменённых файлов: 14 добавлений и 7 удалений

Просмотреть файл

@ -972,8 +972,8 @@ typedef struct {
* the end of this structure. * the end of this structure.
*/ */
typedef struct { typedef struct {
/** The version of the driver model that this driver implements. /** The version of the driver HAL that this driver implements.
* This is a protection against linking driver binaries built against * This is a protection against loading driver binaries built against
* a different version of this specification. * a different version of this specification.
* Use #PSA_DRV_SE_HAL_VERSION. * Use #PSA_DRV_SE_HAL_VERSION.
*/ */
@ -986,12 +986,12 @@ typedef struct {
psa_drv_se_key_derivation_t derivation; psa_drv_se_key_derivation_t derivation;
} psa_drv_se_t; } psa_drv_se_t;
/** The current version of the opaque driver model. /** The current version of the secure element driver HAL.
*/ */
/* 0.0.0 patchlevel 5 */ /* 0.0.0 patchlevel 5 */
#define PSA_DRV_SE_HAL_VERSION 0x00000005 #define PSA_DRV_SE_HAL_VERSION 0x00000005
/** Register an external cryptoprocessor driver. /** Register an external cryptoprocessor (secure element) driver.
* *
* This function is only intended to be used by driver code, not by * This function is only intended to be used by driver code, not by
* application code. In implementations with separation between the * application code. In implementations with separation between the
@ -1004,11 +1004,18 @@ typedef struct {
* implementation-defined whether this function may be called * implementation-defined whether this function may be called
* after psa_crypto_init(). * after psa_crypto_init().
* *
* \note Implementations store metadata about keys including the lifetime
* value. Therefore, from one instantiation of the PSA Cryptography
* library to the next one, if there is a key in storage with a certain
* lifetime value, you must always register the same driver (or an
* updated version that communicates with the same secure element)
* with the same lifetime value.
*
* \param lifetime The lifetime value through which this driver will * \param lifetime The lifetime value through which this driver will
* be exposed to applications. * be exposed to applications.
* The values #PSA_KEY_LIFETIME_VOLATILE and * The values #PSA_KEY_LIFETIME_VOLATILE and
* #PSA_KEY_LIFETIME_PERSISTENT are reserved and * #PSA_KEY_LIFETIME_PERSISTENT are reserved and
* may not be used for opaque drivers. Implementations * may not be used for drivers. Implementations
* may reserve other values. * may reserve other values.
* \param[in] methods The method table of the driver. This structure must * \param[in] methods The method table of the driver. This structure must
* remain valid for as long as the cryptography * remain valid for as long as the cryptography
@ -1026,9 +1033,9 @@ typedef struct {
* \return PSA_ERROR_ALREADY_EXISTS * \return PSA_ERROR_ALREADY_EXISTS
* There is already a registered driver for this value of \p lifetime. * There is already a registered driver for this value of \p lifetime.
* \return PSA_ERROR_INVALID_ARGUMENT * \return PSA_ERROR_INVALID_ARGUMENT
* \p lifetime is a reserved value * \p lifetime is a reserved value.
* \return PSA_ERROR_NOT_SUPPORTED * \return PSA_ERROR_NOT_SUPPORTED
* `methods->interface_version` is not supported by this implementation. * `methods->hal_version` is not supported by this implementation.
* \return PSA_ERROR_INSUFFICIENT_MEMORY * \return PSA_ERROR_INSUFFICIENT_MEMORY
* \return PSA_ERROR_NOT_PERMITTED * \return PSA_ERROR_NOT_PERMITTED
*/ */