void test_messages(void) { Package pkg[2]; Package output; const char* const* dict = NULL; unsigned int dictLength = 0; unsigned int outSize = 0; size_t i = 0, j = 0; MessageHandler* mh = NULL; /* initialize the module */ mh = mh_new(); /* add methods in the message handler */ g_print("\n\rAdd input words..\n\r"); mh_add_word(mh, "MOVE0", callback0); mh_add_word(mh, "MOVE1", callback1); /* print dictionary */ g_print("Dictionary is the following one\n\r"); dict = mh_get_dictionary(mh, &dictLength); g_assert(dictLength == 2); for (i = 0; i < dictLength; i++) { g_print("- key: %s\n\r", dict[i]); } /* test the methods in the message handler */ pkg[0].name = "MOVE0"; pkg[0].size = 1; pkg[0].data = g_new0(PackageData, 1); pkg[0].data->field = "Test0"; pkg[1].name = "MOVE1"; pkg[1].size = 1; pkg[1].data = g_new0(PackageData, 1); pkg[1].data->field = "Test1"; g_print("Send packets..\n\n\r"); for (i = 0; i < 2; i++) { mh_send_data(mh, pkg[i], &output, &outSize); g_print("Output data: name = %s, size = %i" ", output size = %i", output.name, output.size, outSize); for (j = 0; j < outSize; j++) { g_print(", output[%zu] = %i", j, GPOINTER_TO_INT(output.data[j].field)); } g_print("\n\n\r"); } mh_free(mh); }
static char *test_multihash_new_is_reversible(void) { int error = MH_E_NO_ERROR; int code = MH_H_SHA3_512; const unsigned char *digest = random_512; const size_t digest_len = 512 / 8; unsigned char mh[256]; const size_t mh_len = mh_new_length(code, digest_len); error = mh_new(mh, MH_H_SHA3_512, digest, digest_len); mu_assert("creating multihash", error == MH_E_NO_ERROR); mu_assert("reading code", mh_multihash_hash(mh, mh_len) == MH_H_SHA3_512); mu_assert("reading length", mh_multihash_length(mh, mh_len) == (int) digest_len); return NULL; }
static char *test_multihash_new_crafts_right_multihash(void) { int error; unsigned char buf[256]; // much bigger than needed size_t digest_len = -1; const unsigned char *digest = NULL; error = mh_multihash_digest(sha1_example, sha1_example_length, &digest, &digest_len); mu_assert("getting digest", error == MH_E_NO_ERROR); error = mh_new(buf, MH_H_SHA1, digest, digest_len); mu_assert("creating multihash", error == MH_E_NO_ERROR); mu_assert("crafted multihash is the same", memcmp(sha1_example, buf, sha1_example_length) == 0); return NULL; }
/** * Turn a cid hash into a base 58 * @param hash the hash to work with * @param hash_length the length of the existing hash * @param buffer where to put the results * @param max_buffer_length the maximum space reserved for the results * @returns true(1) on success */ int ipfs_cid_hash_to_base58(const unsigned char* hash, size_t hash_length, unsigned char* buffer, size_t max_buffer_length) { int multihash_len = hash_length + 2; unsigned char multihash[multihash_len]; if (mh_new(multihash, MH_H_SHA2_256, hash, hash_length) < 0) { return 0; } // base58 size_t b58_size = libp2p_crypto_encoding_base58_encode_size(multihash_len); if (b58_size > max_buffer_length) // buffer too small return 0; if( libp2p_crypto_encoding_base58_encode(multihash, multihash_len, &buffer, &max_buffer_length) == 0) { return 0; } return 1; }