2 #ifndef __DNSCRYPT_CLIENT_H__
3 #define __DNSCRYPT_CLIENT_H__ 1
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 uint64_t nonce_ts_last
;
18 ssize_t
dnscrypt_client_curve(DNSCryptClient
* const client
,
19 uint8_t client_nonce
[crypto_box_HALF_NONCEBYTES
],
20 uint8_t *buf
, size_t len
, const size_t max_len
);
22 int dnscrypt_client_uncurve(const DNSCryptClient
* const client
,
23 const uint8_t client_nonce
[crypto_box_HALF_NONCEBYTES
],
24 uint8_t * const buf
, size_t * const lenp
);
26 int dnscrypt_client_init_with_key_pair(DNSCryptClient
* const client
,
27 const uint8_t client_publickey
[crypto_box_PUBLICKEYBYTES
],
28 const uint8_t client_secretkey
[crypto_box_SECRETKEYBYTES
]);
30 int dnscrypt_client_create_key_pair(DNSCryptClient
* const client
,
31 uint8_t client_publickey
[crypto_box_PUBLICKEYBYTES
],
32 uint8_t client_secretkey
[crypto_box_SECRETKEYBYTES
]);
34 int dnscrypt_client_init_with_new_key_pair(DNSCryptClient
* const client
);
36 int dnscrypt_client_init_magic_query(DNSCryptClient
* const client
,
37 const uint8_t magic_query
[DNSCRYPT_MAGIC_QUERY_LEN
]);
39 int dnscrypt_client_init_nmkey(DNSCryptClient
* const client
,
40 const uint8_t server_publickey
[crypto_box_PUBLICKEYBYTES
]);
42 int dnscrypt_client_wipe_secretkey(DNSCryptClient
* const client
);