diff --git a/CHANGELOG.md b/CHANGELOG.md index f661e54d0..d3f7db033 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,15 +9,20 @@ All notable changes to this project will be documented in this file. ## [14.4.0.1] 20241215 ### Added - MCP23XXX_DRV control register IOCON in template (#22622) +- ESP32 support for TLS ECDSA (#22649) ### Changed - Berry make Leds animate calls reentrant (#22643) - SSL clean up remnants of old fingerprint algorithm (#22645) +- Display removed PWM control of backlight GPIO for universal display regression from v14.1.0 ### Fixed - ESP32 rules operation priority regression from v13.3.0.4 (#22636) - GUI display power button regression from v14.3.0.5 (#15788) - MCP23xxx, PCF8574 and Shift595 power control when a display is configured regression from v14.3.0.7 +- Display DisplayMode adds a display device while not configured +- GUI intermittent exception on screen updates due to flash access +- GUI timing related divide by zero exception ## [14.4.0] 20241211 - Release Rudolph diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 20d31f8b4..f0d398490 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -116,6 +116,22 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm ## Changelog v14.4.1 Rudolph ### Added +- MCP23XXX_DRV control register IOCON in template [#22622](https://github.com/arendst/Tasmota/issues/22622) +- ESP32 support for TLS ECDSA [#22649](https://github.com/arendst/Tasmota/issues/22649) + +### Changed +- Display removed PWM control of backlight GPIO regression from v14.1.0 +- SSL clean up remnants of old fingerprint algorithm [#22645](https://github.com/arendst/Tasmota/issues/22645) +- Berry make Leds animate calls reentrant [#22643](https://github.com/arendst/Tasmota/issues/22643) + +### Fixed +- Display DisplayMode adds a display device while not configured +- GUI display power button regression from v14.3.0.5 [#15788](https://github.com/arendst/Tasmota/issues/15788) +- MCP23xxx, PCF8574 and Shift595 power control when a display is configured regression from v14.3.0.7 +- ESP32 rules operation priority regression from v13.3.0.4 [#22636](https://github.com/arendst/Tasmota/issues/22636) + +## Changelog v14.4.0 Rudolph +### Added - Command `WebColor20` to control color of Button when Off - Command `SetOption161 1` to disable display of state text [#22515](https://github.com/arendst/Tasmota/issues/22515) - Command `SetOption162 1` to disable adding export energy to energy today [#22578](https://github.com/arendst/Tasmota/issues/22578) @@ -139,7 +155,6 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Mitsubishi Electric HVAC Outdoor Temperature for MiElHVAC [#22345](https://github.com/arendst/Tasmota/issues/22345) - Mitsubishi Electric HVAC Compressor Frequency for MiElHVAC [#22347](https://github.com/arendst/Tasmota/issues/22347) - Mitsubishi Electric HVAC Auto Clear Remote Temp for MiElHVAC [#22370](https://github.com/arendst/Tasmota/issues/22370) -- MCP23XXX_DRV control register IOCON in template [#22622](https://github.com/arendst/Tasmota/issues/22622) - SolaxX1 Meter mode [#22330](https://github.com/arendst/Tasmota/issues/22330) - Show Active Power Total with any multi-phase energy monitoring [#22579](https://github.com/arendst/Tasmota/issues/22579) - ESP32 support for WPA2/3 Enterprise conditional in core v3.1.0.241206 [#22600](https://github.com/arendst/Tasmota/issues/22600) @@ -173,10 +188,8 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - DALI set Tasmota light control as default - Shutter optimized behavior to publish shutter data with sensor request [#22353](https://github.com/arendst/Tasmota/issues/22353) - Prevent active BLE operations with unencrypted MI-format beacons [#22453](https://github.com/arendst/Tasmota/issues/22453) -- SSL clean up remnants of old fingerprint algorithm [#22645](https://github.com/arendst/Tasmota/issues/22645) - ESP32 max number of supported switches/buttons/relays from 28 to 32 - ESP32 max number of interlocks from 14 to 16 -- Berry make Leds animate calls reentrant [#22643](https://github.com/arendst/Tasmota/issues/22643) - HASPmota support for page delete and object updates [#22311](https://github.com/arendst/Tasmota/issues/22311) ### Fixed @@ -191,10 +204,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl https://ota.tasm - Mitsubishi Electric HVAC Standby Stage for MiElHVAC [#22430](https://github.com/arendst/Tasmota/issues/22430) - EQ3 TRV firmware version 1.46 fails if the default true is used in subscribe on the notify characteristic [#22328](https://github.com/arendst/Tasmota/issues/22328) - Ethernet on -DFRAMEWORK_ARDUINO_ITEAD framework regression from v14.3.0 [#22367](https://github.com/arendst/Tasmota/issues/22367) -- MCP23xxx, PCF8574 and Shift595 power control when a display is configured regression from v14.3.0.7 -- GUI display power button regression from v14.3.0.5 [#15788](https://github.com/arendst/Tasmota/issues/15788) -- ESP8266 Device Group exception due to lack of stack space [#22271](https://github.com/arendst/Tasmota/issues/22271) -- ESP32 rules operation priority regression from v13.3.0.4 [#22636](https://github.com/arendst/Tasmota/issues/22636) +- ESP8266 Device Group exception due to lack of stack space (#22271)[#22271](https://github.com/arendst/Tasmota/issues/22271) - ESP32 Upgrade by file upload response based on file size [#22500](https://github.com/arendst/Tasmota/issues/22500) - ESP32 Arduino Core IPv6 zones used by Matter [#22378](https://github.com/arendst/Tasmota/issues/22378) - ESP32, ESP32-S2 and ESP32-S3 re-enable touch buttons [#22446](https://github.com/arendst/Tasmota/issues/22446) diff --git a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp index a11b04f03..4259023e5 100755 --- a/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp +++ b/lib/lib_ssl/tls_mini/src/WiFiClientSecureLightBearSSL.cpp @@ -788,19 +788,39 @@ extern "C" { // created with more than two primes, and most numbers, even large ones, can // be easily factored. static void pubkeyfingerprint_pubkey_fingerprint(br_x509_pubkeyfingerprint_context *xc) { - br_rsa_public_key rsakey = xc->ctx.pkey.key.rsa; + if (xc->ctx.pkey.key_type == BR_KEYTYPE_RSA) { + br_rsa_public_key rsakey = xc->ctx.pkey.key.rsa; - br_sha1_context shactx; + br_sha1_context shactx; - br_sha1_init(&shactx); + br_sha1_init(&shactx); - // The tag string doesn't really matter, but it should differ depending on - // key type. Since we only support RSA for now, it's a fixed string. - sha1_update_len(&shactx, "ssh-rsa", 7); // tag - sha1_update_len(&shactx, rsakey.e, rsakey.elen); // exponent - sha1_update_len(&shactx, rsakey.n, rsakey.nlen); // modulus + // The tag string doesn't really matter, but it should differ depending on + // key type. For RSA it's a fixed string. + sha1_update_len(&shactx, "ssh-rsa", 7); // tag + sha1_update_len(&shactx, rsakey.e, rsakey.elen); // exponent + sha1_update_len(&shactx, rsakey.n, rsakey.nlen); // modulus - br_sha1_out(&shactx, xc->pubkey_recv_fingerprint); // copy to fingerprint + br_sha1_out(&shactx, xc->pubkey_recv_fingerprint); // copy to fingerprint + } + #ifndef ESP8266 + else if (xc->ctx.pkey.key_type == BR_KEYTYPE_EC) { + br_ec_public_key eckey = xc->ctx.pkey.key.ec; + + br_sha1_context shactx; + + br_sha1_init(&shactx); + + // The tag string doesn't really matter, but it should differ depending on + // key type. For ECDSA it's a fixed string. + sha1_update_len(&shactx, "ecdsa-sha2-nistp256", 19); // tag + sha1_update_len(&shactx, eckey.q, eckey.qlen); // exponent + } + #endif + else { + // We don't support anything else, so just set the fingerprint to all zeros. + memset(xc->pubkey_recv_fingerprint, 0, 20); + } } // Callback when complete chain has been parsed. @@ -856,11 +876,19 @@ extern "C" { ctx->fingerprint_all = fingerprint_all; } +#ifdef ESP8266 // We limit to a single cipher to reduce footprint // we reference it, don't put in PROGMEM static const uint16_t suites[] = { BR_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 }; +#else + // add more flexibility on ESP32 + static const uint16_t suites[] = { + BR_TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, + BR_TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, + }; +#endif // Default initializion for our SSL clients static void br_ssl_client_base_init(br_ssl_client_context *cc) { @@ -884,6 +912,9 @@ extern "C" { // we support only P256 EC curve for AWS IoT, no EC curve for Letsencrypt unless forced br_ssl_engine_set_ec(&cc->eng, &br_ec_p256_m15); // TODO +#ifndef ESP8266 + br_ssl_engine_set_ecdsa(&cc->eng, &br_ecdsa_i15_vrfy_asn1); +#endif } } diff --git a/tasmota/tasmota_support/support.ino b/tasmota/tasmota_support/support.ino index 7d34b6c51..4caa4bdf4 100755 --- a/tasmota/tasmota_support/support.ino +++ b/tasmota/tasmota_support/support.ino @@ -835,6 +835,9 @@ int32_t UpdateDevicesPresent(int32_t change) { // AddLog(LOG_LEVEL_DEBUG, PSTR("APP: Max 32 devices supported")); } TasmotaGlobal.devices_present = devices_present; + +// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("DVC: DevicesPresent %d, Change %d"), TasmotaGlobal.devices_present, change); + return difference; } diff --git a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino index db4e9540c..1e4dfbf52 100644 --- a/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino +++ b/tasmota/tasmota_xdrv_driver/xdrv_01_9_webserver.ino @@ -1289,7 +1289,7 @@ void WebGetDeviceCounts(void) { } #endif // USE_SHUTTER -// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HTP: DP %d, BNLNS %d, SB %08X"), TasmotaGlobal.devices_present, Web.buttons_non_light_non_shutter, Web.light_shutter_button_mask); +// AddLog(LOG_LEVEL_DEBUG, PSTR("HTP: DP %d, BNLNS %d, SB %08X"), TasmotaGlobal.devices_present, Web.buttons_non_light_non_shutter, Web.light_shutter_button_mask); } #ifdef USE_LIGHT @@ -1374,7 +1374,6 @@ void HandleRoot(void) { if (TasmotaGlobal.devices_present) { WebGetDeviceCounts(); - uint32_t button_idx = 1; if (Web.buttons_non_light_non_shutter) { // Any non light AND non shutter button - Show toggle buttons WSContentSend_P(HTTP_TABLE100); // "