aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/quic/quic_crypto.c
diff options
context:
space:
mode:
authorMathiasRaoul <mathias.raoul@gmail.com>2020-03-24 09:45:55 +0000
committerDave Wallace <dwallacelf@gmail.com>2020-03-24 22:41:24 +0000
commit753b96f31b0f34983bbc213516f1a05825d868a8 (patch)
tree451ac0d69bb2a0944f3b46d8e10ae5e0ab5a6a2e /src/plugins/quic/quic_crypto.c
parent2a6642e95dc18d7c56f87b74a70658b8312b8c08 (diff)
quic: disable vnet_crypto and batching if no crypto engines are loaded
Type: fix Change-Id: I95d3f8431b468cefc8777526dd3b988a299f0687 Signed-off-by: MathiasRaoul <mathias.raoul@gmail.com>
Diffstat (limited to 'src/plugins/quic/quic_crypto.c')
-rw-r--r--src/plugins/quic/quic_crypto.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/src/plugins/quic/quic_crypto.c b/src/plugins/quic/quic_crypto.c
index dd7300388d4..d8fd4a916e6 100644
--- a/src/plugins/quic/quic_crypto.c
+++ b/src/plugins/quic/quic_crypto.c
@@ -623,17 +623,27 @@ quic_crypto_aead_setup_crypto (ptls_aead_context_t * _ctx, int is_enc,
assert (0);
}
- ctx->super.do_decrypt = quic_crypto_aead_decrypt;
+ if (quic_main.vnet_crypto_enabled)
+ {
+ ctx->super.do_decrypt = quic_crypto_aead_decrypt;
- ctx->super.do_encrypt_init = quic_crypto_aead_encrypt_init;
- ctx->super.do_encrypt_update = quic_crypto_aead_encrypt_update;
- ctx->super.do_encrypt_final = quic_crypto_aead_encrypt_final;
- ctx->super.dispose_crypto = quic_crypto_aead_dispose_crypto;
+ ctx->super.do_encrypt_init = quic_crypto_aead_encrypt_init;
+ ctx->super.do_encrypt_update = quic_crypto_aead_encrypt_update;
+ ctx->super.do_encrypt_final = quic_crypto_aead_encrypt_final;
+ ctx->super.dispose_crypto = quic_crypto_aead_dispose_crypto;
- clib_rwlock_writer_lock (&quic_main.crypto_keys_quic_rw_lock);
- ctx->key_index = vnet_crypto_key_add (vm, algo,
- (u8 *) key, _ctx->algo->key_size);
- clib_rwlock_writer_unlock (&quic_main.crypto_keys_quic_rw_lock);
+ clib_rwlock_writer_lock (&quic_main.crypto_keys_quic_rw_lock);
+ ctx->key_index = vnet_crypto_key_add (vm, algo,
+ (u8 *) key, _ctx->algo->key_size);
+ clib_rwlock_writer_unlock (&quic_main.crypto_keys_quic_rw_lock);
+ }
+ else
+ {
+ if (!strcmp (ctx->super.algo->name, "AES128-GCM"))
+ ptls_openssl_aes128gcm.setup_crypto (_ctx, is_enc, key);
+ else if (!strcmp (ctx->super.algo->name, "AES256-GCM"))
+ ptls_openssl_aes256gcm.setup_crypto (_ctx, is_enc, key);
+ }
return 0;
}