ipip: Tunnel flags controlling copying data to/from payload/encap
[vpp.git] / src / plugins / unittest / crypto_test.c
index b4f4874..9030415 100644 (file)
@@ -114,7 +114,6 @@ test_crypto (vlib_main_t * vm, crypto_test_main_t * tm)
            case VNET_CRYPTO_OP_TYPE_ENCRYPT:
            case VNET_CRYPTO_OP_TYPE_DECRYPT:
              op->iv = r->iv.data;
-             op->iv_len = r->iv.length;
              op->key_index = vnet_crypto_key_add (vm, r->alg,
                                                   r->key.data,
                                                   r->key.length);
@@ -128,7 +127,6 @@ test_crypto (vlib_main_t * vm, crypto_test_main_t * tm)
            case VNET_CRYPTO_OP_TYPE_AEAD_ENCRYPT:
            case VNET_CRYPTO_OP_TYPE_AEAD_DECRYPT:
              op->iv = r->iv.data;
-             op->iv_len = r->iv.length;
              op->key_index = vnet_crypto_key_add (vm, r->alg,
                                                   r->key.data,
                                                   r->key.length);
@@ -270,6 +268,37 @@ test_crypto (vlib_main_t * vm, crypto_test_main_t * tm)
   return 0;
 }
 
+static u32
+test_crypto_get_key_sz (vnet_crypto_alg_t alg)
+{
+  switch (alg)
+    {
+#define _(n, s, l) \
+  case VNET_CRYPTO_ALG_##n: \
+    return l;
+  /* *INDENT-OFF* */
+  foreach_crypto_cipher_alg
+  foreach_crypto_aead_alg
+  /* *INDENT-ON* */
+#undef _
+    case VNET_CRYPTO_ALG_HMAC_MD5:
+    case VNET_CRYPTO_ALG_HMAC_SHA1:
+      return 20;
+    case VNET_CRYPTO_ALG_HMAC_SHA224:
+      return 28;
+    case VNET_CRYPTO_ALG_HMAC_SHA256:
+      return 32;
+    case VNET_CRYPTO_ALG_HMAC_SHA384:
+      return 48;
+    case VNET_CRYPTO_ALG_HMAC_SHA512:
+      return 64;
+    default:
+      return 0;
+    }
+
+  return 0;
+}
+
 static clib_error_t *
 test_crypto_perf (vlib_main_t * vm, crypto_test_main_t * tm)
 {
@@ -322,7 +351,8 @@ test_crypto_perf (vlib_main_t * vm, crypto_test_main_t * tm)
   for (i = 0; i < sizeof (key); i++)
     key[i] = i;
 
-  key_index = vnet_crypto_key_add (vm, tm->alg, key, sizeof (key));
+  key_index = vnet_crypto_key_add (vm, tm->alg, key,
+                                  test_crypto_get_key_sz (tm->alg));
 
   for (i = 0; i < VNET_CRYPTO_OP_N_TYPES; i++)
     {
@@ -361,12 +391,13 @@ test_crypto_perf (vlib_main_t * vm, crypto_test_main_t * tm)
          vnet_crypto_op_init (op2,
                               ad->op_by_type
                               [VNET_CRYPTO_OP_TYPE_AEAD_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->tag = op2->tag = b->data - 32;
          op1->iv = op2->iv = b->data - 64;
          op1->aad = op2->aad = b->data - VLIB_BUFFER_PRE_DATA_SIZE;
-         op1->aad_len = op2->aad_len = 0;
+         op1->aad_len = op2->aad_len = 64;
+         op1->tag_len = op2->tag_len = 16;
          n_bytes += op1->len = op2->len = buffer_size;
          break;
        case VNET_CRYPTO_OP_TYPE_HMAC: