Reg slowness seen in openssl 1.1.1

ramakrushna mishra rama.krushna7 at gmail.com
Thu May 9 18:12:33 UTC 2019


Hi ,

I can observe slowness with standalone c programs.  Attached are the sample
c programs.
If I run them with openssl 1.1.1 and 1.1.0e version on Linux system (Linux
2.6.32-504.el6.x86_64 x86_64
). then I can see the difference. If I increase the number of loop in the
program, then the slowness increases.

Could you please look into the program and let me know if anything  I am
doing wrong ?
Or else What could be the issue ?

Thanks and Regards,
Ram Krushna

On Thu, May 9, 2019 at 8:43 PM Salz, Rich <rsalz at akamai.com> wrote:

> So now you know where to start looking, I guess.  You might also change
> your test program so that it calls the functions multiple times, to “smooth
> out” the overhead.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mta.openssl.org/pipermail/openssl-users/attachments/20190509/ae63f485/attachment.html>
-------------- next part --------------
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>

int main(int argc, char *argv[])
{
    char mess1[] = "Now is the time for all good men to come to the aid of their country.";
    char mess2[1024] ;
    int inlen=70, outlen,i;
    EVP_CIPHER_CTX *ctx;
    unsigned char key[] = "0123456789abcdeF";
    unsigned char iv[] = "1234567887654321";

    if (argv[1] == NULL)
    {
        printf ("Usage: encdec <do_encrypt>\n");
        exit (1);
    }
    int do_encrypt = atoi(argv[1]);
    
    for(i =0;i<10000000;i++)
    {
    ctx = EVP_CIPHER_CTX_new();
    const EVP_CIPHER *cp = EVP_get_cipherbyname("AES-128-CBC");
    EVP_CipherInit_ex(ctx, cp, NULL, key, iv,do_encrypt);

    //EVP_CipherInit_ex(ctx, NULL, NULL, key, iv, do_encrypt);

    if(!EVP_CipherUpdate(ctx, mess2, &outlen, mess1, inlen))
    {
        /* Error */
        EVP_CIPHER_CTX_free(ctx);
        return 0;
    }
    if(!EVP_CipherFinal_ex(ctx, mess2, &outlen))
    {
        /* Error */
        EVP_CIPHER_CTX_free(ctx);
        return 0;
    }
    EVP_CIPHER_CTX_free(ctx);
    }
    return 1;
}
-------------- next part --------------
#include <stdio.h>
#include <string.h>
#include <openssl/evp.h>

int main(int argc, char *argv[])
{
  EVP_MD_CTX *mdctx;
  const EVP_MD *md;
  char mess1[] = "Now is the time for all good men to come to the aid of their country.\n";
  char mess2[] = "Now is the time for all good men to come to the aid of their country.\n";
  unsigned char md_value[EVP_MAX_MD_SIZE];
  unsigned int md_len, i;
  int j=0;

  if (argv[1] == NULL)
    {
      printf ("Usage: mdtest digestname\n");
      exit (1);
    }
  
  md = EVP_get_digestbyname (argv[1]);
  if (md == NULL)
    {
      printf ("Unknown message digest %s\n", argv[1]);
      exit (1);
    }
  for (j=0;j<10000000;j++)
  {
      mdctx = EVP_MD_CTX_new ();
      EVP_DigestInit_ex (mdctx, md, NULL);
      EVP_DigestUpdate (mdctx, mess1, strlen (mess1));
      EVP_DigestUpdate (mdctx, mess2, strlen (mess2));
      EVP_DigestFinal_ex (mdctx, md_value, &md_len);
      EVP_MD_CTX_free (mdctx);
  }
      printf ("Digest is: ");
      for (i = 0; i < md_len; i++)
          printf ("%02x", md_value[i]);
      printf ("\n");

  exit (0);
}


More information about the openssl-users mailing list