Changes PSA key storage format to include key bits

* Stores bits in psa_persistent_key_storage_format.
* psa_load_persistent_key_into_slot still imports plaintext keys which
  ensures that the bits value gets set.
* Updates key specification to match new implementation.
* Expands persistent store and load tests with to check for bits
  attribute.
* Removes bits storage from psa_se_key_data_storage_t.

Signed-off-by: Torstein Nesse <torstein.nesse@silabs.com>
diff --git a/docs/architecture/mbed-crypto-storage-specification.md b/docs/architecture/mbed-crypto-storage-specification.md
index afeb29f..0d33ba5 100644
--- a/docs/architecture/mbed-crypto-storage-specification.md
+++ b/docs/architecture/mbed-crypto-storage-specification.md
@@ -204,6 +204,7 @@
 
 * The layout of a key file now has a lifetime field before the type field.
 * Key files can store references to keys in a secure element. In such key files, the key material contains the slot number.
+* The type field has been split into a type and a bits field of 2 bytes each.
 
 ### File namespace on a PSA platform on TBD
 
@@ -244,13 +245,15 @@
 * magic (8 bytes): `"PSA\0KEY\0"`.
 * version (4 bytes): 0.
 * lifetime (4 bytes): `psa_key_lifetime_t` value.
-* type (4 bytes): `psa_key_type_t` value.
+* type (2 bytes): `psa_key_type_t` value.
+* bits (2 bytes): `psa_key_bits_t` value.
 * policy usage flags (4 bytes): `psa_key_usage_t` value.
 * policy usage algorithm (4 bytes): `psa_algorithm_t` value.
 * policy enrollment algorithm (4 bytes): `psa_algorithm_t` value.
 * key material length (4 bytes).
 * key material:
     * For a transparent key: output of `psa_export_key`.
+    * For an opaque key (unified driver interface): driver-specific opaque key blob.
     * For an opaque key (key in a secure element): slot number (8 bytes), in platform endianness.
 * Any trailing data is rejected on load.