Esempio n. 1
0
JABBERWERX_API bool jw_tracker_create(struct event_base *selector,
                                      jw_tracker **tracker,
                                      jw_err *err)
{
    assert(selector);
    assert(tracker);

    jw_tracker *tmp_tracker = jw_data_malloc(sizeof(jw_tracker_t));
    if (!tmp_tracker)
    {
        JABBERWERX_ERROR(err, JW_ERR_NO_MEMORY);
        return false;
    }
    memset(tmp_tracker, 0, sizeof(jw_tracker_t));
    if (!jw_htable_create(TRACKER_HTABLE_SIZE,
                          _match_hash,
                          _match_cmp,
                          &tmp_tracker->pending,
                          err))
    {
        jw_data_free(tmp_tracker);
        return false;
    }
    // Get the initial id as a random number.  Odd that this doesn't
    // return an error.
    evutil_secure_rng_get_bytes((void*)&tmp_tracker->last_id,
                                sizeof(tmp_tracker->last_id));

    tmp_tracker->selector = selector;

    *tracker = tmp_tracker;
    return true;
}
Esempio n. 2
0
ec_rep_t *ec_rep_new(ec_res_t *res, const uint8_t *data, size_t data_sz, 
        ec_mt_t media_type)
{
    ec_rep_t *rep = NULL;

    dbg_err_sif ((rep = u_zalloc(sizeof *rep)) == NULL);
    rep->res = res;

    if (data && data_sz)
    {
        dbg_err_if ((rep->data = u_memdup(data, data_sz)) == NULL);
        rep->data_sz = data_sz;
    }

    rep->media_type = media_type;

    /* Attach a random etag on registration. */
    evutil_secure_rng_get_bytes(rep->etag, sizeof rep->etag);

    return rep;
err:
    if (rep)
        ec_rep_free(rep); 
    return NULL;
}
Esempio n. 3
0
std::string random_within_charset(const std::string charset, size_t length) {
    // See <http://stackoverflow.com/questions/440133/>
    if (charset.size() < 1) {
        throw std::runtime_error("random_within_charset_with_empty_charset");
    }
    auto randchar = [&charset]() {
        int rand = 0;
        evutil_secure_rng_get_bytes(&rand, sizeof (rand));
        return charset[rand % charset.size()];
    };
    std::string str(length, 0);
    std::generate_n(str.begin(), length, randchar);
    return str;
}
Esempio n. 4
0
int
tor_init_libevent_rng(void)
{
  int rv = 0;
#ifdef HAVE_EVUTIL_SECURE_RNG_INIT
  char buf[256];
  if (evutil_secure_rng_init() < 0) {
    rv = -1;
  }
  /* Older libevent -- manually initialize the RNG */
  crypto_rand(buf, 32);
  evutil_secure_rng_add_bytes(buf, 32);
  evutil_secure_rng_get_bytes(buf, sizeof(buf));
#endif
  return rv;
}
Esempio n. 5
0
uint32_t red_randui32()
{
    uint32_t ret;
    evutil_secure_rng_get_bytes(&ret, sizeof(ret));
    return ret;
}
Esempio n. 6
0
static void
arc4random_buf(void *buf, size_t nbytes)
{
	evutil_secure_rng_get_bytes(buf, nbytes);
	return;
}
Esempio n. 7
0
int main (int argc, char **argv)
{
  int i, j;
  const char *s1, *s2;

  evthread_use_windows_threads ();

  s1 = evutil_socket_error_to_string (WSAEINTR);

  for (i = 0; i < 3; i++) {
    printf ("\niteration %d:\n\n", i);
    E(WSAEINTR);
    E(WSAEACCES);
    E(WSAEFAULT);
    E(WSAEINVAL);
    E(WSAEMFILE);
    E(WSAEWOULDBLOCK);
    E(WSAEINPROGRESS);
    E(WSAEALREADY);
    E(WSAENOTSOCK);
    E(WSAEDESTADDRREQ);
    E(WSAEMSGSIZE);
    E(WSAEPROTOTYPE);
    E(WSAENOPROTOOPT);
    E(WSAEPROTONOSUPPORT);
    E(WSAESOCKTNOSUPPORT);
    E(WSAEOPNOTSUPP);
    E(WSAEPFNOSUPPORT);
    E(WSAEAFNOSUPPORT);
    E(WSAEADDRINUSE);
    E(WSAEADDRNOTAVAIL);
    E(WSAENETDOWN);
    E(WSAENETUNREACH);
    E(WSAENETRESET);
    E(WSAECONNABORTED);
    E(WSAECONNRESET);
    E(WSAENOBUFS);
    E(WSAEISCONN);
    E(WSAENOTCONN);
    E(WSAESHUTDOWN);
    E(WSAETIMEDOUT);
    E(WSAECONNREFUSED);
    E(WSAEHOSTDOWN);
    E(WSAEHOSTUNREACH);
    E(WSAEPROCLIM);
    E(WSASYSNOTREADY);
    E(WSAVERNOTSUPPORTED);
    E(WSANOTINITIALISED);
    E(WSAEDISCON);
    E(WSATYPE_NOT_FOUND);
    E(WSAHOST_NOT_FOUND);
    E(WSATRY_AGAIN);
    E(WSANO_RECOVERY);
    E(WSANO_DATA);
    E(0xdeadbeef); /* test the case where no message is available */

    /* fill up the hash table a bit to make sure it grows properly */
    for (j = 0; j < 50; j++) {
      int err;
      evutil_secure_rng_get_bytes(&err, sizeof(err));
      evutil_socket_error_to_string(err);
    }
  }

  s2 = evutil_socket_error_to_string (WSAEINTR);
  if (s1 != s2)
    printf ("caching failed!\n");

  libevent_global_shutdown ();

  return EXIT_SUCCESS;
}