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 -----
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;
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 -----
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] 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.
|