我正在尝试使用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(成功)。不幸的是,由于传入了值,我无法在代码中做到这一点。
答案 0 :(得分:2)
尝试API mbedtls_mpi_read_binary 例如:mbedtls_mpi_read_binary(&P,temp,length);