diff --git a/docs/schemas/secret.rng b/docs/schemas/secret.rng
index 1e94d66e48..e0add8a5e9 100644
--- a/docs/schemas/secret.rng
+++ b/docs/schemas/secret.rng
@@ -37,6 +37,7 @@
+
@@ -81,4 +82,13 @@
+
+
+ vtpm
+
+
+
+
+
+
diff --git a/include/libvirt/libvirt-secret.h b/include/libvirt/libvirt-secret.h
index 9a1065f0f3..e5aaac9450 100644
--- a/include/libvirt/libvirt-secret.h
+++ b/include/libvirt/libvirt-secret.h
@@ -43,6 +43,7 @@ typedef enum {
VIR_SECRET_USAGE_TYPE_CEPH = 2,
VIR_SECRET_USAGE_TYPE_ISCSI = 3,
VIR_SECRET_USAGE_TYPE_TLS = 4,
+ VIR_SECRET_USAGE_TYPE_VTPM = 5,
# ifdef VIR_ENUM_SENTINELS
VIR_SECRET_USAGE_TYPE_LAST
diff --git a/src/conf/secret_conf.c b/src/conf/secret_conf.c
index 5b85a7c0be..b291339e77 100644
--- a/src/conf/secret_conf.c
+++ b/src/conf/secret_conf.c
@@ -110,6 +110,15 @@ virSecretDefParseUsage(xmlXPathContextPtr ctxt,
}
break;
+ case VIR_SECRET_USAGE_TYPE_VTPM:
+ def->usage_id = virXPathString("string(./usage/name)", ctxt);
+ if (!def->usage_id) {
+ virReportError(VIR_ERR_INTERNAL_ERROR, "%s",
+ _("vTPM usage specified, but name is missing"));
+ return -1;
+ }
+ break;
+
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected secret usage type %d"),
@@ -257,6 +266,10 @@ virSecretDefFormatUsage(virBufferPtr buf,
virBufferEscapeString(buf, "%s\n", def->usage_id);
break;
+ case VIR_SECRET_USAGE_TYPE_VTPM:
+ virBufferEscapeString(buf, "%s\n", def->usage_id);
+ break;
+
default:
virReportError(VIR_ERR_INTERNAL_ERROR,
_("unexpected secret usage type %d"),
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 854dc72b06..7844a76a56 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -34,7 +34,7 @@ VIR_LOG_INIT("util.secret");
VIR_ENUM_IMPL(virSecretUsage,
VIR_SECRET_USAGE_TYPE_LAST,
- "none", "volume", "ceph", "iscsi", "tls",
+ "none", "volume", "ceph", "iscsi", "tls", "vtpm",
);
void
diff --git a/tests/secretxml2xmlin/usage-vtpm.xml b/tests/secretxml2xmlin/usage-vtpm.xml
new file mode 100644
index 0000000000..5baff3034d
--- /dev/null
+++ b/tests/secretxml2xmlin/usage-vtpm.xml
@@ -0,0 +1,7 @@
+
+ aa6c7af2-45a7-477c-85a2-fe86d9f2514e
+ vTPM secret
+
+ vTPMvTPMvTPM
+
+
diff --git a/tests/secretxml2xmltest.c b/tests/secretxml2xmltest.c
index fd93703424..595583346a 100644
--- a/tests/secretxml2xmltest.c
+++ b/tests/secretxml2xmltest.c
@@ -80,6 +80,7 @@ mymain(void)
DO_TEST("usage-ceph");
DO_TEST("usage-iscsi");
DO_TEST("usage-tls");
+ DO_TEST("usage-vtpm");
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}