Thanks for your advice, by reading the key from a previously loaded
X509 object I can get it from the certificate file. But the problem
that the result of the decryption is not the same as the original data
still exists. What could be the problem? The same operation works fine
with openssl rsautl on the command-line.
Thanks and regards
Till Elsner
Am 08.04.2008 um 09:04 schrieb shankar ks:
Hi Till,
The error u got is you can not read the public key as in the
certificate it is not finding the lines as "BEGIN RSA CERTIFICATE"
so here i am giving you the code , use it directly , it will work
fine as i refined it many times ...
pubk = RSA_new();
if(pubk == NULL)
printf("error to create new RSA structure \n");
fp = fopen (recevercert, "r");
if (fp == NULL){
printf("error opening the pub file\n");
exit (1);
}
x509 = PEM_read_X509(fp, NULL, NULL, NULL);
fclose (fp);
if (x509 == NULL) {
printf("error reading the certificate \n");
ERR_print_errors_fp (stderr);
exit (1);
}
pub=X509_get_pubkey(x509);
if (pub == NULL) {
printf("error reading the public key \n");
ERR_print_errors_fp (stderr);
exit (1);
}
pubk = EVP_PKEY_get1_RSA(pub);
if(pub == NULL)
printf("error setting the public key from EVP_PKEY_set1_RSA function
\n");
----
after this you do encryption and decryption , then it will work
fine, one more thing here is you should not use RSA_encrypt or
decrypt functions for large amount of data , it is not
recommended , so u must avoid of using asymmetric alrorithems for
large amount of data or for files .. or I recommend not to use it
for any data or file except for encryption of keys only.
-- Regards
Shankar
On 4/8/08, Till Elsner <[EMAIL PROTECTED]> wrote:
Hi,
I'm trying to make an application encypting data on the server side
using a public key and decrypting it on the client side using the
related private key. Now i've run in two problems:
I have a private key and a related certificate file created from a
certificate request (CSR) and signed by an own CA. Both are created
using OpenSSL. The first problem is that I can't get the public key
out of the cerificate using PEM_read_RSA_PUBKEY. I've exported the
public key alone to a single file, from that I can load the public
key. Trying to load it from the certificate gives an "no starting
line" error.
Second, and maybe even worse, when encrypting data with the public
key using RSA_public_encrypt and again decrypting it with the
private one using RSA_private_decrypt, the decrypted data differs
widely from the original data. When I try the same using OpenSSL's
rsautl command-line tool, it works perfectly with this key pair
(public key/private key as well as certificate/private key).
Both keys and certificate are in PEM format. The certificates
signature is valid.
Could anyone give me some hint what might be going on here?
Thanks and regards
Till Elsner
______________________________________________________________________
OpenSSL Project http://www.openssl.org
User Support Mailing List openssl-users@openssl.org
Automated List Manager [EMAIL PROTECTED]
--
--Best Regards
Shankar