我使用PEM_read_RSAPrivateKey功能以这样的方式PEM_read_RSAPrivateKey:获取RSA密钥公共模数和指数
void test(void)
{
RSA * privateKey = NULL;
FILE * fp;
if(NULL != (fp= fopen("./my_file.key", "r")))
{
privateKey=PEM_read_RSAPrivateKey(fp,NULL,NULL,NULL);
if(privateKey==NULL)
{
printf("\n\tCould NOT read RSA private key file");
}
else
{
printf("\n\tRSA structure filled");
}
// This is working OK and privateKey is NOT NULL
}
}
然后,我尝试检索模数和公开指数,以填补他们变成了个人的结构:
struct
{
unsigned char modulus[256];
unsigned char pub_exp[8];
} s;
但我尝试过的所有访问(我尝试了很多)到privateKey-> n将导致分段错误。
例如:
unsigned char modulus [2048];
unsigned char exp[2048];
BN_bn2bin(privateKey->n, modulus); // Segmentation fault results from this call
所以我的问题是:如何从RSA结构复制模量或公用指数到我的结构“的”领域?
有人可以帮忙吗? 非常感谢, 问候,
西尔
有一个完整的OpenSSL/RSA测试程序名为'test-rsa.c'位于[由openssl生成的私钥不满足n = p * q](http://stackoverflow.com/questions/22119835/private -key生成逐OpenSSL的-不-未满足-NPQ)。这会对你造成什么影响吗? – jww