wi_data_t * wi_p7_message_data_with_serialization(wi_p7_message_t *p7_message, wi_p7_serialization_t serialization) { wi_p7_message_serialize(p7_message, serialization); if(serialization == WI_P7_BINARY) return wi_data_with_bytes(p7_message->binary_buffer, p7_message->binary_size); else return wi_data_with_bytes(p7_message->xml_buffer, p7_message->xml_length); }
wi_data_t * wi_p7_message_data_for_name(wi_p7_message_t *p7_message, wi_string_t *field_name) { unsigned char *binary; uint32_t field_size; if(!_wi_p7_message_get_binary_buffer_for_reading_for_name(p7_message, field_name, &binary, &field_size)) return NULL; return wi_data_with_bytes(binary, field_size); }
void wi_test_sha2_digest(void) { #ifdef WI_SHA1 wi_sha2_t *sha2; wi_data_t *data; unsigned char buffer[WI_SHA2_MAX_LENGTH]; data = wi_data(); wi_sha2_digest(WI_SHA2_256, wi_data_bytes(data), wi_data_length(data), buffer); WI_TEST_ASSERT_EQUAL_INSTANCES(wi_data_with_bytes(buffer, WI_SHA2_256_LENGTH), wi_data_with_base64_string(WI_STR("47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=")), ""); WI_TEST_ASSERT_EQUAL_INSTANCES(wi_sha2_digest_string(WI_SHA2_256, data), WI_STR("e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"), ""); sha2 = wi_sha2_with_bits(WI_SHA2_512); wi_sha2_close(sha2); wi_sha2_get_data(sha2, buffer); WI_TEST_ASSERT_EQUAL_INSTANCES(wi_data_with_bytes(buffer, WI_SHA2_512_LENGTH), wi_data_with_base64_string(WI_STR("z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==")), ""); WI_TEST_ASSERT_EQUAL_INSTANCES(wi_sha2_data(sha2), wi_data_with_base64_string(WI_STR("z4PhNX7vuL3xVChQ1m2AB9Yg5AULVxXcg/SpIdNs6c5H0NE8XYXysP+DGNKHfuwvY7kxvUdBeoGlODJ6+SfaPg==")), ""); #endif }
wi_data_t * wi_md5_data(wi_md5_t *md5) { _WI_MD5_ASSERT_CLOSED(md5); return wi_data_with_bytes(md5->buffer, sizeof(md5->buffer)); }
wi_data_t * wi_sha2_data(wi_sha2_t *sha2) { _WI_SHA2_ASSERT_CLOSED(sha2); return wi_data_with_bytes(sha2->buffer, sha2->length); }
wi_dictionary_t * wi_sqlite3_fetch_statement_results(wi_sqlite3_database_t *database, wi_sqlite3_statement_t *statement) { wi_mutable_dictionary_t *results; wi_runtime_instance_t *instance; int i, count, length, result; wi_recursive_lock_lock(database->lock); result = sqlite3_step(statement->statement); switch(result) { case SQLITE_DONE: results = wi_dictionary(); sqlite3_finalize(statement->statement); statement->statement = NULL; break; case SQLITE_ROW: results = wi_mutable_dictionary(); count = sqlite3_column_count(statement->statement); for(i = 0; i < count; i++) { switch(sqlite3_column_type(statement->statement, i)) { case SQLITE_INTEGER: instance = wi_number_with_int64(sqlite3_column_int64(statement->statement, i)); break; case SQLITE_FLOAT: instance = wi_number_with_double(sqlite3_column_double(statement->statement, i)); break; case SQLITE_TEXT: instance = wi_string_with_cstring((const char *) sqlite3_column_text(statement->statement, i)); break; case SQLITE_BLOB: length = sqlite3_column_bytes(statement->statement, i); instance = wi_data_with_bytes(sqlite3_column_blob(statement->statement, i), length); break; case SQLITE_NULL: instance = wi_null(); break; default: instance = NULL; break; } if(instance) wi_mutable_dictionary_set_data_for_key(results, instance, wi_string_with_cstring(sqlite3_column_name(statement->statement, i))); } wi_runtime_make_immutable(results); break; default: wi_error_set_sqlite3_error_with_description(database->database, wi_description(statement)); sqlite3_finalize(statement->statement); statement->statement = NULL; results = NULL; break; } wi_recursive_lock_unlock(database->lock); return results; }