diff --git a/po/POTFILES.in b/po/POTFILES.in
index faf173584e21ccf3567571367811a59ac8c2a137..e2668719072e2f89904813109541bd0f234fd882 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -190,7 +190,6 @@
@SRCDIR@/src/rpc/virnetsshsession.c
@SRCDIR@/src/rpc/virnettlscontext.c
@SRCDIR@/src/secret/secret_driver.c
-@SRCDIR@/src/secret/secret_util.c
@SRCDIR@/src/security/security_apparmor.c
@SRCDIR@/src/security/security_dac.c
@SRCDIR@/src/security/security_driver.c
diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
index 89ce6b4278b81f1e0e6d3a870e9fa4b9fe3657ca..b63feb4054b1f7fd2e8c7d03c5bbdd3e4c74612f 100644
--- a/src/libvirt_private.syms
+++ b/src/libvirt_private.syms
@@ -1448,10 +1448,6 @@ virLogManagerFree;
virLogManagerNew;
-# secret/secret_util.h
-virSecretGetSecretString;
-
-
# security/security_driver.h
virSecurityDriverLookup;
@@ -3001,6 +2997,7 @@ virSecurityLabelDefNew;
# util/virsecret.h
+virSecretGetSecretString;
virSecretLookupDefClear;
virSecretLookupDefCopy;
virSecretLookupFormatSecret;
diff --git a/src/libxl/libxl_conf.c b/src/libxl/libxl_conf.c
index 2488bb9d32d8563222b30785f96f9a0cca40615d..e41e84e3e2abd3dd6b47def2c8b0c7fb6611ca5e 100644
--- a/src/libxl/libxl_conf.c
+++ b/src/libxl/libxl_conf.c
@@ -41,7 +41,7 @@
#include "libxl_conf.h"
#include "libxl_utils.h"
#include "virstoragefile.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "cpu/cpu.h"
#include "xen_common.h"
#include "xen_xl.h"
diff --git a/src/qemu/qemu_domain.c b/src/qemu/qemu_domain.c
index b1ac7c5aa25b519d5473fca4c553c57864a41588..ce0c5b78cd43c4ce4f06e5b85a0e5e026e93622f 100644
--- a/src/qemu/qemu_domain.c
+++ b/src/qemu/qemu_domain.c
@@ -56,7 +56,7 @@
#include "vircrypto.h"
#include "virrandom.h"
#include "virsystemd.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "logging/log_manager.h"
#include "locking/domain_lock.h"
#include "virdomainsnapshotobjlist.h"
diff --git a/src/qemu/qemu_process.c b/src/qemu/qemu_process.c
index 420d1c9c9382fbe4337cddb9128789701c020d21..1cac0dc88680c0bd3b5861577f22f95c09beceea 100644
--- a/src/qemu/qemu_process.c
+++ b/src/qemu/qemu_process.c
@@ -83,7 +83,7 @@
#include "virnuma.h"
#include "virstring.h"
#include "virhostdev.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "configmake.h"
#include "nwfilter_conf.h"
#include "netdev_bandwidth_conf.h"
diff --git a/src/qemu/qemu_tpm.c b/src/qemu/qemu_tpm.c
index 28800a100c2cd8ed8de448f53d7e00f720d5f9a5..262e6c4f078e0207cd7da72968e8c2bb4a93a181 100644
--- a/src/qemu/qemu_tpm.c
+++ b/src/qemu/qemu_tpm.c
@@ -42,7 +42,7 @@
#include "configmake.h"
#include "qemu_tpm.h"
#include "virtpm.h"
-#include "secret_util.h"
+#include "virsecret.h"
#define VIR_FROM_THIS VIR_FROM_NONE
diff --git a/src/secret/Makefile.inc.am b/src/secret/Makefile.inc.am
index d332060e380c6c176febb53c0b10ed1c04acfa86..4f0956a7a4ade2d9561cc955c7ca16cc9328b49f 100644
--- a/src/secret/Makefile.inc.am
+++ b/src/secret/Makefile.inc.am
@@ -5,11 +5,6 @@ SECRET_DRIVER_SOURCES = \
secret/secret_driver.c \
$(NULL)
-SECRET_UTIL_SOURCES = \
- secret/secret_util.h \
- secret/secret_util.c \
- $(NULL)
-
DRIVER_SOURCE_FILES += $(addprefix $(srcdir)/,$(SECRET_DRIVER_SOURCES))
STATEFUL_DRIVER_SOURCE_FILES += \
@@ -17,14 +12,8 @@ STATEFUL_DRIVER_SOURCE_FILES += \
EXTRA_DIST += \
$(SECRET_DRIVER_SOURCES) \
- $(SECRET_UTIL_SOURCES) \
$(NULL)
-noinst_LTLIBRARIES += libvirt_secret.la
-libvirt_la_BUILT_LIBADD += libvirt_secret.la
-libvirt_secret_la_CFLAGS = $(AM_CFLAGS)
-libvirt_secret_la_LDFLAGS = $(AM_LDFLAGS)
-libvirt_secret_la_SOURCES = $(SECRET_UTIL_SOURCES)
if WITH_SECRETS
mod_LTLIBRARIES += libvirt_driver_secret.la
diff --git a/src/secret/secret_util.c b/src/secret/secret_util.c
deleted file mode 100644
index 27e164a42502a6789490ce898a414ccba484c6ef..0000000000000000000000000000000000000000
--- a/src/secret/secret_util.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * secret_util.c: secret related utility functions
- *
- * Copyright (C) 2016 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * .
- *
- */
-
-#include
-
-#include "secret_util.h"
-#include "viralloc.h"
-#include "virerror.h"
-#include "virlog.h"
-#include "virobject.h"
-#include "viruuid.h"
-#include "datatypes.h"
-
-#define VIR_FROM_THIS VIR_FROM_SECRET
-
-VIR_LOG_INIT("secret.secret_util");
-
-
-/* virSecretGetSecretString:
- * @conn: Pointer to the connection driver to make secret driver call
- * @seclookupdef: Secret lookup def
- * @secretUsageType: Type of secret usage for usage lookup
- * @secret: returned secret as a sized stream of unsigned chars
- * @secret_size: Return size of the secret - either raw text or base64
- *
- * Lookup the secret for the usage type and return it as raw text.
- * It is up to the caller to encode the secret further.
- *
- * Returns 0 on success, -1 on failure. On success the memory in secret
- * needs to be cleared and free'd after usage.
- */
-int
-virSecretGetSecretString(virConnectPtr conn,
- virSecretLookupTypeDefPtr seclookupdef,
- virSecretUsageType secretUsageType,
- uint8_t **secret,
- size_t *secret_size)
-{
- virSecretPtr sec = NULL;
- int ret = -1;
-
- switch (seclookupdef->type) {
- case VIR_SECRET_LOOKUP_TYPE_UUID:
- sec = conn->secretDriver->secretLookupByUUID(conn, seclookupdef->u.uuid);
- break;
-
- case VIR_SECRET_LOOKUP_TYPE_USAGE:
- sec = conn->secretDriver->secretLookupByUsage(conn, secretUsageType,
- seclookupdef->u.usage);
- break;
- }
-
- if (!sec)
- goto cleanup;
-
- /* NB: NONE is a byproduct of the qemuxml2argvtest test mocking
- * for UUID lookups. Normal secret XML processing would fail if
- * the usage type was NONE and since we have no way to set the
- * expected usage in that environment, let's just accept NONE */
- if (sec->usageType != VIR_SECRET_USAGE_TYPE_NONE &&
- sec->usageType != secretUsageType) {
- char uuidstr[VIR_UUID_STRING_BUFLEN];
-
- virUUIDFormat(seclookupdef->u.uuid, uuidstr);
- virReportError(VIR_ERR_INVALID_ARG,
- _("secret with uuid %s is of type '%s' not "
- "expected '%s' type"),
- uuidstr, virSecretUsageTypeToString(sec->usageType),
- virSecretUsageTypeToString(secretUsageType));
- goto cleanup;
- }
-
- *secret = conn->secretDriver->secretGetValue(sec, secret_size, 0,
- VIR_SECRET_GET_VALUE_INTERNAL_CALL);
-
- if (!*secret)
- goto cleanup;
-
- ret = 0;
-
- cleanup:
- virObjectUnref(sec);
- return ret;
-}
diff --git a/src/secret/secret_util.h b/src/secret/secret_util.h
deleted file mode 100644
index ff23df63b7205663ebf0496d2bd25b08ebf92f16..0000000000000000000000000000000000000000
--- a/src/secret/secret_util.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * secret_util.h: secret related utility functions
- *
- * Copyright (C) 2016 Red Hat, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library. If not, see
- * .
- *
- */
-
-#pragma once
-
-#include "internal.h"
-#include "virsecret.h"
-
-int virSecretGetSecretString(virConnectPtr conn,
- virSecretLookupTypeDefPtr seclookupdef,
- virSecretUsageType secretUsageType,
- uint8_t **ret_secret,
- size_t *ret_secret_size)
- ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4)
- ATTRIBUTE_NONNULL(5) G_GNUC_WARN_UNUSED_RESULT;
diff --git a/src/storage/storage_backend_iscsi.c b/src/storage/storage_backend_iscsi.c
index ee39cbf88df2c7f828ebc932bb02ded44984f410..c02fbb5eaa118bacafdfe6759dadc6931c4fd4af 100644
--- a/src/storage/storage_backend_iscsi.c
+++ b/src/storage/storage_backend_iscsi.c
@@ -39,7 +39,7 @@
#include "virobject.h"
#include "virstring.h"
#include "viruuid.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "storage_util.h"
#define VIR_FROM_THIS VIR_FROM_STORAGE
diff --git a/src/storage/storage_backend_iscsi_direct.c b/src/storage/storage_backend_iscsi_direct.c
index 3a5e2bb9f0a554ddfee282d59c40731a56aa6914..c37c671db6b61dc1087c05fc1d5465c6c1d17d3a 100644
--- a/src/storage/storage_backend_iscsi_direct.c
+++ b/src/storage/storage_backend_iscsi_direct.c
@@ -24,7 +24,7 @@
#include
#include "datatypes.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "storage_backend_iscsi_direct.h"
#include "storage_util.h"
#include "viralloc.h"
diff --git a/src/storage/storage_backend_rbd.c b/src/storage/storage_backend_rbd.c
index 88e7a4b236ac02feddf4b1e265b3d237cf92ec06..f0b7653736d71e843acac87c8b7e727c87d453cd 100644
--- a/src/storage/storage_backend_rbd.c
+++ b/src/storage/storage_backend_rbd.c
@@ -33,7 +33,7 @@
#include "virrandom.h"
#include "rados/librados.h"
#include "rbd/librbd.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "storage_util.h"
#define VIR_FROM_THIS VIR_FROM_STORAGE
diff --git a/src/storage/storage_util.c b/src/storage/storage_util.c
index ebc262278d7b7fab725472c4f64e55ba53bbe990..987d937b0448c386dfe43888346a77ab756971df 100644
--- a/src/storage/storage_util.c
+++ b/src/storage/storage_util.c
@@ -62,7 +62,7 @@
#include "viralloc.h"
#include "internal.h"
#include "secret_conf.h"
-#include "secret_util.h"
+#include "virsecret.h"
#include "vircrypto.h"
#include "viruuid.h"
#include "virstoragefile.h"
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 174ce544c0fbb1cf5c61ca335aee9def9aabbbec..f44d964198c51d4c9b3e8f37d352479b153b85b5 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -21,6 +21,7 @@
#include
+#include "datatypes.h"
#include "viralloc.h"
#include "virerror.h"
#include "virlog.h"
@@ -125,3 +126,71 @@ virSecretLookupFormatSecret(virBufferPtr buf,
virBufferAddLit(buf, "/>\n");
}
}
+
+
+/* virSecretGetSecretString:
+ * @conn: Pointer to the connection driver to make secret driver call
+ * @seclookupdef: Secret lookup def
+ * @secretUsageType: Type of secret usage for usage lookup
+ * @secret: returned secret as a sized stream of unsigned chars
+ * @secret_size: Return size of the secret - either raw text or base64
+ *
+ * Lookup the secret for the usage type and return it as raw text.
+ * It is up to the caller to encode the secret further.
+ *
+ * Returns 0 on success, -1 on failure. On success the memory in secret
+ * needs to be cleared and free'd after usage.
+ */
+int
+virSecretGetSecretString(virConnectPtr conn,
+ virSecretLookupTypeDefPtr seclookupdef,
+ virSecretUsageType secretUsageType,
+ uint8_t **secret,
+ size_t *secret_size)
+{
+ virSecretPtr sec = NULL;
+ int ret = -1;
+
+ switch (seclookupdef->type) {
+ case VIR_SECRET_LOOKUP_TYPE_UUID:
+ sec = conn->secretDriver->secretLookupByUUID(conn, seclookupdef->u.uuid);
+ break;
+
+ case VIR_SECRET_LOOKUP_TYPE_USAGE:
+ sec = conn->secretDriver->secretLookupByUsage(conn, secretUsageType,
+ seclookupdef->u.usage);
+ break;
+ }
+
+ if (!sec)
+ goto cleanup;
+
+ /* NB: NONE is a byproduct of the qemuxml2argvtest test mocking
+ * for UUID lookups. Normal secret XML processing would fail if
+ * the usage type was NONE and since we have no way to set the
+ * expected usage in that environment, let's just accept NONE */
+ if (sec->usageType != VIR_SECRET_USAGE_TYPE_NONE &&
+ sec->usageType != secretUsageType) {
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+
+ virUUIDFormat(seclookupdef->u.uuid, uuidstr);
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("secret with uuid %s is of type '%s' not "
+ "expected '%s' type"),
+ uuidstr, virSecretUsageTypeToString(sec->usageType),
+ virSecretUsageTypeToString(secretUsageType));
+ goto cleanup;
+ }
+
+ *secret = conn->secretDriver->secretGetValue(sec, secret_size, 0,
+ VIR_SECRET_GET_VALUE_INTERNAL_CALL);
+
+ if (!*secret)
+ goto cleanup;
+
+ ret = 0;
+
+ cleanup:
+ virObjectUnref(sec);
+ return ret;
+}
diff --git a/src/util/virsecret.h b/src/util/virsecret.h
index 8bc8a24e0f0bd26c34fc9e347fa7f9282f8c0d2f..bf056cb3b2bc91ab222cf945c74bdb8b97f5220b 100644
--- a/src/util/virsecret.h
+++ b/src/util/virsecret.h
@@ -56,3 +56,11 @@ int virSecretLookupParseSecret(xmlNodePtr secretnode,
void virSecretLookupFormatSecret(virBufferPtr buf,
const char *secrettype,
virSecretLookupTypeDefPtr def);
+
+int virSecretGetSecretString(virConnectPtr conn,
+ virSecretLookupTypeDefPtr seclookupdef,
+ virSecretUsageType secretUsageType,
+ uint8_t **ret_secret,
+ size_t *ret_secret_size)
+ ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(2) ATTRIBUTE_NONNULL(4)
+ ATTRIBUTE_NONNULL(5) G_GNUC_WARN_UNUSED_RESULT;