summaryrefslogtreecommitdiff
path: root/src/libcamera/include/pub_key.h
diff options
context:
space:
mode:
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-03-29 06:38:08 +0300
committerLaurent Pinchart <laurent.pinchart@ideasonboard.com>2020-04-14 02:03:24 +0300
commit462d6508a29c78788fe7f88d6cfe304a6aa4b8c4 (patch)
tree9aa321cc8acac0559f94e2342f6c60faba29700e /src/libcamera/include/pub_key.h
parentbf4049fd903102230a9c42f0718a1c5bf1501b0a (diff)
libcamera: Add PubKey class
Add a new PubKey class to handle public key signature verification. The implementation is based on the gnutls library, which is added as an optional dependency. If gnutls is not found, signature verification will unconditionally fail. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
Diffstat (limited to 'src/libcamera/include/pub_key.h')
-rw-r--r--src/libcamera/include/pub_key.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/libcamera/include/pub_key.h b/src/libcamera/include/pub_key.h
new file mode 100644
index 00000000..f35bf373
--- /dev/null
+++ b/src/libcamera/include/pub_key.h
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ * Copyright (C) 2020, Google Inc.
+ *
+ * pub_key.h - Public key signature verification
+ */
+#ifndef __LIBCAMERA_PUB_KEY_H__
+#define __LIBCAMERA_PUB_KEY_H__
+
+#include <stdint.h>
+
+#include <libcamera/span.h>
+
+#if HAVE_GNUTLS
+struct gnutls_pubkey_st;
+#endif
+
+namespace libcamera {
+
+class PubKey
+{
+public:
+ PubKey(Span<const uint8_t> key);
+ ~PubKey();
+
+ bool isValid() const { return valid_; }
+ bool verify(Span<const uint8_t> data, Span<const uint8_t> sig) const;
+
+private:
+ bool valid_;
+#if HAVE_GNUTLS
+ struct gnutls_pubkey_st *pubkey_;
+#endif
+};
+
+} /* namespace libcamera */
+
+#endif /* __LIBCAMERA_PUB_KEY_H__ */