Я пытаюсь выполнить генерацию подписи RSA с помощью mbedTLS.Первым шагом было бы скопировать параметры в контекст rsa, а затем использовать этот контекст для выполнения операции подписи.У меня возникла проблема на этом этапе, когда я пытаюсь скопировать значение в mbedtls_mpi, а затем в контекст.Пожалуйста, найдите мой код ниже:
#define RADIX 16
mbedtls_mpi N, P, Q, E;
// char *temp;
// temp = malloc(512 + 1);
// declaration of temp looks like this and value assigned is displayed below
// ignored any code related to temp, but shown what value is in it in next section
mbedtls_mpi_init( &P ); // init P
rc = mbedtls_mpi_read_string( &P, RADIX, temp ); // copy from temp to P
printf("\nrc value from mbedtls_mpi_read_string = %d\n", rc);
// show what's in P
mbedtls_mpi_write_file( "\n\nFrom mbedtls_mpi_write_file P: ", &P, RADIX, NULL );
Я отображал значения на экране, чтобы быть уверенным, какие значения хранятся в переменных:
temp : e7653dea17b4d30eec3eea4efbe33be17be37637949de3992035dd83cd9ebcf9983aed1dfc85e9efe3fd4eac2f33919b5c2a15211ee1f3f688e510fa233a6cd47ea6afb14945e52dbdeb2e372f1eeb5d90eab1d1c21bd4d9fdf39998ee2911d487a01335a8bf2848bb52bda007c3342273c5f1e209346d812488d5a082e7b5df
rc value from mbedtls_mpi_read_string = -6
From mbedtls_mpi_write_file P : 00
Я смотрел на использованиеmbedtls_mpi_read_string () и мне кажется, что аргументы верны.Я проверил возвращаемое значение из mbedtls_mpi_read_string, и это не возвращает 0.
Я попробовал следующий код, и когда я это сделаю, я могу успешно скопировать значение в P.
char * temp = "e7653dea17b4d30eec3eea4efbe33be17be37637949de3992035dd83cd9ebcf9983aed1dfc85e9efe3fd4eac2f33919b5c2a15211ee1f3f688e510fa233a6cd47ea6afb14945e52dbdeb2e372f1eeb5d90eab1d1c21bd4d9fdf39998ee2911d487a01335a8bf2848bb52bda007c3342273c5f1e209346d812488d5a082e7b5df";
Когда я делаю это, rc равен 0 (что является успехом).К сожалению, я не могу сделать это в своем коде, поскольку значения передаются.