diff --git a/bin/client b/bin/client index ff1e730..334d1d3 100755 Binary files a/bin/client and b/bin/client differ diff --git a/bin/server b/bin/server index 9f3957b..e3d9447 100755 Binary files a/bin/server and b/bin/server differ 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);