From 6713205e121e37bdbbf38faa852ad9ea9a9a225e Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 26 Jan 2017 13:13:03 +0000 Subject: [PATCH] [Minor] Allow to parse signature pubkeys from the config --- src/libserver/cfg_rcl.c | 13 +++++++++++-- src/libserver/cfg_rcl.h | 4 +++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/libserver/cfg_rcl.c b/src/libserver/cfg_rcl.c index 79e23588a..8b4fa0120 100644 --- a/src/libserver/cfg_rcl.c +++ b/src/libserver/cfg_rcl.c @@ -3001,13 +3001,22 @@ rspamd_rcl_parse_struct_pubkey (rspamd_mempool_t *pool, struct rspamd_cryptobox_pubkey **target, *pk; gsize len; const gchar *str; + gint keypair_type = RSPAMD_KEYPAIR_KEX, + keypair_mode = RSPAMD_CRYPTOBOX_MODE_25519; + + if (pd->flags & RSPAMD_CL_FLAG_SIGNKEY) { + keypair_type = RSPAMD_KEYPAIR_SIGN; + } + if (pd->flags & RSPAMD_CL_FLAG_NISTKEY) { + keypair_mode = RSPAMD_CRYPTOBOX_MODE_NIST; + } target = (struct rspamd_cryptobox_pubkey **)(((gchar *)pd->user_struct) + pd->offset); if (obj->type == UCL_STRING) { str = ucl_object_tolstring (obj, &len); - pk = rspamd_pubkey_from_base32 (str, len, RSPAMD_KEYPAIR_KEX, - RSPAMD_CRYPTOBOX_MODE_25519); + pk = rspamd_pubkey_from_base32 (str, len, keypair_type, + keypair_mode); if (pk != NULL) { *target = pk; diff --git a/src/libserver/cfg_rcl.h b/src/libserver/cfg_rcl.h index 2fb987b51..6a0d86cb7 100644 --- a/src/libserver/cfg_rcl.h +++ b/src/libserver/cfg_rcl.h @@ -45,7 +45,9 @@ enum rspamd_rcl_flag { RSPAMD_CL_FLAG_STRING_PATH = 0x1 << 10, RSPAMD_CL_FLAG_BOOLEAN_INVERSE = 0x1 << 11, RSPAMD_CL_FLAG_STRING_LIST_HASH = 0x1 << 12, - RSPAMD_CL_FLAG_MULTIPLE = 0x1 << 13 + RSPAMD_CL_FLAG_MULTIPLE = 0x1 << 13, + RSPAMD_CL_FLAG_SIGNKEY = 0x1 << 14, + RSPAMD_CL_FLAG_NISTKEY = 0x1 << 15, }; struct rspamd_rcl_struct_parser { -- 2.39.5