mirror of
https://github.com/mysensors/MySensors.git
synced 2026-03-19 06:27:05 +01:00
* Signing support with MAX_PAYLOAD>32 Support in the signing backends to handle configurations where MAX_PAYLOAD is more than 32 bytes. Fixes #748 * Support big message signatures Support for signing messages larger than 32 bytes. This is not fully testable with the current version of the library but the change would add theoretical support for signing any sized messages. Fixes #749 * Have gw properly indicate whitelisting preferences If the gateway hold a signing whitelist, inform all nodes of this requirement and not just nodes that hold whitelists themselves. Fixes #806 * Harden security The flag MY_SIGNING_GW_REQUEST_SIGNATURES_FROM_ALL has been removed. Gateway will now request signatures from everyone by default. In addition to this, no nodes in the network will allow clearing of signing/whitelisting preferences by OTA commands by default. If the old behaviour is needed (suitable for gradual signing roll out and development purposes) a new flag, MY_SIGNING_WEAK_SECURITY can be set. Fixes #807 * Signing debug messages rewritten All signing related debug has been rewritten to better match other core debug printouts. Also, backends are updated to have a smaller implementation delta. * Simplified signing option implemented Enable by MY_SIGNING_SIMPLE_PASSWD. Signing, and signing requirements will be enabled, as will encryption. Whitelisting is optional. The value provided to MY_SIGNING_SIMPLE_PASSWD is used as HMAC and AES key. Whitelists use the first 8 bytes of the password and the ninth byte from the node ID as serial. Password is required to be at least 8 characters wide. It is zero padded if it is not long enough to cover the AES (16 bytes) and HMAC (32 bytes) keys. It is not recommended to have a password shorter than 32 bytes, and there is no need for a password longer than 32 bytes. * Add documentation section for signing debug * Add nRF5 encryption to simple signing option * Restructure MySigning documentation * Minor fixes for Linux
104 lines
3.3 KiB
C++
104 lines
3.3 KiB
C++
/*
|
|
* The MySensors Arduino library handles the wireless radio link and protocol
|
|
* between your home built sensors/actuators and HA controller of choice.
|
|
* The sensors forms a self healing radio network with optional repeaters. Each
|
|
* repeater and gateway builds a routing tables in EEPROM which keeps track of the
|
|
* network topology allowing messages to be routed to nodes.
|
|
*
|
|
* Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
|
|
* Copyright (C) 2013-2017 Sensnology AB
|
|
* Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
|
|
*
|
|
* Documentation: http://www.mysensors.org
|
|
* Support Forum: http://forum.mysensors.org
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* version 2 as published by the Free Software Foundation.
|
|
*/
|
|
|
|
#include <iostream>
|
|
#include <cstdio>
|
|
#include <unistd.h>
|
|
|
|
// For more options run ./configure --help
|
|
|
|
// Config file
|
|
//#define MY_LINUX_CONFIG_FILE "/etc/mysensors.dat"
|
|
|
|
// How many clients should be able to connect to this gateway (default 1)
|
|
#define MY_GATEWAY_MAX_CLIENTS 10
|
|
|
|
// Serial config
|
|
// Enable this if you are using an Arduino connected to the USB
|
|
//#define MY_LINUX_SERIAL_PORT "/dev/ttyACM0"
|
|
// Enable this if you need to connect to a controller running on the same device
|
|
//#define MY_LINUX_IS_SERIAL_PTY
|
|
// Choose a symlink name for the PTY device
|
|
//#define MY_LINUX_SERIAL_PTY "/dev/ttyMySensorsGateway"
|
|
// Grant access to the specified system group for the serial device
|
|
//#define MY_LINUX_SERIAL_GROUPNAME "tty"
|
|
|
|
// MQTT options
|
|
//#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 68
|
|
//#define MY_PORT 1883
|
|
//#define MY_MQTT_CLIENT_ID "mysensors-1"
|
|
//#define MY_MQTT_PUBLISH_TOPIC_PREFIX "mygateway1-out"
|
|
//#define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "mygateway1-in"
|
|
|
|
// Enable these if your MQTT broker requires usenrame/password
|
|
//#define MY_MQTT_USER "username"
|
|
//#define MY_MQTT_PASSWORD "password"
|
|
|
|
// Flash leds on rx/tx/err
|
|
//#define MY_DEFAULT_ERR_LED_PIN 12 // Error LED pin
|
|
//#define MY_DEFAULT_RX_LED_PIN 16 // Receive LED pin
|
|
//#define MY_DEFAULT_TX_LED_PIN 18 // Transmit LED pin
|
|
// Inverse the blinking feature
|
|
//#define MY_WITH_LEDS_BLINKING_INVERSE
|
|
|
|
// Enable software signing
|
|
//#define MY_SIGNING_SOFT
|
|
// Enable signing related debug
|
|
//#define MY_DEBUG_VERBOSE_SIGNING
|
|
// Enable this to request signatures
|
|
//#define MY_SIGNING_REQUEST_SIGNATURES
|
|
// Enable this to to weaken security for gradual deployment purpose
|
|
// (see signing documentation for details)
|
|
//#define MY_SIGNING_WEAK_SECURITY
|
|
|
|
// Enables RF24 encryption (all nodes and gateway must have this enabled, and all must be
|
|
// personalized with the same AES key)
|
|
//#define MY_RF24_ENABLE_ENCRYPTION
|
|
|
|
// Enable inclusion mode if your HA Controller supports it (e.g. Vera Controller)
|
|
//#define MY_INCLUSION_MODE_FEATURE
|
|
// Enable Inclusion mode button on gateway
|
|
//#define MY_INCLUSION_BUTTON_FEATURE
|
|
// Set inclusion mode duration (in seconds)
|
|
//#define MY_INCLUSION_MODE_DURATION 60
|
|
// Digital pin used for inclusion mode button
|
|
//#define MY_INCLUSION_MODE_BUTTON_PIN 3
|
|
|
|
#include <MySensors.h>
|
|
|
|
#define ARDUINO 100
|
|
// This space is intended to be used to include arduino libraries
|
|
|
|
#undef ARDUINO
|
|
|
|
void setup()
|
|
{
|
|
// Setup locally attached sensors
|
|
}
|
|
|
|
void presentation()
|
|
{
|
|
// Present locally attached sensors here
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
// Send locally attached sensors data here
|
|
}
|