Thank you for your answer but, I'm sorry, my question was very badly asked.
What I want to do is to perform just the second step of a RSA signature
generation : encrypting a hashcode (generated by another mean, let's say for
example I have a SHA-1 digest of 20 bytes) with a private RSA key. In PKCS
this operation is called RSASP1(private key, message representative).
Basically I think I just need to compute m**d mod n, where (n,d) is the
private RSA key, but I can't find a way to do this directly with CrytoPP
without using a RSA Signer class. RSAES_PKCS1v15_Encryptor is not more
useful since it uses a public key.
Do I have to use InvertibleRSAFunction.CalculateInverse() ? I tried the
following code, which seems wrong because the signature length is said to be
incorrect when verifying :
RSA::PrivateKey privkey;
FileSource PrivKeyFile(PrivKeyFilename, true, new HexDecoder);
privkey.Load( PrivKeyFile);
// byte * pHashData pointing to the hashcode
Integer IHash( pHashData , HashLength );
std::string str ;
AutoSeededRandomPool rng;
privkey.CalculateInverse(rng, IHash).DEREncode( HexEncoder(new
StringSink(str) ));
I'm not sure about the use of the Integer, neither about CalculateInverse...
Thanks in advance for any help.
Regards,
C�dric
-----Message d'origine-----
De: Jens Peter Secher [mailto:[EMAIL PROTECTED]
Date: mardi 22 juillet 2003 11:13
�: [EMAIL PROTECTED]
Objet: Re: Encipher short string with private key
[EMAIL PROTECTED] writes:
> BTW, can anyone tell me how to encipher a short string with a *private*
key
Look at the Rabin and RW tests in validate2.cpp (only Crypto++ version
5.1). For these algorithms, the size of the signature from which one
can recover a message is
min { m + 2h + 16 , k } bits
where m = message bits, h = hash bits, and k = key size in bits. So if
you want very small signatures, you need to use small keys and small
hash functions.
--
Jens Peter Secher
_jpsecher get2net dk DD6A 05B0 174E BFB2 D4D9 B52E 0EE5 978A FE63 E8A1_