session: support registration of custom crypto engines 63/22863/4
authorFlorin Coras <fcoras@cisco.com>
Mon, 21 Oct 2019 02:32:47 +0000 (19:32 -0700)
committerDamjan Marion <dmarion@me.com>
Mon, 21 Oct 2019 10:46:09 +0000 (10:46 +0000)
Type: feature

Change-Id: I888d415ff645b3827df7d4cfb0d3c5f4ac940617
Signed-off-by: Florin Coras <fcoras@cisco.com>
src/vnet/session/application.c
src/vnet/session/application.h
src/vnet/session/application_interface.h

index 396470a..7cb888c 100644 (file)
@@ -1630,6 +1630,7 @@ cert_key_pair_store_init (vlib_main_t * vm)
 {
   /* Add a certificate with index 0 to support legacy apis */
   (void) app_cert_key_pair_alloc ();
+  app_main.last_crypto_engine = CRYPTO_ENGINE_LAST;
   return 0;
 }
 
@@ -1651,6 +1652,18 @@ VLIB_CLI_COMMAND (show_certificate_command, static) =
 };
 /* *INDENT-ON* */
 
+crypto_engine_type_t
+app_crypto_engine_type_add (void)
+{
+  return (++app_main.last_crypto_engine);
+}
+
+u8
+app_crypto_engine_n_types (void)
+{
+  return (app_main.last_crypto_engine + 1);
+}
+
 /*
  * fd.io coding-style-patch-verification: ON
  *
index a853c3c..08117b7 100644 (file)
@@ -139,6 +139,11 @@ typedef struct app_main_
    * Pool from which we allocate certificates (key, cert)
    */
   app_cert_key_pair_t *cert_key_pair_store;
+
+  /*
+   * Last registered crypto engine type
+   */
+  crypto_engine_type_t last_crypto_engine;
 } app_main_t;
 
 typedef struct app_init_args_
@@ -291,6 +296,9 @@ int mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context,
 void mq_send_unlisten_reply (app_worker_t * app_wrk, session_handle_t sh,
                             u32 context, int rv);
 
+crypto_engine_type_t app_crypto_engine_type_add (void);
+u8 app_crypto_engine_n_types (void);
+
 #endif /* SRC_VNET_SESSION_APPLICATION_H_ */
 
 /*
index 609a20a..f73cd0a 100644 (file)
@@ -166,7 +166,7 @@ typedef enum crypto_engine_type_
   CRYPTO_ENGINE_OPENSSL,
   CRYPTO_ENGINE_VPP,
   CRYPTO_ENGINE_PICOTLS,
-  CRYPTO_N_ENGINES
+  CRYPTO_ENGINE_LAST = CRYPTO_ENGINE_PICOTLS,
 } crypto_engine_type_t;
 
 typedef struct _vnet_app_add_cert_key_pair_args_