Здравствуйте! Предлагаю вашему вниманию свежую неофициальную прошивку 2v08.200 для Iskra JS. Была взята последняя версия исходников Espruino, в них были внесены специфические изменения для поддежки Isrka JS (большое спасибо за помощь форумчанину sys), а также добавлена правка, добавляющая дополнительные алгоритмы шифрования: TLS_DHE_RSA_WITH_AES_256_GCM_SHA384, TLS_DHE_RSA_WITH_AES_256_CBC_SHA256, TLS_DHE_RSA_WITH_AES_256_CBC_SHA, TLS_DHE_RSA_WITH_AES_128_GCM_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA256, TLS_DHE_RSA_WITH_AES_128_CBC_SHA. По-идее, теперь запросы к Telegram API, а также к многим другим сайтам, не должны выдавать ошибку mbedtls_ssl_handshake returned -0x7780, как в этой теме.
Публикую инструкцию форумчанина sys по переносу изменений в исходники оригинальной прошивки из исходников Амперки. Исходники Амперки лежат тут: https://github.com/amperka/Espruino/tree/iskrajs_2V00 1. В файле Espruino/Makefile вставить: ifdef ISKRAJS WRAPPERSOURCES += targets/iskrajs/jswrap_iskrajs.c endif перед: PININFOFILE=$(GENDIR)/jspininfo SOURCES += $(PININFOFILE).c 2. В файле Espruino/scripts/build_platform_config.py вставить: # Dump pin definitions for p in pins: rawName = p['name'].lstrip('P') codeOut('#define {0}_PININDEX {1}'.format(rawName, toPinDef(rawName))) перед: # Specific hacks for nucleo boards 3. Скопировать файл Espruino/scripts/create_iskrajs_image.sh 4. В файле Espruino/src/jsinteractive.c вставить: #ifdef ISKRAJS " ____ __\n" " / _/_____ / /__ _____ ____ _\n" " / / / ___// //_// ___// __ `/\n" " _/ / (__ )/ ,< / / / /_/ /\n" "/___//____//_/|_|/_/ \\__,_/\n" "\n" "Based on Espruino " JS_VERSION "\n" "(c) 2020 G.Williams, Amperka LLC\n" "Non-official build!\n" "Support the work of core developers:\n" "http://espruino.com/Donate\n" #else "\n" " ____ _ \n" "| __|___ ___ ___ _ _|_|___ ___ \n" "| __|_ -| . | _| | | | | . |\n" "|____|___| _|_| |___|_|_|_|___|\n" " |_| espruino.com\n" " "JS_VERSION" (c) 2019 G.Williams\n" // Point out about donations - but don't bug people // who bought boards that helped Espruino #if !defined(PICO) && !defined(ESPRUINOBOARD) && !defined(ESPRUINOWIFI) && !defined(PUCKJS) && !defined(PIXLJS) && !defined(BANGLEJS) && !defined(EMSCRIPTEN) "\n" "Espruino is Open Source. Our work is supported\n" "only by sales of official boards and donations:\n" "http://espruino.com/Donate\n" #endif #endif вместо: "\n" " ____ _ \n" "| __|___ ___ ___ _ _|_|___ ___ \n" "| __|_ -| . | _| | | | | . |\n" "|____|___| _|_| |___|_|_|_|___|\n" " |_| espruino.com\n" " "JS_VERSION" (c) 2019 G.Williams\n" // Point out about donations - but don't bug people // who bought boards that helped Espruino #if !defined(PICO) && !defined(ESPRUINOBOARD) && !defined(ESPRUINOWIFI) && !defined(PUCKJS) && !defined(PIXLJS) && !defined(BANGLEJS) && !defined(EMSCRIPTEN) "\n" "Espruino is Open Source. Our work is supported\n" "only by sales of official boards and donations:\n" "http://espruino.com/Donate\n" #endif 5. Скоприровать файл Espruino/boards/ISKRAJS.py 6. В папку Espruino/targets/iskrajs/ скопировать: jswrap_iskrajs.c jswrap_iskrajs.h ----------------------------------------------------------------------------------------------------------------------- Ну а теперь правка для поддержки дополнительных алгоритмов шифрования: 1. В файле /libs/crypto/mbedtls/config.h после: #define MBEDTLS_SHA256_C #define MBEDTLS_SHA512_C вставить: #define MBEDTLS_KEY_EXCHANGE_DHE_RSA_ENABLED #define MBEDTLS_DHM_C #define MBEDTLS_GCM_C 2. В файле make/crypto/default.make после: libs/crypto/mbedtls/library/ssl_cli.c \ libs/crypto/mbedtls/library/ssl_tls.c \ libs/crypto/mbedtls/library/ssl_srv.c \ libs/crypto/mbedtls/library/x509.c \ libs/crypto/mbedtls/library/x509_crt.c \ вставить: libs/crypto/mbedtls/library/dhm.c \ libs/crypto/mbedtls/library/gcm.c
Кстати, Гордон перенес мою правку по добавлению алгоритмов шифрования в исходники Espruino: https://github.com/espruino/Espruino/commit/45f9f26c153bafddd1ad021dd52bfe1399359395 так что можно просто взять и скомпилировать последнюю версию исходников.