Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package bzrtp for openSUSE:Factory checked in at 2024-03-14 17:44:52 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/bzrtp (Old) and /work/SRC/openSUSE:Factory/.bzrtp.new.1905 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "bzrtp" Thu Mar 14 17:44:52 2024 rev:43 rq:1157863 version:5.3.26 Changes: -------- --- /work/SRC/openSUSE:Factory/bzrtp/bzrtp.changes 2023-12-13 18:36:09.917070742 +0100 +++ /work/SRC/openSUSE:Factory/.bzrtp.new.1905/bzrtp.changes 2024-03-14 17:46:20.848224423 +0100 @@ -1,0 +2,10 @@ +Thu Mar 7 06:42:43 UTC 2024 - Paolo Stivanin <[email protected]> + +- Update to 5.3.26 (no changelog). + +------------------------------------------------------------------- +Mon Jan 15 08:52:51 UTC 2024 - Paolo Stivanin <[email protected]> + +- Update to 5.3.7 (no changelog). + +------------------------------------------------------------------- Old: ---- bzrtp-5.2.98.tar.bz2 New: ---- bzrtp-5.3.26.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ bzrtp.spec ++++++ --- /var/tmp/diff_new_pack.Md6wvk/_old 2024-03-14 17:46:21.676254879 +0100 +++ /var/tmp/diff_new_pack.Md6wvk/_new 2024-03-14 17:46:21.680255027 +0100 @@ -1,7 +1,7 @@ # # spec file for package bzrtp # -# Copyright (c) 2023 SUSE LLC +# Copyright (c) 2024 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define sover 0 Name: bzrtp -Version: 5.2.98 +Version: 5.3.26 Release: 0 Summary: ZRTP keys exchange protocol implementation License: GPL-3.0-or-later @@ -28,13 +28,14 @@ Source1: baselibs.conf # PATCH-FIX-OPENSUSE bzrtp-fix-pkgconfig.patch [email protected] -- Install libbzrtp.pc. Patch0: bzrtp-fix-pkgconfig.patch +# PATCH-FIX-UPSTREAM Patch1: set_current_version.patch -BuildRequires: cmake +BuildRequires: cmake >= 3.22 BuildRequires: gcc-c++ %if 0%{?suse_version} >= 1600 BuildRequires: liboqs-devel # At the time of writing (13/Dec/2023), PQCE is only available on Tumbleweed. -BuildRequires: postquantumcryptoengine-devel +BuildRequires: postquantumcryptoengine-devel >= 5.3.0~git.20230802 %endif BuildRequires: pkgconfig BuildRequires: pkgconfig(bctoolbox) >= %{version} @@ -88,6 +89,8 @@ %doc README.md %{_includedir}/%{name}/ %{_libdir}/lib%{name}.so -%{_datadir}/%{name}/ %{_libdir}/pkgconfig/lib%{name}.pc +%dir %{_datadir}/BZRTP +%dir %{_datadir}/BZRTP/cmake +%{_datadir}/BZRTP/cmake/*.cmake ++++++ bzrtp-5.2.98.tar.bz2 -> bzrtp-5.3.26.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/CMakeLists.txt new/bzrtp-5.3.26/CMakeLists.txt --- old/bzrtp-5.2.98/CMakeLists.txt 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/CMakeLists.txt 2023-10-20 15:50:20.000000000 +0200 @@ -1,6 +1,6 @@ ############################################################################ # CMakeLists.txt -# Copyright (C) 2010-2019 Belledonne Communications, Grenoble France +# Copyright (C) 2010-2023 Belledonne Communications, Grenoble France # ############################################################################ # @@ -20,24 +20,15 @@ # ############################################################################ -cmake_minimum_required(VERSION 3.1) +cmake_minimum_required(VERSION 3.22) -# CMP0077 policy is required by Flexisip build. Remove it once the CMake required -# version is higer or equal to 3.13. -if(NOT CMAKE_VERSION VERSION_LESS 3.13) - cmake_policy(SET CMP0077 NEW) -endif() - -project(bzrtp VERSION 5.2.0 LANGUAGES C CXX) +project(BZRTP VERSION 5.3.0 LANGUAGES C CXX) -option(ENABLE_SHARED "Build shared library." YES) -option(ENABLE_STATIC "Build static library." YES) option(ENABLE_ZIDCACHE "Turn on compilation of ZID cache, request sqlite" YES) option(ENABLE_STRICT "Build with strict compile options." YES) -option(ENABLE_TESTS "Enable compilation of unit tests." NO) +option(ENABLE_UNIT_TESTS "Enable compilation of unit tests." NO) option(ENABLE_DOC "Enable API documentation generation." NO) -option(ENABLE_EXPORTEDKEY_V1_0_RETROCOMPATIBILITY "Enable support for Limev1 with older version of bzrtp(before v1.06)" NO) -option(ENABLE_PACKAGE_SOURCE "Create 'package_source' target for source archive making (CMake >= 3.11)" OFF) +option(ENABLE_PACKAGE_SOURCE "Create 'package_source' target for source archive making" OFF) option(ENABLE_GOCLEAR "Enable the possibility to send and receive GoClear" YES) option(ENABLE_PQCRYPTO "Enable Post Quantum Cryptography key agreements algorithms" NO) @@ -49,31 +40,18 @@ message(STATUS "Setting install rpath to ${CMAKE_INSTALL_RPATH}") endif() -list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -set(MSVC_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/include/MSVC") -if(MSVC) - list(APPEND CMAKE_REQUIRED_INCLUDES ${MSVC_INCLUDE_DIR}) -endif() - -# Hidden non-cache options: -# * DISABLE_BC_PACKAGE_SEARCH: skip find_package() for every BC package (bctoolbox, ortp, etc.) +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(GNUInstallDirs) include(CheckLibraryExists) check_library_exists("m" "sqrt" "" HAVE_SQRT) -if(NOT DISABLE_BC_PACKAGE_SEARCH) - find_package(bctoolbox 0.0.3 REQUIRED OPTIONAL_COMPONENTS tester CONFIG) - if (ENABLE_PQCRYPTO) - find_package(postquantumcryptoengine CONFIG REQUIRED) - endif() +find_package(BCToolbox 5.3.0 REQUIRED OPTIONAL_COMPONENTS tester) +if(ENABLE_PQCRYPTO) + find_package(PostQuantumCryptoEngine 5.3.0 REQUIRED) endif() - if(ENABLE_ZIDCACHE) - find_package(Sqlite3 REQUIRED) - # Also check if we have libxml2, as we need it for migration purpose - find_package(XML2) + bc_find_package(SQLite3 SQLite::SQLite3 sqlite3 REQUIRED) endif() configure_file(${CMAKE_CURRENT_SOURCE_DIR}/config.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config.h) @@ -81,12 +59,9 @@ add_definitions("-DHAVE_CONFIG_H") bc_init_compilation_flags(STRICT_OPTIONS_CPP STRICT_OPTIONS_C STRICT_OPTIONS_CXX ENABLE_STRICT) -if(CMAKE_VERSION VERSION_LESS 3.1 AND NOT APPLE AND NOT MSVC) - list(APPEND STRICT_OPTIONS_CXX "-std=c++11") -endif() set(BZRTP_CPPFLAGS ${BCTOOLBOX_CPPFLAGS}) -if(ENABLE_STATIC) +if(NOT BUILD_SHARED_LIBS) list(APPEND BZRTP_CPPFLAGS "-DBZRTP_STATIC") endif() if(BZRTP_CPPFLAGS) @@ -99,85 +74,77 @@ ${CMAKE_CURRENT_BINARY_DIR} ) -if(MSVC) - include_directories(${MSVC_INCLUDE_DIR}) -endif() - if(ENABLE_ZIDCACHE) add_definitions("-DZIDCACHE_ENABLED") - if(XML2_FOUND) - add_definitions("-DHAVE_LIBXML2") - endif() endif() if(ENABLE_GOCLEAR) add_definitions("-DGOCLEAR_ENABLED") endif() -if (ENABLE_EXPORTEDKEY_V1_0_RETROCOMPATIBILITY) - add_definitions("-DSUPPORT_EXPORTEDKEY_V010000") -endif() - -if (postquantumcryptoengine_FOUND) +if(ENABLE_PQCRYPTO) add_definitions("-DHAVE_BCTBXPQ") message(STATUS "Building with Post Quantum Key Agreements") endif() -set(EXPORT_TARGETS_NAME "bzrtp") - add_subdirectory(include) add_subdirectory(src) -if(ENABLE_TESTS) +if(ENABLE_UNIT_TESTS AND NOT ANDROID AND NOT IOS) enable_testing() add_subdirectory(test) endif() - -include(CMakePackageConfigHelpers) -set(CONFIG_PACKAGE_LOCATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake") - -write_basic_package_version_file( - "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_TARGETS_NAME}ConfigVersion.cmake" - VERSION ${PROJECT_VERSION} - COMPATIBILITY AnyNewerVersion -) - -if(LINPHONE_BUILDER_GROUP_EXTERNAL_SOURCE_PATH_BUILDERS) - export(EXPORT ${EXPORT_TARGETS_NAME}Targets - FILE "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_TARGETS_NAME}Targets.cmake" - ) -endif() - -configure_package_config_file(cmake/BZRTPConfig.cmake.in - "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_TARGETS_NAME}Config.cmake" - INSTALL_DESTINATION ${CONFIG_PACKAGE_LOCATION} - NO_SET_AND_CHECK_MACRO -) - -install(EXPORT ${EXPORT_TARGETS_NAME}Targets - FILE ${EXPORT_TARGETS_NAME}Targets.cmake - DESTINATION ${CONFIG_PACKAGE_LOCATION} -) -install(FILES - "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_TARGETS_NAME}Config.cmake" - "${CMAKE_CURRENT_BINARY_DIR}/${EXPORT_TARGETS_NAME}ConfigVersion.cmake" - DESTINATION ${CONFIG_PACKAGE_LOCATION} -) - if(ENABLE_DOC) # Doxygen find_package(Doxygen) if (DOXYGEN_FOUND) + set(DOXYGEN_INPUT "") + file(GLOB DOC_INPUT_FILES + "${PROJECT_SOURCE_DIR}/include/[^.]*.h" + "${PROJECT_SOURCE_DIR}/src/[^.]*.c" + "${PROJECT_SOURCE_DIR}/src/[^.]*.cc" + ) + foreach (INPUT_FILE ${DOC_INPUT_FILES}) + string(CONCAT DOXYGEN_INPUT ${DOXYGEN_INPUT} " \"${INPUT_FILE}\"") + endforeach () configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) - add_custom_target(doc ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API documentation with Doxygen" VERBATIM) + add_custom_command(OUTPUT "${PROJECT_BINARY_DIR}/doc/html/index.html" + COMMAND "${DOXYGEN_EXECUTABLE}" "${PROJECT_BINARY_DIR}/Doxyfile" + DEPENDS "${PROJECT_BINARY_DIR}/Doxyfile" ${DOC_INPUT_FILES} + ) + add_custom_target(bzrtp-doc ALL + DEPENDS "${PROJECT_BINARY_DIR}/doc/html/index.html" + COMMENT "Generating API documentation with Doxygen" VERBATIM + ) install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/doc/html/" DESTINATION "${CMAKE_INSTALL_DATADIR}/doc/bzrtp-${PROJECT_VERSION}") endif() endif() -if (ENABLE_PACKAGE_SOURCE) +if(ENABLE_PACKAGE_SOURCE) add_subdirectory(build) endif() + +include(CMakePackageConfigHelpers) +set(CMAKE_MODULES_INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/cmake") +configure_package_config_file("cmake/${PROJECT_NAME}Config.cmake.in" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + INSTALL_DESTINATION "${CMAKE_MODULES_INSTALL_DIR}" + NO_SET_AND_CHECK_MACRO +) +write_basic_package_version_file("${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + VERSION ${PROJECT_VERSION} + COMPATIBILITY AnyNewerVersion +) +install(FILES + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" + DESTINATION ${CMAKE_MODULES_INSTALL_DIR} +) +if(ENABLE_PQCRYPTO) + install(FILES "cmake/FindPostQuantumCryptoEngine.cmake" DESTINATION ${CMAKE_MODULES_INSTALL_DIR}) +endif() + +install(EXPORT ${PROJECT_NAME}Targets + FILE "${PROJECT_NAME}Targets.cmake" + DESTINATION ${CMAKE_MODULES_INSTALL_DIR} +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/README.md new/bzrtp-5.3.26/README.md --- old/bzrtp-5.2.98/README.md 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/README.md 2023-10-20 15:50:20.000000000 +0200 @@ -90,10 +90,8 @@ * `CMAKE_INSTALL_PREFIX=<string>` : install prefix * `CMAKE_PREFIX_PATH=<string>` : column-separated list of prefixes where to search for dependencies -* `ENABLE_SHARED=NO` : do not build the shared library -* `ENABLE_STATIC=NO` : do not build the static library * `ENABLE_STRICT=NO` : build without the strict compilation flags -* `ENABLE_TESTS=YES` : build non-regression tests +* `ENABLE_UNIT_TESTS=YES` : build non-regression tests * `ENABLE_DOC=NO` : generates API documentation * `ENABLE_PACKAGE_SOURCE=NO` : create package source target for source archive making diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/build/CMakeLists.txt new/bzrtp-5.3.26/build/CMakeLists.txt --- old/bzrtp-5.2.98/build/CMakeLists.txt 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/build/CMakeLists.txt 2023-10-20 15:50:20.000000000 +0200 @@ -1,6 +1,6 @@ ############################################################################ # CMakeLists.txt -# Copyright (C) 2010-2019 Belledonne Communications, Grenoble France +# Copyright (C) 2010-2023 Belledonne Communications, Grenoble France # ############################################################################ # @@ -20,8 +20,6 @@ # ############################################################################ -cmake_minimum_required(VERSION 3.11) # we need CMake 3.11 for defining 'package_source' target as custom target - if(NOT CPACK_PACKAGE_NAME) set(CPACK_PACKAGE_NAME "bzrtp") ENDIF() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/cmake/BZRTPConfig.cmake.in new/bzrtp-5.3.26/cmake/BZRTPConfig.cmake.in --- old/bzrtp-5.2.98/cmake/BZRTPConfig.cmake.in 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/cmake/BZRTPConfig.cmake.in 2023-10-20 15:50:20.000000000 +0200 @@ -1,6 +1,6 @@ ############################################################################ # BZRTPConfig.cmake -# Copyright (C) 2015 Belledonne Communications, Grenoble France +# Copyright (C) 2015-2023 Belledonne Communications, Grenoble France # ############################################################################ # @@ -21,20 +21,43 @@ ############################################################################ # # Config file for the bzrtp package. -# It defines the following variables: # -# BZRTP_FOUND - system has bzrtp -# BZRTP_INCLUDE_DIRS - the bzrtp include directory -# BZRTP_LIBRARIES - The libraries needed to use bzrtp -# BZRTP_CPPFLAGS - The compilation flags needed to use bzrtp +# Targets +# ^^^^^^^ +# +# The following targets are defined: +# bzrtp - The bzrtp library target +# +# +# Result variables +# ^^^^^^^^^^^^^^^^ +# +# This config file will set the following variables in your project: +# +# BZRTP_FOUND - The bzrtp library has been found +# BZRTP_TARGET - The name of the CMake target for the bzrtp library + + @PACKAGE_INIT@ -include("${CMAKE_CURRENT_LIST_DIR}/bzrtpTargets.cmake") +include("${CMAKE_CURRENT_LIST_DIR}/BZRTPTargets.cmake") -# We must propagate the dependency on liboqs for static build -if (@postquantumcryptoengine_FOUND@) - include(CMakeFindDependencyMacro) - find_dependency(postquantumcryptoengine) +set(BZRTP_TARGET bzrtp) + +# We must propagate the public dependencies and the private dependencies for static build +include(CMakeFindDependencyMacro) +if(@SQLite3_FOUND@) + find_dependency(SQLite3) +endif() +if(@BUILD_SHARED_LIBS@) +else() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}") + find_dependency(BCToolbox) + if(@PostQuantumCryptoEngine_FOUND@) + # We must propagate the dependency on postquantumcryptoengine for static build + include(CMakeFindDependencyMacro) + find_dependency(PostQuantumCryptoEngine) + endif() endif() -check_required_components(bzrtp) +check_required_components(BZRTP) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/cmake/FindPostQuantumCryptoEngine.cmake new/bzrtp-5.3.26/cmake/FindPostQuantumCryptoEngine.cmake --- old/bzrtp-5.2.98/cmake/FindPostQuantumCryptoEngine.cmake 1970-01-01 01:00:00.000000000 +0100 +++ new/bzrtp-5.3.26/cmake/FindPostQuantumCryptoEngine.cmake 2023-10-20 15:50:20.000000000 +0200 @@ -0,0 +1,71 @@ +############################################################################ +# FindPostQuantumCryptoEngine.cmake +# Copyright (C) 2023 Belledonne Communications, Grenoble France +# +############################################################################ +# +# This program 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. +# +# This program 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 this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +############################################################################ +# +# Find the postquantumcryptoengine library. +# +# Targets +# ^^^^^^^ +# +# The following targets may be defined: +# +# postquantumcryptoengine - If the postquantumcryptoengine library has been found +# +# +# Result variables +# ^^^^^^^^^^^^^^^^ +# +# This module will set the following variables in your project: +# +# PostQuantumCryptoEngine_FOUND - The postquantumcryptoengine library has been found +# PostQuantumCryptoEngine_TARGET - The name of the CMake target for the postquantumcryptoengine library + + +if(TARGET postquantumcryptoengine) + + include(FindPackageHandleStandardArgs) + set(PostQuantumCryptoEngine_TARGET postquantumcryptoengine) + set(_PostQuantumCryptoEngine_REQUIRED_VARS PostQuantumCryptoEngine_TARGET) + set(_PostQuantumCryptoEngine_CACHE_VARS ${_PostQuantumCryptoEngine_REQUIRED_VARS}) + find_package_handle_standard_args(PostQuantumCryptoEngine + REQUIRED_VARS ${_PostQuantumCryptoEngine_REQUIRED_VARS} + ) + mark_as_advanced(${_PostQuantumCryptoEngine_CACHE_VARS}) + +else() + + set(_OPTIONS CONFIG) + if(PostQuantumCryptoEngine_FIND_REQUIRED) + list(APPEND _OPTIONS REQUIRED) + endif() + if(PostQuantumCryptoEngine_FIND_QUIETLY) + list(APPEND _OPTIONS QUIET) + endif() + if(PostQuantumCryptoEngine_FIND_VERSION) + list(PREPEND _OPTIONS "${PostQuantumCryptoEngine_FIND_VERSION}") + endif() + if(PostQuantumCryptoEngine_FIND_EXACT) + list(APPEND _OPTIONS EXACT) + endif() + + find_package(PostQuantumCryptoEngine ${_OPTIONS}) + +endif() diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/cmake/FindSqlite3.cmake new/bzrtp-5.3.26/cmake/FindSqlite3.cmake --- old/bzrtp-5.2.98/cmake/FindSqlite3.cmake 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/cmake/FindSqlite3.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -############################################################################ -# FindSqlite3.cmake -# Copyright (C) 2014 Belledonne Communications, Grenoble France -# -############################################################################ -# -# This program 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. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -############################################################################ -# -# - Find the sqlite3 include file and library -# -# SQLITE3_FOUND - system has sqlite3 -# SQLITE3_INCLUDE_DIRS - the sqlite3 include directory -# SQLITE3_LIBRARIES - The libraries needed to use sqlite3 - -if(APPLE AND NOT IOS) - set(SQLITE3_HINTS "/usr") -endif() -if(SQLITE3_HINTS) - set(SQLITE3_LIBRARIES_HINTS "${SQLITE3_HINTS}/lib") -endif() - -find_path(SQLITE3_INCLUDE_DIRS - NAMES sqlite3.h - HINTS "${SQLITE3_HINTS}" - PATH_SUFFIXES include -) - -if(SQLITE3_INCLUDE_DIRS) - set(HAVE_SQLITE3_H 1) -endif() - -find_library(SQLITE3_LIBRARIES - NAMES sqlite3 - HINTS "${SQLITE3_LIBRARIES_HINTS}" -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(Sqlite3 - DEFAULT_MSG - SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES HAVE_SQLITE3_H -) - -mark_as_advanced(SQLITE3_INCLUDE_DIRS SQLITE3_LIBRARIES HAVE_SQLITE3_H) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/cmake/FindXML2.cmake new/bzrtp-5.3.26/cmake/FindXML2.cmake --- old/bzrtp-5.2.98/cmake/FindXML2.cmake 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/cmake/FindXML2.cmake 1970-01-01 01:00:00.000000000 +0100 @@ -1,57 +0,0 @@ -############################################################################ -# FindXML2.txt -# Copyright (C) 2015 Belledonne Communications, Grenoble France -# -############################################################################ -# -# This program 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. -# -# This program 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 this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -############################################################################ -# -# - Find the libxml2 include file and library -# -# XML2_FOUND - system has libxml2 -# XML2_INCLUDE_DIRS - the libxml2 include directory -# XML2_LIBRARIES - The libraries needed to use libxml2 - -if(APPLE AND NOT IOS) - set(XML2_HINTS "/usr") -endif() -if(XML2_HINTS) - set(XML2_LIBRARIES_HINTS "${XML2_HINTS}/lib") -endif() - -find_path(XML2_INCLUDE_DIRS - NAMES libxml/xmlreader.h - HINTS "${XML2_HINTS}" - PATH_SUFFIXES include/libxml2 -) - -if(XML2_INCLUDE_DIRS) - set(HAVE_LIBXML_XMLREADER_H 1) -endif() - -find_library(XML2_LIBRARIES - NAMES xml2 - HINTS "${XML2_LIBRARIES_HINTS}" -) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(XML2 - DEFAULT_MSG - XML2_INCLUDE_DIRS XML2_LIBRARIES -) - -mark_as_advanced(XML2_INCLUDE_DIRS XML2_LIBRARIES) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/config.h.cmake new/bzrtp-5.3.26/config.h.cmake --- old/bzrtp-5.2.98/config.h.cmake 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/config.h.cmake 2023-10-20 15:50:20.000000000 +0200 @@ -25,5 +25,4 @@ #cmakedefine HAVE_CU_CURSES #cmakedefine ZIDCACHE_ENABLED -#cmakedefine HAVE_LIBXML2 #cmakedefine GOCLEAR_ENABLED diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/include/bzrtp/bzrtp.h new/bzrtp-5.3.26/include/bzrtp/bzrtp.h --- old/bzrtp-5.2.98/include/bzrtp/bzrtp.h 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/include/bzrtp/bzrtp.h 2023-10-20 15:50:20.000000000 +0200 @@ -75,6 +75,7 @@ #define ZRTP_AUTHTAG_HS80 0x32 #define ZRTP_AUTHTAG_SK32 0x33 #define ZRTP_AUTHTAG_SK64 0x34 +#define ZRTP_AUTHTAG_GCM 0x35 /** * WARNING : it is very important to keep the key agreement defined in that order @@ -631,18 +632,6 @@ */ BZRTP_EXPORT int bzrtp_cache_read_lock(void *dbPointer, int zuid, const char *tableName, const char **columns, uint8_t **values, size_t *lengths, uint8_t columnsCount, bctbx_mutex_t *zidCacheMutex); -/** - * @brief Perform migration from xml version to sqlite3 version of cache - * Warning: new version of cache associate a ZID to each local URI, the old one did not - * the migration function will associate any data in the cache to the sip URI given in parameter which shall be the default URI - * @param[in] cacheXmlPtr a pointer to an xmlDocPtr structure containing the old cache to be migrated - * @param[in,out] cacheSqlite a pointer to an sqlite3 structure containing a cache initialised using bzrtp_cache_init function - * @param[in] selfURI default sip URI for this end point, NULL terminated char - * - * @return 0 on success, BZRTP_ERROR_CACHEDISABLED when bzrtp was not compiled with cache enabled, BZRTP_ERROR_CACHEMIGRATIONFAILED on error during migration - */ -BZRTP_EXPORT int bzrtp_cache_migration(void *cacheXmlPtr, void *cacheSqlite, const char *selfURI); - /* * @brief Allow client to compute an exported according to RFC section 4.5.2 * Check the context is ready(we already have a master exported key and KDF context) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/src/CMakeLists.txt new/bzrtp-5.3.26/src/CMakeLists.txt --- old/bzrtp-5.2.98/src/CMakeLists.txt 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/src/CMakeLists.txt 2023-10-20 15:50:20.000000000 +0200 @@ -1,6 +1,6 @@ ############################################################################ # CMakeLists.txt -# Copyright (C) 2014 Belledonne Communications, Grenoble France +# Copyright (C) 2014-2023 Belledonne Communications, Grenoble France # ############################################################################ # @@ -40,47 +40,23 @@ bc_apply_compile_flags(BZRTP_CPP_SOURCE_FILES STRICT_OPTIONS_CPP STRICT_OPTIONS_CXX) set(BZRTP_SOURCE_FILES ${BZRTP_C_SOURCE_FILES} ${BZRTP_CXX_SOURCE_FILES}) -set(INCLUDE_DIRS ) -set(LIBS ) -if(SQLITE3_FOUND) - list(APPEND INCLUDE_DIRS ${SQLITE3_INCLUDE_DIRS}) - list(APPEND LIBS $<BUILD_INTERFACE:${SQLITE3_LIBRARIES}> $<INSTALL_INTERFACE:${SQLITE3_LIBRARIES}>) +add_library(bzrtp ${BZRTP_SOURCE_FILES}) +set_target_properties(bzrtp PROPERTIES VERSION 0) +target_include_directories(bzrtp PUBLIC + $<INSTALL_INTERFACE:include> + $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> +) +target_link_libraries(bzrtp PRIVATE ${BCToolbox_TARGET}) +if(SQLite3_FOUND) + target_link_libraries(bzrtp PUBLIC ${SQLite3_TARGET}) endif() - -if(XML2_FOUND) - list(APPEND INCLUDE_DIRS ${XML2_INCLUDE_DIRS}) - list(APPEND LIBS $<BUILD_INTERFACE:${XML2_LIBRARIES}> $<INSTALL_INTERFACE:${XML2_LIBRARIES}>) +if(ENABLE_PQCRYPTO) + target_link_libraries(bzrtp PRIVATE ${PostQuantumCryptoEngine_TARGET}) endif() -if(ENABLE_STATIC) - add_library(bzrtp STATIC ${BZRTP_SOURCE_FILES}) - set_target_properties(bzrtp PROPERTIES OUTPUT_NAME bzrtp) - target_include_directories(bzrtp INTERFACE - $<INSTALL_INTERFACE:include> - PRIVATE ${INCLUDE_DIRS}) - target_link_libraries(bzrtp PRIVATE bctoolbox ${LIBS}) - if (postquantumcryptoengine_FOUND) - target_link_libraries(bzrtp PRIVATE postquantumcryptoengine) - endif() - install(TARGETS bzrtp EXPORT ${EXPORT_TARGETS_NAME}Targets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) -endif() -if(ENABLE_SHARED) - add_library(bzrtp SHARED ${BZRTP_SOURCE_FILES}) +if(BUILD_SHARED_LIBS) target_compile_definitions(bzrtp PRIVATE "-DBZRTP_EXPORTS") - set_target_properties(bzrtp PROPERTIES VERSION 0) - target_include_directories(bzrtp PUBLIC - $<INSTALL_INTERFACE:include> - $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include> - PRIVATE ${INCLUDE_DIRS} - ) - target_link_libraries(bzrtp PRIVATE bctoolbox ${LIBS}) - if (postquantumcryptoengine_FOUND) - target_link_libraries(bzrtp PRIVATE postquantumcryptoengine) - endif() if(MSVC) if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") install(FILES $<TARGET_PDB_FILE:bzrtp> @@ -89,10 +65,11 @@ ) endif() endif() - install(TARGETS bzrtp EXPORT ${EXPORT_TARGETS_NAME}Targets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE - ) endif() + +install(TARGETS bzrtp EXPORT ${PROJECT_NAME}Targets + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE +) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/src/bzrtp.c new/bzrtp-5.3.26/src/bzrtp.c --- old/bzrtp-5.2.98/src/bzrtp.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/src/bzrtp.c 2023-10-20 15:50:20.000000000 +0200 @@ -653,26 +653,11 @@ /* check we have s0 or exportedKey and KDFContext in channel[0] - export keys is available only on channel 0 completion - see RFC 4.5.2 */ bzrtpChannelContext_t *zrtpChannelContext = zrtpContext->channelContext[0]; - if (zrtpContext->peerBzrtpVersion == 0x010000) { /* keep compatibility with older implementation of bzrtp */ -#ifdef SUPPORT_EXPORTEDKEY_V010000 - /* before version 1.1.0 (turned into an int MMmmpp -> 010100) exported keys wrongly derives from given label and s0 direclty instead of - deriving one Exported Key from S0 and then as many as needed from the exported key as specified in the RFC section 4.5.2 */ - if (zrtpChannelContext->s0 == NULL || zrtpChannelContext->KDFContext == NULL) { - return BZRTP_ERROR_INVALIDCONTEXT; - } - - /* We derive a maximum of hashLength bytes */ - if (*derivedKeyLength > zrtpChannelContext->hashLength) { - *derivedKeyLength = zrtpChannelContext->hashLength; - } - - bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)label, labelLength, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, (uint_t)(*derivedKeyLength), zrtpChannelContext->hmacFunction, derivedKey); -#else /* SUPPORT_EXPORTEDKEY_V010000 */ + if (zrtpContext->peerBzrtpVersion == 0x010000) { /* older implementation of bzrtp had a bug in key export, retrocompatibility is not supported anymore */ /* We do not support anymore backward compatibility, just do nothing but send an error message*/ if (zrtpContext->zrtpCallbacks.bzrtp_statusMessage!=NULL && zrtpContext->zrtpCallbacks.bzrtp_messageLevel>=BZRTP_MESSAGE_ERROR) { /* use error level as we explicitely compile with no support for older version */ zrtpContext->zrtpCallbacks.bzrtp_statusMessage(zrtpChannelContext->clientData, BZRTP_MESSAGE_ERROR, BZRTP_MESSAGE_PEERVERSIONOBSOLETE, "obsolete bzrtp version are not supported anymore"); } -#endif /* SUPPORT_EXPORTEDKEY_V010000 */ } else { /* peer either use version 1.1 of BZRTP or another library, just stick to the RFC to create the export key */ if ((zrtpChannelContext->s0 == NULL && zrtpContext->exportedKey) || zrtpChannelContext->KDFContext == NULL) { return BZRTP_ERROR_INVALIDCONTEXT; @@ -1306,7 +1291,7 @@ { int i; - for (i=0; i<size; i++) { + for (i=0; i<(size&0x07); i++) { destination[i] = source[i]; } return size; @@ -1333,6 +1318,7 @@ case(ZRTP_AUTHTAG_HS80): return "HMAC-SHA1-80"; case(ZRTP_AUTHTAG_SK32): return "Skein-32"; case(ZRTP_AUTHTAG_SK64): return "Skein-64"; + case(ZRTP_AUTHTAG_GCM): return "GCM"; case(ZRTP_KEYAGREEMENT_DH2k): return "DHM-2048"; case(ZRTP_KEYAGREEMENT_EC25): return "ECDH-256"; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/src/cryptoUtils.cc new/bzrtp-5.3.26/src/cryptoUtils.cc --- old/bzrtp-5.2.98/src/cryptoUtils.cc 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/src/cryptoUtils.cc 2023-10-20 15:50:20.000000000 +0200 @@ -49,9 +49,10 @@ availableTypes[1] = ZRTP_CIPHER_AES3; return 2; case ZRTP_AUTHTAG_TYPE: - availableTypes[0] = ZRTP_AUTHTAG_HS32; - availableTypes[1] = ZRTP_AUTHTAG_HS80; - return 2; + availableTypes[0] = ZRTP_AUTHTAG_GCM; + availableTypes[1] = ZRTP_AUTHTAG_HS32; + availableTypes[2] = ZRTP_AUTHTAG_HS80; + return 3; case ZRTP_KEYAGREEMENT_TYPE: { /* get availables types from bctoolbox */ @@ -846,6 +847,8 @@ return ZRTP_AUTHTAG_SK32; } else if (memcmp(algoType, "SK64", 4) == 0) { return ZRTP_AUTHTAG_SK64; + } else if (memcmp(algoType, "GCM ", 4) == 0) { + return ZRTP_AUTHTAG_GCM; } return ZRTP_UNSET_ALGO; } @@ -975,6 +978,9 @@ case ZRTP_AUTHTAG_SK64: memcpy(algoTypeString, "SK64", 4); break; + case ZRTP_AUTHTAG_GCM: + memcpy(algoTypeString, "GCM ", 4); + break; case ZRTP_KEYAGREEMENT_DH2k: memcpy(algoTypeString, "DH2k", 4); break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/src/stateMachine.c new/bzrtp-5.3.26/src/stateMachine.c --- old/bzrtp-5.2.98/src/stateMachine.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/src/stateMachine.c 2023-10-20 15:50:20.000000000 +0200 @@ -2622,18 +2622,21 @@ /* allocate memory */ uint8_t *srtpkeyi = (uint8_t *)malloc(zrtpChannelContext->cipherKeyLength*sizeof(uint8_t)); uint8_t *srtpkeyr = (uint8_t *)malloc(zrtpChannelContext->cipherKeyLength*sizeof(uint8_t)); - uint8_t *srtpsalti = (uint8_t *)malloc(14*sizeof(uint8_t));/* salt length is defined to be 112 bits(14 bytes) in rfc section 4.5.3 */ - uint8_t *srtpsaltr = (uint8_t *)malloc(14*sizeof(uint8_t));/* salt length is defined to be 112 bits(14 bytes) in rfc section 4.5.3 */ + /* master salt size for srtp GCM auth tag in srtp is 12 bytes when using GCM authentication + * 14 otherwise (RFC section 4.5.3) - GCM support is not in the original RFC */ + uint8_t srtpsaltlength = (zrtpChannelContext->authTagAlgo == ZRTP_AUTHTAG_GCM)?12:14; + uint8_t *srtpsalti = (uint8_t *)malloc(srtpsaltlength*sizeof(uint8_t)); + uint8_t *srtpsaltr = (uint8_t *)malloc(srtpsaltlength*sizeof(uint8_t)); /* compute keys and salts according to rfc section 4.5.3 */ /* srtpkeyi = KDF(s0, "Initiator SRTP master key", KDF_Context, negotiated AES key length) */ retval = bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Initiator SRTP master key", 25, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, zrtpChannelContext->cipherKeyLength, zrtpChannelContext->hmacFunction, srtpkeyi); /* srtpsalti = KDF(s0, "Initiator SRTP master salt", KDF_Context, 112) */ - retval += bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Initiator SRTP master salt", 26, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, 14, zrtpChannelContext->hmacFunction, srtpsalti); + retval += bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Initiator SRTP master salt", 26, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, srtpsaltlength, zrtpChannelContext->hmacFunction, srtpsalti); /* srtpkeyr = KDF(s0, "Responder SRTP master key", KDF_Context, negotiated AES key length) */ retval += bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Responder SRTP master key", 25, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, zrtpChannelContext->cipherKeyLength, zrtpChannelContext->hmacFunction, srtpkeyr); /* srtpsaltr = KDF(s0, "Responder SRTP master salt", KDF_Context, 112) */ - retval += bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Responder SRTP master salt", 26, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, 14, zrtpChannelContext->hmacFunction, srtpsaltr); + retval += bzrtp_keyDerivationFunction(zrtpChannelContext->s0, zrtpChannelContext->hashLength, (uint8_t *)"Responder SRTP master salt", 26, zrtpChannelContext->KDFContext, zrtpChannelContext->KDFContextLength, srtpsaltlength, zrtpChannelContext->hmacFunction, srtpsaltr); if (retval!=0) { free(srtpkeyi); @@ -2659,9 +2662,9 @@ /* Set the length in secrets structure */ zrtpChannelContext->srtpSecrets.selfSrtpKeyLength = zrtpChannelContext->cipherKeyLength; - zrtpChannelContext->srtpSecrets.selfSrtpSaltLength = 14; /* salt length is defined to be 112 bits(14 bytes) in rfc section 4.5.3 */ + zrtpChannelContext->srtpSecrets.selfSrtpSaltLength = srtpsaltlength; zrtpChannelContext->srtpSecrets.peerSrtpKeyLength = zrtpChannelContext->cipherKeyLength; - zrtpChannelContext->srtpSecrets.peerSrtpSaltLength = 14; /* salt length is defined to be 112 bits(14 bytes) in rfc section 4.5.3 */ + zrtpChannelContext->srtpSecrets.peerSrtpSaltLength = srtpsaltlength; /* Set the used algo in secrets structure */ zrtpChannelContext->srtpSecrets.cipherAlgo = zrtpChannelContext->cipherAlgo; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/src/zidCache.c new/bzrtp-5.3.26/src/zidCache.c --- old/bzrtp-5.2.98/src/zidCache.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/src/zidCache.c 2023-10-20 15:50:20.000000000 +0200 @@ -26,10 +26,6 @@ #ifdef ZIDCACHE_ENABLED #include "sqlite3.h" -#ifdef HAVE_LIBXML2 -#include <libxml/tree.h> -#include <libxml/parser.h> -#endif /* HAVE_LIBXML2 */ #ifdef _WIN32 #include <malloc.h> @@ -97,7 +93,6 @@ * * All values except zuid in the following tables are blob, actual integers are split and stored in big endian by callers * zrtp : zuid(as foreign key) | rs1 | rs2 | aux secret | pbx secret | pvs flag - * lime : zuid(as foreign key) | sndKey | rcvKey | sndSId | rcvSId | snd Index | rcv Index | valid */ static int bzrtp_initCache_impl(void *dbPointer) { char* errmsg=NULL; @@ -209,20 +204,6 @@ return BZRTP_ZIDCACHE_UNABLETOUPDATE; } - /* check/create the lime table */ - ret=sqlite3_exec(db,"CREATE TABLE IF NOT EXISTS lime (" - "zuid INTEGER NOT NULL DEFAULT 0 UNIQUE," - "sndKey BLOB DEFAULT NULL," - "rcvKey BLOB DEFAULT NULL," - "sndSId BLOB DEFAULT NULL," - "rcvSId BLOB DEFAULT NULL," - "sndIndex BLOB DEFAULT NULL," - "rcvIndex BLOB DEFAULT NULL," - "valid BLOB DEFAULT NULL," - "FOREIGN KEY(zuid) REFERENCES ziduri(zuid) ON UPDATE CASCADE ON DELETE CASCADE" - - ");", - 0,0,&errmsg); if(ret != SQLITE_OK) { sqlite3_free(errmsg); return BZRTP_ZIDCACHE_UNABLETOUPDATE; @@ -960,194 +941,6 @@ } } -/** - * @brief Perform migration from xml version to sqlite3 version of cache - * Warning: new version of cache associate a ZID to each local URI, the old one did not - * the migration function will associate any data in the cache to the sip URI given in parameter which shall be the default URI - * @param[in] cacheXml a pointer to an xmlDocPtr structure containing the old cache to be migrated - * @param[in/out] cacheSqlite a pointer to an sqlite3 structure containing a cache initialised using bzrtp_cache_init function - * @param[in] selfURI default sip URI for this end point, NULL terminated char - * - * @return 0 on success, BZRTP_ERROR_CACHEDISABLED when bzrtp was not compiled with cache enabled, BZRTP_ERROR_CACHEMIGRATIONFAILED on error during migration - */ -int bzrtp_cache_migration(void *cacheXmlPtr, void *cacheSqlite, const char *selfURI) { -#ifdef HAVE_LIBXML2 - if (cacheXmlPtr) { - xmlDocPtr cacheXml = (xmlDocPtr)cacheXmlPtr; - xmlNodePtr cur; - xmlChar *selfZidHex=NULL; - uint8_t selfZID[12]; - sqlite3 *db = (sqlite3 *)cacheSqlite; - sqlite3_stmt *sqlStmt = NULL; - int ret; - - /* parse the cache to get the selfZID and insert it in sqlcache */ - cur = xmlDocGetRootElement(cacheXml); - /* if we found a root element, parse its children node */ - if (cur!=NULL) - { - cur = cur->xmlChildrenNode; - } - selfZidHex = NULL; - while (cur!=NULL) { - if ((!xmlStrcmp(cur->name, (const xmlChar *)"selfZID"))){ /* self ZID found, extract it */ - selfZidHex = xmlNodeListGetString(cacheXml, cur->xmlChildrenNode, 1); - bctbx_str_to_uint8(selfZID, selfZidHex, 24); - break; - } - cur = cur->next; - } - /* did we found a self ZID? */ - if (selfZidHex == NULL) { - bctbx_warning("ZRTP/LIME cache migration: Failed to parse selfZID"); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; - } - - /* insert the selfZID in cache, associate it to default local sip:uri in case we have more than one */ - bctbx_message("ZRTP/LIME cache migration: found selfZID %.24s link it to default URI %s in SQL cache", selfZidHex, selfURI); - xmlFree(selfZidHex); - - ret = sqlite3_prepare_v2(db, "INSERT INTO ziduri (zid,selfuri,peeruri) VALUES(?,?,?);", -1, &sqlStmt, NULL); - if (ret != SQLITE_OK) { - bctbx_warning("ZRTP/LIME cache migration: Failed to insert selfZID"); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; - } - sqlite3_bind_blob(sqlStmt, 1, selfZID, 12, SQLITE_TRANSIENT); - sqlite3_bind_text(sqlStmt, 2, selfURI,-1,SQLITE_TRANSIENT); - sqlite3_bind_text(sqlStmt, 3, "self",-1,SQLITE_TRANSIENT); - - ret = sqlite3_step(sqlStmt); - if (ret!=SQLITE_DONE) { - bctbx_warning("ZRTP/LIME cache migration: Failed to insert selfZID"); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; - } - sqlite3_finalize(sqlStmt); - - /* loop over all the peer node in the xml cache and get from them : uri(can be more than one), ZID, rs1, rs2, pvs, sndKey, rcvKey, sndSId, rcvSId, sndIndex, rcvIndex, valid */ - /* some of these may be missing(pvs, valid, rs2) but we'll consider them NULL */ - /* aux and pbx secrets were not used, so don't even bother looking for them */ - cur = xmlDocGetRootElement(cacheXml)->xmlChildrenNode; - - while (cur!=NULL) { /* loop on all peer nodes */ - if ((!xmlStrcmp(cur->name, (const xmlChar *)"peer"))) { /* found a peer node, check if there is a sipURI node in it (other nodes are just ignored) */ - int i; - xmlNodePtr peerNodeChildren = cur->xmlChildrenNode; - xmlChar *nodeContent = NULL; - xmlChar *peerZIDString = NULL; - uint8_t peerZID[12]; - uint8_t peerZIDFound=0; - xmlChar *peerUri[128]; /* array to contain all the peer uris found in one node */ - /* hopefully they won't be more than 128(it would mean some peer has more than 128 accounts and we called all of them...) */ - int peerUriIndex=0; /* index of previous array */ - const char *zrtpColNames[] = {"rs1", "rs2", "pvs"}; - uint8_t *zrtpColValues[] = {NULL, NULL, NULL}; - size_t zrtpColExpectedLengths[] = {32,32,1}; - size_t zrtpColLengths[] = {0,0,0}; - - const char *limeColNames[] = {"sndKey", "rcvKey", "sndSId", "rcvSId", "sndIndex", "rcvIndex", "valid"}; - uint8_t *limeColValues[] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL}; - size_t limeColExpectedLengths[] = {32,32,32,32,4,4,8}; - size_t limeColLengths[] = {0,0,0,0,0,0,0}; - - /* check all the children nodes to retrieve all information we may get */ - while (peerNodeChildren!=NULL && peerUriIndex<128) { - if (!xmlStrcmp(peerNodeChildren->name, (const xmlChar *)"uri")) { /* found a peer an URI node, get the content */ - peerUri[peerUriIndex] = xmlNodeListGetString(cacheXml, peerNodeChildren->xmlChildrenNode, 1); - peerUriIndex++; - } - - if (!xmlStrcmp(peerNodeChildren->name, (const xmlChar *)"ZID")) { - peerZIDString = xmlNodeListGetString(cacheXml, peerNodeChildren->xmlChildrenNode, 1); - bctbx_str_to_uint8(peerZID, peerZIDString, 24); - - peerZIDFound=1; - } - - for (i=0; i<3; i++) { - if (!xmlStrcmp(peerNodeChildren->name, (const xmlChar *)zrtpColNames[i])) { - nodeContent = xmlNodeListGetString(cacheXml, peerNodeChildren->xmlChildrenNode, 1); - zrtpColValues[i] = (uint8_t *)bctbx_malloc(zrtpColExpectedLengths[i]); - bctbx_str_to_uint8(zrtpColValues[i], nodeContent, 2*zrtpColExpectedLengths[i]); - zrtpColLengths[i]=zrtpColExpectedLengths[i]; - } - } - - for (i=0; i<7; i++) { - if (!xmlStrcmp(peerNodeChildren->name, (const xmlChar *)limeColNames[i])) { - nodeContent = xmlNodeListGetString(cacheXml, peerNodeChildren->xmlChildrenNode, 1); - limeColValues[i] = (uint8_t *)bctbx_malloc(limeColExpectedLengths[i]); - bctbx_str_to_uint8(limeColValues[i], nodeContent, 2*limeColExpectedLengths[i]); - limeColLengths[i]=limeColExpectedLengths[i]; - } - } - - peerNodeChildren = peerNodeChildren->next; - xmlFree(nodeContent); - nodeContent=NULL; - } - - if (peerUriIndex>0 && peerZIDFound==1) { /* we found at least an uri in this peer node, extract the keys all other informations */ - /* retrieve all the informations */ - - /* loop over all the uri founds */ - for (i=0; i<peerUriIndex; i++) { - char *stmt = NULL; - int zuid; - /* create the entry in the ziduri table (it will give us the zuid to be used to insert infos in lime and zrtp tables) */ - /* we could use directly the bzrtp_cache_getZuid function, but avoid useless query by directly inserting the data */ - stmt = sqlite3_mprintf("INSERT INTO ziduri (zid,selfuri,peeruri) VALUES(?,?,?);"); - ret = sqlite3_prepare_v2(db, stmt, -1, &sqlStmt, NULL); - if (ret != SQLITE_OK) { - bctbx_warning("ZRTP/LIME cache migration: Failed to insert peer ZID %s", peerUri[i]); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; - } - sqlite3_free(stmt); - - sqlite3_bind_blob(sqlStmt, 1, peerZID, 12, SQLITE_TRANSIENT); - sqlite3_bind_text(sqlStmt, 2, selfURI, -1, SQLITE_TRANSIENT); - sqlite3_bind_text(sqlStmt, 3, (const char *)(peerUri[i]), -1, SQLITE_TRANSIENT); - - ret = sqlite3_step(sqlStmt); - if (ret!=SQLITE_DONE) { - bctbx_warning("ZRTP/LIME cache migration: Failed to insert peer ZID %s", peerUri[i]); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; - } - sqlite3_finalize(sqlStmt); - /* get the zuid created */ - zuid = (int)sqlite3_last_insert_rowid(db); - - bctbx_message("ZRTP/LIME cache migration: Inserted self %s peer %s ZID %s sucessfully with zuid %d\n", selfURI, peerUri[i], peerZIDString, zuid); - xmlFree(peerUri[i]); - peerUri[i]=NULL; - - /* now insert data in the zrtp and lime table, keep going even if it fails */ - if ((ret=bzrtp_cache_write_impl(db, zuid, "zrtp", zrtpColNames, zrtpColValues, zrtpColLengths, 3)) != 0) { - bctbx_error("ZRTP/LIME cache migration: could not insert data in zrtp table, return value %x", ret); - } - if ((ret=bzrtp_cache_write_impl(db, zuid, "lime", limeColNames, limeColValues, limeColLengths, 7)) != 0) { - bctbx_error("ZRTP/LIME cache migration: could not insert data in lime table, return value %x", ret); - } - } - } - bctbx_free(zrtpColValues[0]); - bctbx_free(zrtpColValues[1]); - bctbx_free(zrtpColValues[2]); - for (i=0; i<7; i++) { - bctbx_free(limeColValues[i]); - } - xmlFree(peerZIDString); - } - cur = cur->next; - } - return 0; - } - return BZRTP_ERROR_CACHEMIGRATIONFAILED; -#else /* HAVE_LIBXML2 */ - bctbx_error("ZRTP/LIME cache migration: could not perform migration as LIBMXL2 is not linked to bzrtp."); - return BZRTP_ERROR_CACHEMIGRATIONFAILED; -#endif /* HAVE_LIBXML2 */ -} - /* * @brief Retrieve from bzrtp cache the trust status(based on the previously verified flag) of a peer URI * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/test/CMakeLists.txt new/bzrtp-5.3.26/test/CMakeLists.txt --- old/bzrtp-5.2.98/test/CMakeLists.txt 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/test/CMakeLists.txt 2023-10-20 15:50:20.000000000 +0200 @@ -1,6 +1,6 @@ ############################################################################ # CMakeLists.txt -# Copyright (C) 2014 Belledonne Communications, Grenoble France +# Copyright (C) 2014-2023 Belledonne Communications, Grenoble France # ############################################################################ # @@ -38,36 +38,18 @@ bc_apply_compile_flags(BZRTP_TEST_C_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_C) bc_apply_compile_flags(BZRTP_TEST_CXX_SOURCES STRICT_OPTIONS_CPP STRICT_OPTIONS_CXX) -add_executable(bzrtpTest ${BZRTP_TEST_C_SOURCES} ${BZRTP_TEST_CXX_SOURCES}) -set_target_properties(bzrtpTest PROPERTIES LINK_FLAGS "${LINK_FLAGS}") -set_target_properties(bzrtpTest PROPERTIES LINKER_LANGUAGE CXX) - -target_link_libraries(bzrtpTest PRIVATE bctoolbox bctoolbox-tester) - -if(ENABLE_STATIC) - target_link_libraries(bzrtpTest PRIVATE bzrtp) -else() - target_link_libraries(bzrtpTest PRIVATE bzrtp) -endif() -if(SQLITE3_FOUND) - target_include_directories(bzrtpTest PRIVATE ${SQLITE3_INCLUDE_DIRS}) - target_link_libraries(bzrtpTest PRIVATE ${SQLITE3_LIBRARIES}) -endif() -if(XML2_FOUND) - target_include_directories(bzrtpTest PRIVATE ${XML2_INCLUDE_DIRS}) - target_link_libraries(bzrtpTest PRIVATE ${XML2_LIBRARIES}) +add_executable(bzrtp-tester ${BZRTP_TEST_C_SOURCES} ${BZRTP_TEST_CXX_SOURCES}) +set_target_properties(bzrtp-tester PROPERTIES LINK_FLAGS "${LINK_FLAGS}") +set_target_properties(bzrtp-tester PROPERTIES LINKER_LANGUAGE CXX) +target_link_libraries(bzrtp-tester PRIVATE ${BCToolbox_tester_TARGET} bzrtp) +if(HAVE_SQRT AND NOT WIN32) + target_link_libraries(bzrtp-tester PRIVATE m) endif() -if(HAVE_SQRT) - target_link_libraries(bzrtpTest PRIVATE m) -endif() - -unset(PATTERN_FILES_IN_TEST_DIR CACHE) -find_file(PATTERN_FILES_IN_TEST_DIR - patternZIDAlice.sqlite ${CMAKE_CURRENT_BINARY_DIR} +install(TARGETS bzrtp-tester + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) -if (NOT PATTERN_FILES_IN_TEST_DIR) - file(COPY patternZIDAlice.sqlite DESTINATION ${CMAKE_CURRENT_BINARY_DIR}) -endif() - -add_test(NAME bzrtpTest COMMAND bzrtpTest --resource-dir .) +install(FILES patternZIDAlice.sqlite DESTINATION "${CMAKE_INSTALL_DATADIR}/bzrtp-tester") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/test/bzrtpConfigsTest.c new/bzrtp-5.3.26/test/bzrtpConfigsTest.c --- old/bzrtp-5.2.98/test/bzrtpConfigsTest.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/test/bzrtpConfigsTest.c 2023-10-20 15:50:20.000000000 +0200 @@ -21,6 +21,7 @@ #include <time.h> #include <bctoolbox/defs.h> +#include <bctoolbox/port.h> #include "bzrtp/bzrtp.h" #include "zidCache.h" @@ -82,8 +83,8 @@ #define ALICE_SSRC_BASE 0x12345000 #define BOB_SSRC_BASE 0x87654000 -static cryptoParams_t withoutX255 = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}; -static cryptoParams_t withX255 = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}; +static cryptoParams_t withoutX255 = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}; +static cryptoParams_t withX255 = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}; cryptoParams_t *defaultCryptoAlgoSelection(void) { if (bctbx_key_agreement_algo_list()&BCTBX_ECDH_X25519) { return &withX255; @@ -91,8 +92,8 @@ return &withoutX255; } -static cryptoParams_t withoutX255noSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,1}; -static cryptoParams_t withX255noSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,1}; +static cryptoParams_t withoutX255noSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,1}; +static cryptoParams_t withX255noSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,1}; cryptoParams_t *defaultCryptoAlgoSelectionNoSASValidation(void) { if (bctbx_key_agreement_algo_list()&BCTBX_ECDH_X25519) { return &withX255noSAS; @@ -100,8 +101,8 @@ return &withoutX255noSAS; } -static cryptoParams_t withoutX255resetSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,2}; -static cryptoParams_t withX255resetSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,2}; +static cryptoParams_t withoutX255resetSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,2}; +static cryptoParams_t withX255resetSAS = {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,2}; cryptoParams_t *defaultCryptoAlgoSelectionResetSAS(void) { if (bctbx_key_agreement_algo_list()&BCTBX_ECDH_X25519) { return &withX255resetSAS; @@ -149,7 +150,7 @@ if (loosePacketPercentage > 0) { totalPacketSent++; // Stats on packets sent only when we can loose packets /* make sure we cannot loose 10 packets in a row from the same sender */ - if ((continuousPacketLost<10) && ((float)((rand()%100 )) < loosePacketPercentage-((clientContext->id == ALICE)?fadingLostAlice:fadingLostBob))) { /* randomly discard packets */ + if ((continuousPacketLost<10) && ((float)((bctbx_random()%100 )) < loosePacketPercentage-((clientContext->id == ALICE)?fadingLostAlice:fadingLostBob))) { /* randomly discard packets */ //bzrtp_message("%d Loose %.8s from %s - LC %d\n", msSTC, packetString+16, (clientContext->id==ALICE?"Alice":"Bob"), totalPacketLost); if (clientContext->id == ALICE) { @@ -695,43 +696,59 @@ cryptoParams_t patterns[] = { {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH3k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_DH2k},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{0},0,{0},0,{0},0,{0},0,{0},0,0}, /* this pattern will end the run because cipher nb is 0 */ }; @@ -741,73 +758,89 @@ {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X448},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS32},1,0}, {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S384},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_HS80},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_X255},1,{ZRTP_SAS_B256},1,{ZRTP_AUTHTAG_GCM},1,0}, {{0},0,{0},0,{0},0,{0},0,{0},0,0}, /* this pattern will end the run because cipher nb is 0 */ }; /* serie tested only if OQS PQC KEM are available */ cryptoParams_t kem_patterns[] = { - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB1},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB2},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB3},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC1},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC2},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC3},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_K255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, /* K255 and K448 are available only if OQS is available */ - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_K448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB1},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB2},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_KYB3},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC1},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC2},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_HQC3},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_K255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, /* K255 and K448 are available only if OQS is available */ + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES1},1,{ZRTP_HASH_S256},1,{ZRTP_KEYAGREEMENT_K448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{0},0,{0},0,{0},0,{0},0,{0},0,0}, /* this pattern will end the run because cipher nb is 0 */ }; /* serie tested only when both ECDH and OQS PQC KEM available */ cryptoParams_t hybrid_kem_patterns[] = { - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_KYB512},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_HQC128},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_KYB1024},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_HQC256},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_KYB512_HQC128},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, - {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_KYB1024_HQC256},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_HS32},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_KYB512},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_HQC128},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_KYB1024},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_HQC256},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K255_KYB512_HQC128},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, + {{ZRTP_CIPHER_AES3},1,{ZRTP_HASH_S512},1,{ZRTP_KEYAGREEMENT_K448_KYB1024_HQC256},1,{ZRTP_SAS_B32},1,{ZRTP_AUTHTAG_GCM},1,0}, {{0},0,{0},0,{0},0,{0},0,{0},0,0}, /* this pattern will end the run because cipher nb is 0 */ }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/test/bzrtpCryptoTest.cc new/bzrtp-5.3.26/test/bzrtpCryptoTest.cc --- old/bzrtp-5.2.98/test/bzrtpCryptoTest.cc 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/test/bzrtpCryptoTest.cc 2023-10-20 15:50:20.000000000 +0200 @@ -148,17 +148,17 @@ static int compareAllAlgoTypesWithExpectedChangedOnly(bzrtpChannelContext_t *zrtpChannelContext, uint8_t expectedAlgoType, uint8_t expectedType) { switch(expectedAlgoType) { case ZRTP_HASH_TYPE: - return compareAllAlgoTypes(zrtpChannelContext, expectedType, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_HS32, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); + return compareAllAlgoTypes(zrtpChannelContext, expectedType, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_GCM, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); case ZRTP_CIPHERBLOCK_TYPE: - return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, expectedType, ZRTP_AUTHTAG_HS32, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); + return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, expectedType, ZRTP_AUTHTAG_GCM, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); case ZRTP_AUTHTAG_TYPE: return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, expectedType, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); case ZRTP_KEYAGREEMENT_TYPE: - return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_HS32, expectedType, ZRTP_SAS_B32); + return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_GCM, expectedType, ZRTP_SAS_B32); case ZRTP_SAS_TYPE: - return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_HS32, getDefaultKeyAgreementAlgo(), expectedType); + return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_GCM, getDefaultKeyAgreementAlgo(), expectedType); default: - return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_HS32, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); + return compareAllAlgoTypes(zrtpChannelContext, ZRTP_HASH_S256, ZRTP_CIPHER_AES1, ZRTP_AUTHTAG_GCM, getDefaultKeyAgreementAlgo(), ZRTP_SAS_B32); } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/test/bzrtpTest.c new/bzrtp-5.3.26/test/bzrtpTest.c --- old/bzrtp-5.2.98/test/bzrtpTest.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/test/bzrtpTest.c 2023-10-20 15:50:20.000000000 +0200 @@ -86,7 +86,7 @@ bc_tester_set_verbose_func(verbose_arg_func); bc_tester_set_logfile_func(logfile_arg_func); if (ftester_printf == NULL) ftester_printf = log_handler; - bc_tester_init(ftester_printf, BCTBX_LOG_MESSAGE, BCTBX_LOG_ERROR, NULL); + bc_tester_init(ftester_printf, BCTBX_LOG_MESSAGE, BCTBX_LOG_ERROR, "patternZIDAlice.sqlite"); bc_tester_add_suite(&crypto_utils_test_suite); bc_tester_add_suite(&packet_parser_test_suite); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/bzrtp-5.2.98/test/bzrtpZidCacheTest.c new/bzrtp-5.3.26/test/bzrtpZidCacheTest.c --- old/bzrtp-5.2.98/test/bzrtpZidCacheTest.c 2023-07-27 15:59:09.000000000 +0200 +++ new/bzrtp-5.3.26/test/bzrtpZidCacheTest.c 2023-10-20 15:50:20.000000000 +0200 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014-2019 Belledonne Communications SARL. + * Copyright (c) 2014-2023 Belledonne Communications SARL. * * This file is part of bzrtp. * @@ -26,12 +26,6 @@ #ifdef ZIDCACHE_ENABLED #include "sqlite3.h" -#ifdef HAVE_LIBXML2 -#include <libxml/tree.h> -#include <libxml/parser.h> - -static const char *xmlCacheMigration = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<cache><selfZID>00112233445566778899aabb</selfZID><peer><ZID>99887766554433221100ffee</ZID><rs1>c4274f13a2b6fa05c15ec93158f930e7264b0a893393376dbc80c6eb1cccdc5a</rs1><uri>sip:[email protected]</uri><sndKey>219d9e445d10d4ed64083c7ccbb83a23bc17a97df0af5de4261f3fe026b05b0b</sndKey><rcvKey>747e72a5cc996413cb9fa6e3d18d8b370436e274cd6ba4efc1a4580340af57ca</rcvKey><sndSId>df2bf38e719fa89e17332cf8d5e774ee70d347baa74d16dee01f306c54789869</sndSId><rcvSId>928ce78b0bfc30427a02b1b668b2b3b0496d5664d7e89b75ed292ee97e3fc850</rcvSId><sndIndex>496bcc89</sndIndex><rcvIndex>59337abe</rcvIndex><rs2>5dda11f388384b349d210612f30824268a3753a7afa52ef6df5866dca76315c4</rs2><uri>sip:[email protected]</uri></peer><peer><ZID>ffeeddccbbaa987654321012</ZID><rs1>858b495dfad483af3c088f26d68c4beebc638bd44feae45aea726a771727235e</rs1><uri>sip:[email protected]</uri><sndKey>b6aac945057bc4466bfe9a23771c6a1b3b8d72ec3e7d8f30ed63c bc5a9479a25</sndKey><rcvKey>bea5ac3225edd0545b816f061a8190370e3ee5160e75404846a34d1580e0c263</rcvKey><sndSId>17ce70fdf12e500294bcb5f2ffef53096761bb1c912b21e972ae03a5a9f05c47</sndSId><rcvSId>7e13a20e15a517700f0be0921f74b96d4b4a0c539d5e14d5cdd8706441874ac0</rcvSId><sndIndex>75e18caa</sndIndex><rcvIndex>2cfbbf06</rcvIndex><rs2>1533dee20c8116dc2c282cae9adfea689b87bc4c6a4e18a846f12e3e7fea3959</rs2></peer><peer><ZID>0987654321fedcba5a5a5a5a</ZID><rs1>cb6ecc87d1dd87b23f225eec53a26fc541384917623e0c46abab8c0350c6929e</rs1><sndKey>92bb03988e8f0ccfefa37a55fd7c5893bea3bfbb27312f49dd9b10d0e3c15fc7</sndKey><rcvKey>2315705a5830b98f68458fcd49623144cb34a667512c4d44686aee125bb8b622</rcvKey><sndSId>94c56eea0dd829379263b6da3f6ac0a95388090f168a3568736ca0bd9f8d595f</sndSId><rcvSId>c319ae0d41183fec90afc412d42253c5b456580f7a463c111c7293623b8631f4</rcvSId><uri>sip:[email protected]</uri><sndIndex>2c46ddcc</sndIndex><rcvIndex>15f5779e</rcvIndex><valid>0000000058f095bf</valid><pvs>01</pvs></peer></cache>"; -#endif /* HAVE_LIBXML2 */ #endif /* ZIDCACHE_ENABLED */ @@ -205,49 +199,9 @@ #endif /* ZIDCACHE_ENABLED */ } -static void test_cache_migration(void) { -#ifdef ZIDCACHE_ENABLED -#ifdef HAVE_LIBXML2 - uint8_t pattern_selfZIDalice[12] = {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xaa, 0xbb}; - uint8_t selfZIDalice[12]; - char *aliceCacheFile = bc_tester_file("tmpZIDAlice_cache_migration.sqlite");; - - sqlite3 *aliceDB=NULL; - /* Parse the xmlCache */ - xmlDocPtr cacheXml = xmlParseDoc((xmlChar*)xmlCacheMigration); - - /* create a new DB file */ - remove(aliceCacheFile); - bzrtptester_sqlite3_open(aliceCacheFile, &aliceDB); - BC_ASSERT_EQUAL(bzrtp_initCache_lock((void *)aliceDB, NULL), BZRTP_CACHE_SETUP, int, "%x"); - - /* perform migration */ - BC_ASSERT_EQUAL(bzrtp_cache_migration((void *)cacheXml, (void *)aliceDB, "sip:[email protected]"), 0, int, "%x"); - - /* check values in new cache */ - BC_ASSERT_EQUAL(bzrtp_getSelfZID_lock(aliceDB, "sip:[email protected]", selfZIDalice, NULL, NULL), 0, int, "%x"); - BC_ASSERT_EQUAL(memcmp(pattern_selfZIDalice, selfZIDalice, 12), 0, int, "%d"); - /* TODO: read values from sql cache lime and zrtp tables and check they are the expected ones */ - - /* cleaning */ - sqlite3_close(aliceDB); - xmlFreeDoc(cacheXml); - xmlCleanupParser(); - remove(aliceCacheFile); - bc_free(aliceCacheFile); - -#else /* HAVE_LIBXML2 */ - bzrtp_message("Test skipped as LibXML2 not present\n"); -#endif /* HAVE_LIBXML2 */ -#else /* ZIDCACHE_ENABLED */ - bzrtp_message("Test skipped as ZID cache is disabled\n"); -#endif /* ZIDCACHE_ENABLED */ -} - static test_t zidcache_tests[] = { TEST_NO_TAG("SelfZID", test_cache_getSelfZID), TEST_NO_TAG("ZRTP secrets", test_cache_zrtpSecrets), - TEST_NO_TAG("Migration", test_cache_migration), }; test_suite_t zidcache_test_suite = { ++++++ bzrtp-fix-pkgconfig.patch ++++++ --- /var/tmp/diff_new_pack.Md6wvk/_old 2024-03-14 17:46:21.852261353 +0100 +++ /var/tmp/diff_new_pack.Md6wvk/_new 2024-03-14 17:46:21.856261500 +0100 @@ -1,6 +1,8 @@ ---- bzrtp-5.2.6/CMakeLists.txt.orig 2023-01-04 12:21:34.984376758 +0100 -+++ bzrtp-5.2.6/CMakeLists.txt 2023-01-04 12:21:49.892454977 +0100 -@@ -80,6 +80,14 @@ +Index: bzrtp-5.3.7/CMakeLists.txt +=================================================================== +--- bzrtp-5.3.7.orig/CMakeLists.txt ++++ bzrtp-5.3.7/CMakeLists.txt +@@ -58,6 +58,14 @@ configure_file(${CMAKE_CURRENT_SOURCE_DI set_source_files_properties(${CMAKE_CURRENT_BINARY_DIR}/config.h PROPERTIES GENERATED ON) add_definitions("-DHAVE_CONFIG_H") @@ -13,6 +15,6 @@ +install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libbzrtp.pc DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + bc_init_compilation_flags(STRICT_OPTIONS_CPP STRICT_OPTIONS_C STRICT_OPTIONS_CXX ENABLE_STRICT) - if(CMAKE_VERSION VERSION_LESS 3.1 AND NOT APPLE AND NOT MSVC) - list(APPEND STRICT_OPTIONS_CXX "-std=c++11") + + set(BZRTP_CPPFLAGS ${BCTOOLBOX_CPPFLAGS}) ++++++ set_current_version.patch ++++++ --- /var/tmp/diff_new_pack.Md6wvk/_old 2024-03-14 17:46:21.872262089 +0100 +++ /var/tmp/diff_new_pack.Md6wvk/_new 2024-03-14 17:46:21.872262089 +0100 @@ -1,12 +1,14 @@ ---- bzrtp-5.2.30/CMakeLists.txt.orig 2023-03-08 08:57:00.053520234 +0100 -+++ bzrtp-5.2.30/CMakeLists.txt 2023-03-08 08:57:06.909556904 +0100 -@@ -28,7 +28,7 @@ - cmake_policy(SET CMP0077 NEW) - endif() +Index: bzrtp-5.3.7/CMakeLists.txt +=================================================================== +--- bzrtp-5.3.7.orig/CMakeLists.txt ++++ bzrtp-5.3.7/CMakeLists.txt +@@ -22,7 +22,7 @@ --project(bzrtp VERSION 5.2.0 LANGUAGES C CXX) -+project(bzrtp VERSION 5.2.98 LANGUAGES C CXX) + cmake_minimum_required(VERSION 3.22) - option(ENABLE_SHARED "Build shared library." YES) - option(ENABLE_STATIC "Build static library." YES) +-project(BZRTP VERSION 5.3.0 LANGUAGES C CXX) ++project(BZRTP VERSION 5.3.26 LANGUAGES C CXX) + + option(ENABLE_ZIDCACHE "Turn on compilation of ZID cache, request sqlite" YES) + option(ENABLE_STRICT "Build with strict compile options." YES)
