RSA_METHOD

本文介绍一种方法使得通过RSA_private_decrypt函数可以使用CSP中的私钥来进行解密和通过RSA_sign函数可以使用CSP中的私钥来进行签名。
     在openssl中RSA结构既可以表示公钥也可以表示私钥,它有一个类型为RSA_METHOD的域meth,该域包含一组实现RSA运算的函数指针。为了可以调用CSP,我们只需要实现一个特殊的RSA私钥,它包含有自己的RSA_METHOD结构。由于很多CSP中通常不都能获取明文的私钥,所以,我们实现的RSA私钥结构中只能包含有公钥信息,即n和e,然后根据公钥寻找到匹配的私钥句柄来进行相关的操作。具体来说,我们实现了一个函数:RSA *RSAToCAPIPrivKey(RSA *rsa)。该函数的参数是个RSA公钥,返回的是一个能够调用CSP私钥的RSA私钥。
     具体的实现如下:
1、从个人证书库中寻找存在私钥且和给定公钥相匹配的证书,如果不存在,则返回NULL
2、用RSA_new()创建一个新的RSA结构,把公钥的n和e复制过去
3、设置新的RSA结构的flags为RSA_FLAG_SIGN_VER,并为之设置一个可以调用CSP的RSA_METHOD结构
4、返回该RSA结构。
     实现的关键是RSA_METHOD结构。

Code


 

你可能感兴趣的:(method)