- quic_crypto_batch_ctx_t *quic_crypto_batch_ctx =
- &qm->wrk_ctx[thread_index].crypto_context_batch;
-
- vnet_crypto_op_t *vnet_op =
- &quic_crypto_batch_ctx->aead_crypto_tx_packets_ops
- [quic_crypto_batch_ctx->nb_tx_packets];
- vnet_crypto_op_init (vnet_op, id);
- vnet_op->aad = (u8 *) aad;
- vnet_op->aad_len = aadlen;
- vnet_op->iv = clib_mem_alloc (PTLS_MAX_IV_SIZE);
- clib_memcpy (vnet_op->iv, iv, PTLS_MAX_IV_SIZE);
- vnet_op->key_index = ctx->key_index;
-}
-
-size_t
-quic_crypto_aead_encrypt_update (ptls_aead_context_t * _ctx, void *output,
- const void *input, size_t inlen)
-{
- struct aead_crypto_context_t *ctx = (struct aead_crypto_context_t *) _ctx;
-
- quic_main_t *qm = &quic_main;
- u32 thread_index = vlib_get_thread_index ();
- quic_crypto_batch_ctx_t *quic_crypto_batch_ctx =
- &qm->wrk_ctx[thread_index].crypto_context_batch;
-
- vnet_crypto_op_t *vnet_op =
- &quic_crypto_batch_ctx->aead_crypto_tx_packets_ops
- [quic_crypto_batch_ctx->nb_tx_packets];
- vnet_op->src = (u8 *) input;
- vnet_op->dst = output;
- vnet_op->len = inlen;
- vnet_op->tag_len = ctx->super.algo->tag_size;
-
- vnet_op->tag = vnet_op->src + inlen;
-
- return 0;
-}
-
-size_t
-quic_crypto_aead_encrypt_final (ptls_aead_context_t * _ctx, void *output)
-{
- quic_main_t *qm = &quic_main;
- u32 thread_index = vlib_get_thread_index ();
- quic_crypto_batch_ctx_t *quic_crypto_batch_ctx =
- &qm->wrk_ctx[thread_index].crypto_context_batch;
-
- vnet_crypto_op_t *vnet_op =
- &quic_crypto_batch_ctx->
- aead_crypto_tx_packets_ops[quic_crypto_batch_ctx->nb_tx_packets];
- quic_crypto_batch_ctx->nb_tx_packets++;
- return vnet_op->len + vnet_op->tag_len;
-}
-
-size_t
-quic_crypto_aead_decrypt (ptls_aead_context_t * _ctx, void *_output,
- const void *input, size_t inlen, const void *iv,
- const void *aad, size_t aadlen)
-{
- vlib_main_t *vm = vlib_get_main ();
- struct aead_crypto_context_t *ctx = (struct aead_crypto_context_t *) _ctx;
-
- vnet_crypto_op_id_t id;
- if (!strcmp (ctx->super.algo->name, "AES128-GCM"))
- {
- id = VNET_CRYPTO_OP_AES_128_GCM_DEC;
- }
- else if (!strcmp (ctx->super.algo->name, "AES256-GCM"))
- {
- id = VNET_CRYPTO_OP_AES_256_GCM_DEC;
- }
- else