Подскажите, пожалуйста лузеру.
Я не могу достать закрытый ключ RSA. Экспортировал я его так:
RSAPrivKey1024 key;
DWORD dwLen=sizeof(RSAPrivKey1024);
if(!CryptExportKey(hXchgKey,0,PRIVATEKEYBLOB,0,(BYTE *)&key,&dwLen))
{
return false;
}
Что не так?
HFILE hFileKey;
if(!((hFileKey=_lopen(privkey, OF_READ))!=HFILE_ERROR))
{
return false;
}
EncFileHeader fh;
if(!_hread(hFileKey,&fh,sizeof(fh)))
{
return false;
}
if(!CryptImportKey(hProv,(BYTE *) &fh.kb,sizeof(RSA1024KeyExchBLOB),0,CRYPT_EXPORTABLE,&hXchgKey))
{
return false;
}
P.S
template<int bitlen> struct RSAPubKey
{
PUBLICKEYSTRUC publickeystruc ;
RSAPUBKEY rsapubkey;
BYTE modulus[bitlen/8];
};
template<int bitlen> struct RSAPrivKey
{
RSAPubKey<bitlen> pubkey;
BYTE prime1[bitlen/16];
BYTE prime2[bitlen/16];
BYTE exponent1[bitlen/16];
BYTE exponent2[bitlen/16];
BYTE coefficient[bitlen/16];
BYTE privateExponent[bitlen/8];
};
typedef RSAPubKey<1024> RSAPubKey1024;
typedef RSAPrivKey<1024> RSAPrivKey1024;
template<int bitlen> struct RSAKeyExchBLOB
{
PUBLICKEYSTRUC publickeystruc ;
ALG_ID algid;
BYTE encryptedkey[bitlen/8];
};
typedef RSAKeyExchBLOB<1024> RSA1024KeyExchBLOB;
typedef struct
{
RSA1024KeyExchBLOB kb;
unsigned __int64 fSize;
} EncFileHeader;
Заранее спасибо! (помните вы тоже, когда-то были лузерами)