From 6cc8ce61b3041dbec1cc78e46909b532ddc693f2 Mon Sep 17 00:00:00 2001 From: Zheyuan Wu <60459821+Trance-0@users.noreply.github.com> Date: Wed, 11 Feb 2026 17:31:34 -0600 Subject: [PATCH] add? update --- bin/client | Bin 28080 -> 28184 bytes bin/server | Bin 28216 -> 28312 bytes client.cpp | 12 +++++++++--- compile.sh | 4 ++++ server.cpp | 12 +++++++++--- 5 files changed, 22 insertions(+), 6 deletions(-) diff --git a/bin/client b/bin/client index ff1e7301d2ff6d509f9f7d5a4e641a13aad2bd46..334d1d304370490af0689f4fc0645e7101b2fd63 100755 GIT binary patch delta 4728 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 YDuH8trNz5k!5z@FzLGu#;q^2A11+qYwEzGB delta 4467 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 diff --git a/client.cpp b/client.cpp index 58083cf..a4c203e 100644 --- a/client.cpp +++ b/client.cpp @@ -46,13 +46,19 @@ int stream_encrypt(unsigned char *plaintext, int plaintext_len, unsigned char *k /* Initialise the encryption operation. */ // choice for aes_256 ref: https://stackoverflow.com/questions/1220751/how-to-choose-an-aes-encryption-mode-cbc-ecb-ctr-ocb-cfb - EVP_EncryptInit_ex(ctx, EVP_aes_256_ctr(), NULL, key, iv); + if (EVP_EncryptInit_ex(ctx, EVP_aes_256_ctr(), NULL, key, iv) != 1){ + ERR_print_errors_fp(stderr); + } /* Provide the message to be encrypted, and obtain the encrypted output. EVP_EncryptUpdate can be called multiple times if necessary */ - EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len); + if (EVP_EncryptUpdate(ctx, ciphertext, &len, plaintext, plaintext_len) != 1) { + ERR_print_errors_fp(stderr); + } /* Finalize the encryption. Further cipher text bytes may be written at this stage. */ - EVP_EncryptFinal_ex(ctx, ciphertext + len, &ciphertext_len); + if (EVP_EncryptFinal_ex(ctx, ciphertext + len, &ciphertext_len) != 1) { + ERR_print_errors_fp(stderr); + } /* Clean up */ EVP_CIPHER_CTX_free(ctx); diff --git a/compile.sh b/compile.sh index 3ced259..333d00b 100755 --- a/compile.sh +++ b/compile.sh @@ -19,6 +19,10 @@ file bin/server bin/client || true chmod a+x bin/server bin/client +# clean up existing containers and networks +docker compose down + +# start the containers docker compose up -d server docker compose run --rm -it client diff --git a/server.cpp b/server.cpp index 02f3452..8be0211 100644 --- a/server.cpp +++ b/server.cpp @@ -45,13 +45,19 @@ int stream_decrypt(unsigned char *ciphertext, int ciphertext_len, unsigned char ctx = EVP_CIPHER_CTX_new(); /* Initialise the decryption operation. */ - EVP_DecryptInit_ex(ctx, EVP_aes_256_ctr(), NULL, key, iv); + if (EVP_DecryptInit_ex(ctx, EVP_aes_256_ctr(), NULL, key, iv) != 1){ + ERR_print_errors_fp(stderr); + } /* Provide the message to be decrypted, and obtain the plaintext output. EVP_DecryptUpdate can be called multiple times if necessary */ - EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len); + if (EVP_DecryptUpdate(ctx, plaintext, &len, ciphertext, ciphertext_len) != 1) { + ERR_print_errors_fp(stderr); + } /* Finalize the decryption. Further plaintext bytes may be written at this stage. */ - EVP_DecryptFinal_ex(ctx, plaintext + len, &plaintext_len); + if (EVP_DecryptFinal_ex(ctx, plaintext + len, &plaintext_len) != 1) { + ERR_print_errors_fp(stderr); + } /* Clean up */ EVP_CIPHER_CTX_free(ctx);