mbedtls: проблемы с копированием в контекст RSA - PullRequest
2 голосов
/ 20 июня 2019

Я пытаюсь выполнить генерацию подписи 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 (что является успехом).К сожалению, я не могу сделать это в своем коде, поскольку значения передаются.

1 Ответ

2 голосов
/ 21 июня 2019

Попробуйте API mbedtls_mpi_read_binary пример: mbedtls_mpi_read_binary (& P, темп, длина);

...