diff options
author | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-03-29 06:38:08 +0300 |
---|---|---|
committer | Laurent Pinchart <laurent.pinchart@ideasonboard.com> | 2020-04-14 02:03:24 +0300 |
commit | 462d6508a29c78788fe7f88d6cfe304a6aa4b8c4 (patch) | |
tree | 9aa321cc8acac0559f94e2342f6c60faba29700e /src/libcamera/include/pub_key.h | |
parent | bf4049fd903102230a9c42f0718a1c5bf1501b0a (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.h | 38 |
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__ */ |