73,
ShawnGuillaume JOLIVET wrote:
You're absolutly right.
I have made my tests with a RSA public key generated by crypto++, and it worked, but now I use a public key generated by CA and of course my program fails because the key is now an ASN.1 BEREncode structure.
I've never looked at the key file because I thought that the problem was due to my program.
I have however some questions :
- Can crypto++ use ASN.1 structure key directly ? If yes, how can I do so?
- If not, do you know the ASN.1 structure of a RSA public key ?
- To sign a message with crypto++, should I first hash and next crypt it or is there a method to do it directly? Thanks.
Guillaume.
----- Original Message ----- *From:* Shawn Masters <mailto:[EMAIL PROTECTED]> *To:* [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> *Sent:* Tuesday, July 15, 2003 3:13 PM *Subject:* RE: RSA private key file problems
Normally you will need to do more then just hex decode
the key, as the key is just not one value but a small collection. Crypto++ only really accepts loading of RSA keys in one of three
ways, ASN.1(BERdecode), loading the individual numbers separately
with sets, or name value pairs (This is new and I have not tried
it). Of these ASN.1 is the most common, and only it and the name
values pairs can be easily marshaled to a file.
Do you know what format the key is in? Until you know and have the code working with it, everything past forming the RSA object is not going to work. You probably should read up on ASN.1 and RSA before proceeding. You can find decent information at RSALabs.
73,
Shawn
-----Original Message----- *From:* Guillaume JOLIVET [mailto:[EMAIL PROTECTED] *Sent:* Tuesday, July 15, 2003 8:50 AM *To:* [EMAIL PROTECTED] *Subject:* Re: RSA private key file problems
Thank you for your help, but does someone have any example for signing (RSA with MD5 or RSA with SHA1) a byte buffer using a private key file.
For the moment, I've got :
AutoSeededRandomPool rng;
// Buffer I want to sign
byte* bufferIWantToSign = new byte[16];
memcpy(bufferIWantToSign, "0123456789ABCDEF", 16);
// Private key file FileSource privFile(//<privateKeyFilePath>//, true, new HexDecoder());
RSASSA_PKCS1v15_MD5_Signer priv(privFile);
// Signature length long lSignedTextLength = priv.SignatureLength();
// Create signature buffer byte* abySignedBuffer = new byte[lSignedTextLength];
// Sign
priv.SignMessage(
rng, bufferIWantToSign, 16,
abySignedBuffer);
Is this solution correct ? Does //abySignedBuffer// contain the result of the signature of //bufferIWantToSign //? If no, how would you do it.
----- Original Message -----
From: "Shawn Masters" <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
To: <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>
Sent: Tuesday, July 15, 2003 2:15 PM
Subject: RE: RSA private key file problems
I think the problem may be a little deeper then this. RSASSA_PKCS1v15_MD5_Signer is not an encryptor, but a signer. This means it takes a private key and encrypts the MD5 of the data being signed. The PKCS1 defines how the resulting data is formed so it is secure (or atleast more so then some simpler methods of using RSA) and readable by the verifier. To encrypt with RSA you will use a public key, and some symmetric cipher. Once you get to that point use debugging methods to look into the values to make sure that you have loaded all of the correct numbers for the algorithm chosen.
73, Shawn
-----Original Message----- From: Guillaume JOLIVET [mailto:[EMAIL PROTECTED] Sent: Tuesday, July 15, 2003 6:37 AM To: [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]> Subject: RSA private key file problems
Hi all,
I would like to crypt data with a RSA with MD5 algorithm but I've got some problems. My private key file is a variable-size hexadecimal format file.
Here are my code lines :
FileSource privFile(<myKeyFilePath>, true, new HexDecoder()); RSASSA_PKCS1v15_MD5_Signer priv(privFile);
When I try to crypt, the program fails on the creation of the RSASSA_PKCS1v15_MD5_Signer object. I think that the FileSource object is not correct because of the key file format, but I don't know what kind of object to use instead the HexDecoder object.
Does somebody got any idea,
Thanks, Guillaume.
