Add psa_export_public_key_iop_complete() header/doc

Signed-off-by: Waleed Elmelegy <waleed.elmelegy@arm.com>
diff --git a/tf-psa-crypto/include/psa/crypto.h b/tf-psa-crypto/include/psa/crypto.h
index ec4043a..79a7d51 100644
--- a/tf-psa-crypto/include/psa/crypto.h
+++ b/tf-psa-crypto/include/psa/crypto.h
@@ -5684,6 +5684,90 @@
 psa_status_t psa_export_public_key_iop_setup(psa_export_public_key_iop_t *operation,
                                              psa_key_id_t key);
 
+/**
+ * \brief                       Continue and eventually complete the action of
+ *                              exporting a public key, in an interruptible
+ *                              manner.
+ * \see                         \c psa_export_public_key_iop_setup()
+ *
+ * \warning                     This is a beta API, and thus subject to change
+ *                              at any point. It is not bound by the usual
+ *                              interface stability promises.
+ *
+ * \note                        This function combined with
+ *                              \c psa_export_public_key_iop_setup() is equivalent to
+ *                              \c psa_export_public_key() but this
+ *                              function can return early and resume according
+ *                              to the limit set with
+ *                              \c psa_interruptible_set_max_ops() to reduce the
+ *                              maximum time spent in a function call.
+ *
+ * \note                        Users should call this function on the same
+ *                              operation object repeatedly whilst it returns
+ *                              #PSA_OPERATION_INCOMPLETE, stopping when it
+ *                              returns either #PSA_SUCCESS or an error.
+ *                              Alternatively users can call
+ *                              \c psa_export_public_key_iop_abort() at any
+ *                              point if they no longer want the result.
+ *
+ * \note                        When this function returns successfully, the
+ *                              operation becomes inactive. If this function
+ *                              returns an error status, the operation enters an
+ *                              error state and must be aborted by calling
+ *                              \c psa_export_public_key_iop_abort().
+ *
+ * \param[in, out] operation    The \c psa_export_public_key_iop_t to use.
+ *                              This must be initialized first, and have had
+ *                              \c psa_export_public_key_iop_setup() called
+ *                              with it first.
+ *
+ * \param[out] data             Buffer where the key data is to be written.
+ *
+ * \param[in] data_size         Size of the \c data buffer in bytes.
+ *                              This must be appropriate for the key:
+ *                               * The required output size is
+ *                                 \c PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(type, bits)
+ *                                 where type is the key type and bits is the key
+ *                                 size in bits.
+ *                               * \c PSA_EXPORT_PUBLIC_KEY_MAX_SIZE evaluates to the maximum
+ *                                 output size of any supported public key or public part
+ *                                 of a key pair.
+ *                               * \c PSA_EXPORT_ASYMMETRIC_KEY_MAX_SIZE evaluates
+ *                                 to the maximum output size of any supported public
+ *                                 key or key pair.
+ *
+ * \param[out] data_length      On success, the number of bytes that make up the key data.
+ *
+ * \retval #PSA_SUCCESS
+ *         Success. The first (*\c data_length) bytes of data contain the exported
+           public key.
+ * \retval #PSA_ERROR_BAD_STATE
+ *         The following conditions can result in this error:
+ *         * The library has not been previously initialized by
+ *           \c psa_crypto_init().
+ *         * The operation state is not valid: it must be active.
+ * \retval #PSA_ERROR_BUFFER_TOO_SMALL
+ *          The size of the data buffer is too small.
+ *          \c PSA_EXPORT_PUBLIC_KEY_OUTPUT_SIZE(),
+ *          \c PSA_EXPORT_PUBLIC_KEY_MAX_SIZE, or
+ *          \c PSA_EXPORT_ASYMMETRIC_KEY_MAX_SIZE can be used to determine a
+ *          sufficient buffer size.
+ * \retval #PSA_ERROR_INSUFFICIENT_MEMORY \emptydescription
+ * \retval #PSA_ERROR_COMMUNICATION_FAILURE \emptydescription
+ * \retval #PSA_ERROR_CORRUPTION_DETECTED \emptydescription
+ * \retval #PSA_ERROR_STORAGE_FAILURE \emptydescription
+ * \retval #PSA_ERROR_DATA_CORRUPT \emptydescription
+ * \retval #PSA_ERROR_DATA_INVALID \emptydescription
+ * \retval #PSA_OPERATION_INCOMPLETE
+ *         Operation was interrupted due to the setting of
+ *         \c psa_interruptible_set_max_ops(). There is still work to be done.
+ *         Call this function again with the same operation object.
+ */
+psa_status_t psa_export_public_key_iop_complete(psa_export_public_key_iop_t *operation,
+                                                uint8_t *data,
+                                                size_t data_size,
+                                                size_t *data_length);
+
 #ifdef __cplusplus
 }
 #endif