QHangulPlatformInputContext::QHangulPlatformInputContext(const QString &keyboardType) { int i, n; n = hangul_ic_get_n_keyboards(); m_hic = NULL; for(i = 0; i < n; i++) { const char *s = hangul_ic_get_keyboard_id(i); if (keyboardType == s) { m_hic = hangul_ic_new(s); break; } } if (m_hic == NULL) { m_hic = hangul_ic_new("2"); } hangul_ic_connect_callback(m_hic, "transition", (void*)onTransition, NULL); m_candidateList = NULL; m_focusObject = NULL; }
/* ic option을 바꾸면서 테스트하는걸 손쉽게 하기 위해서 * static ic를 하나 두고 이것으로 테스트를 진행하게 코드를 * 바꾼다. */ static HangulInputContext* get_ic(const char* keyboard) { if (global_ic == NULL) { global_ic = hangul_ic_new("2"); } hangul_ic_select_keyboard(global_ic, keyboard); hangul_ic_reset(global_ic); return global_ic; }
static void nimf_libhangul_init (NimfLibhangul *hangul) { g_debug (G_STRLOC ": %s", G_STRFUNC); gchar **hanja_keys; hangul->settings = g_settings_new ("org.nimf.engines.nimf-libhangul"); hangul->method = g_settings_get_string (hangul->settings, "get-method-infos"); hangul->is_double_consonant_rule = g_settings_get_boolean (hangul->settings, "double-consonant-rule"); hangul->is_auto_reordering = g_settings_get_boolean (hangul->settings, "auto-reordering"); hangul->ignore_reset_in_commit_cb = g_settings_get_boolean (hangul->settings, "ignore-reset-in-commit-cb"); hanja_keys = g_settings_get_strv (hangul->settings, "hanja-keys"); hangul->hanja_keys = nimf_key_newv ((const gchar **) hanja_keys); hangul->context = hangul_ic_new (hangul->method); hangul->id = g_strdup ("nimf-libhangul"); hangul->preedit_string = g_strdup (""); hangul->preedit_attrs = g_malloc0_n (2, sizeof (NimfPreeditAttr *)); hangul->preedit_attrs[0] = nimf_preedit_attr_new (NIMF_PREEDIT_ATTR_UNDERLINE, 0, 0); hangul->preedit_attrs[1] = NULL; if (nimf_libhangul_hanja_table_ref_count == 0) { nimf_libhangul_hanja_table = hanja_table_load (NULL); nimf_libhangul_symbol_table = hanja_table_load (MSSYMBOL_PATH); } nimf_libhangul_hanja_table_ref_count++; g_strfreev (hanja_keys); nimf_libhangul_update_transition_cb (hangul); g_signal_connect (hangul->settings, "changed::get-method-infos", G_CALLBACK (on_changed_method), hangul); g_signal_connect (hangul->settings, "changed::trigger-keys", G_CALLBACK (on_changed_keys), hangul); g_signal_connect (hangul->settings, "changed::hanja-keys", G_CALLBACK (on_changed_keys), hangul); g_signal_connect (hangul->settings, "changed::double-consonant-rule", G_CALLBACK (on_changed_double_consonant_rule), hangul); g_signal_connect (hangul->settings, "changed::auto-reordering", G_CALLBACK (on_changed_auto_reordering), hangul); g_signal_connect (hangul->settings, "changed::ignore-reset-in-commit-cb", G_CALLBACK (on_changed_ignore_reset_in_commit_cb), hangul); }
static void ibus_hangul_engine_init (IBusHangulEngine *hangul) { IBusProperty* prop; IBusText* label; IBusText* tooltip; hangul->context = hangul_ic_new (hangul_keyboard->str); hangul_ic_connect_callback (hangul->context, "transition", ibus_hangul_engine_on_transition, hangul); hangul->preedit = ustring_new(); hangul->hanja_list = NULL; hangul->hangul_mode = TRUE; hangul->hanja_mode = FALSE; hangul->last_lookup_method = LOOKUP_METHOD_PREFIX; hangul->prop_list = ibus_prop_list_new (); g_object_ref_sink (hangul->prop_list); label = ibus_text_new_from_string (_("Hanja lock")); tooltip = ibus_text_new_from_string (_("Enable/Disable Hanja mode")); prop = ibus_property_new ("hanja_mode", PROP_TYPE_TOGGLE, label, NULL, tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); g_object_ref_sink (prop); ibus_prop_list_append (hangul->prop_list, prop); hangul->prop_hanja_mode = prop; label = ibus_text_new_from_string (_("Setup")); tooltip = ibus_text_new_from_string (_("Configure hangul engine")); prop = ibus_property_new ("setup", PROP_TYPE_NORMAL, label, "gtk-preferences", tooltip, TRUE, TRUE, PROP_STATE_UNCHECKED, NULL); ibus_prop_list_append (hangul->prop_list, prop); hangul->table = ibus_lookup_table_new (9, 0, TRUE, FALSE); g_object_ref_sink (hangul->table); g_signal_connect (config, "value-changed", G_CALLBACK(ibus_config_value_changed), hangul); }
static PyObject *_create_ic(PY_HANGUL *self, PyObject *args) { PY_HANGULIC *imObject; const char* keyboard = NULL; if(!PyArg_ParseTuple(args,"s",&keyboard)) { PyErr_SetString(_pyhangul_error, "Usage: create_ic(keyboard)\n" "\tkeyboard: hangul2, hangul3{2,90,f,s}"); return NULL; } imObject = PyObject_NEW(PY_HANGULIC, &PY_HANGULIC_Type); if(imObject == NULL) { PyErr_SetString(_pyhangul_error,"Fail to create PY_HANGULIC Object"); return NULL; } imObject->hic = hangul_ic_new(keyboard); return (PyObject *)imObject; }
HangulInstance::HangulInstance (HangulFactory *factory, const String &encoding, int id) : IMEngineInstanceBase (factory, encoding, id), m_factory (factory), m_prev_key (0,0), m_output_mode (OUTPUT_MODE_SYLLABLE) { m_hic = hangul_ic_new(factory->m_keyboard_layout.c_str()); char label[16]; std::vector <WideString> labels; for (int i = 1; i < 10; ++i) { snprintf (label, sizeof(label), "%d", i); labels.push_back (utf8_mbstowcs (label)); } m_lookup_table.set_candidate_labels (labels); m_hangul_mode = true; }
END_TEST START_TEST(test_hangul_ic_process_romaja) { HangulInputContext* ic; const ucschar* preedit; const ucschar* commit; // romaja keyboard test ic = hangul_ic_new("ro"); // basic test: han produces 한 hangul_ic_process(ic, 'h'); hangul_ic_process(ic, 'a'); hangul_ic_process(ic, 'n'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'한'); fail_unless(commit[0] == 0); hangul_ic_reset(ic); // insert ㅇ when a syllable is not started with consonant hangul_ic_process(ic, 'a'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'아'); fail_unless(commit[0] == 0); // remove correctly when automatically ㅇ was inserted hangul_ic_backspace(ic); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == 0); fail_unless(commit[0] == 0); // append ㅡ when a syllable is not ended with vowel hangul_ic_process(ic, 't'); hangul_ic_process(ic, 't'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == 0x314c); // ㅌ fail_unless(commit[0] == L'트'); // ng makes trailing ㅇ hangul_ic_reset(ic); hangul_ic_process(ic, 'g'); hangul_ic_process(ic, 'a'); hangul_ic_process(ic, 'n'); hangul_ic_process(ic, 'g'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'강'); // 강 fail_unless(commit[0] == 0); // gangi makes 강이 hangul_ic_process(ic, 'i'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'이'); fail_unless(commit[0] == L'강'); // 강 // nanG makes 난ㄱ // uppercase makes new syllable hangul_ic_process(ic, 'n'); hangul_ic_process(ic, 'a'); hangul_ic_process(ic, 'n'); hangul_ic_process(ic, 'G'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == 0x3131); // ㄱ fail_unless(commit[0] == L'난'); // 난 // special operation for x // x generate ㅈ for leading consonant hangul_ic_reset(ic); hangul_ic_process(ic, 'x'); hangul_ic_process(ic, 'x'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == 0x3148); // 지 fail_unless(commit[0] == L'즈'); hangul_ic_reset(ic); hangul_ic_process(ic, 'x'); hangul_ic_process(ic, 'y'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'지'); // 지 fail_unless(commit[0] == 0x0); // x generate ㄱㅅ for trailing consonant // and ㅅ will be transferred to next syllable when next input // character is vowel. hangul_ic_reset(ic); hangul_ic_process(ic, 's'); hangul_ic_process(ic, 'e'); hangul_ic_process(ic, 'x'); hangul_ic_process(ic, 'y'); preedit = hangul_ic_get_preedit_string(ic); commit = hangul_ic_get_commit_string(ic); fail_unless(preedit[0] == L'시'); // 시 fail_unless(commit[0] == L'섹'); // 섹 hangul_ic_delete(ic); }
int main() { std::string a = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; std::string output; ZopfliOptions options; ZopfliInitOptions(&options); snappy::Compress(a.data(), a.size(), &output); if(!checkhash((unsigned char *)output.data(), output.size(), (char *)"0x5a8f06cf6817a74bc75c3c8290196928acb04c189ecdd192a93eb3c3")) { std::cout<<"Something wrong\n"; } unsigned char b[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbccccccccccccaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; unsigned char *out = NULL; size_t outsize = 0; ZopfliCompress(&options, ZOPFLI_FORMAT_GZIP, b, a.size(), &out, &outsize); if(!checkhash(out, outsize, (char *)"0x0f66ce213d2d27067ff9ffa8bbde2dd06d7f3e687549fad846169e16")) { std::cout<<"Something wrong\n"; } HangulInputContext* ic; const char* p = "dekde"; const ucschar* commit; ic = hangul_ic_new("2y"); while (*p != '\0') { hangul_ic_process(ic, *p); p++; } commit = hangul_ic_get_commit_string(ic); int len = wcslen((const wchar_t*)commit); if(!checkhash((unsigned char*)commit, len * sizeof(const wchar_t), (char *)"0xc9bf9374fbc9f4989afd0af7ac9824a4dcc768b33bfa3bb38e42617b")) { std::cout<<"Something wrong\n"; } hangul_ic_delete(ic); static JSClass global_class = { "global", JSCLASS_NEW_RESOLVE | JSCLASS_GLOBAL_FLAGS, JS_PropertyStub, JS_PropertyStub, JS_PropertyStub, JS_StrictPropertyStub, JS_EnumerateStub, JS_ResolveStub, JS_ConvertStub, NULL, JSCLASS_NO_OPTIONAL_MEMBERS }; JSRuntime *rt = JS_NewRuntime(8 * 1024 * 1024); JSContext *cx = JS_NewContext(rt, 8192); JS_SetOptions(cx, JSOPTION_VAROBJFIX); JS_SetErrorReporter(cx, reportError); JSObject *global = JS_NewCompartmentAndGlobalObject(cx, &global_class, NULL); JS_SetGlobalObject(cx, global); if (!JS_InitStandardClasses(cx, global)) { return 1; } char source[] = "Math.random()"; jsval rval; cx->rngSeed = 31337; JS_EvaluateScript(cx, global, source, strlen(source), "none", 10, &rval); double nums[2]; nums[0] = JSVAL_TO_DOUBLE(rval); JS_EvaluateScript(cx, global, source, strlen(source), "none", 10, &rval); nums[1] = JSVAL_TO_DOUBLE(rval); if(!checkhash((unsigned char*)nums, 2 * sizeof(double), (char *)"0x61b35e8d466f24ee1ea502350ec6f5d1134fe6ec543c17845fa62f8a")) { std::cout<<"Something wrong\n"; } JS_DestroyContext(cx); JS_DestroyRuntime(rt); JS_ShutDown(); mtprngParam mt; byte bay[] = "qqqqqqqqqqqqqqqq"; byte result[100]; for(int i=0; i< 100; i++) { result[i] = 0; } mtprngSetup(&mt); mtprngSeed(&mt, bay, 16); mtprngNext(&mt, result, 100); if(!checkhash((unsigned char*)&result, 100, (char *)"0x7754dfd27fe6fa00551861ff41e4f48315bd89bef6da652f182ce2d6")) { std::cout<<"Something wrong\n"; } ranlib::ChiSquare<double> gen(4); gen.seed(31337); double f[16]; for(int i = 0; i<16; i++) { f[i] = gen.random(); } if(!checkhash((unsigned char*)&f, 16 * sizeof(double), (char *)"0xd19d0c167fe93b11004c0167c226d2e92c17dfa36ffb243f39824098")) { std::cout<<"Something wrong\n"; } Botan::byte pass[] = "aaaabbbb"; Botan::PBKDF* pbkdf = Botan::get_pbkdf("PBKDF2(SHA-256)"); Botan::OctetString aes_key = pbkdf->derive_key(32, "pass1337", pass, 8, 31337); std::string aa = aes_key.as_string(); if(!checkhash((unsigned char*)aa.c_str(), aa.size(), (char *)"0x0c33d122ed50848a676539ae48eb84db0dcbf69e9ee857094755f2d7")) { std::cout<<"Something wrong\n"; } std::cout<<"Answer is RUCTF_"; checkhash((unsigned char*)together, pos, (char *)""); return 0; }