Hi,

   I use openssl RSA encrypt and decrypt both on windows 2003 and solaris
(amd64 and sparc T2000). I wrote some performance test code like

       gettimeofday(&tpsbegin, NULL);
       for (i = 0; i < 100; i++)
       {
           r = RSA_public_encrypt(245, plain_data, enc_data, key,
               RSA_PKCS1_PADDING);
           if (r <= 0)
           {
               err = ERR_peek_last_error();
               printf("encrypt error %s\n", ERR_reason_error_string(err));
               break;
           }
           r = RSA_private_decrypt(r, enc_data, dec_data, key,
                   RSA_PKCS1_PADDING);
           if (r <= 0)
           {
               err = ERR_peek_last_error();
               printf("decrypt error %s\n", ERR_reason_error_string(err));
               break;
           }
       }
       gettimeofday(&tpsend, NULL);
       interval = (tpsend.tv_sec - tpsbegin.tv_sec) * 1000000;
       interval += tpsend.tv_usec;
       interval -= tpsbegin.tv_usec;
       interval = interval / 1000;
       printf("RSA enc and dec %d times %d\n", i, interval);

At first, I ran the code on windows, 100 times RSA encryption and decryption
wasted 1500ms, then I ran the code on Solaris (sparc t2000),  it wast
8000ms.
I googled that why Solaris RSA enc and dec is so slow and found that the
pkcs11 engine should be use to improve Solaris RSA performance.
I did use the pkcs11 engine
   e = ENGINE_by_id("pkcs11");
   if (e != NULL)
   {
       if (ENGINE_init(e) == 0)
       {
           printf("engine init failed\n");
       }

       if (ENGINE_set_default_RSA(e) == 0)//, ENGINE_METHOD_ALL) == 0)
       {
           printf("set engine failed\n");
       }

       ENGINE_finish(e);
       ENGINE_free(e);
   }
   else
   {
       printf("finding engine failed\n");
   }
Solaris (sparc t2000) 100 times RSA encryption and decryption wasted only
600ms, I also test the code on Solaris (amd64 3800+ dual core), 100 times
RSA encryption and decryption wasted about 700ms, the pkcs11 engine
extremely improve the RSA performance.
And now, I have 2 questions,

First 1, Whether the pkcs11 engine affect the encryption result?  I mean ff
I encrypt the plain data by pkcs11 engine, can I decrypt them normally
without pkcs11 engine?
Sencond 1, pkcs11 engine is amazing on Solaris, I want to know how can I
imporove windows (I did not found pkcs11 engine on windows) RSA dec and enc
performance to pkcs11 level?

Thank you for your help.

Reply via email to