session_t *session_new(size_t session_data_size, void (*data_cleanup)(session_t *)) { union Key k; // Must be hex binary int err = gen_random_data(&k.u64, 8); if (err != 0) { return NULL; } qlock(&session_map_mutex); session_t **sessionpp = (session_t**)mapinsert(&session_map, k); if (sessionpp == NULL) { return NULL; } *sessionpp = malloc(sizeof(session_t) + session_data_size); if (*sessionpp == NULL) { return NULL; } memset(*sessionpp, 0, sizeof(session_t) + session_data_size); qunlock(&session_map_mutex); //(*sessionpp)->tls_enabled = tls_enabled; (*sessionpp)->id = k.u64; (*sessionpp)->status = SESSION_ACTIVE; (*sessionpp)->refcount = 1; (*sessionpp)->data_cleanup = data_cleanup; return *sessionpp; }
void random_test(regression::regression_base& p, float x, float y, size_t dim) { jubatus::util::math::random::mtrand rand_r(0); // learn with 1000 random data for (size_t i = 0; i < 1000; ++i) { std::pair<float, std::vector<double> > tfv = gen_random_data(x, x, dim); p.train(convert(tfv.second), tfv.first); } size_t ok = 0; for (size_t i = 0; i < 100; ++i) { std::pair<float, std::vector<double> > tfv = gen_random_data(x, x, dim); if (std::fabs(p.estimate(convert(tfv.second)) - tfv.first) < 2.0 * y * x) ++ok; } EXPECT_GT(ok, 90u); }
END_TEST START_TEST(check_ec_sha_signatures) { EC_KEY *key; unsigned char *rdata, *sigdata; size_t dlens[] = { 16, 128, 1024, 65535 }; size_t rsize, siglen, last_min = 1; unsigned int shabits; int res; res = crypto_init(); ck_assert_msg(!res, "Crypto initialization routine failed.\n"); key = generate_ec_keypair(0); ck_assert_msg((key != NULL), "EC SHA signature/verification check failed: could not generate key pair.\n"); for (size_t i = 0; i < (sizeof(dlens) / sizeof(dlens[0])); i++) { for (size_t j = 0; j < N_SIGNATURE_TIER_TESTS; j++) { for (size_t k = 0; k < 3; k++) { if (!k) { shabits = 160; } else if (k == 1) { shabits = 256; } else { shabits = 512; } rdata = gen_random_data(last_min, dlens[i], &rsize); ck_assert_msg((rdata != NULL), "EC SHA signature/verification check failed: could not generate random data.\n"); sigdata = ec_sign_sha_data(rdata, rsize, shabits, key, &siglen); ck_assert_msg((sigdata != NULL), "EC SHA signature/verification check failed: could not sign data.\n"); ck_assert_msg((siglen > 0), "EC SHA signature/verification check failed: signature result had bad length.\n"); res = verify_ec_sha_signature(rdata, rsize, shabits, sigdata, siglen, key); ck_assert_msg((res == 1), "EC SHA signature/verification check failed: signature verification failed (%d).\n", res); free(sigdata); free(rdata); } last_min = dlens[i]; } } free_ec_key(key); fprintf(stderr, "EC SHA signature/verification check completed.\n"); }
TYPED_TEST_P(classifier_test, random) { local_storage s; TypeParam p(&s); srand(0); for (size_t i = 0; i < 1000; ++i) { pair<string, vector<double> > d = gen_random_data(); p.train(convert(d.second), d.first); } size_t correct = 0; for (size_t i = 0; i < 100; ++i) { pair<string, vector<double> > d = gen_random_data(); if (d.first == p.classify(convert(d.second))) { ++correct; } } EXPECT_GT(correct, 95u); }
END_TEST START_TEST(check_ed25519_signatures) { ED25519_KEY *key; ed25519_signature sigbuf; unsigned char *rdata; size_t dlens[] = { 16, 128, 1024, 65535 }; size_t rsize, last_min = 1; int res; res = crypto_init(); ck_assert_msg(!res, "Crypto initialization routine failed.\n"); key = generate_ed25519_keypair(); ck_assert_msg((key != NULL), "ed25519 signature/verification check failed: could not generate key pair.\n"); for (size_t i = 0; i < (sizeof(dlens) / sizeof(dlens[0])); i++) { for (size_t j = 0; j < N_SIGNATURE_TIER_TESTS; j++) { rdata = gen_random_data(last_min, dlens[i], &rsize); memset(sigbuf, 0, sizeof(sigbuf)); ck_assert_msg((rdata != NULL), "ed25519 signature/verification check failed: could not generate random data.\n"); ed25519_sign_data(rdata, rsize, key, sigbuf); res = ed25519_verify_sig(rdata, rsize, key, sigbuf); ck_assert_msg((res == 1), "ed25519 signature/verification check failed: signature verification failed (%d).\n", res); free(rdata); } last_min = dlens[i]; } free_ed25519_key(key); fprintf(stderr, "ed25519 signature/verification check completed.\n"); }
void make_random_data(vector<pair<string, datum> >& data, size_t size) { for (size_t i = 0; i < size; ++i) { pair<string, vector<double> > p = gen_random_data(); data.push_back(make_pair(p.first, convert_vector(p.second))); } }