diff options
-rw-r--r-- | toxcore/TCP_server.c | 8 | ||||
-rw-r--r-- | toxencryptsave/toxencryptsave.c | 7 | ||||
-rw-r--r-- | toxencryptsave/toxencryptsave.h | 3 |
3 files changed, 12 insertions, 6 deletions
diff --git a/toxcore/TCP_server.c b/toxcore/TCP_server.c index e85a506d..d7401de8 100644 --- a/toxcore/TCP_server.c +++ b/toxcore/TCP_server.c | |||
@@ -1187,7 +1187,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1187 | 1187 | ||
1188 | for (n = 0; n < nfds; ++n) { | 1188 | for (n = 0; n < nfds; ++n) { |
1189 | sock_t sock = events[n].data.u64 & 0xFFFFFFFF; | 1189 | sock_t sock = events[n].data.u64 & 0xFFFFFFFF; |
1190 | int status = (events[n].data.u64 >> 32) & 0xFFFF, index = (events[n].data.u64 >> 48); | 1190 | int status = (events[n].data.u64 >> 32) & 0xFF, index = (events[n].data.u64 >> 40); |
1191 | 1191 | ||
1192 | if ((events[n].events & EPOLLERR) || (events[n].events & EPOLLHUP) || (events[n].events & EPOLLRDHUP)) { | 1192 | if ((events[n].events & EPOLLERR) || (events[n].events & EPOLLHUP) || (events[n].events & EPOLLRDHUP)) { |
1193 | switch (status) { | 1193 | switch (status) { |
@@ -1241,7 +1241,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1241 | 1241 | ||
1242 | struct epoll_event ev = { | 1242 | struct epoll_event ev = { |
1243 | .events = EPOLLIN | EPOLLET | EPOLLRDHUP, | 1243 | .events = EPOLLIN | EPOLLET | EPOLLRDHUP, |
1244 | .data.u64 = sock_new | ((uint64_t)TCP_SOCKET_INCOMING << 32) | ((uint64_t)index_new << 48) | 1244 | .data.u64 = sock_new | ((uint64_t)TCP_SOCKET_INCOMING << 32) | ((uint64_t)index_new << 40) |
1245 | }; | 1245 | }; |
1246 | 1246 | ||
1247 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_ADD, sock_new, &ev) == -1) { | 1247 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_ADD, sock_new, &ev) == -1) { |
@@ -1258,7 +1258,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1258 | 1258 | ||
1259 | if ((index_new = do_incoming(TCP_server, index)) != -1) { | 1259 | if ((index_new = do_incoming(TCP_server, index)) != -1) { |
1260 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; | 1260 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; |
1261 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 48); | 1261 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_UNCONFIRMED << 32) | ((uint64_t)index_new << 40); |
1262 | 1262 | ||
1263 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { | 1263 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { |
1264 | kill_TCP_connection(&TCP_server->unconfirmed_connection_queue[index_new]); | 1264 | kill_TCP_connection(&TCP_server->unconfirmed_connection_queue[index_new]); |
@@ -1274,7 +1274,7 @@ static void do_TCP_epoll(TCP_Server *TCP_server) | |||
1274 | 1274 | ||
1275 | if ((index_new = do_unconfirmed(TCP_server, index)) != -1) { | 1275 | if ((index_new = do_unconfirmed(TCP_server, index)) != -1) { |
1276 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; | 1276 | events[n].events = EPOLLIN | EPOLLET | EPOLLRDHUP; |
1277 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_CONFIRMED << 32) | ((uint64_t)index_new << 48); | 1277 | events[n].data.u64 = sock | ((uint64_t)TCP_SOCKET_CONFIRMED << 32) | ((uint64_t)index_new << 40); |
1278 | 1278 | ||
1279 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { | 1279 | if (epoll_ctl(TCP_server->efd, EPOLL_CTL_MOD, sock, &events[n]) == -1) { |
1280 | //remove from confirmed connections | 1280 | //remove from confirmed connections |
diff --git a/toxencryptsave/toxencryptsave.c b/toxencryptsave/toxencryptsave.c index b38209a4..e2f28a58 100644 --- a/toxencryptsave/toxencryptsave.c +++ b/toxencryptsave/toxencryptsave.c | |||
@@ -82,7 +82,8 @@ bool tox_get_salt(const uint8_t *data, uint8_t *salt) | |||
82 | * | 82 | * |
83 | * returns true on success | 83 | * returns true on success |
84 | */ | 84 | */ |
85 | bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key, TOX_ERR_KEY_DERIVATION *error) | 85 | bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key, |
86 | TOX_ERR_KEY_DERIVATION *error) | ||
86 | { | 87 | { |
87 | uint8_t salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES]; | 88 | uint8_t salt[crypto_pwhash_scryptsalsa208sha256_SALTBYTES]; |
88 | randombytes(salt, sizeof salt); | 89 | randombytes(salt, sizeof salt); |
@@ -212,10 +213,12 @@ bool tox_pass_key_decrypt(const uint8_t *data, size_t length, const TOX_PASS_KEY | |||
212 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); | 213 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); |
213 | return 0; | 214 | return 0; |
214 | } | 215 | } |
216 | |||
215 | if (!data || !key || !out) { | 217 | if (!data || !key || !out) { |
216 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); | 218 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); |
217 | return 0; | 219 | return 0; |
218 | } | 220 | } |
221 | |||
219 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { | 222 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { |
220 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); | 223 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); |
221 | return 0; | 224 | return 0; |
@@ -256,10 +259,12 @@ bool tox_pass_decrypt(const uint8_t *data, size_t length, uint8_t *passphrase, s | |||
256 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); | 259 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_INVALID_LENGTH); |
257 | return 0; | 260 | return 0; |
258 | } | 261 | } |
262 | |||
259 | if (!data || !passphrase || !out) { | 263 | if (!data || !passphrase || !out) { |
260 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); | 264 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_NULL); |
261 | return 0; | 265 | return 0; |
262 | } | 266 | } |
267 | |||
263 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { | 268 | if (memcmp(data, TOX_ENC_SAVE_MAGIC_NUMBER, TOX_ENC_SAVE_MAGIC_LENGTH) != 0) { |
264 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); | 269 | SET_ERROR_PARAMETER(error, TOX_ERR_DECRYPTION_BAD_FORMAT); |
265 | return 0; | 270 | return 0; |
diff --git a/toxencryptsave/toxencryptsave.h b/toxencryptsave/toxencryptsave.h index 078bd879..c077d899 100644 --- a/toxencryptsave/toxencryptsave.h +++ b/toxencryptsave/toxencryptsave.h | |||
@@ -183,7 +183,8 @@ typedef struct { | |||
183 | * | 183 | * |
184 | * returns true on success | 184 | * returns true on success |
185 | */ | 185 | */ |
186 | bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key, TOX_ERR_KEY_DERIVATION *error); | 186 | bool tox_derive_key_from_pass(uint8_t *passphrase, size_t pplength, TOX_PASS_KEY *out_key, |
187 | TOX_ERR_KEY_DERIVATION *error); | ||
187 | 188 | ||
188 | /* Same as above, except use the given salt for deterministic key derivation. | 189 | /* Same as above, except use the given salt for deterministic key derivation. |
189 | * The salt must be TOX_PASS_SALT_LENGTH bytes in length. | 190 | * The salt must be TOX_PASS_SALT_LENGTH bytes in length. |