return pk->id;
}
+const guchar *
+rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
+ guint *len)
+{
+ guchar *ret = NULL;
+ guint rlen;
+
+ ret = rspamd_cryptobox_pubkey_pk (pk, &rlen);
+
+ if (len) {
+ *len = rlen;
+ }
+
+ return ret;
+}
static void
rspamd_keypair_print_component (guchar *data, gsize datalen,
return res;
}
+
+const guchar *
+rspamd_keypair_component (struct rspamd_cryptobox_keypair *kp,
+ guint ncomp, guint *len)
+{
+ guint rlen = 0;
+ const guchar *ret = NULL;
+
+ g_assert (kp != NULL);
+
+ switch (ncomp) {
+ case RSPAMD_KEYPAIR_COMPONENT_ID:
+ rlen = sizeof (kp->id);
+ ret = kp->id;
+ break;
+ case RSPAMD_KEYPAIR_COMPONENT_PK:
+ ret = rspamd_cryptobox_keypair_pk (kp, &rlen);
+ break;
+ case RSPAMD_KEYPAIR_COMPONENT_SK:
+ ret = rspamd_cryptobox_keypair_sk (kp, &rlen);
+ break;
+ }
+
+ if (len) {
+ *len = rlen;
+ }
+
+ return ret;
+}
*/
const guchar * rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk);
+/**
+ * Get raw public key from pubkey opaque structure
+ * @param pk
+ * @param len
+ * @return
+ */
+const guchar * rspamd_pubkey_get_pk (struct rspamd_cryptobox_pubkey *pk,
+ guint *len);
/** Print pubkey */
#define RSPAMD_KEYPAIR_PUBKEY 0x1
GString *rspamd_keypair_print (struct rspamd_cryptobox_keypair *kp,
guint how);
+/** Get keypair pubkey ID */
+#define RSPAMD_KEYPAIR_COMPONENT_ID 0
+/** Get keypair public key */
+#define RSPAMD_KEYPAIR_COMPONENT_PK 1
+/** Get keypair private key */
+#define RSPAMD_KEYPAIR_COMPONENT_SK 2
+/**
+ * Get specific component of a keypair
+ * @param kp keypair
+ * @param ncomp component number
+ * @param len length of input
+ * @return raw content of the component
+ */
+const guchar * rspamd_keypair_component (struct rspamd_cryptobox_keypair *kp,
+ guint ncomp, guint *len);
+
#endif /* SRC_LIBCRYPTOBOX_KEYPAIR_H_ */