Schema and script improvements

Signed-off-by: Archana <archana.madhavan@silabs.com>
Signed-off-by: Asfandyar Orakzai <asfandyar.orakzai@silabs.com>
diff --git a/scripts/data_files/driver_jsons/driver_opaque_schema.json b/scripts/data_files/driver_jsons/driver_opaque_schema.json
index 4a769f0..946977e 100644
--- a/scripts/data_files/driver_jsons/driver_opaque_schema.json
+++ b/scripts/data_files/driver_jsons/driver_opaque_schema.json
@@ -25,8 +25,7 @@
       "items": {
           "type": "string"
         },
-        "minItems": 1,
-        "uniqueItems": true
+        "default": []
     },
     "capabilities": {
       "type": "array",
@@ -43,23 +42,17 @@
             "entry_points": {
               "type": "array",
               "items": {
-                  "type": "string",
-                  "enum": ["import_key", "export_key", "export_public_key",
-                          "copy_key", "get_builtin_key"]
-                },
-                "minItems": 1,
-                "uniqueItems": true
+                  "type": "string"
+                }
             },
-            "name": {
+            "names": {
               "type": "object",
               "patternProperties": {
                 "^[A-Z_a-z][0-9A-Z_a-z]*$": {
                   "type": "string",
                   "pattern": "^[A-Z_a-z][0-9A-Z_a-z]*$"
                 }
-              },
-                "minItems": 1,
-                "uniqueItems": true
+              }
             }
           },
           "required": [
diff --git a/scripts/data_files/driver_jsons/driver_transparent_schema.json b/scripts/data_files/driver_jsons/driver_transparent_schema.json
index bf86ceb..06fea55 100644
--- a/scripts/data_files/driver_jsons/driver_transparent_schema.json
+++ b/scripts/data_files/driver_jsons/driver_transparent_schema.json
@@ -21,8 +21,7 @@
       "items": {
           "type": "string"
         },
-        "minItems": 1,
-        "uniqueItems": true
+        "default": []
     },
     "capabilities": {
       "type": "array",
@@ -39,23 +38,17 @@
             "entry_points": {
               "type": "array",
               "items": {
-                  "type": "string",
-                  "enum": ["import_key", "export_key", "export_public_key",
-                          "copy_key", "get_builtin_key"]
-                },
-                "minItems": 1,
-                "uniqueItems": true
+                  "type": "string"
+                }
             },
-            "name": {
+            "names": {
               "type": "object",
               "patternProperties": {
                 "^[A-Z_a-z][0-9A-Z_a-z]*$": {
                   "type": "string",
                   "pattern": "^[A-Z_a-z][0-9A-Z_a-z]*$"
                 }
-              },
-                "minItems": 1,
-                "uniqueItems": true
+              }
             },
             "fallback": {
               "type": "boolean",
@@ -66,8 +59,7 @@
             "entry_points"
           ]
         }
-      ],
-      "default": []
+      ]
     }
   },
   "required": [
diff --git a/scripts/data_files/driver_jsons/mbedtls_test_opaque_driver.json b/scripts/data_files/driver_jsons/mbedtls_test_opaque_driver.json
index a38287d..c31f964 100644
--- a/scripts/data_files/driver_jsons/mbedtls_test_opaque_driver.json
+++ b/scripts/data_files/driver_jsons/mbedtls_test_opaque_driver.json
@@ -14,7 +14,7 @@
             "_comment":     "The Mbed TLS opaque driver supports copy key/ get builtin key",
             "mbedtls/c_depend_on":    "defined(PSA_CRYPTO_DRIVER_TEST)",
             "entry_points": ["copy_key", "get_builtin_key"],
-            "name":         {"copy_key":"mbedtls_test_opaque_copy_key", "get_builtin_key":"mbedtls_test_opaque_get_builtin_key"}
+            "names":         {"copy_key":"mbedtls_test_opaque_copy_key", "get_builtin_key":"mbedtls_test_opaque_get_builtin_key"}
         }
      ]
 }
diff --git a/scripts/data_files/driver_jsons/mbedtls_test_transparent_driver.json b/scripts/data_files/driver_jsons/mbedtls_test_transparent_driver.json
index 5c9b9fe..db31ff4 100644
--- a/scripts/data_files/driver_jsons/mbedtls_test_transparent_driver.json
+++ b/scripts/data_files/driver_jsons/mbedtls_test_transparent_driver.json
@@ -15,7 +15,7 @@
             "mbedtls/c_depend_on":    "defined(PSA_CRYPTO_DRIVER_TEST)",
             "entry_points": ["export_public_key"],
             "fallback":     true,
-            "name":         {"export_public_key":"mbedtls_test_transparent_export_public_key"}
+            "names":         {"export_public_key":"mbedtls_test_transparent_export_public_key"}
         }
 
     ]
diff --git a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
index b90a9c8..f38479d 100644
--- a/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
+++ b/scripts/data_files/driver_templates/psa_crypto_driver_wrappers.c.jinja
@@ -64,8 +64,8 @@
 
 /* BEGIN-Common Macro definitions */
 {% macro entry_point_name(capability, entry_point, driver) -%}
-    {% if capability.name is defined and entry_point in capability.name.keys() -%}
-    {{ capability.name[entry_point]}}
+    {% if capability.name is defined and entry_point in capability.names.keys() -%}
+    {{ capability.names[entry_point]}}
     {% else -%}
     {{driver.prefix}}_{{driver.type}}_{{entry_point}}
     {% endif -%}
@@ -606,7 +606,7 @@
     size_t *key_buffer_length,
     size_t *bits )
 {
-{% set entry_point = "import_key" -%}
+{% with entry_point = "import_key" -%}
 {% macro entry_point_param(driver) -%}
 attributes,
 data,
@@ -655,11 +655,9 @@
             /* Key is stored in the slot in export representation, so
              * cycle through all known transparent accelerators */
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=12 %}
 {% include "OS-template-transparent.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
 
             /* Fell through, meaning no accelerator supports this operation */
@@ -669,17 +667,15 @@
                                               key_buffer_length, bits ) );
         /* Add cases for opaque driver here */
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=8 %}
 {% include "OS-template-opaque.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
         default:
             (void)status;
             return( PSA_ERROR_INVALID_ARGUMENT );
     }
-
+{% endwith %}
 }
 
 psa_status_t psa_driver_wrapper_export_key(
@@ -688,7 +684,7 @@
     uint8_t *data, size_t data_size, size_t *data_length )
 
 {
-{% set entry_point = "export_key" -%}
+{% with entry_point = "export_key" -%}
 {% macro entry_point_param(driver) -%}
 attributes,
 key_buffer,
@@ -733,16 +729,15 @@
 
         /* Add cases for opaque driver here */
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=8 %}
 {% include "OS-template-opaque.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
         default:
             /* Key is declared with a lifetime not known to us */
             return( status );
     }
+{% endwith %}
 }
 
 psa_status_t psa_driver_wrapper_export_public_key(
@@ -751,7 +746,7 @@
     uint8_t *data, size_t data_size, size_t *data_length )
 
 {
-{% set entry_point = "export_public_key" -%}
+{% with entry_point = "export_public_key" -%}
 {% macro entry_point_param(driver) -%}
 attributes,
 key_buffer,
@@ -790,11 +785,9 @@
             /* Key is stored in the slot in export representation, so
              * cycle through all known transparent accelerators */
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=12 %}
 {% include "OS-template-transparent.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
             /* Fell through, meaning no accelerator supports this operation */
             return( psa_export_public_key_internal( attributes,
@@ -806,16 +799,15 @@
 
         /* Add cases for opaque driver here */
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=8 %}
 {% include "OS-template-opaque.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
         default:
             /* Key is declared with a lifetime not known to us */
             return( status );
     }
+{% endwith %}
 }
 
 psa_status_t psa_driver_wrapper_get_builtin_key(
@@ -823,7 +815,7 @@
     psa_key_attributes_t *attributes,
     uint8_t *key_buffer, size_t key_buffer_size, size_t *key_buffer_length )
 {
-{% set entry_point = "get_builtin_key" -%}
+{% with entry_point = "get_builtin_key" -%}
 {% macro entry_point_param(driver) -%}
 slot_number,
 attributes,
@@ -835,11 +827,9 @@
     switch( location )
     {
 #if defined(PSA_CRYPTO_DRIVER_TEST)
-/* BEGIN-Templating */
 {% with nest_indent=8 %}
 {% include "OS-template-opaque.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_DRIVER_TEST */
         default:
             (void) slot_number;
@@ -848,6 +838,7 @@
             (void) key_buffer_length;
             return( PSA_ERROR_DOES_NOT_EXIST );
     }
+{% endwith %}
 }
 
 psa_status_t psa_driver_wrapper_copy_key(
@@ -856,7 +847,7 @@
     uint8_t *target_key_buffer, size_t target_key_buffer_size,
     size_t *target_key_buffer_length )
 {
-{% set entry_point = "copy_key" -%}
+{% with entry_point = "copy_key" -%}
 {% macro entry_point_param(driver) -%}
 attributes,
 source_key,
@@ -883,11 +874,9 @@
     switch( location )
     {
 #if defined(PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT)
-/* BEGIN-Templating */
 {% with nest_indent=8 %}
 {% include "OS-template-opaque.jinja" -%}
 {% endwith -%}
-/* END-Templating */
 #endif /* PSA_CRYPTO_ACCELERATOR_DRIVER_PRESENT */
         default:
             (void)source_key;
@@ -898,6 +887,7 @@
             status = PSA_ERROR_INVALID_ARGUMENT;
     }
     return( status );
+{% endwith %}
 }
 
 /*
diff --git a/scripts/generate_driver_wrappers.py b/scripts/generate_driver_wrappers.py
index c025ed3..097edd9 100755
--- a/scripts/generate_driver_wrappers.py
+++ b/scripts/generate_driver_wrappers.py
@@ -135,12 +135,12 @@
     def_arg_mbedtls_root = build_tree.guess_mbedtls_root()
 
     parser = argparse.ArgumentParser()
-    parser.add_argument('--mbedtls-root', nargs='?', default=def_arg_mbedtls_root,
+    parser.add_argument('--mbedtls-root', default=def_arg_mbedtls_root,
                         help='root directory of mbedtls source code')
-    parser.add_argument('--template-dir', nargs='?',
-                        help='root directory of mbedtls source code')
-    parser.add_argument('--json-dir', nargs='?',
-                        help='root directory of mbedtls source code')
+    parser.add_argument('--template-dir',
+                        help='directory holding the driver templates')
+    parser.add_argument('--json-dir',
+                        help='directory holding the driver JSONs')
     parser.add_argument('output_directory', nargs='?',
                         help='output file\'s location')
     args = parser.parse_args()