aboutsummaryrefslogtreecommitdiffstats
path: root/wsutil/CMakeLists.txt
AgeCommit message (Collapse)AuthorFilesLines
2021-07-26Move wmem to wsutilJoão Valverde1-0/+3
This allows wmem to be used from other libraries, namely wsutil. It is often the case that a funtion exists in wsutil and cannot be used with a wmem scope, requiring some code duplication or extra memory allocations, or vice-versa, code in epan cannot be moved to wsutil because it has a wmem dependency. To this end wmem is moved to wsutil. Scope management remains part of epan because those scope semantics are specific to dissection.
2021-07-14CMake: Adjust wsutil includes and linking.Gerald Combs1-14/+15
Mark wsutil's includes SYSTEM PRIVATE. This exposed a lot of targets that were indirectly picking up include paths via the wsutil target, so add direct includes where needed. The G.722 and G.726 codecs were implicilty including tiffio.h; find it explicitly instead. Mark some of wsutil's libraries PRIVATE, but leave commonly-used ones PUBLIC. Ping #17477.
2021-07-11wsutil: Start adding a test suiteJoão Valverde1-0/+11
2021-06-25wsutil: Rewrite ws_assert() to minimize dependenciesJoão Valverde1-0/+1
This includes as little as possible in the assertion header, so that it can be included globally in every file without pulling any unwanted definitions. In particular pulling stdlib.h is avoided because that can have side effects if it wants to include non-portable extensions. It is possible to have side-effects from include glib.h too, for example because of G_LOG_DOMAIN. These side-effects are usually avoidable with careful ordering of pre-processor directives but with multiple levels of indirections it can be hard to track. Better to make it robust to these kinds of failures in the first place. Also integrate with our logger for a cohesive experience (but keep it a private dependency).
2021-06-16wsutil: add a header that defines some "round to power of 2" macros.Guy Harris1-0/+1
Add macros to round to multiples of 2, 4, 8, 16, and 32. Use them instead of independently defined macros. (We don't define a general "round to a power of 2" macro to avoid the risk of somebody passing something other than a power of 2 to it.)
2021-06-06wslog: Include function name in ws_debug() output formatJoão Valverde1-0/+1
The GLib documentation says G_STRLOC includes the function name but that is a lie[1]. Change ws_debug() to not use G_STRLOC and receive __FILE__, __LINE__ and G_STRFUNC separately instead. [1]https://bugzilla.gnome.org/show_bug.cgi?id=69097
2021-05-24Add ws_debug() and use itJoão Valverde1-1/+1
Replace most instances of ws_debug_printf() except in epan/dissectors and dissector plugins. Some replacements use printf(), some use ws_debug(), and some were removed because they were dead or judged to be temporary.
2021-05-19Disable assertions for release buildsJoão Valverde1-0/+1
Currently our build generates very many warnings if G_DISABLE_ASSERT is defined. Add ws_assert() and ws_assert_not_reached() to incrementally replace existing assertions and then disable them using WS_DISABLE_ASSERT. Assertions are disabled with CMake build type Release. By default the build type is RelWithDebInfo so the current behaviour of enabling assertions by default is (for now) preserved. Add some notes to README.Developer.
2021-04-10CMake: Add ENABLE_VLD option for MSVCTomasz Moń1-0/+3
Calling cmake with -DENABLE_VLD=ON when building with Visual Studio, results in debug configuration being linked to Visual Leak Detector. By default, Visual Leak Detector outputs the leak summary to Visual Studio debug window. When ENABLE_VLD is active, VLD is linked to all wireshark libraries and executables.
2021-03-25wsutils: add local implementation of g_memdup2.Dario Lombardo1-0/+2
g_memdup() was deprecated and replaced with g_memdup2() in GLib 2.68, we provide our own copy of g_memdup2() for older GLib versions.
2021-03-04wsutil: rename frequency-utils.[ch] to 802_11-utils.[ch].Guy Harris1-2/+2
It's 802.11-specific, and may include non-frequency/channel-related items in the future.
2021-03-01CMake: Use CheckAPI's abort/termoutput with dissectors onlyJoão Valverde1-1/+0
I believe this was the original intention, to use these API restricitons with dissectors only (not that I necessarily agree with that policy either), and through copy-paste and lack of clear guidelines it spread to other parts of the build. Rename the checkAPI groups to make it very clear that this is dissector-only. This doesn't mean, of course, that good programming practices shouldn't be followed everywhere. In particular assertions need to be used properly. Don't use them to catch runtime errors or validate input data. This commit will be followed by another removing the various ugly hacks people have been using to get around the checkAPI hammer.
2021-02-06Avoid exposing HAVE_PLUGINS in the public APIJoão Valverde1-1/+0
Instead *_register_plugin() is turned into a noop (with a warning). The test suit is failing with ENABLE_PLUGINS=Off (it was already failing before and this patch didn't affect that). Closes #17202.
2020-10-19CMake: Replace checking with a status messageJoão Valverde1-2/+5
2020-09-05Tools: Clean up checkAPI and add ui/qt.Gerald Combs1-1/+1
Remove the --check-addtext and --build flags. They were used for checkAddTextCalls, which was removed in e2735ecfdd. Add the sources in ui/qt except for qcustomplot.{cpp,h}. Fix issues in main.cpp, rtp_audio_stream.cpp, and wireshark_zip_helper.cpp. Rename "index"es in packet-usb-hid.c.
2020-01-21Put various epoch time deltas into wsutil/epochs.h.Guy Harris1-0/+1
There are some deltas between the UN*X epoch and other epochs that are used in a number of places; put them into a header. Change-Id: Ia2d9d69b9d91352d730d97d9e4897518635b4861 Reviewed-on: https://code.wireshark.org/review/35895 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
2019-10-10Revert "CMake: Don't install HTML manuals twice"João Valverde1-1/+0
This reverts commit f1285fcf061669702ca1accd7b2c50ebc8198993. NSIS package is broken with this commit. Change-Id: Ief22a308edad188fa2d5fab79355f19493359fa6 Reviewed-on: https://code.wireshark.org/review/34758 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2019-10-09CMake: Don't install HTML manuals twiceJoão Valverde1-0/+1
HTML docs are installed to both $docdir and $pkgdatadir. Fix that to install to $docdir only. Change-Id: I115158585b6df9170d9a01249adbc8548df91f14 Reviewed-on: https://code.wireshark.org/review/34640 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2019-08-02wsutil: link with -lm.Dario Lombardo1-0/+1
Required because json_dumper.c uses isfinite, fixes FreeBSD builds. Error: /usr/lib/libpcap.so && : /usr/local/bin/ld: run/libwsutil.so.0.0.0: undefined reference to `__isfinite' collect2: error: ld returned 1 exit status ninja: build stopped: subcommand failed. Change-Id: I6376250fa2037eab0bb2ad63382b8f3bb3560215 Reviewed-on: https://code.wireshark.org/review/34138 Reviewed-by: Dario Lombardo <lomato@gmail.com> Petri-Dish: Dario Lombardo <lomato@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Roland Knall <rknall@gmail.com>
2019-07-29USBLL: Verify Token/Split packets CRC-5Tomasz Moń1-0/+2
Ping-Bug: 15908 Change-Id: I25aaf772d3d0af2f459a1ad78d8253344ed13f05 Reviewed-on: https://code.wireshark.org/review/34025 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-07-26HTTPS (almost) everywhere.Guy Harris1-1/+1
Change all wireshark.org URLs to use https. Fix some broken links while we're at it. Change-Id: I161bf8eeca43b8027605acea666032da86f5ea1c Reviewed-on: https://code.wireshark.org/review/34089 Reviewed-by: Guy Harris <guy@alum.mit.edu>
2019-07-21Remove ABI compliance checker code.João Valverde1-14/+0
It's broken, unmaintained, poorly implemented and obsoleted by saner debug-info methods. Note: To do the compliance check properly would require much more extensive work to clearly define public and private interfaces (without manual bookeeping of files or symbols either, of course, because who would want that...). Change-Id: Ib801f3c152ca2369f95ca1f4af4d37cd8cc7c47a Reviewed-on: https://code.wireshark.org/review/33928 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: João Valverde <j@v6e.pt>
2019-06-11Kill libwscodecs plugin library, just use pluginsJoão Valverde1-0/+2
Change-Id: I085d04840acb53b0b7681787429a2b4e10547cd5 Reviewed-on: https://code.wireshark.org/review/33068 Reviewed-by: Anders Broman <a.broman58@gmail.com>
2019-05-03CMake: Remove wsutil pcap dependencyJoão Valverde1-1/+0
Change-Id: Ic5a3653cb8bcc33e0be108c8b201567e7090f9f5 Reviewed-on: https://code.wireshark.org/review/33043 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: João Valverde <j@v6e.pt>
2019-05-03CMake: Add libpcap imported library targetJoão Valverde1-2/+1
Change-Id: I5326b87784817fb353329e2d686fe0515c32f6cb Reviewed-on: https://code.wireshark.org/review/33038 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl> Reviewed-by: João Valverde <j@v6e.pt>
2019-05-02Move the Winsock initialization and cleanup to wsutil routines.Guy Harris1-0/+1
Those routines exist on both Windows and UN*X, but they don't do anything on UN*X (they could if it were ever necessary). That eliminates some #ifdefs, and also means that the gory details of initializing Winsock, including the Winsock version being requested, are buried in one routine. The initialization routine returns NULL on success and a pointer to a g_malloc()ated error message on failure; report the error to the user, along with a "report this to the Wireshark developers" suggestion. That means including wsutil/socket.h, which obviates the need to include some headers for socket APIs, as it includes them for you. Change-Id: I9327bbf25effbb441e4217edc5354a4d5ab07186 Reviewed-on: https://code.wireshark.org/review/33045 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
2019-05-01Windows: Modernize our WSAStartup usage.Gerald Combs1-1/+1
Make sure we link each application that calls WSAStartup with ws2_32.lib. Pass version 2.2 to WSAStartup. Wikipedia says it was introduced in 1996, so we should be OK. Ping-Bug: 15711 Change-Id: I431839e930e7c646669af7373789640b5180ec28 Reviewed-on: https://code.wireshark.org/review/33033 Petri-Dish: Gerald Combs <gerald@wireshark.org> Reviewed-by: Tomasz Moń <desowin@gmail.com> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org>
2019-03-24Add routines to return "Please report this as a bug" message strings.Guy Harris1-0/+2
(Routines, so that if we internationalize strings not in the Qt code, this can return the appropriately translated version.) Change-Id: I1c169d79acde2f0545af7af2a737883d58f52509 Reviewed-on: https://code.wireshark.org/review/32549 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
2019-02-02CMake: Fix DOCDIR on UnixJoão Valverde1-1/+1
User guides are installed to doc/Wireshark. Use doc/wireshark instead. Remove leftover variable CPACK_PACKAGE_NAME. Change-Id: I9a1d6bdc7d8f0b48c61e43679285d5ba83904a63 Reviewed-on: https://code.wireshark.org/review/31851 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2019-01-22CMake: Set a direct rpath for librariesJoão Valverde1-0/+1
Instead of using "$ORIGIN/../lib" just use "$ORIGIN". Also be explicit in configuring the relative RPATH. We don't want to assume a default relative path, in case more targets are addded, out of caution. Change-Id: I3b7f5e8de7be8bb30aca3b433212113d876c4163 Reviewed-on: https://code.wireshark.org/review/31647 Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-01-20CMake: Replace PACKAGELIST magicJoão Valverde1-0/+8
This is more explicit and easier to read with slightly better locality while using less code. Also less awkward when the package doesn't fit the narrow package list expectations. The ws_find_package() macro doesn't include all the status messages. The choice was to rely on standard find_package() and feature_summary() output and be less verbose. Avoid polluting the CLI build interface. Per target include paths and macro definitions are preferred. Because this patch intentionally removes the global CMAKE_*_FLAGS and include_directories() usage in favor of target properties, some untested build configurations may inadvertently break because of missing ${PACKAGE}_INCLUDE_DIRS or ${PACKAGE}_DEFINITIONS. This required a manual review of dependencies that might have been incomplete. ${PACKAGE_VAR}_LINK_FLAGS seems to be unused. Changing the CMake Qt code to use more modern CMake component syntax is left as future work. Change-Id: I3ed75252189a6e05a23ed6e619088f519cd7ed78 Reviewed-on: https://code.wireshark.org/review/31496 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2019-01-01Move some command-line-oriented routines from wsutil to ui.Guy Harris1-4/+0
cmdarg_err() is for reporting errors for command-line programs and command-line errors in GUI programs; it's not something for any of the Wireshark libraries to use. The various routines for parsing numerical command-line arguments are not for general use, they're just for use when parsing arguments. Change-Id: I100bd4a55ab8ee4497f41d9651b0c5670e6c1e7f Reviewed-on: https://code.wireshark.org/review/31281 Petri-Dish: Guy Harris <guy@alum.mit.edu> Tested-by: Petri Dish Buildbot Reviewed-by: Guy Harris <guy@alum.mit.edu>
2018-12-22json_dumper: add debugging print as corruption checkPeter Wu1-1/+1
Print warnings to help with debugging. Add Jakub (author of json_puts_string). Change-Id: I8bf039afc21357e97accb2a9abf9378735af12eb Reviewed-on: https://code.wireshark.org/review/31041 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Dario Lombardo <lomato@gmail.com> Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2018-12-20CMake: Don't bundle our libraries at compile time.Gerald Combs1-14/+0
Setting LIBRARY_OUTPUT_DIRECTORY to Wireshark.app/Contents/Frameworks for each of our libraries ends up installing a fully versioned .dylib along with soversion and unversioned symlinks, which is more than we want and which wastes disk space when osx-app.sh dsymifies our libraries. Leave LIBRARY_OUTPUT_DIRECTORY unset and depend on osx-app.sh to copy our libraries into place. Bug: 15361 Change-Id: If0fbaa796b4be806e2aa13887e511a330fe55df5 Reviewed-on: https://code.wireshark.org/review/31139 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot Reviewed-by: Gerald Combs <gerald@wireshark.org>
2018-12-04wsutil: Rename DATAFILE_DIR variableJoão Valverde1-1/+1
Rename DATAFILE_DIR to be closer to CMake and avoid mixing with the staging dir path variable of the same name. Change-Id: I7b1e02152d8bde14cca210fbfae4acbdba7d78d7 Reviewed-on: https://code.wireshark.org/review/30916 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-12-03CMake: Simplify CMAKE_INSTALL_DATADIR usageJoão Valverde1-1/+1
Change-Id: I414aa551b8e9315a654f4da62b882e787d4f6d53 Reviewed-on: https://code.wireshark.org/review/30904 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-11-29CMake: Fix some transitive link dependenciesJoão Valverde1-16/+14
libwireshark and libwiretap have their INTERFACE link dependencies changed to the required set. libwsutil keeps a default public visibility. Further work may show some unneeded link requirements. The executable dependencies are adjusted accordingly. Change-Id: I3a534f72403819cac136ae47a3d80acee76e0fb3 Reviewed-on: https://code.wireshark.org/review/30815 Reviewed-by: João Valverde <j@v6e.pt>
2018-11-26CMake: Fix runtime destination for our librariesJoão Valverde1-1/+1
Ping-Bug: 15301 Change-Id: I7d461c696ce096b7687f71277a33295eb43ff8fc Reviewed-on: https://code.wireshark.org/review/30792 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-11-25Remove a stale FIXMEJoão Valverde1-0/+1
While at it prefer to use add_definitions() instead of config.h. This puts all definitions in the same place and limits the scope to the respective wsutil API. Change-Id: Idc30914220b876865e0ae47709e6f17eb9b0fc2c Reviewed-on: https://code.wireshark.org/review/30782 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-11-24Install development headers on all platformsJoão Valverde1-5/+3
Install headers to support plugins development on Windows. Change-Id: I3161bd2f730edf62ab44fee6ce4fedbb9aee0d31 Reviewed-on: https://code.wireshark.org/review/30776 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-11-20Drop JSON-GLib completelyPeter Wu1-4/+0
JSON-GLib was added in v2.9.0rc0-201-g511c2e166a, but is no longer necessary since we have a home-grown JSON dumper (wsutil/json_dumper.h). Remove the remaining traces and additionally remove GObject from FindGLIB2.cmake since it was only added for JSON-GLib. Change-Id: If9dfd2c60cec130f98109d100bdb6618bde06ba0 Reviewed-on: https://code.wireshark.org/review/30733 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-11-20Replace JSON-GLib by custom JSON dumper libraryPeter Wu1-0/+2
The (optional) JSON-GLib library adds dependencies on GObject, GIO. For statically linked oss-fuzz builds it also adds libffi and more. To avoid these dependencies, replace JSON-GLib by some custom code. This allows `tshark -G elastic-mapping` to be enabled by default without extra deps. API design goals of the new JSON dumper library: - Small interface without a lot of abstraction. - Avoid memory allocations if possible (currently none, but maybe json_puts_string will be replaced to improve UTF-8 support). - Do not implement parsing, this is currently handled by jsmn. Methods to open/close array/objects and to set members are inspired by the JsonGlib interface. The interfaces to write values is inspired by the sharkd code (json_puts_string is also borrowed from that). The only observed differences in the tshark output: - JSON-GLib ignores duplicates, json_dumper does not and may produce duplicates and currently print two "ip.opt.sec_prot_auth_unassigned". - JSON-GLib adds a space before a colon (unimportant formatting detail). - (Not observed, but UTF-8 strings will be wrong like bug 14948.) A test was added to catch changes in the tshark output. I also fuzzed json_dumper with libFuzzer + UBSAN/ASAN and fixed an off-by-one error. Change-Id: I0c85b18777b04d1e0f613a3d59935ec59be87ff4 Link: https://www.wireshark.org/lists/wireshark-dev/201811/msg00052.html Reviewed-on: https://code.wireshark.org/review/30732 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-10-03wsutil: get_datafile_dir: avoid hard-coded build directoryPeter Wu1-7/+0
With autotools, it was possible that the binary was located in a .libs directory, but with CMake the executables directory and data directory are the same (except macOS with app bundles). Use this property to get rid of the hard-coded build directory. Helps with reproducible builds. Bug: 15163 Change-Id: I5b8807a03783a9919fba7b0cc83f5c162caa8052 Reviewed-on: https://code.wireshark.org/review/29984 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-09-19Try to discourage the use of APIs via counting.Gerald Combs1-1/+1
Add the ability to specify maximum function counts for each group to checkAPIs. Add maximum counts for the "termoutput" and "abort" groups where needed. Show summaries in various checkAPI targets. Switch uses of ws_g_warning back to plain g_warning. Change-Id: I5cbddc8c671729e424eed8551f69116d16491976 Reviewed-on: https://code.wireshark.org/review/29721 Petri-Dish: Peter Wu <peter@lekensteyn.nl> Tested-by: Petri Dish Buildbot Reviewed-by: Peter Wu <peter@lekensteyn.nl>
2018-09-03epan: Use g_base64_decode_inplace()Stig Bjørlykke1-2/+0
Replace ws_base64_decode_inplace() with g_base64_decode_inplace() or g_base64_decode(), which was introduced in glib 2.12. The only observed difference is a need for zero-terminate the buffer after decoding. Change-Id: Ia102d0d8e9bec575ffeddf448191a3f6de9fb1ed Reviewed-on: https://code.wireshark.org/review/29382 Petri-Dish: Stig Bjørlykke <stig@bjorlykke.org> Tested-by: Petri Dish Buildbot Reviewed-by: Anders Broman <a.broman58@gmail.com>
2018-08-25CMake: Modernize config-file package supportJoão Valverde1-0/+1
A CMake config-file package provides support for downstreams using CMake and Wireshark libraries to easily configure the libwireshark dependency with: find_package(Wireshark CONFIG [REQUIRED]) target_link_libraries(foo epan) The FindWireshark.cmake file is no longer needed. See cmake-package(7) for more details on CMake's package system. Change-Id: Ie8af1d44417a99dd08d37959f7b2ffca88572ec2 Reviewed-on: https://code.wireshark.org/review/29208 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-08-23CMake: Clean up and homogenize plugin dir configurationJoão Valverde1-3/+2
Change-Id: If43c7b124afdf6471164675f8a0c55a76e998ea1 Reviewed-on: https://code.wireshark.org/review/29254 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-08-22Revert "CMake: Clean up plugin dirs"João Valverde1-2/+1
Broke system (global) binary plugin path. This reverts commit 450ff674a6e84c3abebff76a470d72114083f27f. Change-Id: I5353d2f3acf4450aed243040ef71425a71542a08 Reviewed-on: https://code.wireshark.org/review/29240 Reviewed-by: João Valverde <j@v6e.pt>
2018-08-21CMake: Clean up plugin dirsJoão Valverde1-1/+2
Change-Id: Ie41366205db19b8a9714ad5259c3f958e1e9ee95 Reviewed-on: https://code.wireshark.org/review/29233 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot Reviewed-by: João Valverde <j@v6e.pt>
2018-08-08wsutil: Add Curve25519 ECDH (X25519) using GcryptPeter Wu1-0/+2
The WireGuard dissector will need X25519 to enable decryption, add a Gcrypt implementation that implements the NaCl/Sodium interface. While inspired by the MPI example in t-cv25519.c, note subtle but important correctness/interoperability fixes: add a check for infinity (gcry_mpi_ec_get_affine) and handle short values from gcry_mpi_print. The last issue is ugly, perhaps the high level API (gcry_pk_decrypt) should be used instead (which < 2% slower than this MPI implementation). (Both issues were found through fuzzing.) As for alternative options, Sodium is superior but would be a new dependency. For some older performance and usability notes (comparing crypto_scalarmult_curve25519_base (note "_base") against others), see https://lists.gnupg.org/pipermail/gcrypt-devel/2018-July/004532.html Performance comparison on Ubuntu 18.04 (i7-3770) between Sodium 1.0.16 against Gcrypt 1.8.3 and Gcrypt 86e5e06a (git master, future 1.9.x) by computing 65536 times X25519(1, 8) via crypto_scalarmult_curve25519: Sodium (sandy2x): 1.4x faster than ref10 Sodium (ref10): 1 (baseline) Gcrypt (git): 5x slower than ref10, 7x slower than sandy2x Gcrypt (1.8.3): 17x ref10, 24x sandy2x (took 65 seconds) Change-Id: Ia54e73cc3cc469a6697554729aff4edd19f55630 Ping-Bug: 15011 Reviewed-on: https://code.wireshark.org/review/28987 Reviewed-by: Anders Broman <a.broman58@gmail.com>