CDC Badge OS
Firmware for the CDC Badge v1.0 hardware security key
Loading...
Searching...
No Matches
ble_gpg_xsig.cpp File Reference

BLE Badge-to-Badge cross-sign endpoint. More...

#include "mod_gpg/ble_gpg_xsig.h"
#include "mod_gpg/GpgRecvStore.h"
#include "mod_gpg/GpgStorage.h"
#include "mod_gpg/gpg.h"
#include "openpgp/fingerprint.h"
#include "cdc_hal/IBluetoothController.h"
#include "cdc_hal/ISecureElement.h"
#include "cdc_log.h"
#include "esp_attr.h"
#include <algorithm>
#include <cstring>
#include <ctime>

Go to the source code of this file.

Namespaces

namespace  cdc
namespace  cdc::mod_gpg

Functions

bool cdc::mod_gpg::ble_gpg_xsig_init ()
 Initialise the GPG cross-sign BLE endpoint.
void cdc::mod_gpg::ble_gpg_xsig_set_received_callback (XsigReceivedCallback cb)
 Install / remove the "key received" notification.
bool cdc::mod_gpg::ble_gpg_xsig_send (const uint8_t addr[6], uint8_t addr_type)
 Push the badge's own public key to a peer.

Detailed Description

BLE Badge-to-Badge cross-sign endpoint.

Registers a dedicated GATT service (UUID 8E2F1F30-...) with two characteristics:

1F31 RX - Write - peer pushes its public key here 1F32 STATUS - Read+Notify - server reports completion to peer

Protocol mirrors the vCard exchange: Client -> Server 0x11 START + 2-byte total length + first chunk 0x12 CONT + chunk 0x13 END + final chunk Server -> Client 0x91 / 0x92 / 0x93 (mirror, with 1-byte status code at END)

Payload layout (Spec docs/CROSS_SIGNING.md): 1B curve, 1B pubkey_len, 32 or 64 pubkey bytes, 20B fingerprint_v4, 1B user_id_len, max 63B user_id.

Definition in file ble_gpg_xsig.cpp.