static void spa_func_int(fko_ctx_t *ctx, char *name, int (*spa_set)(fko_ctx_t ctx, const int modifier), int min, int max, int final_val, int new_ctx_flag, int destroy_ctx_flag) { fko_ctx_t default_ctx = NULL; int i; spa_default_ctx(&default_ctx); printf("[+] calling libfko function: %s\n", name); for (i=min; i <= max; i++) { printf("%s(%d): %s\n", name, i, fko_errstr((spa_set)(*ctx, i))); printf("%s(%d): %s (DUPE)\n", name, i, fko_errstr((spa_set)(*ctx, i))); ctx_update(ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); spa_calls += 2; /* also set on a fully populated context */ (spa_set)(default_ctx, i); } printf("%s(%d): %s (FINAL)\n", name, final_val, fko_errstr((spa_set)(*ctx, final_val))); display_ctx(*ctx); fko_spa_data_final(default_ctx, ENC_KEY, 16, HMAC_KEY, 16); fko_destroy(default_ctx); default_ctx = NULL; return; }
static void spa_func_getset_int(fko_ctx_t *ctx, char *set_name, int (*spa_set)(fko_ctx_t ctx, const int modifier), char *get_name, int (*spa_get)(fko_ctx_t ctx, int *val), int min, int max, int final_val, int new_ctx_flag, int destroy_ctx_flag) { fko_ctx_t default_ctx = NULL; int get_val; int i, res; spa_default_ctx(&default_ctx); printf("[+] calling libfko get/set: %s/%s\n", get_name, set_name); for (i=min; i <= max; i++) { get_val = 1234; /* meaningless default */ printf("%s(%d): %s\n", set_name, i, fko_errstr((spa_set)(*ctx, i))); printf("%s(%d): %s (DUPE)\n", set_name, i, fko_errstr((spa_set)(*ctx, i))); res = (spa_get)(*ctx, &get_val); printf("%s(%d): %s\n", get_name, get_val, fko_errstr(res)); ctx_update(ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); spa_calls += 3; /* also set on a fully populated context */ (spa_set)(default_ctx, i); } printf("%s(%d): %s (FINAL)\n", set_name, final_val, fko_errstr((spa_set)(*ctx, final_val))); display_ctx(*ctx); fko_spa_data_final(default_ctx, ENC_KEY, 16, HMAC_KEY, 16); fko_destroy(default_ctx); default_ctx = NULL; return; }
void filter_reads(AsyncIOData *data, void *arg) { (void)arg; read_t *r1 = (read_t*)&data->r1, *r2 = data->r2.seq.end ? (read_t*)&data->r2 : NULL; AlignReadsData *input = (AlignReadsData*)data->ptr; const dBGraph *db_graph = input->db_graph; LoadingStats *stats = input->stats; ctx_assert2(r2 == NULL || input->seqout.is_pe, "Were not expecting r2: %p %i", r2, (int)input->seqout.is_pe); bool touches_graph = read_touches_graph(r1, db_graph, stats) || (r2 != NULL && read_touches_graph(r2, db_graph, stats)); if(touches_graph != input->invert) { seqout_print(&input->seqout, r1, r2); input->num_of_reads_printed += 1 + (r2 != NULL); } if(r2 == NULL) __sync_add_and_fetch((volatile size_t*)&stats->num_se_reads, 1); else __sync_add_and_fetch((volatile size_t*)&stats->num_pe_reads, 2); size_t n = __sync_add_and_fetch(&read_counter, 1); ctx_update("FilterReads", n); }
static void test_loop(int new_ctx_flag, int destroy_ctx_flag) { fko_ctx_t ctx = NULL, decrypt_ctx = NULL; int i, j; char *spa_data = NULL, encode_buf[100], decode_buf[100]; printf("[+] test_loop(): %s, %s\n", new_ctx_flag == NEW_CTX ? "NEW_CTX" : "NO_NEW_CTX", destroy_ctx_flag == CTX_DESTROY ? "DESTROY_CTX" : "NO_DESTROY_CTX"); printf("fko_new(): %s\n", fko_errstr(fko_new(&ctx))); fko_destroy(ctx); ctx = NULL; printf("fko_new(): %s\n", fko_errstr(fko_new(&ctx))); spa_func_getset_int(&ctx, "fko_set_spa_client_timeout", &fko_set_spa_client_timeout, "fko_get_spa_client_timeout", &fko_get_spa_client_timeout, -F_INT, F_INT, 10, new_ctx_flag, destroy_ctx_flag); spa_func_getset_short(&ctx, "fko_set_spa_message_type", &fko_set_spa_message_type, "fko_get_spa_message_type", &fko_get_spa_message_type, FKO_COMMAND_MSG-F_INT, FKO_LAST_MSG_TYPE+F_INT, FKO_ACCESS_MSG, NO_DIGEST, new_ctx_flag, destroy_ctx_flag); spa_func_int(&ctx, "fko_set_timestamp", &fko_set_timestamp, -F_INT, F_INT, 10, new_ctx_flag, destroy_ctx_flag); for (i=0; i<FCN_CALLS; i++) { printf("fko_set_spa_message(1.1.1.1,tcp/22): %s\n", fko_errstr(fko_set_spa_message(ctx, "1.1.1.1,tcp/22"))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { printf("fko_set_spa_nat_access(1.2.3.4,1234): %s\n", fko_errstr(fko_set_spa_nat_access(ctx, "1.2.3.4,1234"))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { printf("fko_set_username(someuser): %s\n", fko_errstr(fko_set_username(ctx, "someuser"))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } spa_func_getset_short(&ctx, "fko_set_spa_encryption_type", &fko_set_spa_encryption_type, "fko_get_spa_encryption_type", &fko_get_spa_encryption_type, FKO_ENCRYPTION_INVALID_DATA-F_INT, FKO_LAST_ENCRYPTION_TYPE+F_INT, FKO_ENCRYPTION_RIJNDAEL, NO_DIGEST, new_ctx_flag, destroy_ctx_flag); spa_func_getset_int(&ctx, "fko_set_spa_encryption_mode", &fko_set_spa_encryption_mode, "fko_get_spa_encryption_mode", &fko_get_spa_encryption_mode, FKO_ENC_MODE_UNKNOWN-F_INT, FKO_LAST_ENC_MODE+F_INT, FKO_ENC_MODE_CBC, new_ctx_flag, destroy_ctx_flag); if (ENABLE_GPG_TESTS) { for (i=0; i<FCN_CALLS; i++) { printf("fko_set_spa_encryption_type(FKO_ENCRYPTION_GPG): %s\n", fko_errstr(fko_set_spa_encryption_type(ctx, FKO_ENCRYPTION_GPG))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { printf("fko_set_gpg_home_dir(/home/mbr/.gnupg): %s\n", fko_errstr(fko_set_gpg_home_dir(ctx, "/home/mbr/.gnupg"))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { printf("fko_set_gpg_recipient(1234asdf): %s\n", fko_errstr(fko_set_gpg_recipient(ctx, "1234asdf"))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } } spa_func_getset_short(&ctx, "fko_set_spa_digest_type", &fko_set_spa_digest_type, "fko_get_spa_digest_type", &fko_get_spa_digest_type, FKO_DIGEST_INVALID_DATA-F_INT, FKO_LAST_DIGEST_TYPE+F_INT, FKO_DEFAULT_DIGEST, DO_DIGEST, new_ctx_flag, destroy_ctx_flag); spa_func_getset_short(&ctx, "fko_set_raw_spa_digest_type", &fko_set_spa_digest_type, "fko_get_raw_spa_digest_type", &fko_get_spa_digest_type, FKO_DIGEST_INVALID_DATA-F_INT, FKO_LAST_DIGEST_TYPE+F_INT, FKO_DEFAULT_DIGEST, RAW_DIGEST, new_ctx_flag, destroy_ctx_flag); spa_func_getset_short(&ctx, "fko_set_spa_hmac_type", &fko_set_spa_hmac_type, "fko_get_spa_hmac_type", &fko_get_spa_hmac_type, FKO_HMAC_INVALID_DATA-F_INT, FKO_LAST_HMAC_MODE+F_INT, FKO_HMAC_SHA256, NO_DIGEST, new_ctx_flag, destroy_ctx_flag); printf("Trying encrypt / authenticate step with bogus key lengths...\n"); for (i=-100; i < 200; i += 10) { for (j=-100; j < 200; j += 10) { fko_spa_data_final(ctx, ENC_KEY, i, HMAC_KEY, j); fko_spa_data_final(ctx, NULL, i, HMAC_KEY, j); fko_spa_data_final(ctx, ENC_KEY, i, NULL, j); fko_spa_data_final(ctx, NULL, i, NULL, j); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, NO_PRINT); spa_calls += 4; } } for (i=0; i<FCN_CALLS; i++) { printf("fko_spa_data_final(ENC_KEY, 16, HMAC_KEY, 16): %s\n", fko_errstr(fko_spa_data_final(ctx, ENC_KEY, 16, HMAC_KEY, 16))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { printf("fko_get_spa_data(): %s\n", fko_errstr(fko_get_spa_data(ctx, &spa_data))); printf(" SPA DATA: %s\n", spa_data == NULL ? "<NULL>" : spa_data); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } printf("fko_new_with_data(): %s (data: %s)\n", fko_errstr(fko_new_with_data(&decrypt_ctx, spa_data, NULL, 0, FKO_ENC_MODE_CBC, NULL, 0, FKO_HMAC_SHA256)), spa_data); /* verify hmac, decrypt, and display ctx all together*/ for (i=0; i<FCN_CALLS; i++) { display_ctx(decrypt_ctx); printf("fko_verify_hmac() (1): %s\n", fko_errstr(fko_verify_hmac(decrypt_ctx, HMAC_KEY, 16))); printf("fko_decrypt_spa_data() (1): %s\n", fko_errstr(fko_decrypt_spa_data(decrypt_ctx, ENC_KEY, 16))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } /* now, separately verify hmac, decrypt, and display ctx */ for (i=0; i<FCN_CALLS; i++) { printf("fko_verify_hmac() (2): %s\n", fko_errstr(fko_verify_hmac(decrypt_ctx, HMAC_KEY, 16))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } /* now decrypt */ for (i=0; i<FCN_CALLS; i++) { printf("fko_decrypt_spa_data() (2): %s\n", fko_errstr(fko_decrypt_spa_data(decrypt_ctx, ENC_KEY, 16))); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } for (i=0; i<FCN_CALLS; i++) { display_ctx(decrypt_ctx); ctx_update(&ctx, new_ctx_flag, destroy_ctx_flag, DO_PRINT); } /* NULL tests */ fko_set_rand_value(ctx, NULL); fko_set_rand_value(ctx, NULL); fko_set_username(ctx, NULL); fko_set_username(ctx, NULL); fko_set_spa_message(ctx, NULL); fko_set_spa_message(ctx, NULL); fko_set_spa_nat_access(ctx, NULL); fko_set_spa_nat_access(ctx, NULL); fko_set_spa_server_auth(ctx, NULL); fko_set_spa_server_auth(ctx, NULL); fko_set_spa_data(ctx, NULL); fko_set_spa_data(ctx, NULL); spa_calls += 12; for (i=0; i<FCN_CALLS; i++) { fko_destroy(ctx); ctx = NULL; } for (i=0; i<FCN_CALLS; i++) { fko_destroy(decrypt_ctx); decrypt_ctx = NULL; } /* exercise the base64 encode/decode wrapper */ fko_base64_encode((unsigned char *)ENC_KEY, encode_buf, 16); fko_base64_decode(encode_buf, (unsigned char *)decode_buf); /* call fko_errstr() across valid and invalid values */ for (i=-5; i < FKO_LAST_ERROR+5; i++) { printf("libfko error (%d): %s\n", i, fko_errstr(i)); spa_calls++; } return; }