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."
