aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-26 13:13:03 +0000
committerVsevolod Stakhov <vsevolod@highsecure.ru>2017-01-26 15:50:43 +0000
commit6713205e121e37bdbbf38faa852ad9ea9a9a225e (patch)
tree0af4d42d3328d44a05199c1212c68ee38e590ecd
parent21c76d8b17abe7794612c96575e9b5a2ae816d48 (diff)
downloadrspamd-6713205e121e37bdbbf38faa852ad9ea9a9a225e.tar.gz
rspamd-6713205e121e37bdbbf38faa852ad9ea9a9a225e.zip
[Minor] Allow to parse signature pubkeys from the config
-rw-r--r--src/libserver/cfg_rcl.c13
-rw-r--r--src/libserver/cfg_rcl.h4
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 {