Changeset 137 for trunk/src/sh_utils.c


Ignore:
Timestamp:
Oct 28, 2007, 1:17:58 AM (17 years ago)
Author:
rainer
Message:

Fix compile errors.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/sh_utils.c

    r133 r137  
    4545#include "sh_tiger.h"
    4646#include "sh_entropy.h"
     47#include "sh_pthread.h"
    4748
    4849#undef  FIL__
     
    570571}
    571572
    572 char * sh_util_charhex( unsigned char i )
    573 {
    574   static char i2h[2];
     573char * sh_util_charhex( unsigned char i , char * i2h)
     574{
    575575  int j, k;
    576576
     
    669669  UINT32    * h2;
    670670  UINT32      cc[KEY_LEN/4];
    671   char      * res;
    672671  UINT32      kbuf[KEY_BYT/sizeof(UINT32)];
    673672  char hashbuf[KEYBUF_SIZE];
     
    681680  if (KEY_BLOCK > (KEY_LEN/2))
    682681    {
    683       res = sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     682      (void) sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     683      sl_strlcpy(res, hashbuf, len);
    684684      SL_RETURN(res, _("sh_util_hmac_tiger"));
    685685    }
     
    689689  if (sh_util_hextobinary (K, hexkey, KEY_LEN) < 0)
    690690    {
    691       res = sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     691      (void) sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     692      sl_strlcpy(res, hashbuf, len);
    692693      SL_RETURN(res, _("sh_util_hmac_tiger"));
    693694    }
     
    712713                      _("integer overflow"),
    713714                      _("sh_util_hmac_tiger"));
    714       res = sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     715      (void) sh_tiger_hash (NULL, TIGER_DATA, 0, hashbuf, sizeof(hashbuf));
     716      sl_strlcpy(res, hashbuf, len);
    715717      SL_RETURN(res, _("sh_util_hmac_tiger"));
    716718    }
     
    749751
    750752static char * sh_util_hash_tiger ( char * hexkey, 
    751                                    char * text, size_t textlen
     753                                   char * text, size_t textlen,
    752754                                   char * res, size_t len)
    753755{
    754756  char           h2[2*KEY_LEN+1];
     757  char hashbuf[KEYBUF_SIZE];
     758
    755759  SL_ENTER(_("sh_util_hash_tiger"));
    756760
     
    760764                                  (unsigned long) textlen,
    761765                                  hashbuf, sizeof(hashbuf)),
    762                     2*KEY_LEN+1,
     766                    2*KEY_LEN+1
    763767                    );
    764768
     
    917921  UINT32 * state = (UINT32 *) vstate;
    918922
     923  /*
    919924  if (skey->rngI == BAD)
    920925    (void)taus_seed();
     926  */
    921927
    922928#define TAUSWORTHE(s,a,b,c,d) ((s &c) <<d) ^ (((s <<a) ^s) >>b)
     
    932938 * input for a one-way hash function.
    933939 */
    934 UINT32   taus_svec[6];
    935 
    936 UINT32 taus_get (void *state1, void *state2, void *state3)
    937 {
     940
     941UINT32 taus_get ()
     942{
     943  UINT32   taus_svec[6];
    938944  UINT32   retval;
    939945  UINT32 * res;
     
    943949  UINT32       kbuf[KEY_BYT/sizeof(UINT32)];
    944950
     951  SH_MUTEX_LOCK_UNSAFE(mutex_skey);
    945952  if (res_num > 0)
    946953    {
    947954      retval  = res_vec[res_num];
    948955      res_num = (res_num == 5) ? 0 : (res_num + 1);
     956      SH_MUTEX_UNLOCK_UNSAFE(mutex_skey); /* alternative path */
    949957      return  retval;
    950958    }
    951 
    952   taus_svec[0] = taus_get_long (state1);
    953   taus_svec[1] = taus_get_long (state2);
    954   taus_svec[2] = taus_get_long (state3);
    955   taus_svec[3] = taus_get_long (state1);
    956   taus_svec[4] = taus_get_long (state2);
    957   taus_svec[5] = taus_get_long (state3);
     959  SH_MUTEX_UNLOCK_UNSAFE(mutex_skey);
     960
     961  (void)taus_seed();
     962
     963  SH_MUTEX_LOCK_UNSAFE(mutex_skey);
     964  taus_svec[0] = taus_get_long (&(skey->rng0[0]));
     965  taus_svec[1] = taus_get_long (&(skey->rng1[0]));
     966  taus_svec[2] = taus_get_long (&(skey->rng2[2]));
     967  taus_svec[3] = taus_get_long (&(skey->rng0[0]));
     968  taus_svec[4] = taus_get_long (&(skey->rng1[0]));
     969  taus_svec[5] = taus_get_long (&(skey->rng2[0]));
     970  SH_MUTEX_UNLOCK_UNSAFE(mutex_skey);
    958971
    959972  res     = sh_tiger_hash_uint32 ( (char *) &taus_svec[0],
     
    962975                                   kbuf, KEY_BYT/sizeof(UINT32));
    963976
     977  SH_MUTEX_LOCK_UNSAFE(mutex_skey);
    964978  for (i = 1; i < 6; ++i)
    965979    {
     
    968982  retval  = taus_svec[0];
    969983  res_num = 1;
     984  SH_MUTEX_UNLOCK_UNSAFE(mutex_skey);
    970985
    971986  taus_svec[0] = 0; taus_svec[1] = 0; taus_svec[2] = 0;
     
    10271042  int                  status;
    10281043  static unsigned long seed_time = 0;
     1044  unsigned long        gtime;
    10291045
    10301046  SL_ENTER(_("taus_seed"));
     
    10321048  if (skey->rngI == GOOD)
    10331049    {
    1034       if ( (sh_unix_longtime () - seed_time) < 3600)
     1050      if ( (sh_unix_longtime () - seed_time) < 7200)
    10351051        SL_RETURN( (0), _("taus_seed"));
    10361052    }
     
    10421058  if (!SL_ISERROR(status))
    10431059    {
    1044       skey->rngI = GOOD;
     1060      SH_MUTEX_LOCK_UNSAFE(mutex_skey);
    10451061      memcpy (&skey->rng0[0], &bufx[0],                  2*sizeof(UINT32));
    10461062      memcpy (&skey->rng1[0], &bufx[2*sizeof(UINT32)],   2*sizeof(UINT32));
     
    10561072      taus_set_from_state( &(skey->rng2[0]), &(skey->rng2[0]));
    10571073
     1074      skey->rngI = GOOD;
     1075      SH_MUTEX_UNLOCK_UNSAFE(mutex_skey);
    10581076      SL_RETURN( (0), _("taus_seed"));
    10591077    }
     
    10641082  /* emergency backup - unsafe !
    10651083   */
    1066   skey->rngI = GOOD;
    10671084#ifdef HAVE_GETTIMEOFDAY
    1068   taus_set_from_ulong ( &(skey->rng0[0]), LCG (sh_unix_notime())      );
     1085  gtime = sh_unix_notime();
    10691086#else
    1070   taus_set_from_ulong ( &(skey->rng0[0]), LCG (seed_time)      );
     1087  gtime = seed_time;
    10711088#endif
     1089
     1090  SH_MUTEX_LOCK_UNSAFE(mutex_skey);
     1091  taus_set_from_ulong ( &(skey->rng0[0]), LCG (gtime)          );
    10721092  taus_set_from_ulong ( &(skey->rng1[0]), LCG (skey->rng0[0])  );
    10731093  taus_set_from_ulong ( &(skey->rng2[0]), LCG (skey->rng1[0])  );
    10741094  skey->rngI = BAD;
     1095  SH_MUTEX_UNLOCK_UNSAFE(mutex_skey);
    10751096
    10761097  SL_RETURN( (-1), _("taus_seed"));
Note: See TracChangeset for help on using the changeset viewer.