PSA PAKE: reintroduce psa_pake_primitive_t

If PSA_PAKE_OUTPUT_SIZE takes cipher_suite as a parameter and it is a
structure it can't be a compile-time constant anymore.

Reintroducing psa_pake_primitive_t, because it can be constructed as an
integral type and holds enough information to allow PSA_PAKE_OUTPUT_SIZE
calculating accurate estimates on the output size in compile time.

Signed-off-by: Janos Follath <janos.follath@arm.com>
diff --git a/include/psa/crypto_struct.h b/include/psa/crypto_struct.h
index 97d5d2b..a5f35cb 100644
--- a/include/psa/crypto_struct.h
+++ b/include/psa/crypto_struct.h
@@ -466,10 +466,16 @@
     psa_algorithm_t algorithm;
     psa_pake_primitive_type_t type;
     psa_pake_family_t family;
-    size_t  bits;
+    uint16_t  bits;
     psa_algorithm_t hash;
 };
 
+static inline psa_algorithm_t psa_pake_cs_get_algorithm(
+    const psa_pake_cipher_suite_t *cipher_suite)
+{
+    return( cipher_suite->algorithm );
+}
+
 static inline void psa_pake_cs_set_algorithm(
     psa_pake_cipher_suite_t *cipher_suite,
     psa_algorithm_t algorithm)
@@ -480,49 +486,20 @@
         cipher_suite->algorithm = algorithm;
 }
 
-static inline psa_algorithm_t psa_pake_cs_get_algorithm(
+static inline psa_pake_primitive_t psa_pake_cs_get_primitive(
     const psa_pake_cipher_suite_t *cipher_suite)
 {
-    return( cipher_suite->algorithm );
+    return( PSA_PAKE_PRIMITIVE( cipher_suite->type, cipher_suite->family,
+                cipher_suite->bits) );
 }
 
-static inline psa_pake_primitive_type_t psa_pake_cs_get_type(
-    const psa_pake_cipher_suite_t *cipher_suite)
-{
-    return( cipher_suite->type );
-}
-
-static inline void psa_pake_cs_set_type(
+static inline void psa_pake_cs_set_primitive(
     psa_pake_cipher_suite_t *cipher_suite,
-    psa_pake_primitive_type_t type)
+    psa_pake_primitive_t primitive)
 {
-    cipher_suite->type = type;
-}
-
-static inline psa_pake_family_t psa_pake_cs_get_family(
-    const psa_pake_cipher_suite_t *cipher_suite)
-{
-    return( cipher_suite->family );
-}
-
-static inline void psa_pake_cs_set_family(
-    psa_pake_cipher_suite_t *cipher_suite,
-    psa_pake_family_t family)
-{
-    cipher_suite->family = family;
-}
-
-static inline size_t psa_pake_cs_get_bits(
-    const psa_pake_cipher_suite_t *cipher_suite)
-{
-    return( cipher_suite->bits );
-}
-
-static inline void psa_pake_cs_set_bits(
-    psa_pake_cipher_suite_t *cipher_suite,
-    size_t bits)
-{
-    cipher_suite->bits = bits;
+    cipher_suite->type = (psa_pake_primitive_type_t) primitive >> 24;
+    cipher_suite->family = (psa_pake_family_t) ( 0xFF & (primitive >> 16) );
+    cipher_suite->bits = (uint16_t) ( 0xFFFF & primitive );
 }
 
 static inline psa_algorithm_t psa_pake_cs_get_hash(