]> git.ipfire.org Git - thirdparty/rspamd.git/commitdiff
[Minor] Allow to parse signature pubkeys from the config
authorVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Jan 2017 13:13:03 +0000 (13:13 +0000)
committerVsevolod Stakhov <vsevolod@highsecure.ru>
Thu, 26 Jan 2017 15:50:43 +0000 (15:50 +0000)
src/libserver/cfg_rcl.c
src/libserver/cfg_rcl.h

index 79e23588a86d1e593c8cfe2b260cedcb77ec5001..8b4fa0120320b49fd7c7df867a5c0e7f624717f9 100644 (file)
@@ -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;
index 2fb987b517c98cef95abe6a2eb7e2109d86c737b..6a0d86cb7705904f9aa0a714ebd523bbb94874cf 100644 (file)
@@ -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 {