2011-07-26 58 views
1

我有关于OpenSSL和dotnet加密的问题。我想将由OpenSSL生成的RSA公钥和私钥转换为dotnet。这个键然后用于进一步的操作。出于安全原因,外部密钥库或密钥文件的使用不是解决方案。我已经包含了我必须使用的旧cpp代码的一小部分,并且标记了两行,我认为可以导出这些密钥。 RSA密钥结构来自外部PKI服务器。实际上,PKI服务器在发送消息时为选定的用户提供了一系列公钥。每个用户的私钥始终存储在本地。有人能帮助我吗?OpenSSL(cpp)和.net RSA密钥交换

非常感谢您的帮助

沃尔克

############## start code ############## 

typedef struct _KEY_POINT 
{ 
      unsigned short size; 
      unsigned short key_size; 
      unsigned long crc; 
      unsigned char key_data[1]; 
} KEY_POINT, * PKEY_POINT; 

unsigned char * encryptRSA(const unsigned char * pSrcBuffer, 
         unsigned long * pBufferSize, 
         const PKEY_POINT pPublicKey) 
{ 
RSA * pRsa = NULL; 
// -----snip ---------------- 
      unsigned char * pPublic_data = pPublicKey->key_data; 
      pRsa = d2i_RSAPublicKey(&pRsa, (const unsigned char **)&pPublic_data, pPublicKey->key_size); 
// Here chance to export *pRsa as .net public keye e.g. as string (base 64 encoded) 
// -----snip ---------------- 
} 

unsigned char * decryptRSA(const unsigned char * pSrcBuffer, 
         unsigned long * pBufferSize, 
         const PKEY_POINT pPrivateKey) 
{ 
RSA * pRsa = NULL; 
// -----snip ---------------- 
      unsigned char * pPublic_data = pPublicKey->key_data; 
      pRsa = d2i_RSAPrivateKey(&pRsa, (const unsigned char **)&pPublic_data, pPublicKey->key_size); 
// Here chance to export *pRsa as .net private key e.g. as string (base 64 encoded) 
// -----snip ---------------- 
} 

############## end code ############## 

回答