aboutsummaryrefslogtreecommitdiffstats
path: root/src/libcryptobox
diff options
context:
space:
mode:
authorVsevolod Stakhov <vsevolod@rspamd.com>2023-01-04 12:46:56 +0000
committerVsevolod Stakhov <vsevolod@rspamd.com>2023-01-04 12:46:56 +0000
commit27d878daa1f97dd40afc69d5bcb1ae23eb6c3b29 (patch)
tree28093bb2dd6006dd4a0d2fa8c1e797ce9c7aae3c /src/libcryptobox
parentff3f5692fa1fc1ac105cee876bffaf9b4e2a0c99 (diff)
downloadrspamd-27d878daa1f97dd40afc69d5bcb1ae23eb6c3b29.tar.gz
rspamd-27d878daa1f97dd40afc69d5bcb1ae23eb6c3b29.zip
[Minor] Allow different dump types for the keypairs
Diffstat (limited to 'src/libcryptobox')
-rw-r--r--src/libcryptobox/keypair.c18
-rw-r--r--src/libcryptobox/keypair.h9
2 files changed, 18 insertions, 9 deletions
diff --git a/src/libcryptobox/keypair.c b/src/libcryptobox/keypair.c
index 98e2322d3..b97cd699e 100644
--- a/src/libcryptobox/keypair.c
+++ b/src/libcryptobox/keypair.c
@@ -787,7 +787,7 @@ rspamd_keypair_from_ucl (const ucl_object_t *obj)
ucl_object_t *
rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
- gboolean is_hex)
+ enum rspamd_keypair_dump_flags flags)
{
ucl_object_t *ucl_out, *elt;
gint how = 0;
@@ -796,7 +796,7 @@ rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
g_assert (kp != NULL);
- if (is_hex) {
+ if (flags & RSPAMD_KEYPAIR_DUMP_HEX) {
how |= RSPAMD_KEYPAIR_HEX;
encoding = "hex";
}
@@ -817,13 +817,15 @@ rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
"pubkey", 0, false);
g_string_free (keypair_out, TRUE);
- /* privkey part */
- keypair_out = rspamd_keypair_print (kp,
- RSPAMD_KEYPAIR_PRIVKEY|how);
- ucl_object_insert_key (elt,
- ucl_object_fromlstring (keypair_out->str, keypair_out->len),
+ if (!(flags & RSPAMD_KEYPAIR_DUMP_NO_SECRET)) {
+ /* privkey part */
+ keypair_out = rspamd_keypair_print(kp,
+ RSPAMD_KEYPAIR_PRIVKEY | how);
+ ucl_object_insert_key(elt,
+ ucl_object_fromlstring(keypair_out->str, keypair_out->len),
"privkey", 0, false);
- g_string_free (keypair_out, TRUE);
+ g_string_free(keypair_out, TRUE);
+ }
keypair_out = rspamd_keypair_print (kp,
RSPAMD_KEYPAIR_ID|how);
diff --git a/src/libcryptobox/keypair.h b/src/libcryptobox/keypair.h
index ecb7fc81c..ed247e8ca 100644
--- a/src/libcryptobox/keypair.h
+++ b/src/libcryptobox/keypair.h
@@ -244,13 +244,20 @@ const guchar *rspamd_keypair_component (struct rspamd_cryptobox_keypair *kp,
*/
struct rspamd_cryptobox_keypair *rspamd_keypair_from_ucl (const ucl_object_t *obj);
+
+enum rspamd_keypair_dump_flags {
+ RSPAMD_KEYPAIR_DUMP_DEFAULT = 0,
+ RSPAMD_KEYPAIR_DUMP_HEX = 1u << 0u,
+ RSPAMD_KEYPAIR_DUMP_NO_SECRET = 1u << 1u,
+};
+
/**
* Converts keypair to ucl object
* @param kp
* @return
*/
ucl_object_t *rspamd_keypair_to_ucl (struct rspamd_cryptobox_keypair *kp,
- gboolean is_hex);
+ enum rspamd_keypair_dump_flags flags);
/**