summarylogtreecommitdiffstats
path: root/qca-botan2.patch
diff options
context:
space:
mode:
Diffstat (limited to 'qca-botan2.patch')
-rw-r--r--qca-botan2.patch280
1 files changed, 0 insertions, 280 deletions
diff --git a/qca-botan2.patch b/qca-botan2.patch
deleted file mode 100644
index 479e291514d8..000000000000
--- a/qca-botan2.patch
+++ /dev/null
@@ -1,280 +0,0 @@
-From 47163784d74232e3a844fc42897bffc7eff817b4 Mon Sep 17 00:00:00 2001
-From: Antonio Rojas <arojas@archlinux.org>
-Date: Wed, 11 Apr 2018 21:43:57 +0200
-Subject: Add botan 2 support
-
-Botan 1.10 will be EOL'd this year. This patch is a rough port to botan 2 API. Also:
-
-- Removes support for botan < 1.10 to simplify code (1.10 was released 7 years ago)
-- Ports the cmake module to use pkgconfig, since botan-config doesn't exist anymore in v2.
-- To minimize ifdef'd code, botan2 unique_ptr's are release'd
-- Removes -ansi C(XX)FLAGS, botan 2 requires C++11
-
-Differential Revision: https://phabricator.kde.org/D11997
----
- CMakeLists.txt | 4 +-
- cmake/modules/FindBotan.cmake | 22 +----------
- plugins/qca-botan/qca-botan.cpp | 87 ++++++++++++++++++++---------------------
- 3 files changed, 46 insertions(+), 67 deletions(-)
-
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7ef32ee..28b0169 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -131,8 +131,8 @@ if (CMAKE_COMPILER_IS_GNUCXX)
- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wcast-align")
- endif()
-
-- set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -ansi -Wundef -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common")
-- set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common")
-+ set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wno-long-long -Wundef -Werror-implicit-function-declaration -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute -fno-common")
-+ set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Wno-long-long -Wundef -Wchar-subscripts -Wall -W -Wpointer-arith -Wwrite-strings -Wformat-security -fno-check-new -fno-common")
- endif (CMAKE_SYSTEM_NAME MATCHES Linux)
- endif (CMAKE_COMPILER_IS_GNUCXX)
-
-diff --git a/cmake/modules/FindBotan.cmake b/cmake/modules/FindBotan.cmake
-index 0c4e24b..ce92df5 100644
---- a/cmake/modules/FindBotan.cmake
-+++ b/cmake/modules/FindBotan.cmake
-@@ -11,30 +11,12 @@
- # Redistribution and use is allowed according to the terms of the BSD license.
- # For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-
--# libgcrypt is moving to pkg-config, but earlier version don't have it
--
--#search in typical paths for libgcrypt-config
--FIND_PROGRAM(BOTANCONFIG_EXECUTABLE NAMES botan-config botan-config-1.10)
--mark_as_advanced(BOTANCONFIG_EXECUTABLE)
--
- #reset variables
- set(BOTAN_LIBRARIES)
- set(BOTAN_CFLAGS)
-
--# if botan-config has been found
--IF(BOTANCONFIG_EXECUTABLE)
--
-- EXEC_PROGRAM(${BOTANCONFIG_EXECUTABLE} ARGS --libs RETURN_VALUE _return_VALUE OUTPUT_VARIABLE BOTAN_LIBRARIES)
--
-- EXEC_PROGRAM(${BOTANCONFIG_EXECUTABLE} ARGS --cflags RETURN_VALUE _return_VALUE OUTPUT_VARIABLE BOTAN_CFLAGS)
--
-- IF(BOTAN_LIBRARIES)
-- SET(BOTAN_FOUND TRUE)
-- ENDIF(BOTAN_LIBRARIES)
--
-- MARK_AS_ADVANCED(BOTAN_CFLAGS BOTAN_LIBRARIES)
--
--ENDIF(BOTANCONFIG_EXECUTABLE)
-+find_package(PkgConfig)
-+pkg_search_module(BOTAN REQUIRED botan>=1.10 botan-1.10 botan-2)
-
- if (BOTAN_FOUND)
- if (NOT Botan_FIND_QUIETLY)
-diff --git a/plugins/qca-botan/qca-botan.cpp b/plugins/qca-botan/qca-botan.cpp
-index f387575..8822ab5 100644
---- a/plugins/qca-botan/qca-botan.cpp
-+++ b/plugins/qca-botan/qca-botan.cpp
-@@ -23,13 +23,18 @@
-
- #include <qstringlist.h>
-
--#include <botan/botan.h>
- #include <botan/hmac.h>
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
--#include <botan/s2k.h>
--#endif
--#if BOTAN_VERSION_CODE >= BOTAN_VERSION_CODE_FOR(1,8,0)
-+#include <botan/version.h>
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
-+#include <botan/botan.h>
- #include <botan/algo_factory.h>
-+#else
-+#include <botan/auto_rng.h>
-+#include <botan/block_cipher.h>
-+#include <botan/filters.h>
-+#include <botan/hash.h>
-+#include <botan/pbkdf.h>
-+#include <botan/stream_cipher.h>
- #endif
-
- #include <stdlib.h>
-@@ -51,14 +56,8 @@ public:
- QCA::SecureArray nextBytes(int size)
- {
- QCA::SecureArray buf(size);
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,5,0)
-- Botan::Global_RNG::randomize( (Botan::byte*)buf.data(), buf.size(), Botan::SessionKey );
--#elif BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,7,6)
-- Botan::Global_RNG::randomize( (Botan::byte*)buf.data(), buf.size() );
--#else
- Botan::AutoSeeded_RNG rng;
- rng.randomize(reinterpret_cast<Botan::byte*>(buf.data()), buf.size());
--#endif
- return buf;
- }
- };
-@@ -70,7 +69,11 @@ class BotanHashContext : public QCA::HashContext
- public:
- BotanHashContext( const QString &hashName, QCA::Provider *p, const QString &type) : QCA::HashContext(p, type)
- {
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- m_hashObj = Botan::get_hash(hashName.toStdString());
-+#else
-+ m_hashObj = Botan::HashFunction::create(hashName.toStdString()).release();
-+#endif
- }
-
- ~BotanHashContext()
-@@ -95,11 +98,7 @@ public:
-
- QCA::MemoryRegion final()
- {
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
-- QCA::SecureArray a( m_hashObj->OUTPUT_LENGTH );
--#else
- QCA::SecureArray a( m_hashObj->output_length() );
--#endif
- m_hashObj->final( (Botan::byte *)a.data() );
- return a;
- }
-@@ -115,10 +114,10 @@ class BotanHMACContext : public QCA::MACContext
- public:
- BotanHMACContext( const QString &hashName, QCA::Provider *p, const QString &type) : QCA::MACContext(p, type)
- {
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,8,0)
-- m_hashObj = new Botan::HMAC(hashName.toStdString());
--#else
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- m_hashObj = new Botan::HMAC(Botan::global_state().algorithm_factory().make_hash_function(hashName.toStdString()));
-+#else
-+ m_hashObj = new Botan::HMAC(Botan::HashFunction::create_or_throw(hashName.toStdString()).release());
- #endif
- if (0 == m_hashObj) {
- std::cout << "null context object" << std::endl;
-@@ -161,11 +160,7 @@ public:
-
- void final( QCA::MemoryRegion *out)
- {
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
-- QCA::SecureArray sa( m_hashObj->OUTPUT_LENGTH, 0 );
--#else
- QCA::SecureArray sa( m_hashObj->output_length(), 0 );
--#endif
- m_hashObj->final( (Botan::byte *)sa.data() );
- *out = sa;
- }
-@@ -197,15 +192,8 @@ public:
- QCA::SymmetricKey makeKey(const QCA::SecureArray &secret, const QCA::InitializationVector &salt,
- unsigned int keyLength, unsigned int iterationCount)
- {
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
-- m_s2k->set_iterations(iterationCount);
-- m_s2k->change_salt((const Botan::byte*)salt.data(), salt.size());
-- std::string secretString(secret.data(), secret.size() );
-- Botan::OctetString key = m_s2k->derive_key(keyLength, secretString);
--#else
- std::string secretString(secret.data(), secret.size() );
- Botan::OctetString key = m_s2k->derive_key(keyLength, secretString, (const Botan::byte*)salt.data(), salt.size(), iterationCount);
--#endif
- QCA::SecureArray retval(QByteArray((const char*)key.begin(), key.length()));
- return QCA::SymmetricKey(retval);
- }
-@@ -222,15 +210,6 @@ public:
- std::string secretString(secret.data(), secret.size() );
-
- *iterationCount = 0;
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
-- m_s2k->set_iterations(1);
-- m_s2k->change_salt((const Botan::byte*)salt.data(), salt.size());
-- timer.start();
-- while (timer.elapsed() < msecInterval) {
-- key = m_s2k->derive_key(keyLength, secretString);
-- ++(*iterationCount);
-- }
--#else
- timer.start();
- while (timer.elapsed() < msecInterval) {
- key = m_s2k->derive_key(keyLength,
-@@ -240,7 +219,6 @@ public:
- 1);
- ++(*iterationCount);
- }
--#endif
- return makeKey(secret, salt, keyLength, *iterationCount);
- }
-
-@@ -304,7 +282,14 @@ public:
-
- int blockSize() const
- {
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- return Botan::block_size_of(m_algoName);
-+#else
-+ if(const std::unique_ptr<Botan::BlockCipher> bc = Botan::BlockCipher::create(m_algoName))
-+ return bc->block_size();
-+
-+ throw Botan::Algorithm_Not_Found(m_algoName);
-+#endif
- }
-
- QCA::AuthTag tag() const
-@@ -337,23 +322,31 @@ public:
-
- QCA::KeyLength keyLength() const
- {
--#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(1,9,0)
-- return QCA::KeyLength( Botan::min_keylength_of(m_algoName),
-- Botan::max_keylength_of(m_algoName),
-- Botan::keylength_multiple_of(m_algoName) );
--#else
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- Botan::Algorithm_Factory &af = Botan::global_state().algorithm_factory();
-+#endif
- Botan::Key_Length_Specification kls(0);
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- if(const Botan::BlockCipher *bc = af.prototype_block_cipher(m_algoName))
-+#else
-+ if(const std::unique_ptr<Botan::BlockCipher> bc = Botan::BlockCipher::create(m_algoName))
-+#endif
- kls = bc->key_spec();
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- else if(const Botan::StreamCipher *sc = af.prototype_stream_cipher(m_algoName))
-+#else
-+ else if(const std::unique_ptr<Botan::StreamCipher> sc = Botan::StreamCipher::create(m_algoName))
-+#endif
- kls = sc->key_spec();
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- else if(const Botan::MessageAuthenticationCode *mac = af.prototype_mac(m_algoName))
-+#else
-+ else if(const std::unique_ptr<Botan::MessageAuthenticationCode> mac = Botan::MessageAuthenticationCode::create(m_algoName))
-+#endif
- kls = mac->key_spec();
- return QCA::KeyLength( kls.minimum_keylength(),
- kls.maximum_keylength(),
- kls.keylength_multiple() );
--#endif
- }
-
-
-@@ -379,7 +372,9 @@ class botanProvider : public QCA::Provider
- public:
- void init()
- {
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- m_init = new Botan::LibraryInitializer;
-+#endif
- }
-
- ~botanProvider()
-@@ -538,7 +533,9 @@ public:
- return 0;
- }
- private:
-+#if BOTAN_VERSION_CODE < BOTAN_VERSION_CODE_FOR(2,0,0)
- Botan::LibraryInitializer *m_init;
-+#endif
-
- };
-
---
-cgit v0.11.2
-