From 06ba4bff9157bb3d529f8616cbb2b5c6ad389bbc Mon Sep 17 00:00:00 2001 From: Stefan Berger Date: Fri, 12 Apr 2013 16:55:45 -0400 Subject: [PATCH] Helper functions for host TPM support Implement helper function to create the TPM's sysfs cancel file. Signed-off-by: Stefan Berger Reviewed-by: Corey Bryant Tested-by: Corey Bryant --- po/POTFILES.in | 1 + src/Makefile.am | 1 + src/libvirt_private.syms | 4 +++ src/util/virtpm.c | 65 ++++++++++++++++++++++++++++++++++++++++ src/util/virtpm.h | 27 +++++++++++++++++ 5 files changed, 98 insertions(+) create mode 100644 src/util/virtpm.c create mode 100644 src/util/virtpm.h diff --git a/po/POTFILES.in b/po/POTFILES.in index 91e5c025c5..bf5a864199 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -181,6 +181,7 @@ src/util/virsysinfo.c src/util/virerror.c src/util/virerror.h src/util/virtime.c +src/util/virtpm.c src/util/virtypedparam.c src/util/viruri.c src/util/virusb.c diff --git a/src/Makefile.am b/src/Makefile.am index fc6b8467e7..0323f43089 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -122,6 +122,7 @@ UTIL_SOURCES = \ util/virthreadwin32.h \ util/virthreadpool.c util/virthreadpool.h \ util/virtime.h util/virtime.c \ + util/virtpm.h util/virtpm.c \ util/virtypedparam.c util/virtypedparam.h \ util/virusb.c util/virusb.h \ util/viruri.h util/viruri.c \ diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms index 64a6e3d0c4..8a7dfcf867 100644 --- a/src/libvirt_private.syms +++ b/src/libvirt_private.syms @@ -1781,6 +1781,10 @@ virTimeStringThen; virTimeStringThenRaw; +# util/virtpm.h +virTPMCreateCancelPath; + + # util/virtypedparam.h virTypedParameterArrayValidate; virTypedParameterAssign; diff --git a/src/util/virtpm.c b/src/util/virtpm.c new file mode 100644 index 0000000000..fbe5e9dbcc --- /dev/null +++ b/src/util/virtpm.c @@ -0,0 +1,65 @@ +/* + * virtpm.c: TPM support + * + * Copyright (C) 2013 IBM Corporation + * + * 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 + * . + * + * Author: Stefan Berger + */ + +#include + +#include + +#include "virutil.h" +#include "virerror.h" +#include "virtpm.h" + +#define VIR_FROM_THIS VIR_FROM_NONE + +/** + * virTPMCreateCancelPath: + * @devpath: Path to the TPM device + * + * Create the cancel path given the path to the TPM device + */ +char * +virTPMCreateCancelPath(const char *devpath) +{ + char *path = NULL; + const char *dev; + + if (devpath) { + dev = strrchr(devpath, '/'); + if (dev) { + dev++; + if (virAsprintf(&path, "/sys/class/misc/%s/device/cancel", + dev) < 0) { + virReportOOMError(); + goto cleanup; + } + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, + _("TPM device path %s is invalid"), devpath); + } + } else { + virReportError(VIR_ERR_INTERNAL_ERROR, "%s", + _("Missing TPM device path")); + } + +cleanup: + return path; +} diff --git a/src/util/virtpm.h b/src/util/virtpm.h new file mode 100644 index 0000000000..fe71307a1e --- /dev/null +++ b/src/util/virtpm.h @@ -0,0 +1,27 @@ +/* + * virtpm.h: TPM support + * + * Copyright (C) 2013 IBM Corporation + * + * 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 + * . + * + * Author: Stefan Berger + */ +#ifndef __VIR_TPM_H__ +# define __VIR_TPM_H__ + +char *virTPMCreateCancelPath(const char *devpath); + +#endif /* __VIR_TPM_H__ */