Beispiel #1
0
END_TEST

START_TEST(test_murmurhash3_random)
{
    char test[16];
    uint32_t result1;
    uint32_t result2;
    unsigned int init_seed;
    unsigned int seed;
    size_t len;
    int i;

    /* generate a random string so each time we test with different values */
    init_seed = time(0);
    seed = init_seed;
    /* use also random length (min len = 1) */
    len = 1 + rand_r(&seed) % 14;
    for (i = 0; i < len; i++) {
        test[i] = 1 + rand_r(&seed) % 254;
    }
    test[len] = '\0'; /* null terminate */

    fprintf(stdout, "test_murmurhash3_random seed: %d\n", init_seed);

    result1 = murmurhash3(test, len + 1, init_seed);
    result2 = murmurhash3(test, len + 1, init_seed);
    fail_if(result1 != result2);
}
Beispiel #2
0
END_TEST

START_TEST(test_murmurhash3_check)
{
    const char *tests[6] = { "1052800007", "1052800008", "1052800000",
                             "abcdefghijk", "abcdefghili", "abcdefgh000" };
    uint32_t results[6];
    int i, j;

    for (i = 0; i< 6; i++) {
        results[i] = murmurhash3(tests[i],
                                 strlen(tests[i]),
                                 0xdeadbeef);
        for (j = 0; j < i; j++) {
            fail_if(results[i] == results[j]);
        }
    }
}
Beispiel #3
0
void
xdomain_calc_hashes(struct DB_XDomain *xdomain)
{
    unsigned i;
    unsigned char name[256];
    unsigned name_length = 0;

    /* Convert the name into a single buffer */
    for (i=0; i<xdomain->label_count; i++) {
        const unsigned char *label = xdomain->labels[i].name;
        unsigned len = label[0]+1;
        if (name_length + len >= sizeof(name))
            break;
        memcpy(name+name_length, label, len);
        name_length += len;
    }

    /* Now calculate the hashes */
    name_length = 0;
    for (i=0; i<xdomain->label_count; i++) {
        uint64_t hash;
        name_length += xdomain->labels[i].name[0]+1;
#if 1
        hash = murmurhash3(
            name,           /* text being hashed */
            name_length,    /* length of text to hash */
            1234);
#endif
#if 0
        hash = md5(name, name_length, 1234);
#endif
        xdomain->labels[i].hash = hash;
        xdomain->hash = hash;
		/*siphash_x(&hash, domain->name+label_index, label_length+1, 
            result->secret_key, result->hash);*/
    }

}
Beispiel #4
0
static uint32_t sss_mc_hash(struct sss_mc_ctx *mcc,
                            const char *key, size_t len)
{
    return murmurhash3(key, len, mcc->seed) % MC_HT_ELEMS(mcc->ht_size);
}
Beispiel #5
0
uint32_t sss_nss_mc_hash(struct sss_cli_mc_ctx *ctx,
                         const char *key, size_t len)
{
    return murmurhash3(key, len, ctx->seed) % MC_HT_ELEMS(ctx->ht_size);
}