dnscrypt-proxy 1.6.0
[tomato.git] / release / src / router / dnscrypt / src / proxy / dnscrypt_client.h
blob991c272707a0e9cf4e4ca94b05788ef4a280a9a0
2 #ifndef __DNSCRYPT_CLIENT_H__
3 #define __DNSCRYPT_CLIENT_H__ 1
5 #include <sys/types.h>
6 #include <stdint.h>
8 #include "dnscrypt.h"
10 typedef struct DNSCryptClient_ {
11 uint8_t magic_query[DNSCRYPT_MAGIC_QUERY_LEN];
12 uint8_t publickey[crypto_box_PUBLICKEYBYTES];
13 uint8_t secretkey[crypto_box_SECRETKEYBYTES];
14 uint8_t nmkey[crypto_box_BEFORENMBYTES];
15 uint8_t nonce_pad[crypto_box_HALF_NONCEBYTES];
16 uint64_t nonce_ts_last;
17 _Bool ephemeral_keys;
18 } DNSCryptClient;
20 ssize_t dnscrypt_client_curve(DNSCryptClient * const client,
21 uint8_t client_nonce[crypto_box_HALF_NONCEBYTES],
22 uint8_t *buf, size_t len, const size_t max_len);
24 int dnscrypt_client_uncurve(const DNSCryptClient * const client,
25 const uint8_t client_nonce[crypto_box_HALF_NONCEBYTES],
26 uint8_t * const buf, size_t * const lenp);
28 int dnscrypt_client_init_with_key_pair(DNSCryptClient * const client,
29 const uint8_t client_publickey[crypto_box_PUBLICKEYBYTES],
30 const uint8_t client_secretkey[crypto_box_SECRETKEYBYTES]);
32 int dnscrypt_client_create_key_pair(DNSCryptClient * const client,
33 uint8_t client_publickey[crypto_box_PUBLICKEYBYTES],
34 uint8_t client_secretkey[crypto_box_SECRETKEYBYTES]);
36 int dnscrypt_client_init_with_new_session_key(DNSCryptClient * const client);
38 int dnscrypt_client_init_with_new_key_pair(DNSCryptClient * const client);
40 int dnscrypt_client_init_with_client_key(DNSCryptClient * const client);
42 int dnscrypt_client_init_magic_query(DNSCryptClient * const client,
43 const uint8_t magic_query[DNSCRYPT_MAGIC_QUERY_LEN]);
45 int dnscrypt_client_init_resolver_publickey(DNSCryptClient * const client,
46 const uint8_t resolver_publickey[crypto_box_PUBLICKEYBYTES]);
47 #endif