From 4b8f2b64ebb7fcba20c3c03d7bccd08e48612fbb Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 16 Oct 2023 11:30:27 +0200 Subject: [PATCH] Remove unused code. --- src/lib/config.cc | 1 - src/lib/crypto.cc | 130 -------------------------------------------- src/lib/crypto.h | 35 ------------ src/lib/util.cc | 1 - src/lib/wscript | 1 - test/crypto_test.cc | 47 ---------------- test/wscript | 1 - 7 files changed, 216 deletions(-) delete mode 100644 src/lib/crypto.cc delete mode 100644 src/lib/crypto.h delete mode 100644 test/crypto_test.cc diff --git a/src/lib/config.cc b/src/lib/config.cc index 063fbcab9..d032e6c64 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -25,7 +25,6 @@ #include "config.h" #include "constants.h" #include "cross.h" -#include "crypto.h" #include "dcp_content_type.h" #include "dkdm_recipient.h" #include "dkdm_wrapper.h" diff --git a/src/lib/crypto.cc b/src/lib/crypto.cc deleted file mode 100644 index 777969c10..000000000 --- a/src/lib/crypto.cc +++ /dev/null @@ -1,130 +0,0 @@ -/* - Copyright (C) 2018-2021 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - - -/* Based on code from https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption */ - - -#include "crypto.h" -#include "exceptions.h" -#include -#include -#include -#include -#include - - -using std::string; -using namespace dcpomatic; - - -/** The cipher that this code uses */ -#define CIPHER EVP_aes_256_cbc() - - -dcp::ArrayData -dcpomatic::random_iv () -{ - EVP_CIPHER const * cipher = CIPHER; - dcp::ArrayData iv (EVP_CIPHER_iv_length(cipher)); - RAND_bytes (iv.data(), iv.size()); - return iv; -} - - -dcp::ArrayData -dcpomatic::encrypt (string plaintext, dcp::ArrayData key, dcp::ArrayData iv) -{ - auto ctx = EVP_CIPHER_CTX_new (); - if (!ctx) { - throw CryptoError ("could not create cipher context"); - } - - int r = EVP_EncryptInit_ex (ctx, CIPHER, 0, key.data(), iv.data()); - if (r != 1) { - throw CryptoError ("could not initialise cipher context for encryption"); - } - - dcp::ArrayData ciphertext (plaintext.size() * 2); - - int len; - r = EVP_EncryptUpdate (ctx, ciphertext.data(), &len, (uint8_t const *) plaintext.c_str(), plaintext.size()); - if (r != 1) { - throw CryptoError ("could not encrypt data"); - } - - int ciphertext_len = len; - - r = EVP_EncryptFinal_ex (ctx, ciphertext.data() + len, &len); - if (r != 1) { - throw CryptoError ("could not finish encryption"); - } - - ciphertext.set_size (ciphertext_len + len); - - EVP_CIPHER_CTX_free (ctx); - - return ciphertext; -} - - -string -dcpomatic::decrypt (dcp::ArrayData ciphertext, dcp::ArrayData key, dcp::ArrayData iv) -{ - auto ctx = EVP_CIPHER_CTX_new (); - if (!ctx) { - throw CryptoError ("could not create cipher context"); - } - - int r = EVP_DecryptInit_ex (ctx, CIPHER, 0, key.data(), iv.data()); - if (r != 1) { - throw CryptoError ("could not initialise cipher context for decryption"); - } - - dcp::ArrayData plaintext (ciphertext.size() * 2); - - int len; - r = EVP_DecryptUpdate (ctx, plaintext.data(), &len, ciphertext.data(), ciphertext.size()); - if (r != 1) { - throw CryptoError ("could not decrypt data"); - } - - int plaintext_len = len; - - r = EVP_DecryptFinal_ex (ctx, plaintext.data() + len, &len); - if (r != 1) { - throw CryptoError ("could not finish decryption"); - } - - plaintext_len += len; - plaintext.set_size (plaintext_len + 1); - plaintext.data()[plaintext_len] = '\0'; - - EVP_CIPHER_CTX_free (ctx); - - return string ((char *) plaintext.data()); -} - - -int -dcpomatic::crypto_key_length () -{ - return EVP_CIPHER_key_length (CIPHER); -} diff --git a/src/lib/crypto.h b/src/lib/crypto.h deleted file mode 100644 index 41a93010d..000000000 --- a/src/lib/crypto.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - Copyright (C) 2018-2021 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - - -#include - - -namespace dcpomatic { - - -dcp::ArrayData random_iv (); -dcp::ArrayData encrypt (std::string plaintext, dcp::ArrayData key, dcp::ArrayData iv); -std::string decrypt (dcp::ArrayData ciphertext, dcp::ArrayData key, dcp::ArrayData iv); -int crypto_key_length (); - - -} - diff --git a/src/lib/util.cc b/src/lib/util.cc index 1a340cbce..e0b5a294f 100644 --- a/src/lib/util.cc +++ b/src/lib/util.cc @@ -33,7 +33,6 @@ #include "config.h" #include "constants.h" #include "cross.h" -#include "crypto.h" #include "dcp_content_type.h" #include "dcpomatic_log.h" #include "digester.h" diff --git a/src/lib/wscript b/src/lib/wscript index 56ffc39fe..dad8947b1 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -62,7 +62,6 @@ sources = """ create_cli.cc crop.cc cross_common.cc - crypto.cc curl_uploader.cc datasat_ap2x.cc dcp_content.cc diff --git a/test/crypto_test.cc b/test/crypto_test.cc deleted file mode 100644 index 53451b352..000000000 --- a/test/crypto_test.cc +++ /dev/null @@ -1,47 +0,0 @@ -/* - Copyright (C) 2018-2021 Carl Hetherington - - This file is part of DCP-o-matic. - - DCP-o-matic is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - DCP-o-matic is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with DCP-o-matic. If not, see . - -*/ - - -#include "lib/crypto.h" -#include "lib/exceptions.h" -#include "test.h" -#include -#include - - -using std::string; -using std::list; - - -BOOST_AUTO_TEST_CASE (crypto_test) -{ - dcp::ArrayData key (dcpomatic::crypto_key_length()); - dcp::ArrayData iv = dcpomatic::random_iv (); - - RAND_bytes (key.data(), dcpomatic::crypto_key_length()); - - auto ciphertext = dcpomatic::encrypt ("Can you see any fish?", key, iv); - BOOST_REQUIRE_EQUAL (dcpomatic::decrypt (ciphertext, key, iv), "Can you see any fish?"); - - key.data()[5]++; - key.data()[6]++; - BOOST_REQUIRE_THROW (dcpomatic::decrypt (ciphertext, key, iv), CryptoError); -} - diff --git a/test/wscript b/test/wscript index 0c9db3889..e8762009c 100644 --- a/test/wscript +++ b/test/wscript @@ -70,7 +70,6 @@ def build(bld): cpl_hash_test.cc cpl_metadata_test.cc create_cli_test.cc - crypto_test.cc dcpomatic_time_test.cc dcp_decoder_test.cc dcp_digest_file_test.cc -- 2.30.2