Winapi PRIVATEKEYBLOB到OpenSSL的RSA结构

Winapi PRIVATEKEYBLOB到OpenSSL的RSA结构,winapi,openssl,Winapi,Openssl,如何将privatekeyblob中的Microsoft导出密钥转换为可与openSSL一起使用的struct RSA?查看文档时,看起来字段很直观地一一对应。您是否尝试过使用此信息实现映射代码?如果不是的话,我会试一试 以下是(链接到): 以下是: 是的,我试过了,但是,在那个microsoft结构中没有找到BIGNUM*e,我试着从RSAPubkey获取它,但是没有成功。那不是RSAPubkey中的xp吗?嗯,也许,我如何验证创建的结果是正确的密钥?对于私钥,内容大部分是加密的。您是否有测试

如何将privatekeyblob中的Microsoft导出密钥转换为可与openSSL一起使用的struct RSA?

查看文档时,看起来字段很直观地一一对应。您是否尝试过使用此信息实现映射代码?如果不是的话,我会试一试

以下是(链接到):

以下是:


是的,我试过了,但是,在那个microsoft结构中没有找到BIGNUM*e,我试着从RSAPubkey获取它,但是没有成功。那不是RSAPubkey中的
xp
吗?嗯,也许,我如何验证创建的结果是正确的密钥?对于私钥,内容大部分是加密的。您是否有测试代码,可以用来传入构造的RSA结构以打开SSL(或使用私钥blob传递到Win32,具体取决于从哪个结构开始)?我需要将blob转换为RSA密钥。当我使用带有key null param的win export函数导出密钥时,blob不应加密。我无法确保转换的密钥与blob中的密钥相同
typedef struct _RSAPUBKEY {
  DWORD magic;
  DWORD bitlen;
  DWORD pubexp;
} RSAPUBKEY;

BLOBHEADER blobheader;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];
 struct
        {
        BIGNUM *n;              // public modulus
        BIGNUM *e;              // public exponent
        BIGNUM *d;              // private exponent
        BIGNUM *p;              // secret prime factor
        BIGNUM *q;              // secret prime factor
        BIGNUM *dmp1;           // d mod (p-1)
        BIGNUM *dmq1;           // d mod (q-1)
        BIGNUM *iqmp;           // q^-1 mod p
        // ...
        };
 RSA