У меня проблема с OpenSSL и dotnet-шифрованием. Я хотел бы преобразовать открытый и закрытый ключ RSA, сгенерированный OpenSSL, в дотнет-ключ. Этот ключ затем используется для дальнейших действий. По соображениям безопасности использование внешнего хранилища ключей или файла ключей не является решением. Я включил небольшую часть старого кода cpp, который я должен использовать, и отметил две строки, где я думаю, что можно экспортировать ключи. Структура ключа RSA происходит от внешнего сервера PKI. Фактически сервер PKI предоставляет массив открытых ключей для выбранных пользователей при отправке сообщения. Закрытый ключ для каждого пользователя всегда хранится локально. Можно ли мне помочь?
Большое спасибо за вашу помощь
Volker
############## 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 ##############