CryptoAPI - как достать закрытый ключ RSA?
От: luser  
Дата: 01.04.05 16:45
Оценка:
Подскажите, пожалуйста лузеру.
Я не могу достать закрытый ключ 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;


Заранее спасибо! (помните вы тоже, когда-то были лузерами)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.