NetworkManager/src/libnm-client-aux-extern
Thomas Haller 6e96d71731
all: use nm_random_*() instead of g_random_*()
g_random_*() is based on GRand, which is not a CSPRNG. Instead, rely on
kernel to give us good random numbers, which is what nm_random_*() does.

Note that nm_random_*() calls getrandom() (or reads /dev/urandom), which
most likely is slower than GRand. It doesn't matter for our uses though.

It is cumbersome to review all uses of g_rand_*() whether their usage of
a non-cryptographically secure generator is appropriate. Instead, just
always use an appropriate function, thereby avoiding this question. Even
glib documentation refers to reading "/dev/urandom" as alternative. Which
is what nm_random_*() does. These days, it seems unnecessary to not use
the best random generator available, unless it's not fast enough or you
need a stable/seedable stream of random numbers.

In particular in nmcli, we used g_random_int_range() to generate
passwords. That is not appropriate. Sure, it's *only* for the hotspot,
but still.
2023-01-30 10:51:13 +01:00
..
tests format: reformat source tree with clang-format 13.0 2021-11-29 09:31:09 +00:00
meson.build build/meson: cleanup libnm-client-aux-extern 2021-02-28 18:56:08 +01:00
nm-default-client.h build: move "libnm/" to "src/" and split it 2021-02-24 12:48:37 +01:00
nm-libnm-aux.c all: use nm_random_*() instead of g_random_*() 2023-01-30 10:51:13 +01:00
nm-libnm-aux.h libnm: add internal nmc_client_has_{version_info_v,version_info_capability,capability}() helper 2022-12-14 17:33:56 +01:00
README.md all: add some README.md files describing the purpose of our sources 2021-08-19 17:51:11 +02:00

libnm-client-aux-extern

libnm-client-aux-extern is a static library that:

  • uses the public parts of "libnm"
  • that can also be statically linked into other users of libnm.

Basically, it is a static library with utility functions that extends libnm.

That means:

  • you can use it everywhere where you dynamically link with libnm.

Also, since libnm-client-aux-extern itself only uses public (stable) API of libnm, you theoretically can copy the sources into your own source tree.

This makes it very similar in purpose to ../libnmc-base/. The difference might be that this one is smaller and that you could easier copy+paste this to a libnm application outside this source tree.