internal async Task <e_error> connect(string password) { y_register_c y = new(); var dv_key = p_crypto.create_symmetrical_keys(); y.a_key_data = m_key.create(dv_key); y.a_key_data = p_crypto.Encrypt(y.a_key_data, public_key.data); var login_m = new m_register_c() { a_device_name = Environment.MachineName, a_skeletid = "wpf_skeleton", a_password = password }; y.a_register_data = p_crypto.convert(login_m); y.a_register_data = p_crypto.Encrypt(y.a_register_data, dv_key); var o = await y.run(a.run_null); if (o.z_error == e_error.non) { dv_key.id = o.deviceid; var db = a.api3.c_db.general <m_data>(); await db.upsert(new m_data() { id = "key", data = p_crypto.convert(dv_key) }); a.api3.c_key = dv_key; } return(o.z_error); }
protected override async void implement() { a_key_data = p_crypto.Decrypt(a_key_data, private_key.data); m_key key = m_key.create(a_key_data); a_register_data = p_crypto.Decrypt(a_register_data, key); m_register_c login = p_crypto.convert <m_register_c>(a_register_data); if (!await check_login(login)) { reply(new o() { z_error = e_error.invalid_device_info }); return; } var db = z_db.general_x <m.device>(); m.device device = new() { creation_time = DateTime.Now, id = "d_" + ObjectId.GenerateNewId(), iv16 = key.iv16, key32 = key.key32, name = login.a_device_name }; await db.upsert(device); reply(new o() { a_deviceid = device.id }); } async Task <bool> check_login(m_register_c val) { await Task.CompletedTask; return(val.a_skeletid == "wpf_skeleton" && val.a_password == "1234"); } }