tree f05524279cdc15d2298a0a7e6261327d73dbc8fd
parent ed34695e08f01dcee3e6079cc103301efbb16a39
author Gilles Peskine <Gilles.Peskine@arm.com> 1530889298 +0200
committer itayzafrir <itay.zafrir@arm.com> 1536759671 +0300

Always access key slots through accessor functions

New functions psa_get_key_slot(), psa_get_empty_key_slot(),
psa_get_key_from_slot() to access a key slot object from a key slot
number. These functions perform all requisite validations:

* psa_get_key_slot() verifies that the key slot number is in range.
* psa_get_empty_key_slot() verifies that the slot is empty.
* psa_get_key_from_slot() verifies that the slot contains a key with
  a suitable policy.

Always use these functions so as to make sure that the requisite
validations are always performed.
