Каков размер (в байтах) Mbed TLS rsa_context?

Я использую MBED-TLS на устройстве STM32F103. В устройстве STM 32F103 мало памяти SRAM (20 Кбайт).

Я хочу рассчитать плунжер, используемый mbedtls_rsa_context

Как это сделать? Это :

sizeof (mbedtls_rsa_context) + 13 * sizeof (mbedtls_mpi) + mbedtls_mpi_size (D) + ..... + mbedtls_mpi_size (Vf)

Спасибо,

С Уважением.


person LeMoussel    schedule 09.01.2019    source источник
comment
Что мешает вам спросить свой компилятор, используя sizeof() для всего за один раз?   -  person Yunnosch    schedule 09.01.2019
comment
sizeof() не будет возвращать объем ОЗУ, который каждый mbedtls_mpi использует в куче   -  person Ron Eldor    schedule 09.01.2019


Ответы (1)


Обратите внимание, что структура mbedtls_rsa_context содержит эти 13 mbedtls_mpi структур, поэтому, если вы сделаете sizeof(mbedtls_rsa_context), она уже включает часть 13 * sizeof(mbedtls_mpi ). Так что нет необходимости добавлять эту часть. Что касается оперативной памяти, которую потребляет каждый mbedtls_mpi, как вы можете видеть в mbedtls_mpi_grow, выделяемый размер - это количество конечностей (x-> n), умноженное на количество символов в конечностях (CiL). Если вы используете mbedtls_mpi_size на каждом mpi, он просто даст вам размер в байтах, который использует большое целое число, без начальных нулей, если они есть, которые также потребляют RAM. Обратите внимание, что это означает доступ к внутренним членам структуры, что не рекомендуется, однако нет общедоступного API для получения этих знаний.

Если вы ограничены SRAM, рассматривали ли вы возможность использования ключей ECDSA, так как одинаковые ключи силы безопасности потребляют меньше оперативной памяти?
С уважением

person Ron Eldor    schedule 09.01.2019
comment
Рон Элдор, спасибо за быстрый ответ. К сожалению, мне приходится использовать 4096-битный ключ RSA. - person LeMoussel; 09.01.2019