Determining if compiler supports C11 _Thread_local passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_5ec47/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_5ec47.dir/build.make CMakeFiles/cmTC_5ec47.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_5ec47.dir/cm_c11_thread_local.c.o /usr/bin/gcc -O2 -std=gnu11 -o CMakeFiles/cmTC_5ec47.dir/cm_c11_thread_local.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Source/Checks/cm_c11_thread_local.c Linking C executable cmTC_5ec47 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_5ec47.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_5ec47.dir/cm_c11_thread_local.c.o -o cmTC_5ec47 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Determining if compiler supports needed C++17 constructs passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_13716/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_13716.dir/build.make CMakeFiles/cmTC_13716.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building CXX object CMakeFiles/cmTC_13716.dir/cm_cxx17_check.cpp.o /usr/bin/g++ -O2 -std=gnu++17 -o CMakeFiles/cmTC_13716.dir/cm_cxx17_check.cpp.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Source/Checks/cm_cxx17_check.cpp Linking CXX executable cmTC_13716 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_13716.dir/link.txt --verbose=1 /usr/bin/g++ -O2 -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_13716.dir/cm_cxx17_check.cpp.o -o cmTC_13716 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Determining if compiler supports C++ make_unique passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b934d/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_b934d.dir/build.make CMakeFiles/cmTC_b934d.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building CXX object CMakeFiles/cmTC_b934d.dir/cm_cxx_make_unique.cxx.o /usr/bin/g++ -O2 -std=gnu++17 -o CMakeFiles/cmTC_b934d.dir/cm_cxx_make_unique.cxx.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Source/Checks/cm_cxx_make_unique.cxx Linking CXX executable cmTC_b934d /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_b934d.dir/link.txt --verbose=1 /usr/bin/g++ -O2 -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_b934d.dir/cm_cxx_make_unique.cxx.o -o cmTC_b934d gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_FSETXATTR_5 passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_569d8/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_569d8.dir/build.make CMakeFiles/cmTC_569d8.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_569d8.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_FSETXATTR_5 -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_569d8.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_569d8 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_569d8.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_FSETXATTR_5 -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_569d8.dir/CurlTests.c.o -o cmTC_569d8 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_FCNTL_O_NONBLOCK passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0ea49/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_0ea49.dir/build.make CMakeFiles/cmTC_0ea49.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_0ea49.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_FCNTL_O_NONBLOCK -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_0ea49.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_0ea49 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_0ea49.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_FCNTL_O_NONBLOCK -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_0ea49.dir/CurlTests.c.o -o cmTC_0ea49 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_IOCTL_FIONBIO passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_56e57/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_56e57.dir/build.make CMakeFiles/cmTC_56e57.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_56e57.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_IOCTL_FIONBIO -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_56e57.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_56e57 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_56e57.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_IOCTL_FIONBIO -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_56e57.dir/CurlTests.c.o -o cmTC_56e57 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_IOCTL_SIOCGIFADDR passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_32c78/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_32c78.dir/build.make CMakeFiles/cmTC_32c78.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_32c78.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_IOCTL_SIOCGIFADDR -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_32c78.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_32c78 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_32c78.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_IOCTL_SIOCGIFADDR -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_32c78.dir/CurlTests.c.o -o cmTC_32c78 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_GETHOSTBYNAME_R_6 passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0f958/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_0f958.dir/build.make CMakeFiles/cmTC_0f958.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_0f958.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_GETHOSTBYNAME_R_6 -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_0f958.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_0f958 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_0f958.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_GETHOSTBYNAME_R_6 -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_0f958.dir/CurlTests.c.o -o cmTC_0f958 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_GETHOSTBYNAME_R_6_REENTRANT passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_43bf0/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_43bf0.dir/build.make CMakeFiles/cmTC_43bf0.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_43bf0.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_GETHOSTBYNAME_R_6_REENTRANT -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_43bf0.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_43bf0 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_43bf0.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_GETHOSTBYNAME_R_6_REENTRANT -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_43bf0.dir/CurlTests.c.o -o cmTC_43bf0 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_IN_ADDR_T passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_dca6a/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_dca6a.dir/build.make CMakeFiles/cmTC_dca6a.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_dca6a.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_IN_ADDR_T -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_dca6a.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_dca6a /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_dca6a.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_IN_ADDR_T -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_dca6a.dir/CurlTests.c.o -o cmTC_dca6a gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_BOOL_T passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_278b7/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_278b7.dir/build.make CMakeFiles/cmTC_278b7.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_278b7.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_BOOL_T -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_278b7.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_278b7 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_278b7.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_BOOL_T -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_278b7.dir/CurlTests.c.o -o cmTC_278b7 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test STDC_HEADERS passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_9ed96/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_9ed96.dir/build.make CMakeFiles/cmTC_9ed96.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_9ed96.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DSTDC_HEADERS -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_9ed96.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_9ed96 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_9ed96.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DSTDC_HEADERS -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_9ed96.dir/CurlTests.c.o -o cmTC_9ed96 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_FILE_OFFSET_BITS passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0aa86/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_0aa86.dir/build.make CMakeFiles/cmTC_0aa86.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_0aa86.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_FILE_OFFSET_BITS -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_0aa86.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_0aa86 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_0aa86.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_FILE_OFFSET_BITS -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_0aa86.dir/CurlTests.c.o -o cmTC_0aa86 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_POSIX_STRERROR_R passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_5c1b7/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_5c1b7.dir/build.make CMakeFiles/cmTC_5c1b7.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_5c1b7.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_POSIX_STRERROR_R -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_5c1b7.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_5c1b7 /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_5c1b7.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_POSIX_STRERROR_R -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_5c1b7.dir/CurlTests.c.o -o cmTC_5c1b7 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Performing Test HAVE_CLOCK_GETTIME_MONOTONIC passed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_04c1d/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_04c1d.dir/build.make CMakeFiles/cmTC_04c1d.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_04c1d.dir/CurlTests.c.o /usr/bin/gcc -O2 -w -DHAVE_CLOCK_GETTIME_MONOTONIC -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -std=gnu11 -o CMakeFiles/cmTC_04c1d.dir/CurlTests.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmcurl/CMake/CurlTests.c Linking C executable cmTC_04c1d /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E cmake_link_script CMakeFiles/cmTC_04c1d.dir/link.txt --verbose=1 /usr/bin/gcc -O2 -w -DHAVE_CLOCK_GETTIME_MONOTONIC -DHAVE_SYS_WAIT_H -DHAVE_SYS_IOCTL_H -DHAVE_SYS_PARAM_H -DHAVE_SYS_POLL_H -DHAVE_SYS_RESOURCE_H -DHAVE_SYS_SELECT_H -DHAVE_SYS_SOCKET_H -DHAVE_SYS_STAT_H -DHAVE_SYS_TIME_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_UN_H -DHAVE_SYS_XATTR_H -DHAVE_ARPA_INET_H -DHAVE_DIRENT_H -DHAVE_FCNTL_H -DHAVE_IFADDRS_H -DHAVE_LIBGEN_H -DHAVE_LOCALE_H -DHAVE_NET_IF_H -DHAVE_NETDB_H -DHAVE_NETINET_IN_H -DHAVE_NETINET_TCP_H -DHAVE_NETINET_UDP_H -DHAVE_POLL_H -DHAVE_PWD_H -DHAVE_STDBOOL_H -DHAVE_STRINGS_H -DHAVE_TERMIO_H -DHAVE_TERMIOS_H -DHAVE_UNISTD_H -DHAVE_UTIME_H -L/home/buildroot/instance-0/output-1/host/lib -Wl,-rpath,/home/buildroot/instance-0/output-1/host/lib CMakeFiles/cmTC_04c1d.dir/CurlTests.c.o -o cmTC_04c1d gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Checking support for ARCHIVE_CRYPTO_MD5_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_6db40/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_6db40.dir/build.make CMakeFiles/cmTC_6db40.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_6db40.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_6db40.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:64:10: fatal error: md5.h: No such file or directory 64 | #include | ^~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_6db40.dir/build.make:78: CMakeFiles/cmTC_6db40.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_6db40/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_MD5_COMPILE_TEST #define ARCHIVE_CRYPTO_MD5_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_md5_ctx ctx; archive_md5_init(&ctx); archive_md5_update(&ctx, *argv, argc); archive_md5_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_RMD160_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c62b2/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_c62b2.dir/build.make CMakeFiles/cmTC_c62b2.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_c62b2.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_c62b2.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:67:10: fatal error: rmd160.h: No such file or directory 67 | #include | ^~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_c62b2.dir/build.make:78: CMakeFiles/cmTC_c62b2.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_c62b2/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_RMD160_COMPILE_TEST #define ARCHIVE_CRYPTO_RMD160_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_rmd160_ctx ctx; archive_rmd160_init(&ctx); archive_rmd160_update(&ctx, *argv, argc); archive_rmd160_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA1_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_60c23/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_60c23.dir/build.make CMakeFiles/cmTC_60c23.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_60c23.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_60c23.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:70:10: fatal error: sha1.h: No such file or directory 70 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_60c23.dir/build.make:78: CMakeFiles/cmTC_60c23.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_60c23/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA1_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA1_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha1_ctx ctx; archive_sha1_init(&ctx); archive_sha1_update(&ctx, *argv, argc); archive_sha1_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA256_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c04d9/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_c04d9.dir/build.make CMakeFiles/cmTC_c04d9.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_c04d9.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_c04d9.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_c04d9.dir/build.make:78: CMakeFiles/cmTC_c04d9.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_c04d9/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA256_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA256_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha256_ctx ctx; archive_sha256_init(&ctx); archive_sha256_update(&ctx, *argv, argc); archive_sha256_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA384_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_681a9/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_681a9.dir/build.make CMakeFiles/cmTC_681a9.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_681a9.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_681a9.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_681a9.dir/build.make:78: CMakeFiles/cmTC_681a9.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_681a9/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA384_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA384_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha384_ctx ctx; archive_sha384_init(&ctx); archive_sha384_update(&ctx, *argv, argc); archive_sha384_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA512_LIBC failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_5f9dc/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_5f9dc.dir/build.make CMakeFiles/cmTC_5f9dc.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_5f9dc.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_5f9dc.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_5f9dc.dir/build.make:78: CMakeFiles/cmTC_5f9dc.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_5f9dc/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA512_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA512_LIBC #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha512_ctx ctx; archive_sha512_init(&ctx); archive_sha512_update(&ctx, *argv, argc); archive_sha512_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA256_LIBC2 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a0f14/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_a0f14.dir/build.make CMakeFiles/cmTC_a0f14.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_a0f14.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_a0f14.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_a0f14.dir/build.make:78: CMakeFiles/cmTC_a0f14.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_a0f14/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA256_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA256_LIBC2 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha256_ctx ctx; archive_sha256_init(&ctx); archive_sha256_update(&ctx, *argv, argc); archive_sha256_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA384_LIBC2 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_193e7/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_193e7.dir/build.make CMakeFiles/cmTC_193e7.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_193e7.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_193e7.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_193e7.dir/build.make:78: CMakeFiles/cmTC_193e7.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_193e7/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA384_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA384_LIBC2 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha384_ctx ctx; archive_sha384_init(&ctx); archive_sha384_update(&ctx, *argv, argc); archive_sha384_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA512_LIBC2 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_3a815/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_3a815.dir/build.make CMakeFiles/cmTC_3a815.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_3a815.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_3a815.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_3a815.dir/build.make:78: CMakeFiles/cmTC_3a815.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_3a815/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA512_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA512_LIBC2 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha512_ctx ctx; archive_sha512_init(&ctx); archive_sha512_update(&ctx, *argv, argc); archive_sha512_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA256_LIBC3 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_7353c/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_7353c.dir/build.make CMakeFiles/cmTC_7353c.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_7353c.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_7353c.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_7353c.dir/build.make:78: CMakeFiles/cmTC_7353c.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_7353c/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA256_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA256_LIBC3 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha256_ctx ctx; archive_sha256_init(&ctx); archive_sha256_update(&ctx, *argv, argc); archive_sha256_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA384_LIBC3 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_c0625/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_c0625.dir/build.make CMakeFiles/cmTC_c0625.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_c0625.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_c0625.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_c0625.dir/build.make:78: CMakeFiles/cmTC_c0625.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_c0625/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA384_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA384_LIBC3 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha384_ctx ctx; archive_sha384_init(&ctx); archive_sha384_update(&ctx, *argv, argc); archive_sha384_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA512_LIBC3 failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_6558e/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_6558e.dir/build.make CMakeFiles/cmTC_6558e.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_6558e.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_6558e.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:81:10: fatal error: sha2.h: No such file or directory 81 | #include | ^~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_6558e.dir/build.make:78: CMakeFiles/cmTC_6558e.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_6558e/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA512_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA512_LIBC3 #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha512_ctx ctx; archive_sha512_init(&ctx); archive_sha512_update(&ctx, *argv, argc); archive_sha512_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_MD5_LIBSYSTEM failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_d0ebd/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_d0ebd.dir/build.make CMakeFiles/cmTC_d0ebd.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_d0ebd.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_d0ebd.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:115:10: fatal error: CommonCrypto/CommonDigest.h: No such file or directory 115 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_d0ebd.dir/build.make:78: CMakeFiles/cmTC_d0ebd.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_d0ebd/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_MD5_COMPILE_TEST #define ARCHIVE_CRYPTO_MD5_LIBSYSTEM #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_md5_ctx ctx; archive_md5_init(&ctx); archive_md5_update(&ctx, *argv, argc); archive_md5_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA1_LIBSYSTEM failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_fae02/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_fae02.dir/build.make CMakeFiles/cmTC_fae02.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_fae02.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_fae02.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:115:10: fatal error: CommonCrypto/CommonDigest.h: No such file or directory 115 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_fae02.dir/build.make:78: CMakeFiles/cmTC_fae02.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_fae02/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA1_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA1_LIBSYSTEM #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha1_ctx ctx; archive_sha1_init(&ctx); archive_sha1_update(&ctx, *argv, argc); archive_sha1_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA256_LIBSYSTEM failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_a393e/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_a393e.dir/build.make CMakeFiles/cmTC_a393e.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_a393e.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_a393e.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:115:10: fatal error: CommonCrypto/CommonDigest.h: No such file or directory 115 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_a393e.dir/build.make:78: CMakeFiles/cmTC_a393e.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_a393e/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA256_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA256_LIBSYSTEM #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha256_ctx ctx; archive_sha256_init(&ctx); archive_sha256_update(&ctx, *argv, argc); archive_sha256_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA384_LIBSYSTEM failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0ac51/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_0ac51.dir/build.make CMakeFiles/cmTC_0ac51.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_0ac51.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_0ac51.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:115:10: fatal error: CommonCrypto/CommonDigest.h: No such file or directory 115 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_0ac51.dir/build.make:78: CMakeFiles/cmTC_0ac51.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_0ac51/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA384_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA384_LIBSYSTEM #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha384_ctx ctx; archive_sha384_init(&ctx); archive_sha384_update(&ctx, *argv, argc); archive_sha384_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA512_LIBSYSTEM failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_903c7/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_903c7.dir/build.make CMakeFiles/cmTC_903c7.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_903c7.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_903c7.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:115:10: fatal error: CommonCrypto/CommonDigest.h: No such file or directory 115 | #include | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_903c7.dir/build.make:78: CMakeFiles/cmTC_903c7.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_903c7/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA512_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA512_LIBSYSTEM #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha512_ctx ctx; archive_sha512_init(&ctx); archive_sha512_update(&ctx, *argv, argc); archive_sha512_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_MD5_LIBMD failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_33ac7/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_33ac7.dir/build.make CMakeFiles/cmTC_33ac7.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_33ac7.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_33ac7.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:94:10: fatal error: md5.h: No such file or directory 94 | #include | ^~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_33ac7.dir/build.make:78: CMakeFiles/cmTC_33ac7.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_33ac7/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_MD5_COMPILE_TEST #define ARCHIVE_CRYPTO_MD5_LIBMD #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_md5_ctx ctx; archive_md5_init(&ctx); archive_md5_update(&ctx, *argv, argc); archive_md5_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_RMD160_LIBMD failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_b89c6/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_b89c6.dir/build.make CMakeFiles/cmTC_b89c6.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_b89c6.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_b89c6.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:97:10: fatal error: ripemd.h: No such file or directory 97 | #include | ^~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_b89c6.dir/build.make:78: CMakeFiles/cmTC_b89c6.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_b89c6/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_RMD160_COMPILE_TEST #define ARCHIVE_CRYPTO_RMD160_LIBMD #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_rmd160_ctx ctx; archive_rmd160_init(&ctx); archive_rmd160_update(&ctx, *argv, argc); archive_rmd160_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA1_LIBMD failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_309f5/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_309f5.dir/build.make CMakeFiles/cmTC_309f5.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_309f5.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_309f5.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:100:10: fatal error: sha.h: No such file or directory 100 | #include | ^~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_309f5.dir/build.make:78: CMakeFiles/cmTC_309f5.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_309f5/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA1_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA1_LIBMD #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha1_ctx ctx; archive_sha1_init(&ctx); archive_sha1_update(&ctx, *argv, argc); archive_sha1_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA256_LIBMD failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_2b5db/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_2b5db.dir/build.make CMakeFiles/cmTC_2b5db.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_2b5db.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_2b5db.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:103:10: fatal error: sha256.h: No such file or directory 103 | #include | ^~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_2b5db.dir/build.make:78: CMakeFiles/cmTC_2b5db.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_2b5db/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA256_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA256_LIBMD #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha256_ctx ctx; archive_sha256_init(&ctx); archive_sha256_update(&ctx, *argv, argc); archive_sha256_final(&ctx, NULL); return 0; } Checking support for ARCHIVE_CRYPTO_SHA512_LIBMD failed with the following output: Change Dir: '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Run Build Command(s): /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Bootstrap.cmk/cmake -E env VERBOSE=1 /usr/bin/gmake -f Makefile cmTC_0b7a3/fast gmake[1]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake -f CMakeFiles/cmTC_0b7a3.dir/build.make CMakeFiles/cmTC_0b7a3.dir/build gmake[2]: Entering directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Building C object CMakeFiles/cmTC_0b7a3.dir/check_crypto_md.c.o /usr/bin/gcc -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2 -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp -I/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities -O2 -w -std=gnu11 -o CMakeFiles/cmTC_0b7a3.dir/check_crypto_md.c.o -c /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c In file included from /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp/check_crypto_md.c:1255: /home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/Utilities/cmlibarchive/libarchive/archive_digest_private.h:106:10: fatal error: sha512.h: No such file or directory 106 | #include | ^~~~~~~~~~ compilation terminated. gmake[2]: *** [CMakeFiles/cmTC_0b7a3.dir/build.make:78: CMakeFiles/cmTC_0b7a3.dir/check_crypto_md.c.o] Error 1 gmake[2]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' gmake[1]: *** [Makefile:127: cmTC_0b7a3/fast] Error 2 gmake[1]: Leaving directory '/home/buildroot/instance-0/output-1/build/host-cmake-3.30.2/CMakeFiles/CMakeTmp' Source file was: /* config.h. Generated from build/cmake/config.h.in by cmake configure */ #define __LIBARCHIVE_CONFIG_H_INCLUDED 1 #if defined(__osf__) # define _OSF_SOURCE #endif /* * Ensure we have C99-style int64_t, etc, all defined. */ /* Define ZLIB_WINAPI if zlib was built on Visual Studio. */ /* #undef ZLIB_WINAPI */ /* Darwin ACL support */ /* #undef ARCHIVE_ACL_DARWIN */ /* FreeBSD ACL support */ /* #undef ARCHIVE_ACL_FREEBSD */ /* FreeBSD NFSv4 ACL support */ /* #undef ARCHIVE_ACL_FREEBSD_NFS4 */ /* Linux POSIX.1e ACL support via libacl */ /* #undef ARCHIVE_ACL_LIBACL */ /* Linux NFSv4 ACL support via librichacl */ /* #undef ARCHIVE_ACL_LIBRICHACL */ /* Solaris ACL support */ /* #undef ARCHIVE_ACL_SUNOS */ /* Solaris NFSv4 ACL support */ /* #undef ARCHIVE_ACL_SUNOS_NFS4 */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBC */ /* MD5 via ARCHIVE_CRYPTO_MD5_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_MD5_LIBSYSTEM */ /* MD5 via ARCHIVE_CRYPTO_MD5_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_MD5_MBEDTLS */ /* MD5 via ARCHIVE_CRYPTO_MD5_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_MD5_NETTLE */ /* MD5 via ARCHIVE_CRYPTO_MD5_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_MD5_OPENSSL */ /* MD5 via ARCHIVE_CRYPTO_MD5_WIN supported. */ /* #undef ARCHIVE_CRYPTO_MD5_WIN */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_LIBC */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_NETTLE */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_MBEDTLS */ /* RMD160 via ARCHIVE_CRYPTO_RMD160_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_RMD160_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBC */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_LIBSYSTEM */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_MBEDTLS */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_NETTLE */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_OPENSSL */ /* SHA1 via ARCHIVE_CRYPTO_SHA1_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA1_WIN */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC2 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBC3 */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_LIBSYSTEM */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_MBEDTLS */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_NETTLE */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_OPENSSL */ /* SHA256 via ARCHIVE_CRYPTO_SHA256_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA256_WIN */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC2 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBC3 */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_LIBSYSTEM */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_MBEDTLS */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_NETTLE */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_OPENSSL */ /* SHA384 via ARCHIVE_CRYPTO_SHA384_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA384_WIN */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC2 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC2 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBC3 supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBC3 */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_LIBSYSTEM supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_LIBSYSTEM */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_MBEDTLS supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_MBEDTLS */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_NETTLE supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_NETTLE */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_OPENSSL supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_OPENSSL */ /* SHA512 via ARCHIVE_CRYPTO_SHA512_WIN supported. */ /* #undef ARCHIVE_CRYPTO_SHA512_WIN */ /* AIX xattr support */ /* #undef ARCHIVE_XATTR_AIX */ /* Darwin xattr support */ /* #undef ARCHIVE_XATTR_DARWIN */ /* FreeBSD xattr support */ /* #undef ARCHIVE_XATTR_FREEBSD */ /* Linux xattr support */ /* #undef ARCHIVE_XATTR_LINUX */ /* Version number of bsdcpio */ #define BSDCPIO_VERSION_STRING "3.7.2" /* Version number of bsdtar */ #define BSDTAR_VERSION_STRING "3.7.2" /* Version number of bsdcat */ #define BSDCAT_VERSION_STRING "3.7.2" /* Version number of bsdunzip */ #define BSDUNZIP_VERSION_STRING "3.7.2" /* Define to 1 if you have the `acl_create_entry' function. */ /* #undef HAVE_ACL_CREATE_ENTRY */ /* Define to 1 if you have the `acl_get_fd_np' function. */ /* #undef HAVE_ACL_GET_FD_NP */ /* Define to 1 if you have the `acl_get_link' function. */ /* #undef HAVE_ACL_GET_LINK */ /* Define to 1 if you have the `acl_get_link_np' function. */ /* #undef HAVE_ACL_GET_LINK_NP */ /* Define to 1 if you have the `acl_get_perm' function. */ /* #undef HAVE_ACL_GET_PERM */ /* Define to 1 if you have the `acl_get_perm_np' function. */ /* #undef HAVE_ACL_GET_PERM_NP */ /* Define to 1 if you have the `acl_init' function. */ /* #undef HAVE_ACL_INIT */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ACL_LIBACL_H */ /* Define to 1 if the system has the type `acl_permset_t'. */ /* #undef HAVE_ACL_PERMSET_T */ /* Define to 1 if you have the `acl_set_fd' function. */ /* #undef HAVE_ACL_SET_FD */ /* Define to 1 if you have the `acl_set_fd_np' function. */ /* #undef HAVE_ACL_SET_FD_NP */ /* Define to 1 if you have the `acl_set_file' function. */ /* #undef HAVE_ACL_SET_FILE */ /* Define to 1 if you have the `arc4random_buf' function. */ /* #undef HAVE_ARC4RANDOM_BUF */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ATTR_XATTR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BSDXML_H */ /* Define to 1 if you have the header file. */ #define HAVE_BZLIB_H 1 /* Define to 1 if you have the `chflags' function. */ /* #undef HAVE_CHFLAGS */ /* Define to 1 if you have the `chown' function. */ #define HAVE_CHOWN 1 /* Define to 1 if you have the `chroot' function. */ #define HAVE_CHROOT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_COPYFILE_H */ /* Define to 1 if you have the `ctime_r' function. */ #define HAVE_CTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_CTYPE_H 1 /* Define to 1 if you have the `cygwin_conv_path' function. */ /* #undef HAVE_CYGWIN_CONV_PATH */ /* Define to 1 if you have the declaration of `ACE_GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACL */ /* Define to 1 if you have the declaration of `ACE_GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_GETACLCNT */ /* Define to 1 if you have the declaration of `ACE_SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_ACE_SETACL */ /* Define to 1 if you have the declaration of `ACL_SYNCHRONIZE', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_SYNCHRONIZE */ /* Define to 1 if you have the declaration of `ACL_TYPE_EXTENDED', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_EXTENDED */ /* Define to 1 if you have the declaration of `ACL_TYPE_NFS4', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_TYPE_NFS4 */ /* Define to 1 if you have the declaration of `ACL_USER', and to 0 if you don't. */ /* #undef HAVE_DECL_ACL_USER */ /* Define to 1 if you have the declaration of `SETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_SETACL */ /* Define to 1 if you have the declaration of `strerror_r', and to 0 if you don't. */ #define HAVE_DECL_STRERROR_R 1 /* Define to 1 if you have the declaration of `XATTR_NOFOLLOW', and to 0 if you don't. */ /* #undef HAVE_DECL_XATTR_NOFOLLOW */ /* Define to 1 if you have the header file. */ /* #undef HAVE_DIRECT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ #define HAVE_DIRENT_H 1 /* Define to 1 if you have the `dirfd' function. */ #define HAVE_DIRFD 1 /* Define to 1 if you have the header file. */ #define HAVE_DLFCN_H 1 /* Define to 1 if you don't have `vprintf' but do have `_doprnt.' */ /* #undef HAVE_DOPRNT */ /* Define to 1 if nl_langinfo supports D_MD_ORDER */ /* #undef HAVE_D_MD_ORDER */ /* A possible errno value for invalid file format errors */ /* #undef HAVE_EFTYPE */ /* A possible errno value for invalid file format errors */ #define HAVE_EILSEQ 1 /* Define to 1 if you have the header file. */ #define HAVE_ERRNO_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_EXPAT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_EXT2FS_EXT2_FS_H */ /* Define to 1 if you have the `extattr_get_file' function. */ /* #undef HAVE_EXTATTR_GET_FILE */ /* Define to 1 if you have the `extattr_list_file' function. */ /* #undef HAVE_EXTATTR_LIST_FILE */ /* Define to 1 if you have the `extattr_set_fd' function. */ /* #undef HAVE_EXTATTR_SET_FD */ /* Define to 1 if you have the `extattr_set_file' function. */ /* #undef HAVE_EXTATTR_SET_FILE */ /* Define to 1 if EXTATTR_NAMESPACE_USER is defined in sys/extattr.h. */ /* #undef HAVE_DECL_EXTATTR_NAMESPACE_USER */ /* Define to 1 if you have the declaration of `GETACL', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACL */ /* Define to 1 if you have the declaration of `GETACLCNT', and to 0 if you don't. */ /* #undef HAVE_DECL_GETACLCNT */ /* Define to 1 if you have the `fchdir' function. */ #define HAVE_FCHDIR 1 /* Define to 1 if you have the `fchflags' function. */ /* #undef HAVE_FCHFLAGS */ /* Define to 1 if you have the `fchmod' function. */ #define HAVE_FCHMOD 1 /* Define to 1 if you have the `fchown' function. */ #define HAVE_FCHOWN 1 /* Define to 1 if you have the `fcntl' function. */ #define HAVE_FCNTL 1 /* Define to 1 if you have the header file. */ #define HAVE_FCNTL_H 1 /* Define to 1 if you have the `fdopendir' function. */ #define HAVE_FDOPENDIR 1 /* Define to 1 if you have the `fgetea' function. */ /* #undef HAVE_FGETEA */ /* Define to 1 if you have the `fgetxattr' function. */ /* #undef HAVE_FGETXATTR */ /* Define to 1 if you have the `flistea' function. */ /* #undef HAVE_FLISTEA */ /* Define to 1 if you have the `flistxattr' function. */ /* #undef HAVE_FLISTXATTR */ /* Define to 1 if you have the `fnmatch' function. */ #define HAVE_FNMATCH 1 /* Define to 1 if you have the header file. */ #define HAVE_FNMATCH_H 1 /* Define to 1 if you have the `fork' function. */ #define HAVE_FORK 1 /* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ #define HAVE_FSEEKO 1 /* Define to 1 if you have the `fsetea' function. */ /* #undef HAVE_FSETEA */ /* Define to 1 if you have the `fsetxattr' function. */ #define HAVE_FSETXATTR 1 /* Define to 1 if you have the `fstat' function. */ #define HAVE_FSTAT 1 /* Define to 1 if you have the `fstatat' function. */ #define HAVE_FSTATAT 1 /* Define to 1 if you have the `fstatfs' function. */ #define HAVE_FSTATFS 1 /* Define to 1 if you have the `fstatvfs' function. */ #define HAVE_FSTATVFS 1 /* Define to 1 if you have the `ftruncate' function. */ #define HAVE_FTRUNCATE 1 /* Define to 1 if you have the `futimens' function. */ #define HAVE_FUTIMENS 1 /* Define to 1 if you have the `futimes' function. */ #define HAVE_FUTIMES 1 /* Define to 1 if you have the `futimesat' function. */ #define HAVE_FUTIMESAT 1 /* Define to 1 if you have the `getea' function. */ /* #undef HAVE_GETEA */ /* Define to 1 if you have the `geteuid' function. */ #define HAVE_GETEUID 1 /* Define to 1 if you have the `getgrgid_r' function. */ #define HAVE_GETGRGID_R 1 /* Define to 1 if you have the `getgrnam_r' function. */ #define HAVE_GETGRNAM_R 1 /* Define to 1 if you have the `getline' function. */ #define HAVE_GETLINE 1 /* Define to 1 if you have the `getpid' function. */ #define HAVE_GETPID 1 /* Define to 1 if you have the `getpwnam_r' function. */ #define HAVE_GETPWNAM_R 1 /* Define to 1 if you have the `getpwuid_r' function. */ #define HAVE_GETPWUID_R 1 /* Define to 1 if you have the `getvfsbyname' function. */ /* #undef HAVE_GETVFSBYNAME */ /* Define to 1 if you have the `getxattr' function. */ /* #undef HAVE_GETXATTR */ /* Define to 1 if you have the `gmtime_r' function. */ #define HAVE_GMTIME_R 1 /* Define to 1 if you have the header file. */ #define HAVE_GRP_H 1 /* Define to 1 if you have the `iconv' function. */ /* #undef HAVE_ICONV */ /* Define to 1 if you have the header file. */ /* #undef HAVE_ICONV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_IO_H */ /* Define to 1 if you have the header file. */ #define HAVE_LANGINFO_H 1 /* Define to 1 if you have the `lchflags' function. */ /* #undef HAVE_LCHFLAGS */ /* Define to 1 if you have the `lchmod' function. */ /* #undef HAVE_LCHMOD */ /* Define to 1 if you have the `lchown' function. */ #define HAVE_LCHOWN 1 /* Define to 1 if you have the `lgetea' function. */ /* #undef HAVE_LGETEA */ /* Define to 1 if you have the `lgetxattr' function. */ /* #undef HAVE_LGETXATTR */ /* Define to 1 if you have the `acl' library (-lacl). */ /* #undef HAVE_LIBACL */ /* Define to 1 if you have the `attr' library (-lattr). */ /* #undef HAVE_LIBATTR */ /* Define to 1 if you have the `bsdxml' library (-lbsdxml). */ /* #undef HAVE_LIBBSDXML */ /* Define to 1 if you have the `bz2' library (-lbz2). */ #define HAVE_LIBBZ2 1 /* Define to 1 if you have the `b2' library (-lb2). */ /* #undef HAVE_LIBB2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_BLAKE2_H */ /* Define to 1 if you have the `charset' library (-lcharset). */ /* #undef HAVE_LIBCHARSET */ /* Define to 1 if you have the `crypto' library (-lcrypto). */ /* #undef HAVE_LIBCRYPTO */ /* Define to 1 if you have the `expat' library (-lexpat). */ /* #undef HAVE_LIBEXPAT */ /* Define to 1 if you have the `gcc' library (-lgcc). */ /* #undef HAVE_LIBGCC */ /* Define to 1 if you have the `lz4' library (-llz4). */ /* #undef HAVE_LIBLZ4 */ /* Define to 1 if you have the `lzma' library (-llzma). */ #define HAVE_LIBLZMA 1 /* Define to 1 if you have the `lzmadec' library (-llzmadec). */ /* #undef HAVE_LIBLZMADEC */ /* Define to 1 if you have the `lzo2' library (-llzo2). */ /* #undef HAVE_LIBLZO2 */ /* Define to 1 if you have the `mbedcrypto' library (-lmbedcrypto). */ /* #undef HAVE_LIBMBEDCRYPTO */ /* Define to 1 if you have the `nettle' library (-lnettle). */ /* #undef HAVE_LIBNETTLE */ /* Define to 1 if you have the `pcre' library (-lpcre). */ /* #undef HAVE_LIBPCRE */ /* Define to 1 if you have the `pcreposix' library (-lpcreposix). */ /* #undef HAVE_LIBPCREPOSIX */ /* Define to 1 if you have the `xml2' library (-lxml2). */ /* #undef HAVE_LIBXML2 */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLREADER_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LIBXML_XMLWRITER_H */ /* Define to 1 if you have the `z' library (-lz). */ #define HAVE_LIBZ 1 /* Define to 1 if you have the `zstd' library (-lzstd). */ #define HAVE_LIBZSTD 1 /* Define to 1 if you have the `zstd' library (-lzstd) with compression support. */ #define HAVE_LIBZSTD_COMPRESSOR 1 /* Define to 1 if you have the header file. */ #define HAVE_LIMITS_H 1 /* Define to 1 if you have the `link' function. */ #define HAVE_LINK 1 /* Define to 1 if you have the `linkat' function. */ #define HAVE_LINKAT 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FIEMAP_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_FS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_MAGIC_H 1 /* Define to 1 if you have the header file. */ #define HAVE_LINUX_TYPES_H 1 /* Define to 1 if you have the `listea' function. */ /* #undef HAVE_LISTEA */ /* Define to 1 if you have the `listxattr' function. */ /* #undef HAVE_LISTXATTR */ /* Define to 1 if you have the `llistea' function. */ /* #undef HAVE_LLISTEA */ /* Define to 1 if you have the `llistxattr' function. */ /* #undef HAVE_LLISTXATTR */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LOCALCHARSET_H */ /* Define to 1 if you have the `locale_charset' function. */ /* #undef HAVE_LOCALE_CHARSET */ /* Define to 1 if you have the header file. */ #define HAVE_LOCALE_H 1 /* Define to 1 if you have the `localtime_r' function. */ #define HAVE_LOCALTIME_R 1 /* Define to 1 if the system has the type `long long int'. */ /* #undef HAVE_LONG_LONG_INT */ /* Define to 1 if you have the `lsetea' function. */ /* #undef HAVE_LSETEA */ /* Define to 1 if you have the `lsetxattr' function. */ /* #undef HAVE_LSETXATTR */ /* Define to 1 if you have the `lstat' function. */ #define HAVE_LSTAT 1 /* Define to 1 if `lstat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_LSTAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the `lutimes' function. */ #define HAVE_LUTIMES 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4HC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZ4_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZMADEC_H */ /* Define to 1 if you have the header file. */ #define HAVE_LZMA_H 1 /* Define to 1 if you have a working `lzma_stream_encoder_mt' function. */ #define HAVE_LZMA_STREAM_ENCODER_MT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZO1X_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_LZO_LZOCONF_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_MD_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_MBEDTLS_PKCS5_H */ /* Define to 1 if you have the `mbrtowc' function. */ #define HAVE_MBRTOWC 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_MEMBERSHIP_H */ /* Define to 1 if you have the `memmove' function. */ #define HAVE_MEMMOVE 1 /* Define to 1 if you have the header file. */ #define HAVE_MEMORY_H 1 /* Define to 1 if you have the `mkdir' function. */ #define HAVE_MKDIR 1 /* Define to 1 if you have the `mkfifo' function. */ #define HAVE_MKFIFO 1 /* Define to 1 if you have the `mknod' function. */ #define HAVE_MKNOD 1 /* Define to 1 if you have the `mkstemp' function. */ #define HAVE_MKSTEMP 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_NDIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_AES_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_HMAC_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_MD5_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_PBKDF2_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_RIPEMD160_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_NETTLE_SHA_H */ /* Define to 1 if you have the `nl_langinfo' function. */ #define HAVE_NL_LANGINFO 1 /* Define to 1 if you have the `openat' function. */ #define HAVE_OPENAT 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_OPENSSL_EVP_H */ /* Define to 1 if you have the header file. */ #define HAVE_PATHS_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PCREPOSIX_H */ /* Define to 1 if you have the `pipe' function. */ #define HAVE_PIPE 1 /* Define to 1 if you have the `PKCS5_PBKDF2_HMAC_SHA1' function. */ /* #undef HAVE_PKCS5_PBKDF2_HMAC_SHA1 */ /* Define to 1 if you have the `poll' function. */ #define HAVE_POLL 1 /* Define to 1 if you have the header file. */ #define HAVE_POLL_H 1 /* Define to 1 if you have the `posix_spawnp' function. */ #define HAVE_POSIX_SPAWNP 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_PROCESS_H */ /* Define to 1 if you have the header file. */ #define HAVE_PTHREAD_H 1 /* Define to 1 if you have the header file. */ #define HAVE_PWD_H 1 /* Define to 1 if you have the `readdir_r' function. */ #define HAVE_READDIR_R 1 /* Define to 1 if you have the `readlink' function. */ #define HAVE_READLINK 1 /* Define to 1 if you have the `readlinkat' function. */ #define HAVE_READLINKAT 1 /* Define to 1 if you have the `readpassphrase' function. */ /* #undef HAVE_READPASSPHRASE */ /* Define to 1 if you have the header file. */ /* #undef HAVE_READPASSPHRASE_H */ /* Define to 1 if you have the header file. */ #define HAVE_REGEX_H 1 /* Define to 1 if you have the `select' function. */ #define HAVE_SELECT 1 /* Define to 1 if you have the `setenv' function. */ #define HAVE_SETENV 1 /* Define to 1 if you have the `setlocale' function. */ #define HAVE_SETLOCALE 1 /* Define to 1 if you have the `sigaction' function. */ #define HAVE_SIGACTION 1 /* Define to 1 if you have the header file. */ #define HAVE_SIGNAL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SPAWN_H 1 /* Define to 1 if you have the `statfs' function. */ #define HAVE_STATFS 1 /* Define to 1 if you have the `statvfs' function. */ #define HAVE_STATVFS 1 /* Define to 1 if `stat' has the bug that it succeeds when given the zero-length file name argument. */ /* #undef HAVE_STAT_EMPTY_STRING_BUG */ /* Define to 1 if you have the header file. */ #define HAVE_STDARG_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STDLIB_H 1 /* Define to 1 if you have the `strchr' function. */ #define HAVE_STRCHR 1 /* Define to 1 if you have the `strnlen' function. */ #define HAVE_STRNLEN 1 /* Define to 1 if you have the `strdup' function. */ #define HAVE_STRDUP 1 /* Define to 1 if you have the `strerror' function. */ #define HAVE_STRERROR 1 /* Define to 1 if you have the `strerror_r' function. */ #define HAVE_STRERROR_R 1 /* Define to 1 if you have the `strftime' function. */ #define HAVE_STRFTIME 1 /* Define to 1 if you have the header file. */ #define HAVE_STRINGS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_STRING_H 1 /* Define to 1 if you have the `strrchr' function. */ #define HAVE_STRRCHR 1 /* Define to 1 if the system has the type `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS */ /* Define to 1 if `f_iosize' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_IOSIZE */ /* Define to 1 if `f_namemax' is a member of `struct statfs'. */ /* #undef HAVE_STRUCT_STATFS_F_NAMEMAX */ /* Define to 1 if `f_iosize' is a member of `struct statvfs'. */ /* #undef HAVE_STRUCT_STATVFS_F_IOSIZE */ /* Define to 1 if `st_birthtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIME */ /* Define to 1 if `st_birthtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_BIRTHTIMESPEC_TV_NSEC */ /* Define to 1 if `st_blksize' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_BLKSIZE 1 /* Define to 1 if `st_flags' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_FLAGS */ /* Define to 1 if `st_mtimespec.tv_nsec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIMESPEC_TV_NSEC */ /* Define to 1 if `st_mtime_n' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_N */ /* Define to 1 if `st_mtime_usec' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_MTIME_USEC */ /* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */ #define HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC 1 /* Define to 1 if `st_umtime' is a member of `struct stat'. */ /* #undef HAVE_STRUCT_STAT_ST_UMTIME */ /* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */ #define HAVE_STRUCT_TM_TM_GMTOFF 1 /* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */ /* #undef HAVE_STRUCT_TM___TM_GMTOFF */ /* Define to 1 if you have `struct vfsconf'. */ /* #undef HAVE_STRUCT_VFSCONF */ /* Define to 1 if you have `struct xvfsconf'. */ /* #undef HAVE_STRUCT_XVFSCONF */ /* Define to 1 if you have the `symlink' function. */ #define HAVE_SYMLINK 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_ACL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_CDEFS_H 1 /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_DIR_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EA_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_EXTATTR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_IOCTL_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MKDEV_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_MOUNT_H */ /* Define to 1 if you have the header file, and it defines `DIR'. */ /* #undef HAVE_SYS_NDIR_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_PARAM_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_POLL_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_QUEUE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_RICHACL_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_SELECT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STATVFS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_STAT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_SYSMACROS_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TIME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_TYPES_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_SYS_UTIME_H */ /* Define to 1 if you have the header file. */ #define HAVE_SYS_UTSNAME_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_VFS_H 1 /* Define to 1 if you have that is POSIX.1 compatible. */ #define HAVE_SYS_WAIT_H 1 /* Define to 1 if you have the header file. */ #define HAVE_SYS_XATTR_H 1 /* Define to 1 if you have the `timegm' function. */ #define HAVE_TIMEGM 1 /* Define to 1 if you have the header file. */ #define HAVE_TIME_H 1 /* Define to 1 if you have the `tzset' function. */ #define HAVE_TZSET 1 /* Define to 1 if you have the header file. */ #define HAVE_UNISTD_H 1 /* Define to 1 if you have the `unlinkat' function. */ #define HAVE_UNLINKAT 1 /* Define to 1 if you have the `unsetenv' function. */ #define HAVE_UNSETENV 1 /* Define to 1 if the system has the type `unsigned long long'. */ /* #undef HAVE_UNSIGNED_LONG_LONG */ /* Define to 1 if the system has the type `unsigned long long int'. */ /* #undef HAVE_UNSIGNED_LONG_LONG_INT */ /* Define to 1 if you have the `utime' function. */ #define HAVE_UTIME 1 /* Define to 1 if you have the `utimensat' function. */ #define HAVE_UTIMENSAT 1 /* Define to 1 if you have the `utimes' function. */ #define HAVE_UTIMES 1 /* Define to 1 if you have the header file. */ #define HAVE_UTIME_H 1 /* Define to 1 if you have the `vfork' function. */ #define HAVE_VFORK 1 /* Define to 1 if you have the `vprintf' function. */ #define HAVE_VPRINTF 1 /* Define to 1 if you have the header file. */ #define HAVE_WCHAR_H 1 /* Define to 1 if the system has the type `wchar_t'. */ #define HAVE_WCHAR_T 1 /* Define to 1 if you have the `wcrtomb' function. */ #define HAVE_WCRTOMB 1 /* Define to 1 if you have the `wcscmp' function. */ #define HAVE_WCSCMP 1 /* Define to 1 if you have the `wcscpy' function. */ #define HAVE_WCSCPY 1 /* Define to 1 if you have the `wcslen' function. */ #define HAVE_WCSLEN 1 /* Define to 1 if you have the `wctomb' function. */ #define HAVE_WCTOMB 1 /* Define to 1 if you have the header file. */ #define HAVE_WCTYPE_H 1 /* Define to 1 if you have the header file. */ /* #undef HAVE_WINCRYPT_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINDOWS_H */ /* Define to 1 if you have the header file. */ /* #undef HAVE_WINIOCTL_H */ /* Define to 1 if you have _CrtSetReportMode in */ /* #undef HAVE__CrtSetReportMode */ /* Define to 1 if you have the `wmemcmp' function. */ #define HAVE_WMEMCMP 1 /* Define to 1 if you have the `wmemcpy' function. */ #define HAVE_WMEMCPY 1 /* Define to 1 if you have the `wmemmove' function. */ #define HAVE_WMEMMOVE 1 /* Define to 1 if you have a working EXT2_IOC_GETFLAGS */ /* #undef HAVE_WORKING_EXT2_IOC_GETFLAGS */ /* Define to 1 if you have a working FS_IOC_GETFLAGS */ #define HAVE_WORKING_FS_IOC_GETFLAGS 1 /* Define to 1 if you have the header file. */ #define HAVE_ZLIB_H 1 /* Define to 1 if you have the header file. */ #define HAVE_ZSTD_H 1 /* Define to 1 if you have the `ctime_s' function. */ /* #undef HAVE_CTIME_S */ /* Define to 1 if you have the `_fseeki64' function. */ /* #undef HAVE__FSEEKI64 */ /* Define to 1 if you have the `_get_timezone' function. */ /* #undef HAVE__GET_TIMEZONE */ /* Define to 1 if you have the `gmtime_s' function. */ /* #undef HAVE_GMTIME_S */ /* Define to 1 if you have the `localtime_s' function. */ /* #undef HAVE_LOCALTIME_S */ /* Define to 1 if you have the `_mkgmtime' function. */ /* #undef HAVE__MKGMTIME */ /* Define as const if the declaration of iconv() needs const. */ #define ICONV_CONST /* Version number of libarchive as a single integer */ #define LIBARCHIVE_VERSION_NUMBER "3007002" /* Version number of libarchive */ #define LIBARCHIVE_VERSION_STRING "3.7.2" /* Define to 1 if `lstat' dereferences a symlink specified with a trailing slash. */ /* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ /* #undef MAJOR_IN_MKDEV */ /* Define to 1 if `major', `minor', and `makedev' are declared in . */ #define MAJOR_IN_SYSMACROS 1 /* Define to 1 if your C compiler doesn't accept -c and -o together. */ /* #undef NO_MINUS_C_MINUS_O */ /* The size of `wchar_t', as computed by sizeof. */ #define SIZEOF_WCHAR_T 4 /* Define to 1 if strerror_r returns char *. */ /* #undef STRERROR_R_CHAR_P */ /* Define to 1 if you can safely include both and . */ /* #undef TIME_WITH_SYS_TIME */ /* * Some platform requires a macro to use extension functions. */ #define SAFE_TO_DEFINE_EXTENSIONS 1 #ifdef SAFE_TO_DEFINE_EXTENSIONS /* Enable extensions on AIX 3, Interix. */ #ifndef _ALL_SOURCE # define _ALL_SOURCE 1 #endif /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # define _GNU_SOURCE 1 #endif /* Enable threading extensions on Solaris. */ #ifndef _POSIX_PTHREAD_SEMANTICS # define _POSIX_PTHREAD_SEMANTICS 1 #endif /* Enable extensions on HP NonStop. */ #ifndef _TANDEM_SOURCE # define _TANDEM_SOURCE 1 #endif /* Enable general extensions on Solaris. */ #ifndef __EXTENSIONS__ # define __EXTENSIONS__ 1 #endif #endif /* SAFE_TO_DEFINE_EXTENSIONS */ /* Version number of package */ #define VERSION "3.7.2" /* Number of bits in a file offset, on hosts where this is settable. */ /* #undef _FILE_OFFSET_BITS */ /* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ /* #undef _LARGEFILE_SOURCE */ /* Define for large files, on AIX-style hosts. */ /* #undef _LARGE_FILES */ /* Define to control Windows SDK version */ #ifndef NTDDI_VERSION /* #undef NTDDI_VERSION */ #endif // NTDDI_VERSION #ifndef _WIN32_WINNT /* #undef _WIN32_WINNT */ #endif // _WIN32_WINNT #ifndef WINVER /* #undef WINVER */ #endif // WINVER /* Define to empty if `const' does not conform to ANSI C. */ /* #undef const */ /* Define to `int' if doesn't define. */ /* #undef gid_t */ /* Define to `unsigned long' if does not define. */ /* #undef id_t */ /* Define to `int' if does not define. */ /* #undef mode_t */ /* Define to `long long' if does not define. */ /* #undef off_t */ /* Define to `int' if doesn't define. */ /* #undef pid_t */ /* Define to `unsigned int' if does not define. */ /* #undef size_t */ /* Define to `int' if does not define. */ /* #undef ssize_t */ /* Define to `int' if doesn't define. */ /* #undef uid_t */ #include #ifndef KWIML_INT_HAVE_INT64_T typedef KWIML_INT_int64_t int64_t; #endif #ifndef KWIML_INT_HAVE_INT32_T typedef KWIML_INT_int32_t int32_t; #endif #ifndef KWIML_INT_HAVE_INT16_T typedef KWIML_INT_int16_t int16_t; #endif #ifndef KWIML_INT_HAVE_INT8_T typedef KWIML_INT_int8_t int8_t; #endif #ifndef KWIML_INT_HAVE_INTPTR_T typedef KWIML_INT_intptr_t intptr_t; #endif #ifndef KWIML_INT_HAVE_UINT64_T typedef KWIML_INT_uint64_t uint64_t; #endif #ifndef KWIML_INT_HAVE_UINT32_T typedef KWIML_INT_uint32_t uint32_t; #endif #ifndef KWIML_INT_HAVE_UINT16_T typedef KWIML_INT_uint16_t uint16_t; #endif #ifndef KWIML_INT_HAVE_UINT8_T typedef KWIML_INT_uint8_t uint8_t; #endif #ifndef KWIML_INT_HAVE_UINTPTR_T typedef KWIML_INT_uintptr_t uintptr_t; #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_STDINT_H # define HAVE_STDINT_H 1 #endif /* Define to 1 if you have the header file. */ #ifdef KWIML_INT_HAVE_INTTYPES_H # define HAVE_INTTYPES_H 1 #endif #define ARCHIVE_SHA512_COMPILE_TEST #define ARCHIVE_CRYPTO_SHA512_LIBMD #define PLATFORM_CONFIG_H "check_crypto_md.h" /*- * Copyright (c) 2003-2007 Tim Kientzle * Copyright (c) 2011 Andres Mejia * Copyright (c) 2011 Michihiro NAKAJIMA * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. * IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include "archive_platform.h" #include "archive.h" #include "archive_digest_private.h" /* In particular, force the configure probe to break if it tries * to test a combination of OpenSSL and libmd. */ #if defined(ARCHIVE_CRYPTO_OPENSSL) && defined(ARCHIVE_CRYPTO_LIBMD) #error Cannot use both OpenSSL and libmd. #endif /* Common in other bcrypt implementations, but missing from VS2008. */ #ifndef BCRYPT_SUCCESS #define BCRYPT_SUCCESS(r) ((NTSTATUS)(r) == STATUS_SUCCESS) #endif /* * Message digest functions for Windows platform. */ #if defined(ARCHIVE_CRYPTO_MD5_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA1_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA256_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA384_WIN) ||\ defined(ARCHIVE_CRYPTO_SHA512_WIN) /* * Initialize a Message digest. */ #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA static int win_crypto_init(Digest_CTX *ctx, const WCHAR *algo) { NTSTATUS status; ctx->valid = 0; status = BCryptOpenAlgorithmProvider(&ctx->hAlg, algo, NULL, 0); if (!BCRYPT_SUCCESS(status)) return (ARCHIVE_FAILED); status = BCryptCreateHash(ctx->hAlg, &ctx->hHash, NULL, 0, NULL, 0, 0); if (!BCRYPT_SUCCESS(status)) { BCryptCloseAlgorithmProvider(ctx->hAlg, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #else static int win_crypto_init(Digest_CTX *ctx, DWORD prov, ALG_ID algId) { ctx->valid = 0; if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_VERIFYCONTEXT)) { if (GetLastError() != (DWORD)NTE_BAD_KEYSET) return (ARCHIVE_FAILED); if (!CryptAcquireContext(&ctx->cryptProv, NULL, NULL, prov, CRYPT_NEWKEYSET)) return (ARCHIVE_FAILED); } if (!CryptCreateHash(ctx->cryptProv, algId, 0, 0, &ctx->hash)) { CryptReleaseContext(ctx->cryptProv, 0); return (ARCHIVE_FAILED); } ctx->valid = 1; return (ARCHIVE_OK); } #endif /* * Update a Message digest. */ static int win_crypto_Update(Digest_CTX *ctx, const unsigned char *buf, size_t len) { if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptHashData(ctx->hHash, (PUCHAR)(uintptr_t)buf, (ULONG)len, 0); #else CryptHashData(ctx->hash, (unsigned char *)(uintptr_t)buf, (DWORD)len, 0); #endif return (ARCHIVE_OK); } static int win_crypto_Final(unsigned char *buf, size_t bufsize, Digest_CTX *ctx) { #if !(defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA) DWORD siglen = (DWORD)bufsize; #endif if (!ctx->valid) return (ARCHIVE_FAILED); #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA BCryptFinishHash(ctx->hHash, buf, (ULONG)bufsize, 0); BCryptDestroyHash(ctx->hHash); BCryptCloseAlgorithmProvider(ctx->hAlg, 0); #else CryptGetHashParam(ctx->hash, HP_HASHVAL, buf, &siglen, 0); CryptDestroyHash(ctx->hash); CryptReleaseContext(ctx->cryptProv, 0); #endif ctx->valid = 0; return (ARCHIVE_OK); } #endif /* defined(ARCHIVE_CRYPTO_*_WIN) */ /* MD5 implementations */ #if defined(ARCHIVE_CRYPTO_MD5_LIBC) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBMD) static int __archive_md5init(archive_md5_ctx *ctx) { MD5Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { MD5Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { MD5Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_LIBSYSTEM) static int __archive_md5init(archive_md5_ctx *ctx) { CC_MD5_Init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { CC_MD5_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { CC_MD5_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_MBEDTLS) static int __archive_md5init(archive_md5_ctx *ctx) { mbedtls_md5_init(ctx); if (mbedtls_md5_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_md5_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { if (mbedtls_md5_finish_ret(ctx, md) == 0) { mbedtls_md5_free(ctx); return (ARCHIVE_OK); } else { mbedtls_md5_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_MD5_NETTLE) static int __archive_md5init(archive_md5_ctx *ctx) { md5_init(ctx); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { md5_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { md5_digest(ctx, MD5_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_OPENSSL) static int __archive_md5init(archive_md5_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_md5())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_MD5_WIN) static int __archive_md5init(archive_md5_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_MD5_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_MD5)); #endif } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { return (win_crypto_Final(md, 16, ctx)); } #else static int __archive_md5init(archive_md5_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5update(archive_md5_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_md5final(archive_md5_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* RIPEMD160 implementations */ #if defined(ARCHIVE_CRYPTO_RMD160_LIBC) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RMD160Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RMD160Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RMD160Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_LIBMD) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { RIPEMD160_Init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { RIPEMD160_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { RIPEMD160_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_MBEDTLS) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { mbedtls_ripemd160_init(ctx); if (mbedtls_ripemd160_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_ripemd160_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (mbedtls_ripemd160_finish_ret(ctx, md) == 0) { mbedtls_ripemd160_free(ctx); return (ARCHIVE_OK); } else { mbedtls_ripemd160_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_RMD160_NETTLE) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { ripemd160_init(ctx); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { ripemd160_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { ripemd160_digest(ctx, RIPEMD160_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_RMD160_OPENSSL) static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_ripemd160())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #else static int __archive_ripemd160init(archive_rmd160_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160update(archive_rmd160_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_ripemd160final(archive_rmd160_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA1 implementations */ #if defined(ARCHIVE_CRYPTO_SHA1_LIBC) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBMD) static int __archive_sha1init(archive_sha1_ctx *ctx) { SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_LIBSYSTEM) static int __archive_sha1init(archive_sha1_ctx *ctx) { CC_SHA1_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { CC_SHA1_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { CC_SHA1_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_MBEDTLS) static int __archive_sha1init(archive_sha1_ctx *ctx) { mbedtls_sha1_init(ctx); if (mbedtls_sha1_starts_ret(ctx) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha1_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { if (mbedtls_sha1_finish_ret(ctx, md) == 0) { mbedtls_sha1_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha1_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA1_NETTLE) static int __archive_sha1init(archive_sha1_ctx *ctx) { sha1_init(ctx); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { sha1_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { sha1_digest(ctx, SHA1_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_OPENSSL) static int __archive_sha1init(archive_sha1_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha1())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { /* HACK: archive_write_set_format_xar.c is finalizing empty contexts, so * this is meant to cope with that. Real fix is probably to fix * archive_write_set_format_xar.c */ if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA1_WIN) static int __archive_sha1init(archive_sha1_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA1_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_FULL, CALG_SHA1)); #endif } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { return (win_crypto_Final(md, 20, ctx)); } #else static int __archive_sha1init(archive_sha1_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1update(archive_sha1_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha1final(archive_sha1_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA256 implementations */ #if defined(ARCHIVE_CRYPTO_SHA256_LIBC) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC2) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBC3) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBMD) static int __archive_sha256init(archive_sha256_ctx *ctx) { SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_LIBSYSTEM) static int __archive_sha256init(archive_sha256_ctx *ctx) { CC_SHA256_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { CC_SHA256_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { CC_SHA256_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_MBEDTLS) static int __archive_sha256init(archive_sha256_ctx *ctx) { mbedtls_sha256_init(ctx); if (mbedtls_sha256_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha256_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (mbedtls_sha256_finish_ret(ctx, md) == 0) { mbedtls_sha256_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha256_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA256_NETTLE) static int __archive_sha256init(archive_sha256_ctx *ctx) { sha256_init(ctx); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { sha256_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { sha256_digest(ctx, SHA256_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_OPENSSL) static int __archive_sha256init(archive_sha256_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha256())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA256_WIN) static int __archive_sha256init(archive_sha256_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA256_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_256)); #endif } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { return (win_crypto_Final(md, 32, ctx)); } #else static int __archive_sha256init(archive_sha256_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256update(archive_sha256_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha256final(archive_sha256_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA384 implementations */ #if defined(ARCHIVE_CRYPTO_SHA384_LIBC) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC2) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBC3) static int __archive_sha384init(archive_sha384_ctx *ctx) { SHA384Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { SHA384Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { SHA384Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_LIBSYSTEM) static int __archive_sha384init(archive_sha384_ctx *ctx) { CC_SHA384_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { CC_SHA384_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { CC_SHA384_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_MBEDTLS) static int __archive_sha384init(archive_sha384_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 1) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA384_NETTLE) static int __archive_sha384init(archive_sha384_ctx *ctx) { sha384_init(ctx); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { sha384_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { sha384_digest(ctx, SHA384_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_OPENSSL) static int __archive_sha384init(archive_sha384_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha384())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA384_WIN) static int __archive_sha384init(archive_sha384_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA384_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_384)); #endif } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { return (win_crypto_Final(md, 48, ctx)); } #else static int __archive_sha384init(archive_sha384_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384update(archive_sha384_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha384final(archive_sha384_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* SHA512 implementations */ #if defined(ARCHIVE_CRYPTO_SHA512_LIBC) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC2) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBC3) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBMD) static int __archive_sha512init(archive_sha512_ctx *ctx) { SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_LIBSYSTEM) static int __archive_sha512init(archive_sha512_ctx *ctx) { CC_SHA512_Init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { CC_SHA512_Update(ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { CC_SHA512_Final(md, ctx); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_MBEDTLS) static int __archive_sha512init(archive_sha512_ctx *ctx) { mbedtls_sha512_init(ctx); if (mbedtls_sha512_starts_ret(ctx, 0) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { if (mbedtls_sha512_update_ret(ctx, indata, insize) == 0) return (ARCHIVE_OK); else return (ARCHIVE_FATAL); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (mbedtls_sha512_finish_ret(ctx, md) == 0) { mbedtls_sha512_free(ctx); return (ARCHIVE_OK); } else { mbedtls_sha512_free(ctx); return (ARCHIVE_FATAL); } } #elif defined(ARCHIVE_CRYPTO_SHA512_NETTLE) static int __archive_sha512init(archive_sha512_ctx *ctx) { sha512_init(ctx); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { sha512_update(ctx, insize, indata); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { sha512_digest(ctx, SHA512_DIGEST_SIZE, md); return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_OPENSSL) static int __archive_sha512init(archive_sha512_ctx *ctx) { if ((*ctx = EVP_MD_CTX_new()) == NULL) return (ARCHIVE_FAILED); if (!EVP_DigestInit(*ctx, EVP_sha512())) return (ARCHIVE_FAILED); return (ARCHIVE_OK); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { EVP_DigestUpdate(*ctx, indata, insize); return (ARCHIVE_OK); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { if (*ctx) { EVP_DigestFinal(*ctx, md, NULL); EVP_MD_CTX_free(*ctx); *ctx = NULL; } return (ARCHIVE_OK); } #elif defined(ARCHIVE_CRYPTO_SHA512_WIN) static int __archive_sha512init(archive_sha512_ctx *ctx) { #if defined(HAVE_BCRYPT_H) && _WIN32_WINNT >= _WIN32_WINNT_VISTA return (win_crypto_init(ctx, BCRYPT_SHA512_ALGORITHM)); #else return (win_crypto_init(ctx, PROV_RSA_AES, CALG_SHA_512)); #endif } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { return (win_crypto_Update(ctx, indata, insize)); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { return (win_crypto_Final(md, 64, ctx)); } #else static int __archive_sha512init(archive_sha512_ctx *ctx) { (void)ctx; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512update(archive_sha512_ctx *ctx, const void *indata, size_t insize) { (void)ctx; /* UNUSED */ (void)indata; /* UNUSED */ (void)insize; /* UNUSED */ return (ARCHIVE_FAILED); } static int __archive_sha512final(archive_sha512_ctx *ctx, void *md) { (void)ctx; /* UNUSED */ (void)md; /* UNUSED */ return (ARCHIVE_FAILED); } #endif /* NOTE: Message Digest functions are set based on availability and by the * following order of preference. * 1. libc * 2. libc2 * 3. libc3 * 4. libSystem * 5. Nettle * 6. OpenSSL * 7. libmd * 8. Windows API */ const struct archive_digest __archive_digest = { /* MD5 */ &__archive_md5init, &__archive_md5update, &__archive_md5final, /* RIPEMD160 */ &__archive_ripemd160init, &__archive_ripemd160update, &__archive_ripemd160final, /* SHA1 */ &__archive_sha1init, &__archive_sha1update, &__archive_sha1final, /* SHA256 */ &__archive_sha256init, &__archive_sha256update, &__archive_sha256final, /* SHA384 */ &__archive_sha384init, &__archive_sha384update, &__archive_sha384final, /* SHA512 */ &__archive_sha512init, &__archive_sha512update, &__archive_sha512final }; int main(int argc, char **argv) { archive_sha512_ctx ctx; archive_sha512_init(&ctx); archive_sha512_update(&ctx, *argv, argc); archive_sha512_final(&ctx, NULL); return 0; }