ipsec: add support for RFC-4543 ENCR_NULL_AUTH_AES_GMAC
[vpp.git] / src / plugins / unittest / crypto_test.c
index 16c87a2..473ed12 100644 (file)
@@ -75,6 +75,9 @@ print_results (vlib_main_t * vm, unittest_crypto_test_registration_t ** rv,
       case VNET_CRYPTO_OP_TYPE_HMAC:
        exp_digest = &r->digest;
        break;
+      case VNET_CRYPTO_OP_TYPE_HASH:
+       exp_digest = &r->digest;
+       break;
       default:
        ASSERT (0);
       }
@@ -136,8 +139,7 @@ print_results (vlib_main_t * vm, unittest_crypto_test_registration_t ** rv,
     if (vec_len (err))
       fail = 1;
 
-    vlib_cli_output (vm, "%-60v%s%v", s, vec_len (err) ? "FAIL: " : "OK",
-                    err);
+    vlib_cli_output (vm, "%-65v%s%v", s, vec_len (err) ? "FAIL: " : "OK", err);
     if (tm->verbose)
       {
        if (tm->verbose == 2)
@@ -207,7 +209,6 @@ generate_digest (vlib_main_t * vm,
 static int
 restore_engines (u32 * engs)
 {
-  return 0;
   vnet_crypto_main_t *cm = &crypto_main;
   u32 i;
   vnet_crypto_engine_t *ce;
@@ -230,7 +231,6 @@ restore_engines (u32 * engs)
 static int
 save_current_engines (u32 * engs)
 {
-  return 0;
   vnet_crypto_main_t *cm = &crypto_main;
   uword *p;
   u32 i;
@@ -536,6 +536,7 @@ test_crypto_static (vlib_main_t * vm, crypto_test_main_t * tm,
                   op->chunk_index = vec_len (chunks);
                   while (pt->data)
                     {
+                      clib_memset (&ch, 0, sizeof (ch));
                       ch.src = pt->data;
                       ch.len = pt->length;
                       ch.dst = computed_data + computed_data_total_len;
@@ -554,6 +555,7 @@ test_crypto_static (vlib_main_t * vm, crypto_test_main_t * tm,
                   op->chunk_index = vec_len (chunks);
                   while (ct->data)
                     {
+                      clib_memset (&ch, 0, sizeof (ch));
                       ch.src = ct->data;
                       ch.len = ct->length;
                       ch.dst = computed_data + computed_data_total_len;
@@ -608,6 +610,7 @@ test_crypto_static (vlib_main_t * vm, crypto_test_main_t * tm,
               op->chunk_index = vec_len (chunks);
               while (pt->data)
                 {
+                  clib_memset (&ch, 0, sizeof (ch));
                   ch.src = pt->data;
                   ch.len = pt->length;
                   vec_add1 (chunks, ch);
@@ -628,6 +631,12 @@ test_crypto_static (vlib_main_t * vm, crypto_test_main_t * tm,
               op->len = r->plaintext.length;
               }
              break;
+           case VNET_CRYPTO_OP_TYPE_HASH:
+             op->digest = computed_data + computed_data_total_len;
+             computed_data_total_len += r->digest.length;
+             op->src = r->plaintext.data;
+             op->len = r->plaintext.length;
+             break;
            default:
              break;
            };
@@ -801,6 +810,10 @@ test_crypto (vlib_main_t * vm, crypto_test_main_t * tm)
                    n_ops_static += 1;
                }
              break;
+           case VNET_CRYPTO_OP_TYPE_HASH:
+             computed_data_total_len += r->digest.length;
+             n_ops_static += 1;
+             break;
            default:
              break;
            };
@@ -843,7 +856,7 @@ test_crypto_perf (vlib_main_t * vm, crypto_test_main_t * tm)
   vnet_crypto_op_t *ops1 = 0, *ops2 = 0, *op1, *op2;
   vnet_crypto_alg_data_t *ad = vec_elt_at_index (cm->algs, tm->alg);
   vnet_crypto_key_index_t key_index = ~0;
-  u8 key[32];
+  u8 key[64];
   int buffer_size = vlib_buffer_get_default_data_size (vm);
   u64 seed = clib_cpu_time_now ();
   u64 t0[5], t1[5], t2[5], n_bytes = 0;
@@ -911,7 +924,6 @@ test_crypto_perf (vlib_main_t * vm, crypto_test_main_t * tm)
                               ad->op_by_type[VNET_CRYPTO_OP_TYPE_ENCRYPT]);
          vnet_crypto_op_init (op2,
                               ad->op_by_type[VNET_CRYPTO_OP_TYPE_DECRYPT]);
-         op1->flags = VNET_CRYPTO_OP_FLAG_INIT_IV;
          op1->src = op2->src = op1->dst = op2->dst = b->data;
          op1->key_index = op2->key_index = key_index;
          op1->iv = op2->iv = b->data - 64;