Неофициальная прошивка 2v08.200

Тема в разделе "Iskra JS, Espruino, Йодо", создана пользователем akot, 5 апр 2021.

  1. akot

    akot Нерд

    Здравствуйте!

    Предлагаю вашему вниманию свежую неофициальную прошивку 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, как в этой теме.
     

    Вложения:

    FomaLSSJ, ZAZ-965, sys и ещё 1-му нравится это.
  2. ZAZ-965

    ZAZ-965 Гуру

    @akot, поделитесь информацией, что правили. Попробую собрать версию под Linux и проверить.
     
  3. akot

    akot Нерд

    Публикую инструкцию форумчанина 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
     
    sys и ZAZ-965 нравится это.
  4. akot

    akot Нерд

    sys и ZAZ-965 нравится это.
  5. ZAZ-965

    ZAZ-965 Гуру

    Проверено, Linux версия Espruino работает с Telegram.