My private key file is a X509 RSAPrivate key ASN representation :

SEQUENCE ::={
    version    INTEGER;
    privateKeyAlgorithmIdentifier SEQUENCE
        algorithm    RSAEncryption    OID
        parameters
    privateKey OCTET STRING
        modulus;
        publicExponent;
        privateExponent ;
        prime1;
        prime2;
        exponent1;
        exponent2;
        coefficient;
}


- Can crypto++ use this type of key directly ? If yes, how can I do so, do
you have some examples? with InvertibleRSAFunction?
- 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" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Friday, July 18, 2003 4:01 PM
Subject: Re: RSA private key file problems


> 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