diff options
author | Rob Austein <sra@hactrn.net> | 2016-11-08 01:44:50 -0500 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2016-11-08 01:44:50 -0500 |
commit | 09a065bb67bf055da0417a6c972c11ba5ab13da0 (patch) | |
tree | 9a6952148efb88354b2c894b5a83b810b3f90e13 /rpc_api.c | |
parent | 9d03d73315cc1cb5d4276409410c55c8fc556675 (diff) |
First cut at multi-attribute get/set/delete API.
This is not yet complete, only the ks_volatile driver supports it,
ks_flash will be a bit more complicated and isn't written yet.
At the moment, this adds a complete duplicate set of
{set,get,delete}_attributes() functions in parallel to the earlier
{set,get,delete}_attribute() functions. We will almost certainly want
to get rid of the duplicates, probably (but not necessarily) the
entire single-attribute suite. At the moment, though, we want both
sets so we can compare execution speeds of the two sets of functions.
Diffstat (limited to 'rpc_api.c')
-rw-r--r-- | rpc_api.c | 32 |
1 files changed, 31 insertions, 1 deletions
@@ -351,7 +351,7 @@ hal_error_t hal_rpc_pkey_match(const hal_client_handle_t client, const hal_key_type_t type, const hal_curve_name_t curve, const hal_key_flags_t flags, - hal_rpc_pkey_attribute_t *attributes, + const hal_rpc_pkey_attribute_t *attributes, const unsigned attributes_len, hal_uuid_t *result, unsigned *result_len, @@ -399,6 +399,36 @@ hal_error_t hal_rpc_pkey_delete_attribute(const hal_pkey_handle_t pkey, return hal_rpc_pkey_dispatch->delete_attribute(pkey, type); } +hal_error_t hal_rpc_pkey_set_attributes(const hal_pkey_handle_t pkey, + const hal_rpc_pkey_attribute_t *attributes, + const unsigned attributes_len) +{ + if (attributes == NULL || attributes_len == 0) + return HAL_ERROR_BAD_ARGUMENTS; + return hal_rpc_pkey_dispatch->set_attributes(pkey, attributes, attributes_len); +} + +hal_error_t hal_rpc_pkey_get_attributes(const hal_pkey_handle_t pkey, + hal_rpc_pkey_attribute_t *attributes, + const unsigned attributes_len, + uint8_t *attributes_buffer, + const size_t attributes_buffer_len) +{ + if (attributes == NULL || attributes_len == 0) + return HAL_ERROR_BAD_ARGUMENTS; + return hal_rpc_pkey_dispatch->get_attributes(pkey, attributes, attributes_len, + attributes_buffer, attributes_buffer_len); +} + +hal_error_t hal_rpc_pkey_delete_attributes(const hal_pkey_handle_t pkey, + const uint32_t * const types, + const unsigned types_len) +{ + if (types == NULL || types_len == 0) + return HAL_ERROR_BAD_ARGUMENTS; + return hal_rpc_pkey_dispatch->delete_attributes(pkey, types, types_len); +} + /* * Local variables: * indent-tabs-mode: nil |