Hi,

Lookup "PRIVATEKEYBLOB" on MSDN. Maybe you're not properly or
completely filling up the structure...  Use Crypto++ API's various RSA
(InvertibleRSAFunction) methods to get the struct values in 'Integer'
then use the Integer methods to get the encoded format and populate
them (you will need to reverse the bytes for endianness). And dont
forget to set the blob type and RSA magic value...

See 
http://cryptopp.sourceforge.net/docs/ref521/class_invertible_r_s_a_function.html
for methods such as GetPrivateExponent(). and
http://cryptopp.sourceforge.net/docs/ref521/class_integer.html

HTH,
Vishal

>From MSDN:

Private Key BLOBs

Private key BLOBs (type PRIVATEKEYBLOB) are used to store RSA
public/private key pairs. They have the following format:

BLOBHEADER blobheader;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];

If the key BLOB is encrypted, then everything but the BLOBHEADER
portion of the BLOB is encrypted. Note that the encryption algorithm
and encryption key parameters are not stored along with the private
key BLOB. It is the responsibility of the application to manage this
information.

The following table describes each private key BLOB component. Note
that these fields largely correspond to the ones described in section
7.2 of PKCS #1: RSA Encryption Standard.
Field   Description
blobheader      A BLOBHEADER structure as described in a previous section.
The bType field must always have a value of PRIVATEKEYBLOB.
rsapubkey       A RSAPUBKEY structure as described in Public Key BLOBs. The
magic field must always have a value of 0x32415352 ("RSA2").
modulus         The modulus. This has a value of "prime1 * prime2" and is
often known as "n".
prime1  Prime number 1, often known as "p".
prime2  Prime number 2, often known as "q".
exponent1       Exponent 1. This has a numeric value of "d mod (p - 1)".
exponent2       Exponent 2. This has a numeric value of "d mod (q - 1)".
coefficient     Coefficient. This has a numeric value of "(inverse of q) mod p".
privateExponent         Private exponent, often known as "d".


On Sun, 12 Dec 2004 00:16:14 +0200, Andrus Moor <[EMAIL PROTECTED]> wrote:
> I have a RSA signature S  (128 bytes binary data )  ,
>  modulus n (also 128 bytes binary data)
> and exponent e (which has value 3 or 2**16-1 only)
> 
> I need to calculate
> 
> ( S**e ) MOD n
> 
> All I need is to perform exponent ( S**e ) and MOD operation on
> 128 byte integers.
> 
> Windows CryptoAPI CryptDecrypt() returns invalid key error message.
> 
> How to calculate this ?
> Any sample code ?
> 
> Andrus.
> 
> 


-- 
"Thou shalt not follow the null pointer for at its end madness and chaos lie."

Reply via email to