Revert "Handle simple copy import/export before driver dispatch"

This reverts commit c80e7506a0666cc1469a109140abb5bfbe566bd7.

Signed-off-by: Przemek Stekiel <przemyslaw.stekiel@mobica.com>
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index ec23830..acb39a1 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -634,6 +634,23 @@
 
         return PSA_SUCCESS;
     } else if (PSA_KEY_TYPE_IS_ASYMMETRIC(type)) {
+#if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR) || \
+        defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY)
+        if (PSA_KEY_TYPE_IS_DH(type)) {
+            if (psa_is_dh_key_size_valid(PSA_BYTES_TO_BITS(data_length)) == 0) {
+                return PSA_ERROR_INVALID_ARGUMENT;
+            }
+
+            /* Copy the key material. */
+            memcpy(key_buffer, data, data_length);
+            *key_buffer_length = data_length;
+            *bits = PSA_BYTES_TO_BITS(data_length);
+            (void) key_buffer_size;
+
+            return PSA_SUCCESS;
+        }
+#endif /* defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_KEY_PAIR) ||
+        * defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_DH_PUBLIC_KEY) */
 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_KEY_PAIR) || \
         defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_ECC_PUBLIC_KEY)
         if (PSA_KEY_TYPE_IS_ECC(type)) {
@@ -1403,7 +1420,14 @@
 {
     psa_key_type_t type = attributes->core.type;
 
-    if (PSA_KEY_TYPE_IS_RSA(type)) {
+    if (PSA_KEY_TYPE_IS_PUBLIC_KEY(type) &&
+        (PSA_KEY_TYPE_IS_RSA(type) || PSA_KEY_TYPE_IS_ECC(type) ||
+         PSA_KEY_TYPE_IS_DH(type))) {
+        /* Exporting public -> public */
+        return psa_export_key_buffer_internal(
+            key_buffer, key_buffer_size,
+            data, data_size, data_length);
+    } else if (PSA_KEY_TYPE_IS_RSA(type)) {
 #if defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_KEY_PAIR) || \
         defined(MBEDTLS_PSA_BUILTIN_KEY_TYPE_RSA_PUBLIC_KEY)
         return mbedtls_psa_rsa_export_public_key(attributes,
@@ -1489,23 +1513,9 @@
     psa_key_attributes_t attributes = {
         .core = slot->attr
     };
-
-    psa_key_location_t location = PSA_KEY_LIFETIME_GET_LOCATION(
-        psa_get_key_lifetime(&attributes));
-
-    if (location == PSA_KEY_LOCATION_LOCAL_STORAGE &&
-        PSA_KEY_TYPE_IS_PUBLIC_KEY(slot->attr.type) &&
-        (PSA_KEY_TYPE_IS_RSA(slot->attr.type) || PSA_KEY_TYPE_IS_ECC(slot->attr.type) ||
-         PSA_KEY_TYPE_IS_DH(slot->attr.type))) {
-        /* Exporting public -> public */
-        status = psa_export_key_buffer_internal(
-            slot->key.data, slot->key.bytes,
-            data, data_size, data_length);
-    } else {
-        status = psa_driver_wrapper_export_public_key(
-            &attributes, slot->key.data, slot->key.bytes,
-            data, data_size, data_length);
-    }
+    status = psa_driver_wrapper_export_public_key(
+        &attributes, slot->key.data, slot->key.bytes,
+        data, data_size, data_length);
 
 exit:
     unlock_status = psa_unlock_key_slot(slot);
@@ -2000,27 +2010,12 @@
         }
     }
 
-    if (PSA_KEY_TYPE_IS_ASYMMETRIC(attributes->core.type) &&
-        PSA_KEY_TYPE_IS_DH(attributes->core.type)) {
-        if (psa_is_dh_key_size_valid(PSA_BYTES_TO_BITS(data_length)) == 0) {
-            status = PSA_ERROR_INVALID_ARGUMENT;
-            goto exit;
-        }
-
-        /* Copy the key material. */
-        memcpy(slot->key.data, data, data_length);
-        bits = PSA_BYTES_TO_BITS(data_length);
-
-        status = PSA_SUCCESS;
-    } else {
-        bits = slot->attr.bits;
-        status = psa_driver_wrapper_import_key(attributes,
-                                               data, data_length,
-                                               slot->key.data,
-                                               slot->key.bytes,
-                                               &slot->key.bytes, &bits);
-    }
-
+    bits = slot->attr.bits;
+    status = psa_driver_wrapper_import_key(attributes,
+                                           data, data_length,
+                                           slot->key.data,
+                                           slot->key.bytes,
+                                           &slot->key.bytes, &bits);
     if (status != PSA_SUCCESS) {
         goto exit;
     }
@@ -5835,25 +5830,11 @@
         goto exit;
     }
 
-    if (PSA_KEY_TYPE_IS_ASYMMETRIC(attributes.core.type) &&
-        PSA_KEY_TYPE_IS_DH(attributes.core.type)) {
-        if (psa_is_dh_key_size_valid(PSA_BYTES_TO_BITS(bytes)) == 0) {
-            status = PSA_ERROR_INVALID_ARGUMENT;
-            goto exit;
-        }
-
-        /* Copy the key material. */
-        memcpy(slot->key.data, data, bytes);
-        bits = PSA_BYTES_TO_BITS(bytes);
-
-        status = PSA_SUCCESS;
-    } else {
-        status = psa_driver_wrapper_import_key(&attributes,
-                                               data, bytes,
-                                               slot->key.data,
-                                               slot->key.bytes,
-                                               &slot->key.bytes, &bits);
-    }
+    status = psa_driver_wrapper_import_key(&attributes,
+                                           data, bytes,
+                                           slot->key.data,
+                                           slot->key.bytes,
+                                           &slot->key.bytes, &bits);
     if (bits != slot->attr.bits) {
         status = PSA_ERROR_INVALID_ARGUMENT;
     }