OpenSSLとドットネットの暗号化に問題があります。私は、OpenSSLで生成されたRSA公開鍵と秘密鍵をドットネットに変換したいと考えています。このキーは、その後のアクションに使用されます。セキュリティ上の理由から、外部キーストアまたはキーファイルの使用は解決策ではありません。私は使用しなければならない古いcppコードの小さな部分を含めて、キーをエクスポートすることができると思うところに2行をマークしました。 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 ##############