void hh_load_dep_table(value in_filename) { CAMLparam1(in_filename); struct timeval tv; gettimeofday(&tv, NULL); FILE* fp = fopen(String_val(in_filename), "rb"); if (fp == NULL) { unix_error(errno, "fopen", in_filename); } fread_header(fp); int compressed_size = 0; read_all(fileno(fp), (void*)&compressed_size, sizeof compressed_size); char* compressed = malloc(compressed_size * sizeof(char)); assert(compressed != NULL); read_all(fileno(fp), compressed, compressed_size * sizeof(char)); int actual_compressed_size = LZ4_decompress_fast( compressed, (char*)deptbl, DEP_SIZE_B); assert(compressed_size == actual_compressed_size); tv = log_duration("Loading file", tv); uintptr_t slot = 0; unsigned long hash = 0; for (slot = 0; slot < DEP_SIZE; ++slot) { hash = deptbl[slot]; if (hash != 0) { htable_add(deptbl_bindings, hash, hash); } } fclose(fp); log_duration("Bindings", tv); CAMLreturn0; }
int main (int argc, char *argv[]) { int i; struct GNUNET_CRYPTO_EcdhePrivateKey *ecdhe[l]; struct GNUNET_CRYPTO_EcdhePublicKey dhpub[l]; struct GNUNET_CRYPTO_EddsaPrivateKey *eddsa[l]; struct GNUNET_CRYPTO_EddsaPublicKey dspub[l]; struct TestSig sig[l]; start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) { sig[i].purp.purpose = 0; sig[i].purp.size = htonl (sizeof (struct GNUNET_CRYPTO_EccSignaturePurpose) + sizeof (struct GNUNET_HashCode)); GNUNET_CRYPTO_random_block (GNUNET_CRYPTO_QUALITY_WEAK, &sig[i].h, sizeof (sig[i].h)); } log_duration ("", "Init"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) eddsa[i] = GNUNET_CRYPTO_eddsa_key_create(); log_duration ("EdDSA", "create key"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) GNUNET_CRYPTO_eddsa_key_get_public (eddsa[i], &dspub[i]); log_duration ("EdDSA", "get pubilc"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_sign (eddsa[i], &sig[i].purp, &sig[i].sig)); log_duration ("EdDSA", "sign HashCode"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) GNUNET_assert (GNUNET_OK == GNUNET_CRYPTO_eddsa_verify (0, &sig[i].purp, &sig[i].sig, &dspub[i])); log_duration ("EdDSA", "verify HashCode"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) ecdhe[i] = GNUNET_CRYPTO_ecdhe_key_create(); log_duration ("ECDH", "create key"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l; i++) GNUNET_CRYPTO_ecdhe_key_get_public (ecdhe[i], &dhpub[i]); log_duration ("ECDH", "get public"); start = GNUNET_TIME_absolute_get(); for (i = 0; i < l - 1; i+=2) { GNUNET_CRYPTO_ecc_ecdh (ecdhe[i], &dhpub[i+1], &sig[i].h); GNUNET_CRYPTO_ecc_ecdh (ecdhe[i+1], &dhpub[i], &sig[i+1].h); } log_duration ("ECDH", "do DH"); return 0; }