mirror of
https://gitlab.freedesktop.org/NetworkManager/NetworkManager.git
synced 2026-01-04 14:30:18 +01:00
libnm,glib-aux: move nm_crypto_md5_hash() to "libnm-glib-aux"
This only uses glib's md5 code and has no dependency on our crypto libraries (gnutls, nss). Move it to "libnm-glib-aux" so it can be freely used. Maybe it deserves a better name, but "nm-shared-utils.h" is a heap of various utility functions, it's hard to name them well.
This commit is contained in:
parent
73cfc4097a
commit
c5985db7cf
4 changed files with 51 additions and 47 deletions
|
|
@ -914,46 +914,6 @@ nm_crypto_verify_private_key(const char *filename,
|
|||
error);
|
||||
}
|
||||
|
||||
void
|
||||
nm_crypto_md5_hash(const guint8 *salt,
|
||||
gsize salt_len,
|
||||
const guint8 *password,
|
||||
gsize password_len,
|
||||
guint8 * buffer,
|
||||
gsize buflen)
|
||||
{
|
||||
nm_auto_free_checksum GChecksum * ctx = NULL;
|
||||
nm_auto_clear_static_secret_ptr const NMSecretPtr digest =
|
||||
NM_SECRET_PTR_STATIC(NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
gsize bufidx = 0;
|
||||
int i;
|
||||
|
||||
g_return_if_fail(password_len == 0 || password);
|
||||
g_return_if_fail(buffer);
|
||||
g_return_if_fail(buflen > 0);
|
||||
g_return_if_fail(salt_len == 0 || salt);
|
||||
|
||||
ctx = g_checksum_new(G_CHECKSUM_MD5);
|
||||
|
||||
for (;;) {
|
||||
if (password_len > 0)
|
||||
g_checksum_update(ctx, (const guchar *) password, password_len);
|
||||
if (salt_len > 0)
|
||||
g_checksum_update(ctx, (const guchar *) salt, salt_len);
|
||||
|
||||
nm_utils_checksum_get_digest_len(ctx, digest.bin, NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
|
||||
for (i = 0; i < NM_UTILS_CHECKSUM_LENGTH_MD5; i++) {
|
||||
if (bufidx >= buflen)
|
||||
return;
|
||||
buffer[bufidx++] = digest.bin[i];
|
||||
}
|
||||
|
||||
g_checksum_reset(ctx);
|
||||
g_checksum_update(ctx, digest.ptr, NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
}
|
||||
}
|
||||
|
||||
gboolean
|
||||
nm_crypto_randomize(void *buffer, gsize buffer_len, GError **error)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -63,13 +63,6 @@ NMCryptoFileFormat nm_crypto_verify_private_key(const char *file,
|
|||
gboolean * out_is_encrypted,
|
||||
GError ** error);
|
||||
|
||||
void nm_crypto_md5_hash(const guint8 *salt,
|
||||
gsize salt_len,
|
||||
const guint8 *password,
|
||||
gsize password_len,
|
||||
guint8 * buffer,
|
||||
gsize buflen);
|
||||
|
||||
gboolean nm_crypto_randomize(void *buffer, gsize buffer_len, GError **error);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
|
|
|||
|
|
@ -6199,3 +6199,45 @@ NM_ASSERT_VALID_PATH_COMPONENT(const char *name)
|
|||
NM_PRINT_FMT_QUOTED(name, "\"", name, "\"", "(null)"));
|
||||
g_assert_not_reached();
|
||||
}
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void
|
||||
nm_crypto_md5_hash(const guint8 *salt,
|
||||
gsize salt_len,
|
||||
const guint8 *password,
|
||||
gsize password_len,
|
||||
guint8 * buffer,
|
||||
gsize buflen)
|
||||
{
|
||||
nm_auto_free_checksum GChecksum * ctx = NULL;
|
||||
nm_auto_clear_static_secret_ptr const NMSecretPtr digest =
|
||||
NM_SECRET_PTR_STATIC(NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
gsize bufidx = 0;
|
||||
int i;
|
||||
|
||||
g_return_if_fail(password_len == 0 || password);
|
||||
g_return_if_fail(buffer);
|
||||
g_return_if_fail(buflen > 0);
|
||||
g_return_if_fail(salt_len == 0 || salt);
|
||||
|
||||
ctx = g_checksum_new(G_CHECKSUM_MD5);
|
||||
|
||||
for (;;) {
|
||||
if (password_len > 0)
|
||||
g_checksum_update(ctx, (const guchar *) password, password_len);
|
||||
if (salt_len > 0)
|
||||
g_checksum_update(ctx, (const guchar *) salt, salt_len);
|
||||
|
||||
nm_utils_checksum_get_digest_len(ctx, digest.bin, NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
|
||||
for (i = 0; i < NM_UTILS_CHECKSUM_LENGTH_MD5; i++) {
|
||||
if (bufidx >= buflen)
|
||||
return;
|
||||
buffer[bufidx++] = digest.bin[i];
|
||||
}
|
||||
|
||||
g_checksum_reset(ctx);
|
||||
g_checksum_update(ctx, digest.ptr, NM_UTILS_CHECKSUM_LENGTH_MD5);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -2786,4 +2786,13 @@ gboolean nm_utils_sysctl_ip_conf_is_path(int addr_family,
|
|||
const char *ifname,
|
||||
const char *property);
|
||||
|
||||
/*****************************************************************************/
|
||||
|
||||
void nm_crypto_md5_hash(const guint8 *salt,
|
||||
gsize salt_len,
|
||||
const guint8 *password,
|
||||
gsize password_len,
|
||||
guint8 * buffer,
|
||||
gsize buflen);
|
||||
|
||||
#endif /* __NM_SHARED_UTILS_H__ */
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue