Browse Source

Add more utilities to operate with keypairs

tags/1.2.0
Vsevolod Stakhov 8 years ago
parent
commit
7994b04661
2 changed files with 68 additions and 0 deletions
  1. 44
    0
      src/libcryptobox/keypair.c
  2. 24
    0
      src/libcryptobox/keypair.h

+ 44
- 0
src/libcryptobox/keypair.c View File

@@ -451,6 +451,21 @@ rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk)
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,
@@ -513,3 +528,32 @@ rspamd_keypair_print (struct rspamd_cryptobox_keypair *kp, guint how)

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;
}

+ 24
- 0
src/libcryptobox/keypair.h View File

@@ -148,6 +148,14 @@ const guchar * rspamd_keypair_get_id (struct rspamd_cryptobox_keypair *kp);
*/
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
@@ -171,4 +179,20 @@ const guchar * rspamd_pubkey_get_id (struct rspamd_cryptobox_pubkey *pk);
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_ */

Loading…
Cancel
Save