aboutsummaryrefslogtreecommitdiff
path: root/src/crypto/pubkey.hpp
blob: cb1f794029299f9e59fa1b0ea723ca43b46fd56e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
extern "C" {

#ifndef WG_KEY_LEN
#define WG_KEY_LEN 32
#endif

#define WG_KEY_LEN_BASE64 ((((WG_KEY_LEN) + 2) / 3) * 4 + 1)
#define WG_KEY_LEN_BASE32 (((WG_KEY_LEN + 4) / 5) * 8 + 1)

/*
 * wg_pubkey_base64 is a C++-compatible wrapper for the curve25519 public-key
 * derivation routines used natively in `wg(8)`
 *
 * PRIVKEY: a c-style string containing the base64-encoded private key
 * BASE32:  a c-style string of capacity WG_KEY_LEN_BASE64 containing the
 * encoded public key
 *
 * returns: 0 on success
 *          > 0 when an error occurs (due to improper key formatting)
 */
int wg_pubkey_base32(char const * privkey, char * base32);

int wg_key_convert_base32(char const * base64, char * base32);

}