Electroneum
Toggle main menu visibility
Loading...
Searching...
No Matches
dnscrypt.h
Go to the documentation of this file.
1
#ifndef UNBOUND_DNSCRYPT_H
2
#define UNBOUND_DNSCRYPT_H
3
8
9
#include "dnscrypt/dnscrypt_config.h"
10
#ifdef USE_DNSCRYPT
11
12
#define DNSCRYPT_MAGIC_HEADER_LEN 8U
13
#define DNSCRYPT_MAGIC_RESPONSE "r6fnvWj8"
14
15
#ifndef DNSCRYPT_MAX_PADDING
16
# define DNSCRYPT_MAX_PADDING 256U
17
#endif
18
#ifndef DNSCRYPT_BLOCK_SIZE
19
# define DNSCRYPT_BLOCK_SIZE 64U
20
#endif
21
#ifndef DNSCRYPT_MIN_PAD_LEN
22
# define DNSCRYPT_MIN_PAD_LEN 8U
23
#endif
24
25
#define crypto_box_HALF_NONCEBYTES (crypto_box_NONCEBYTES / 2U)
26
27
#include "config.h"
28
#include "
dnscrypt/cert.h
"
29
#include "
util/locks.h
"
30
31
#define DNSCRYPT_QUERY_HEADER_SIZE \
32
(DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_PUBLICKEYBYTES + crypto_box_HALF_NONCEBYTES + crypto_box_MACBYTES)
33
#define DNSCRYPT_RESPONSE_HEADER_SIZE \
34
(DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_NONCEBYTES + crypto_box_MACBYTES)
35
36
#define DNSCRYPT_REPLY_HEADER_SIZE \
37
(DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_HALF_NONCEBYTES * 2 + crypto_box_MACBYTES)
38
39
struct
sldns_buffer
;
40
struct
config_file
;
41
struct
comm_reply
;
42
struct
slabhash
;
43
44
typedef
struct
KeyPair_ {
45
uint8_t
crypt_publickey[crypto_box_PUBLICKEYBYTES];
46
uint8_t
crypt_secretkey[crypto_box_SECRETKEYBYTES];
47
} KeyPair;
48
49
typedef
struct
cert_ {
50
uint8_t
magic_query[DNSCRYPT_MAGIC_HEADER_LEN];
51
uint8_t
es_version[2];
52
KeyPair *
keypair
;
53
} dnsccert;
54
55
struct
dnsc_env {
56
struct
SignedCert *signed_certs;
57
struct
SignedCert **rotated_certs;
58
dnsccert *certs;
59
size_t
signed_certs_count;
60
size_t
rotated_certs_count;
61
uint8_t
provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES];
62
uint8_t
provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES];
63
KeyPair *keypairs;
64
size_t
keypairs_count;
65
uint64_t
nonce_ts_last;
66
unsigned
char
hash_key[crypto_shorthash_KEYBYTES];
67
char
* provider_name;
68
70
struct
slabhash *shared_secrets_cache;
72
lock_basic_type
shared_secrets_cache_lock;
74
size_t
num_query_dnscrypt_secret_missed_cache;
75
77
struct
slabhash *nonces_cache;
79
lock_basic_type
nonces_cache_lock;
81
size_t
num_query_dnscrypt_replay;
82
};
83
84
struct
dnscrypt_query_header {
85
uint8_t
magic_query[DNSCRYPT_MAGIC_HEADER_LEN];
86
uint8_t
publickey[crypto_box_PUBLICKEYBYTES];
87
uint8_t
nonce[crypto_box_HALF_NONCEBYTES];
88
uint8_t
mac[crypto_box_MACBYTES];
89
};
90
96
struct
dnsc_env * dnsc_create(
void
);
97
107
int
dnsc_apply_cfg(
struct
dnsc_env *env,
struct
config_file
*cfg);
108
113
void
dnsc_delete(
struct
dnsc_env *env);
114
121
int
dnsc_handle_curved_request(
struct
dnsc_env* dnscenv,
122
struct
comm_reply
* repinfo);
130
131
int
dnsc_handle_uncurved_request(
struct
comm_reply
*repinfo);
132
136
size_t
dnsc_shared_secrets_sizefunc(
void
*k,
void
*d);
137
141
int
dnsc_shared_secrets_compfunc(
void
*m1,
void
*m2);
142
146
void
dnsc_shared_secrets_delkeyfunc(
void
*k,
void
* arg);
147
151
void
dnsc_shared_secrets_deldatafunc(
void
* d,
void
* arg);
152
156
size_t
dnsc_nonces_sizefunc(
void
*k,
void
*d);
157
161
int
dnsc_nonces_compfunc(
void
*m1,
void
*m2);
162
166
void
dnsc_nonces_delkeyfunc(
void
*k,
void
* arg);
167
171
void
dnsc_nonces_deldatafunc(
void
* d,
void
* arg);
172
173
174
#endif
/* USE_DNSCRYPT */
175
#endif
cert.h
keypair
std::vector< std::string > keypair
Definition
delegated_pow.cpp:7
locks.h
lock_basic_type
int lock_basic_type
Definition
locks.h:269
uint8_t
unsigned char uint8_t
Definition
stdint.h:124
uint64_t
unsigned __int64 uint64_t
Definition
stdint.h:136
comm_reply
Definition
netevent.h:112
config_file
Definition
config_file.h:68
slabhash
Definition
slabhash.h:57
sldns_buffer
Definition
sbuffer.h:117
external
unbound
dnscrypt
dnscrypt.h
Generated on
for Electroneum by
1.17.0