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.h b/include/psa/crypto.h
index a2f34ca..ec5c16c 100644
--- a/include/psa/crypto.h
+++ b/include/psa/crypto.h
@@ -4145,107 +4145,30 @@
  * This function may be provided as a function-like macro, but in this case it
  * must evaluate its argument exactly once.
  *
- * Refer to the documentation of individual PAKE algorithm types (`PSA_ALG_XXX`
- * values of type ::psa_algorithm_t such that #PSA_ALG_IS_PAKE(\c alg) is true)
- * for more information.
- *
  * \param[in] cipher_suite     The cipher suite structure to query.
  *
- * \return The primitive type stored in the cipher suite structure.
+ * \return The primitive stored in the cipher suite structure.
  */
-static psa_pake_primitive_type_t psa_pake_cs_get_type(
+static psa_pake_primitive_t psa_pake_cs_get_primitive(
                            const psa_pake_cipher_suite_t* cipher_suite
                            );
 
 /** Declare the primitive type for a PAKE cipher suite.
  *
- * This function overwrites any primitive type
- * previously set in \p cipher_suite.
+ * This function overwrites any primitive previously set in \p cipher_suite.
  *
  * This function may be declared as `static` (i.e. without external
  * linkage). This function may be provided as a function-like macro,
  * but in this case it must evaluate each of its arguments exactly once.
  *
  * \param[out] cipher_suite    The cipher suite structure to write to.
- * \param type                 The primitive type to write.
- *                             If this is 0, the primitive type in
- *                             \p cipher_suite becomes unspecified.
+ * \param primitive            The primitive to write. If this is 0, the
+ *                             primitive type in \p cipher_suite becomes
+ *                             unspecified.
  */
-static void psa_pake_cs_set_type(
+static void psa_pake_cs_set_primitive(
                            psa_pake_cipher_suite_t* cipher_suite,
-                           psa_pake_primitive_type_t type
-                           );
-
-/** Retrieve the primitive family from a PAKE cipher suite.
- *
- * This function may be declared as `static` (i.e. without external
- * linkage). This function may be provided as a function-like macro,
- * but in this case it must evaluate its argument exactly once.
- *
- * \param[in] cipher_suite      The cipher suite structure to query.
- *
- * \return The primitive family stored in the cipher suite structure.
- */
-static psa_pake_family_t psa_pake_cs_get_family(
-                           const psa_pake_cipher_suite_t* cipher_suite
-                           );
-
-/** Declare the primitive family for a PAKE cipher suite.
- *
- * This function overwrites any primitive family
- * previously set in \p cipher_suite.
- *
- * This function may be declared as `static` (i.e. without external
- * linkage). This function may be provided as a function-like macro,
- * but in this case it must evaluate each of its arguments exactly once.
- *
- * \param[out] cipher_suite     The cipher suite structure to write to.
- * \param family                The primitive family to write.
- *                              If this is 0, the primitive family in
- *                              \p cipher_suite becomes unspecified. The
- *                              interpretation of this parameter depends on
- *                              the primitive type. For more information
- *                              consult the documentation of individual
- *                              ::psa_pake_primitive_type_t constants).
- */
-static void psa_pake_cs_set_family(
-                           psa_pake_cipher_suite_t* cipher_suite,
-                           psa_pake_family_t family
-                           );
-
-/** Retrieve the size associated with the primitive from a PAKE cipher suite.
- *
- * This function may be declared as `static` (i.e. without external
- * linkage). This function may be provided as a function-like macro,
- * but in this case it must evaluate its argument exactly once.
- *
- * \param[in] cipher_suite      The cipher suite structure to query.
- *
- * \return The primitive bits stored in the cipher suite structure.
- */
-static size_t psa_pake_cs_get_bits(const psa_pake_cipher_suite_t* cipher_suite);
-
-/** Declare the primitive bits for a PAKE cipher suite.
- *
- * This function overwrites any primitive bits
- * previously set in \p cipher_suite.
- *
- * This function may be declared as `static` (i.e. without external
- * linkage). This function may be provided as a function-like macro,
- * but in this case it must evaluate each of its arguments exactly once.
- *
- * \param[out] cipher_suite     The cipher suite structure to write to.
- * \param bits                  The primitive bits to write.
- *                              If this is 0, the primitive bits in
- *                              \p cipher_suite becomes unspecified. The
- *                              interpretation of this parameter depends on
- *                              the family, for more information consult the
- *                              documentation of individual
- *                              ::psa_pake_primitive_type_t constants).
- */
-static void psa_pake_cs_set_bits(
-                           psa_pake_cipher_suite_t* cipher_suite,
-                           size_t bits
+                           psa_pake_primitive_t primitive
                            );
 
 /** Retrieve the hash algorithm from a PAKE cipher suite.