diff --git a/include/psa/crypto_values.h b/include/psa/crypto_values.h
index 826a314..5b4a310 100644
--- a/include/psa/crypto_values.h
+++ b/include/psa/crypto_values.h
@@ -386,7 +386,7 @@
  * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or
  * 32 bytes (AES-256).
  */
-#define PSA_KEY_TYPE_AES_VENDOR ((psa_key_type_t)0xC0000001)
+#define PSA_KEY_TYPE_AES_VENDOR ((psa_key_type_t)(PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_AES))
 
 /** Whether a key type is AES. */
 #define PSA_KEY_TYPE_IS_AES(type) (((type)&PSA_KEY_TYPE_AES) != 0)
@@ -436,8 +436,14 @@
 #define PSA_KEY_TYPE_ECC_KEY_PAIR(curve)         \
     (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve))
 /** Elliptic curve public key. */
-#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve)              \
+#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \
     (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve))
+/** Elliptic curve key pair (Vendor defined format). */
+#define PSA_KEY_TYPE_ECC_KEY_PAIR_VENDOR(curve) \
+    (PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve))
+/** Elliptic curve public key (Vendor defined format). */
+#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_VENDOR(curve) \
+    (PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve))
 
 /** Whether a key type is an elliptic curve key (pair or public-only). */
 #define PSA_KEY_TYPE_IS_ECC(type)                                       \
@@ -449,14 +455,27 @@
      PSA_KEY_TYPE_ECC_KEY_PAIR_BASE)
 /** Whether a key type is an elliptic curve public key. */
 #define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type)                            \
-    (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) ==                         \
+    (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \
      PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE)
 
+/** Whether a key type is an elliptic curve key (pair or public-only). */
+#define PSA_KEY_TYPE_IS_ECC_VENDOR(type)          \
+    ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \
+      ~PSA_KEY_TYPE_ECC_CURVE_MASK) == (PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE))
+/** Whether a key type is an elliptic curve key pair. */
+#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR_VENDOR(type) \
+    (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) ==   \
+     (PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_ECC_KEY_PAIR_BASE))
+/** Whether a key type is an elliptic curve public key. */
+#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY_VENDOR(type) \
+    (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) ==     \
+     (PSA_KEY_TYPE_VENDOR_FLAG | PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE))
 /** Extract the curve from an elliptic curve key type. */
-#define PSA_KEY_TYPE_GET_CURVE(type)                             \
-    ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ?              \
-                        ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \
-                        0))
+#define PSA_KEY_TYPE_GET_CURVE(type) \
+    ((psa_ecc_curve_t)(PSA_KEY_TYPE_IS_ECC(type) ? ((type)&PSA_KEY_TYPE_ECC_CURVE_MASK) : 0))
+/** Extract the curve from an elliptic curve key type. */
+#define PSA_KEY_TYPE_GET_CURVE_VENDOR(type) \
+    ((psa_ecc_curve_t)(PSA_KEY_TYPE_IS_ECC_VENDOR(type) ? ((type)&PSA_KEY_TYPE_ECC_CURVE_MASK) : 0))
 
 /* The encoding of curve identifiers is currently aligned with the
  * TLS Supported Groups Registry (formerly known as the
diff --git a/library/psa_crypto.c b/library/psa_crypto.c
index 929f457..a7d018b 100644
--- a/library/psa_crypto.c
+++ b/library/psa_crypto.c
@@ -5435,30 +5435,6 @@
 }
 #endif /* MBEDTLS_RSA_C && MBEDTLS_GENPRIME */
 
-// The weakly linked function "prepare_raw_data_slot_vendor_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if 
-// the vendor does not provide a definition for "prepare_raw_data_slot_vendor"
-psa_status_t prepare_raw_data_slot_vendor( psa_key_type_t type, size_t bits, struct raw_data *raw) __attribute__ ((weak, alias("prepare_raw_data_slot_vendor_weak")));
-psa_status_t prepare_raw_data_slot_vendor_weak( psa_key_type_t type, size_t bits, struct raw_data *raw);
-psa_status_t prepare_raw_data_slot_vendor_weak( psa_key_type_t type, size_t bits, struct raw_data *raw)
-{
-    (void)type;
-    (void)bits;
-    (void)raw;
-    return PSA_ERROR_NOT_SUPPORTED;
-}
-
-// The weakly linked function "psa_generate_symmetric_vendor_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if 
-// the vendor does not provide a definition for "psa_generate_symmetric_vendor"
-psa_status_t psa_generate_symmetric_vendor( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size) __attribute__ ((weak, alias("psa_generate_symmetric_vendor_weak")));
-psa_status_t psa_generate_symmetric_vendor_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size);
-psa_status_t psa_generate_symmetric_vendor_weak( psa_key_type_t type, size_t bits, uint8_t * output, size_t output_size)
-{
-    (void)type;
-    (void)output;
-    (void)output_size;
-    return PSA_ERROR_NOT_SUPPORTED;
-}
-
 static psa_status_t psa_generate_key_internal(
     psa_key_slot_t *slot, size_t bits,
     const uint8_t *domain_parameters, size_t domain_parameters_size )
@@ -5471,31 +5447,18 @@
     if( key_type_is_raw_bytes( type ) )
     {
         psa_status_t status;
-        if (PSA_KEY_TYPE_IS_VENDOR_DEFINED(type))
-        {
-            status = prepare_raw_data_slot_vendor( type, bits, &slot->data.raw );
-            if( status != PSA_SUCCESS )
-                return( status );
-            status = psa_generate_symmetric_vendor( type, bits, slot->data.raw.data,
-                                        slot->data.raw.bytes );
-            if( status != PSA_SUCCESS )
-                return( status );
-        }
-        else
-        {
-            status = prepare_raw_data_slot( type, bits, &slot->data.raw );
-            if( status != PSA_SUCCESS )
-                return( status );
-            status = psa_generate_random( slot->data.raw.data,
-                                        slot->data.raw.bytes );
-            if( status != PSA_SUCCESS )
-                return( status );
-            #if defined(MBEDTLS_DES_C)
-            if( type == PSA_KEY_TYPE_DES )
-                psa_des_set_key_parity( slot->data.raw.data,
-                                        slot->data.raw.bytes );
-            #endif /* MBEDTLS_DES_C */
-        }
+        status = prepare_raw_data_slot( type, bits, &slot->data.raw );
+        if( status != PSA_SUCCESS )
+            return( status );
+        status = psa_generate_random( slot->data.raw.data,
+                                    slot->data.raw.bytes );
+        if( status != PSA_SUCCESS )
+            return( status );
+        #if defined(MBEDTLS_DES_C)
+        if( type == PSA_KEY_TYPE_DES )
+            psa_des_set_key_parity( slot->data.raw.data,
+                                    slot->data.raw.bytes );
+        #endif /* MBEDTLS_DES_C */
     }
     else
 
@@ -5574,7 +5537,19 @@
 
     return( PSA_SUCCESS );
 }
-
+// The weakly linked function "psa_generate_key_vendor_weak" which returns "PSA_ERROR_NOT_SUPPORTED" will be linked if 
+// the vendor does not provide a definition for "psa_generate_key_vendor"
+psa_status_t psa_generate_key_vendor( psa_key_slot_t *slot, size_t bits,
+    const uint8_t *domain_parameters, size_t domain_parameters_size ) __attribute__ ((weak, alias("psa_generate_key_vendor_weak")));
+psa_status_t psa_generate_key_vendor_weak( psa_key_slot_t *slot, size_t bits,
+    const uint8_t *domain_parameters, size_t domain_parameters_size );
+psa_status_t psa_generate_key_vendor_weak( psa_key_slot_t *slot, size_t bits,
+    const uint8_t *domain_parameters, size_t domain_parameters_size )
+{
+    (void) slot;
+    
+    return PSA_ERROR_NOT_SUPPORTED;
+}
 psa_status_t psa_generate_key( const psa_key_attributes_t *attributes,
                                psa_key_handle_t *handle )
 {
@@ -5605,6 +5580,12 @@
     }
     else
 #endif /* MBEDTLS_PSA_CRYPTO_SE_C */
+    if (PSA_KEY_TYPE_IS_VENDOR_DEFINED(slot->attr.type))
+    {
+        status = psa_generate_key_vendor(slot, attributes->core.bits,
+            attributes->domain_parameters, attributes->domain_parameters_size);
+    }
+    else
     {
         status = psa_generate_key_internal(
             slot, attributes->core.bits,
diff --git a/library/psa_crypto_core.h b/library/psa_crypto_core.h
index f29ae4f..0525cf1 100644
--- a/library/psa_crypto_core.h
+++ b/library/psa_crypto_core.h
@@ -46,23 +46,27 @@
         struct raw_data
         {
             uint8_t *data;
-            size_t bytes;
+            size_t    bytes;
         } raw;
 #if defined(MBEDTLS_RSA_C)
+
         /* RSA public key or key pair */
-        mbedtls_rsa_context *rsa;
-#endif /* MBEDTLS_RSA_C */
+        mbedtls_rsa_context * rsa;
+#endif                                 /* MBEDTLS_RSA_C */
 #if defined(MBEDTLS_ECP_C)
+
         /* EC public key or key pair */
-        mbedtls_ecp_keypair *ecp;
-#endif /* MBEDTLS_ECP_C */
+        mbedtls_ecp_keypair * ecp;
+#endif                                 /* MBEDTLS_ECP_C */
 #if defined(MBEDTLS_PSA_CRYPTO_SE_C)
+
         /* Any key type in a secure element */
         struct se
         {
             psa_key_slot_number_t slot_number;
         } se;
-#endif /* MBEDTLS_PSA_CRYPTO_SE_C */
+#endif                                 /* MBEDTLS_PSA_CRYPTO_SE_C */
+        void * vendor_context;
     } data;
 } psa_key_slot_t;
 
