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>
This commit is contained in:
@@ -21,6 +21,7 @@ libcamera_headers = files([
|
||||
'message.h',
|
||||
'pipeline_handler.h',
|
||||
'process.h',
|
||||
'pub_key.h',
|
||||
'semaphore.h',
|
||||
'thread.h',
|
||||
'utils.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__ */
|
||||
Reference in New Issue
Block a user