Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mbed_tls: don't byteswap if HW acceleration is already big endian #431

Closed
wants to merge 1 commit into from

Conversation

greenaddress
Copy link
Contributor

Tested on:

esp32:

  • vanilla wally without mbed
  • wally with mbed with acceleration off
  • wally with mbed with acceleration on

esp32s3:

  • vanilla wally without mbed
  • wally with mbed with acceleration off
  • wally with mbed with acceleration on

should also work on esp32s2, esp32c3, esp32c6, esp32p4, etc

Please note:

There's 4 implementations: software, parallel engine, block engine, dma

SOC_SHA_SUPPORT_PARALLEL_ENG is only defined for esp32. esp32s3 uses DMA

SOC_SHA_ENDIANNESS_BE is not available in release branches, only in master and only for esp32 AFAIK

example of how idf checks for things https://github.com/espressif/esp-idf/blob/master/components/mbedtls/port/sha/esp_sha.c#L19

We depend on #include <soc/soc_caps.h> to get SOC_SHA_SUPPORT_PARALLEL_ENG (which wasn't available to wally before!!!) and we depend on `#include <sdkconfig.h> to get CONFIG_MBEDTLS_HARDWARE_SHA which is necessary to distinguish between mbedtls with or without hw acceleration.

instead of including sdkconfig.h (and or soc_caps.h) we could have other flags like HAVE_MBEDTLS_SHA256_H and HAVE_MBEDTLS_SHA512_H

README.md Show resolved Hide resolved
src/internal.c Show resolved Hide resolved
    Tested on:

    esp32:
    - vanilla wally without mbed
    - wally with mbed with acceleration off
    - wally with mbed with acceleration on

    esp32s3:
    - vanilla wally without mbed
    - wally with mbed with acceleration off
    - wally with mbed with acceleration on

    should also work on esp32s2, esp32c3, esp32c6, esp32p4, etc

    Please note:

    There's 4 implementations: software, parallel engine, block engine, dma

    SOC_SHA_SUPPORT_PARALLEL_ENG is only defined for esp32.
    esp32s3 uses DMA

    SOC_SHA_ENDIANNESS_BE is not available in release branches, only in master and only for esp32 AFAIK

    example of how idf checks for things https://github.com/espressif/esp-idf/blob/master/components/mbedtls/port/sha/esp_sha.c#L19

    We depend on `#include <soc/soc_caps.h>` to get SOC_SHA_SUPPORT_PARALLEL_ENG (which wasn't available to wally before!!!)
    and we depend on `#include <sdkconfig.h> to get CONFIG_MBEDTLS_HARDWARE_SHA which is necessary to distinguish between mbedtls with or without hw acceleration.

    instead of including sdkconfig.h (and or soc_caps.h) we could have other flags like `HAVE_MBEDTLS_SHA256_H` and `HAVE_MBEDTLS_SHA512_H`

    esp32 -> requires the `cpu_to_be32` steps with both software and hardware sha

    esp32s3 -> requires `cpu_to_be32` only for software, for hardware the memcpy is enough

    `SOC_SHA_SUPPORT_PARALLEL_ENG` is defined only for esp32
    `SOC_SHA_ENDIANNESS_BE` is defined only for esp32 but only in master and unreleased yet in a stable release.

    `SOC_SHA_SUPPORT_DMA` is defined for esp32s3 (and esp32s2)
@jgriffiths
Copy link
Contributor

Merged with README tweaks, thanks!

@jgriffiths jgriffiths closed this Nov 10, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants