mbedtls:复制到RSA上下文时遇到问题

时间:2019-06-20 19:20:21

标签: rsa mbedtls

我正在尝试使用mbedTLS执行RSA签名生成。 第一步是将参数复制到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()的用法,对我来说args是正确的。我已经检查了mbedtls_mpi_read_string的返回值,但该返回值未返回0。

我尝试了以下代码,当我这样做时,可以成功地将值复制到P中。

char * temp = "e7653dea17b4d30eec3eea4efbe33be17be37637949de3992035dd83cd9ebcf9983aed1dfc85e9efe3fd4eac2f33919b5c2a15211ee1f3f688e510fa233a6cd47ea6afb14945e52dbdeb2e372f1eeb5d90eab1d1c21bd4d9fdf39998ee2911d487a01335a8bf2848bb52bda007c3342273c5f1e209346d812488d5a082e7b5df";

当我这样做时,rc为0(成功)。不幸的是,由于传入了值,我无法在代码中做到这一点。

1 个答案:

答案 0 :(得分:2)

尝试API mbedtls_mpi_read_binary 例如:mbedtls_mpi_read_binary(&P,temp,length);