QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MAVLinkSigning.h File Reference
#include <QtCore/QByteArray>
#include <QtCore/QByteArrayView>
#include <QtCore/QDateTime>
#include <QtCore/QHash>
#include <QtCore/QString>
#include <QtCore/QTimeZone>
#include <array>
#include <cstdint>
#include <optional>
#include "MAVLinkMessageType.h"
+ Include dependency graph for MAVLinkSigning.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  MAVLinkSigning::DetectSnapshot
 Single-lock snapshot struct; fields populated by SigningChannel::detectSnapshot(). More...
 

Namespaces

namespace  MAVLinkSigning
 

Typedefs

typedef struct __mavlink_setup_signing_t mavlink_setup_signing_t
 
using MAVLinkSigning::SigningKey = std::array< uint8_t, kSigningKeySize >
 std::array avoids QByteArray COW detach so secureZero() actually wipes the bytes.
 

Enumerations

enum class  MAVLinkSigning::UnsignedAcceptancePolicy : uint8_t { MAVLinkSigning::Strict , MAVLinkSigning::Pending }
 

Functions

const QDateTime & MAVLinkSigning::signingEpoch ()
 MAVLink wire-protocol epoch; must be UTC per spec.
 
uint64_t MAVLinkSigning::currentSigningTimestampTicks ()
 Current signing timestamp in 10µs ticks since 2015-01-01.
 
std::optional< SigningKeyMAVLinkSigning::makeSigningKey (QByteArrayView bytes)
 Build a SigningKey from arbitrary bytes. Returns nullopt if input is the wrong size.
 
bool MAVLinkSigning::secureConnectionAcceptUnsignedCallback (const mavlink_status_t *status, uint32_t message_id)
 
bool MAVLinkSigning::insecureConnectionAcceptUnsignedCallback (const mavlink_status_t *status, uint32_t message_id)
 
mavlink_accept_unsigned_t MAVLinkSigning::callbackForPolicy (UnsignedAcceptancePolicy policy)
 Maps a high-level policy to the underlying libmavlink callback.
 
void MAVLinkSigning::createSetupSigning (mavlink_channel_t channel, mavlink_system_t target_system, QByteArrayView keyBytes, mavlink_setup_signing_t &setup_signing)
 Build a SETUP_SIGNING payload. Empty keyBytes produces a disable payload (zero key, zero timestamp).
 
bool MAVLinkSigning::encodeSetupSigning (mavlink_channel_t channel, uint8_t srcSysId, uint8_t srcCompId, mavlink_system_t target_system, QByteArrayView keyBytes, mavlink_message_t &message)
 
bool MAVLinkSigning::isMessageSigned (const mavlink_message_t &message)
 Returns true if the message has a MAVLink2 signature.
 
void MAVLinkSigning::setMessageSigned (mavlink_message_t &message, bool isSigned)
 Set or clear the MAVLink2 signature incompatibility flag on a message.
 
QByteArray MAVLinkSigning::serializeUnsignedCopy (const mavlink_message_t &message)
 
bool MAVLinkSigning::verifySignature (QByteArrayView key, const mavlink_message_t &message)
 Verify a key against a signed message's signature.
 
bool MAVLinkSigning::verifySignature (const SigningKey &key, const mavlink_message_t &message)
 
void MAVLinkSigning::logSigningFailure (mavlink_channel_t channel)
 
bool MAVLinkSigning::checkSigningLinkId (mavlink_channel_t channel, const mavlink_message_t &message)
 
QString MAVLinkSigning::signingStatusString (mavlink_channel_t channel)
 
int MAVLinkSigning::signingStreamCount (mavlink_channel_t channel)
 

Variables

static constexpr int MAVLinkSigning::kSigningKeySize = 32
 
static constexpr int MAVLinkSigning::kSignatureHashBytes = 6
 
static constexpr int MAVLinkSigning::kSignaturePrefixBytes = 7
 

Typedef Documentation

◆ mavlink_setup_signing_t

typedef struct __mavlink_setup_signing_t mavlink_setup_signing_t

Definition at line 17 of file MAVLinkSigning.h.