Browse Source

support cipher none

pull/2993/head
Liu Dongmiao 1 year ago
parent
commit
8c6c45e7c9
5 changed files with 44 additions and 4 deletions
  1. 40
      src/crypto.c
  2. 2
      src/local.c
  3. 2
      src/redir.c
  4. 2
      src/server.c
  5. 2
      src/tunnel.c

40
src/crypto.c

@ -131,6 +131,42 @@ entropy_check(void)
#endif
}
#ifndef ATTR_UNUSED
#define ATTR_UNUSED __attribute__((unused))
#endif
static int none_encrypt_all(ATTR_UNUSED buffer_t *a, ATTR_UNUSED cipher_t *b, ATTR_UNUSED size_t c) {
return CRYPTO_OK;
}
static int none_decrypt_all(ATTR_UNUSED buffer_t *a, ATTR_UNUSED cipher_t *b, ATTR_UNUSED size_t c) {
return CRYPTO_OK;
}
static int none_encrypt(ATTR_UNUSED buffer_t *a, ATTR_UNUSED cipher_ctx_t *b, ATTR_UNUSED size_t c) {
return CRYPTO_OK;
}
static int none_decrypt(ATTR_UNUSED buffer_t *a, ATTR_UNUSED cipher_ctx_t *b, ATTR_UNUSED size_t c) {
return CRYPTO_OK;
}
static void none_ctx_init(ATTR_UNUSED cipher_t *a, ATTR_UNUSED cipher_ctx_t *b, ATTR_UNUSED int c) {
}
static void none_ctx_release(ATTR_UNUSED cipher_ctx_t *a) {
}
static crypto_t none_crypt = {
.cipher = NULL,
.encrypt_all = &none_encrypt_all,
.decrypt_all = &none_decrypt_all,
.encrypt = &none_encrypt,
.decrypt = &none_decrypt,
.ctx_init = &none_ctx_init,
.ctx_release = &none_ctx_release,
};
crypto_t *
crypto_init(const char *password, const char *key, const char *method)
{
@ -150,6 +186,10 @@ crypto_init(const char *password, const char *key, const char *method)
#endif
if (method != NULL) {
if (strcmp(method, "none") == 0) {
return &none_crypt;
}
for (i = 0; i < STREAM_CIPHER_NUM; i++)
if (strcmp(method, supported_stream_ciphers[i]) == 0) {
m = i;

2
src/local.c

@ -1709,7 +1709,7 @@ main(int argc, char **argv)
exit(EXIT_FAILURE);
}
#endif
if (!password && !key) {
if (!password && !key && strcmp(method, "none")) {
fprintf(stderr, "both password and key are NULL\n");
exit(EXIT_FAILURE);
}

2
src/redir.c

@ -1150,7 +1150,7 @@ main(int argc, char **argv)
}
if (remote_num == 0 || remote_port == NULL || local_port == NULL
|| (password == NULL && key == NULL)) {
|| (password == NULL && key == NULL && strcmp(method, "none"))) {
usage();
exit(EXIT_FAILURE);
}

2
src/server.c

@ -2100,7 +2100,7 @@ main(int argc, char **argv)
}
if (server_num == 0 || server_port == NULL
|| (password == NULL && key == NULL)) {
|| (password == NULL && key == NULL && strcmp(method, "none"))) {
usage();
exit(EXIT_FAILURE);
}

2
src/tunnel.c

@ -1151,7 +1151,7 @@ main(int argc, char **argv)
}
if (remote_num == 0 || remote_port == NULL || tunnel_addr_str == NULL
|| local_port == NULL || (password == NULL && key == NULL)) {
|| local_port == NULL || (password == NULL && key == NULL && strcmp(method, "none"))) {
usage();
exit(EXIT_FAILURE);
}

Loading…
Cancel
Save