There are many ways to represent a PK type key in ASN.1 as most of them rely on a collection of numbers to form the key. There are well formed standards for specific ASN.1 layouts. Crypto++ offers some of the more common formats, and also provides ASN.1 parsing for handling most of the others. This is probably an X.509 public key which has it's own object. Give it a try, if that doesn't work it isn't very hard to just read the ASN.1 stream diectly into Integers and place them in the RSA object.

        73,
                Shawn

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





Reply via email to