diff options
author | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-01-26 13:13:03 +0000 |
---|---|---|
committer | Vsevolod Stakhov <vsevolod@highsecure.ru> | 2017-01-26 15:50:43 +0000 |
commit | 6713205e121e37bdbbf38faa852ad9ea9a9a225e (patch) | |
tree | 0af4d42d3328d44a05199c1212c68ee38e590ecd | |
parent | 21c76d8b17abe7794612c96575e9b5a2ae816d48 (diff) | |
download | rspamd-6713205e121e37bdbbf38faa852ad9ea9a9a225e.tar.gz rspamd-6713205e121e37bdbbf38faa852ad9ea9a9a225e.zip |
[Minor] Allow to parse signature pubkeys from the config
-rw-r--r-- | src/libserver/cfg_rcl.c | 13 | ||||
-rw-r--r-- | 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 { |