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 uint8_t nonce_pad
[crypto_box_HALF_NONCEBYTES
];
16 uint64_t nonce_ts_last
;
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
]);