private async void Form1_Load(object sender, EventArgs e) { var connection = new HubConnectionBuilder() .WithUrl("http://localhost:5000/main") .Build(); connection.On <int, int, BigInteger>("RecieveQAY", async(q, a, ys) => { var xc = _keyService.GetX(q); var yc = _keyService.GetY(xc, q, a); var key = _keyService.GetKey(ys, xc, q); await connection.InvokeAsync("RecieveY", yc); textBox1.Invoke(new Action(() => textBox1.AppendText($"Generated key: {key}"))); }); try { await connection.StartAsync(); await connection.InvokeAsync("GetAQY"); } catch (Exception ex) { textBox1.AppendText($"Failed to connect: {ex.Message}"); } }
public override async Task Go() { var entity = await _entityStore.GetEntity(Data.EntityId, false); if (entity == null) { return; } var actorId = entity.Data["actor"].Concat(entity.Data["attributedTo"]).FirstOrDefault(); if (actorId == null) { return; // ??? } var key = await _keyService.GetKey(actorId.Id); var doc = await _entryGenerator.Build(entity.Data); var envelope = new MagicEnvelope(doc.ToString(), "application/atom+xml", new MagicKey(key.PrivateKey)); var hc = new HttpClient(); var content = new StringContent(envelope.Build().ToString(), Encoding.UTF8, "application/magic-envelope+xml"); var response = await hc.PostAsync(Data.SalmonUrl, content); if (((int)response.StatusCode) / 100 == 5) { throw new Exception("try later"); } }
public async void InitializeEMoney() { keyService = new KeyService("1234"); try { if (!keyService.HasSetupKey()) { var savekeyForm = new SaveKeyForm(); savekeyForm.ShowDialog(); } } catch (Exception) { MessageBox.Show("ไม่ค้นพบกุญแจ"); } saveKey = keyService.GetKey(); if (saveKey == null) { Environment.Exit(1); } privateKey = saveKey.SecretKey; publicKey = saveKey.PublicKeyWif; publickeylabel.Text = this.publicKey; timer = new System.Timers.Timer(); timer.Elapsed += new ElapsedEventHandler(OnTimedEvent); timer.Interval = 60000; timer.Enabled = true; LoadData(); }
private void InitializeMoney() { keyService = new KeyService("1234"); saveKey = keyService.GetKey(); //Prepare KeyPair of Sender api = new DigibyteAPI(new APIOptions { BaseURL = Program.InsightAPI }); LoadData(); }
private void button2_Click(object sender, EventArgs e) { if (keyService.GetKey() == null) { Environment.Exit(0); } else { this.Close(); } }
private void InitializeMoney() { keyService = new KeyService("1234"); saveKey = keyService.GetKey(); //Prepare KeyPair of Sender api = new DigibyteAPI(new APIOptions { BaseURL = Program.InsightAPI }); t = new Thread(new ThreadStart(SendDGB)); t.Start(); }
public async Task Render(HttpRequest request, HttpResponse response, APEntity toRender) { response.ContentType = "application/atom+xml"; var user = await _entityStore.GetEntity(toRender.Data["actor"].Single().Id, false); var key = await _keyService.GetKey(user.Id); var magicKey = key != null ? new MagicKey(key.PrivateKey) : MagicKey.Generate(); var doc = await _entryGenerator.Build(toRender.Data); var enveloped = new MagicEnvelope(doc.ToString(), "application/atom+xml", magicKey); await response.WriteAsync(enveloped.Build().ToString()); }
public async void InitializeEMoney() { keyService = new KeyService("1234"); var saveKey = keyService.GetKey(); if (saveKey == null) { Environment.Exit(1); } privateKey = saveKey.SecretKey; publicKey = saveKey.PublicKeyWif; publickeylabel.Text = publicKey; decimal balance = parentForm.DgbBalance; DgbBalancelabel.Text = balance.ToString(); }
public async Task <ASObject> BuildFakeObject(APEntity entity, string fragment) { if (!EntityData.IsActor(entity.Data)) { return(null); } if (fragment == "key") { var key = await _keyService.GetKey(entity.Id); var salm = new MagicKey(key.PrivateKey); var pemData = salm.AsPEM; var keyObj = new ASObject(); keyObj.Replace("owner", ASTerm.MakeId(entity.Id)); keyObj.Replace("publicKeyPem", ASTerm.MakePrimitive(pemData)); keyObj.Id = $"{entity.Id}#key"; return(keyObj); } else if (fragment == "endpoints") { var data = entity.Data; var idu = new Uri(entity.Id); var basePath = $"{idu.Scheme}://{idu.Host}{(idu.IsDefaultPort?"":$":{idu.Port}")}{_configuration.BasePath}"; var endpoints = new ASObject(); endpoints.Replace("oauthAuthorizationEndpoint", ASTerm.MakeId(basePath + "oauth/authorize?id=" + Uri.EscapeDataString(entity.Id))); endpoints.Replace("oauthTokenEndpoint", ASTerm.MakeId(basePath + "oauth/token?")); endpoints.Replace("settingsEndpoint", ASTerm.MakeId(basePath + "settings/auth")); endpoints.Replace("uploadMedia", data["outbox"].Single()); endpoints.Replace("relevantObjects", ASTerm.MakeId(basePath + "settings/relevant")); endpoints.Replace("proxyUrl", ASTerm.MakeId(basePath + "auth/proxy")); endpoints.Replace("jwks", ASTerm.MakeId(basePath + "auth/jwks?id=" + Uri.EscapeDataString(entity.Id))); endpoints.Replace("sharedInbox", ASTerm.MakeId(basePath + "auth/sharedInbox")); endpoints.Replace("search", ASTerm.MakeId(basePath + "auth/search")); endpoints.Id = entity.Id + "#endpoints"; return(endpoints); } return(null); }
private async Task <string> _buildSignature(string ownerId, HttpRequestMessage message) { string[] headers = new string[] { "(request-target)", "date", "authorization", "content-type" }; var toSign = new StringBuilder(); foreach (var header in headers) { if (header == "(request-target)") { toSign.Append($"{header}: {message.Method.Method.ToLower()} {message.RequestUri.PathAndQuery}\n"); } else { if (message.Headers.TryGetValues(header, out var vals)) { toSign.Append($"{header}: {string.Join(", ", vals)}\n"); } else if (message.Content.Headers.TryGetValues(header, out var cvals)) { toSign.Append($"{header}: {string.Join(", ", cvals)}\n"); } else { toSign.Append($"{header}: \n"); } } } toSign.Remove(toSign.Length - 1, 1); var key = await _keyService.GetKey(ownerId); var magic = new MagicKey(key.PrivateKey); var signed = Convert.ToBase64String(magic.Sign(Encoding.UTF8.GetBytes(toSign.ToString()))); var ownerOrigin = new Uri(ownerId); var keyId = ownerId + "#key"; return($"keyId=\"{keyId}\",algorithm=\"rsa-sha256\",headers=\"{string.Join(" ", headers)}\",signature=\"{signed}\""); }
public async Task <IActionResult> WebFinger(string resource) { if (!resource.StartsWith("acct:")) { return(Unauthorized()); } var username = resource.Split(':')[1].Split('@'); var items = await _relevantEntities.FindEntitiesWithPreferredUsername(username[0]); if (items.Count == 0) { return(NotFound()); } var item = items.First(); var result = new WebfingerResult() { subject = resource, aliases = new List <string>() { item.Id }, links = new List <WebfingerLink> { new WebfingerLink { rel = "http://webfinger.net/rel/profile-page", type = "text/html", href = item.Id }, new WebfingerLink { rel = "self", type = "application/activity+json", href = item.Id }, new WebfingerLink { rel = "self", type = "application/ld+json; profile=\"https://www.w3.org/ns/activitystreams\"", href = item.Id }, new WebfingerLink { rel = "http://ostatus.org/schema/1.0/subscribe", template = item.Id + "#id=%40{uri}" } } }; var salmon = await _keyService.GetKey(item.Id); var magicKey = new MagicKey(salmon.PrivateKey); result.links.Add(new WebfingerLink { rel = "magic-public-key", href = "data:application/magic-public-key," + magicKey.PublicKey }); return(Json(result)); }
private static byte[] Decrypt(byte[] data, int index) { byte keyNameSize = data[1]; if (keyNameSize == 0 || keyNameSize != 8) { throw new Exception("keyNameSize == 0 || keyNameSize != 8"); } byte[] keyNameBytes = new byte[keyNameSize]; Array.Copy(data, 2, keyNameBytes, 0, keyNameSize); ulong keyName = BitConverter.ToUInt64(keyNameBytes, 0); byte IVSize = data[keyNameSize + 2]; if (IVSize != 4 || IVSize > 0x10) { throw new Exception("IVSize != 4 || IVSize > 0x10"); } byte[] IVpart = new byte[IVSize]; Array.Copy(data, keyNameSize + 3, IVpart, 0, IVSize); if (data.Length < IVSize + keyNameSize + 4) { throw new Exception("data.Length < IVSize + keyNameSize + 4"); } int dataOffset = keyNameSize + IVSize + 3; byte encType = data[dataOffset]; if (encType != 'S' && encType != 'A') // 'S' or 'A' { throw new Exception("encType != ENCRYPTION_SALSA20 && encType != ENCRYPTION_ARC4"); } dataOffset++; // expand to 8 bytes byte[] IV = new byte[8]; Array.Copy(IVpart, IV, IVpart.Length); // magic for (int shift = 0, i = 0; i < sizeof(int); shift += 8, i++) { IV[i] ^= (byte)((index >> shift) & 0xFF); } byte[] key = KeyService.GetKey(keyName); if (key == null) { throw new KeyNotFoundException("Unknown keyname " + keyName.ToString("X16")); } if (encType == 'S') { ICryptoTransform decryptor = KeyService.SalsaInstance.CreateDecryptor(key, IV); return(decryptor.TransformFinalBlock(data, dataOffset, data.Length - dataOffset)); } else { // ARC4 ? throw new Exception("encType ENCRYPTION_ARC4 not implemented"); } }
static async Task Main() { //Network network = NBitcoin.Altcoins.Digibyte.Instance.Mainnet; //// D9vDi1QLMwQk7J5YhUUzdys8sBbVtVVnpC //BitcoinSecret creator = new BitcoinSecret("KxGZX6nqKqQ7ZdFzyQMwSDMAsW1cEUZ3BRXgWQqEDNKMJhwxKMTp", network); //WalletContract mycontract = null; ////var contract = Encoding.UTF8.GetBytes("PIGER"); ////var token = Encoding.UTF8.GetBytes("PIG"); ////mycontract = await contractService.CreateContract(creator, contract, token, 100000m, 2); ////Console.WriteLine(mycontract.ID); ////Console.WriteLine("Contract is issued: " + mycontract.ID); //var api = new DigibyteAPI(new APIOptions { BaseURL = "https://digibyteblockexplorer.com" }); //var contractService = new ContractService(@"tsc-wallet.db", api); //mycontract = await contractService.FindContract("3ecb54e7c2551f27cf5944e386f05b27e1f0e4d7222d2cb2e8e784ef6560e30f"); //var walletService = contractService.CreateWalletService(mycontract, creator); //var ledger1 = walletService.CreateLedger(OperationCode.Issue); //await walletService.BroadcastLedger(ledger1); //Console.WriteLine(ledger1.TxId); //Console.ReadLine(); // D5AFMqnpcmFh9GyC8UcPCMupStiAN3jMwX //BitcoinSecret user = new BitcoinSecret("L3DYWvGyVZuFiqEMDRgBuRJKvutssRczXmTxxUA9piJkq3LSQZAn", network); //var contractService = new ContractService(@"tsc-wallet.db", api); //WalletContract mycontract = null; //mycontract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"); //if (mycontract == null) //keyService = new KeyService("1234"); //var result = keyService.ParseSeed("นิ้ว ร่วง สมัย ทักษะ กวาด กว่า แอร์ น้ําใจ ล่ะ หมวย ทูล เลิศ ดาว สมรส เจอร์"); //if (result != null) //{ // Console.WriteLine(result.Seed + " and " + result.SecretKeyWif); // currentKeyPair = result; // keyService.SaveKey(currentKeyPair); //} //else //{ // Console.WriteLine("Retry"); //} //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" })); //รุบุที่อยู่รหัสสัญญา //var walletContract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"); //เตรียมรหัสสัญญา //string _contract = "165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"; //mycontracts = contractService.FindLocalContract(); //foreach(var contract in mycontracts) //{ // if(contract.ID == _contract) // { // Console.WriteLine("seen!!"); // continue; // } //} //string combildtext = "abc?def;ghi"; //string combildtext = "abc?def"; //string combildtext = "abc;ghi"; //string combildtext = "abc"; //int point1 = combildtext.IndexOf('?'); //int point2 = combildtext.IndexOf(';'); //string publickey = ""; //string amount = ""; //string contract = ""; ////Console.WriteLine(point1+"\n"+ point2); //if (point1 != -1 && point2 != -1) //{ // publickey = combildtext.Substring(0, point1); // amount = combildtext.Substring(point1 + 1, point2 - (point1 + 1)); // contract = combildtext.Substring(point2 + 1); //} //else if (point1 != -1 && point2 == -1) //{ // publickey = combildtext.Substring(0, point1); // amount = combildtext.Substring(point1 + 1); //} //else if (point1 == -1 && point2 != -1) //{ // publickey = combildtext.Substring(0, point2); // contract = combildtext.Substring(point2 + 1); //} //else //{ // publickey = combildtext.Substring(0); //} //Console.WriteLine(publickey + "\n" + amount + "\n" + contract); //try //{ // keyService = new KeyService("12341"); // var key = keyService.GetKey(); //} //catch //{ //} keyService = new KeyService("1234"); var savedKey = keyService.GetKey(); //privateKey = savedKey.SecretKey; //PubkeyHash = savedKey.PublicKey.Hash.ToBytes(); //Console.WriteLine(savedKey.SecretKey); contactService = new ContactService(); //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" })); //รุบุที่อยู่รหัสสัญญา contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://explorer.thaismartcontract.com" })); Network network = NBitcoin.Altcoins.Digibyte.Instance.Mainnet; BitcoinSecret creator = new BitcoinSecret("L3DYWvGyVZuFiqEMDRgBuRJKvutssRczXmTxxUA9piJkq3LSQZAn", network); var mycontracts = await contractService.FindContract("19d625fff665bb2a8ffae5b0b960113ee5b98fd23fb4fca2c95d1c1380ebfaa3"); var walletService = contractService.CreateWalletService(mycontracts, creator); var ledger1 = walletService.CreateLedger(OperationCode.Issue); await walletService.BroadcastLedger(ledger1); Console.Write(ledger1.TxId); //var a = new DigibyteAPI(new APIOptions() { BaseURL = "https://explorer.thaismartcontract.com" }); //var b = await a.GetBlockHeight("8836df00d125574303418e44ce0fe6316e54cfbf15799fc79a68c47171188ffd"); //var c = await a.GetSync(); //Console.WriteLine(b); //Console.WriteLine(c.blockChainHeight); //try //{ // System.Net.WebClient client = new System.Net.WebClient(); // string result = client.DownloadString("http://172.16.195.8:3000/api/sync"); // Console.WriteLine("Connect"); //} //catch (System.Net.WebException ex) //{ // //do something here to make the site unusable, e.g: // Console.WriteLine("Disconnect"); //} //try //{ // using (var client = new TcpClient("172.16.195.8", 3000)) // Console.WriteLine("Connected"); //} //catch (SocketException ex) //{ // Console.WriteLine("DisConnected"); //} //mycontracts = contractService.FindLocalContract(); //if (mywalletServices != null && mywalletServices.Count() > 0) //{ // foreach (var service in mywalletServices) // { // if (await service.IsNewTransactionAvailable()) // isUpdated = true; // } //} //else //{ // isUpdated = true; //} //if (isUpdated) //{ // mywalletServices.Clear(); // myaccountServices.Clear(); // myAccounts.Clear(); // mycontracts = contractService.FindLocalContract(); // foreach (var con in mycontracts) // { // mywalletServices.Add(contractService.CreateWalletService(con, privateKey)); // } // foreach (var service in mywalletServices) // { // await service.Rescan(resetBit); // myaccountServices.Add(service.GetAccountService()); // } //} // foreach (var service in myaccountServices) // { // myAccounts.Add(service.GetAccount(privateKey.GetAddress())); // } // try // { // foreach (var account in myAccounts) // { // var currentContract = mycontracts.First(c => c.NameString == account.TokenName); // string balance = account.Balance.ToString("N" + currentContract.NoOfDecimal.ToString()); // Console.WriteLine(balance); // } // } // catch // { // } //} // var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList(); // if (shownLedger != null) // { // if (shownLedger.TxId != allLedgers[0].TxId) // { // } // } // shownLedger = allLedgers[0]; // foreach (var ledger in allLedgers) // { // if (!ledger.TokenSenderHash.QuickCompare(PubkeyHash) && !ledger.TokenReceiverHash.QuickCompare(PubkeyHash)) // { // continue; // } // if (ledger.Status != ProcessStatus.Processed) // { // continue; // } // var currentContract = mycontracts.First(c => c.TokenName.QuickCompare(ledger.TokenName)); // } // resetBit = false; // isUpdated = false; //} //catch (Exception e) //{ // //if (Program.CheckForInternetConnection()) // //{ // // resetBit = true; // //} // //else // //{ // // Thread.Sleep(15000); // //} // //goto restart; //IsDone = true; //foreach (var service in myaccountServices) //{ // myAccounts.Add(service.GetAccount(privateKey.GetAddress())); //} //foreach (var account in myAccounts) //{ // var currentContract = mycontracts.First(c => c.NameString == account.TokenName); // Console.WriteLine(account.Balance.ToString("N" + currentContract.NoOfDecimal.ToString())); // Console.WriteLine(account.Balance); //} //var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList(); //foreach (var ledger in allLedgers) //{ // Console.WriteLine(contactService.GetContact(ledger.TokenSenderHashHex)); //} //var savedKey = keyService.GetKey(); ////Console.WriteLine(savedKey.Seed); //privateKey = savedKey.SecretKey; //contractService = new ContractService(@"tsc-wallet.db", new DigibyteAPI(new APIOptions() { BaseURL = "https://digibyteblockexplorer.com" })); //รุบุที่อยู่รหัสสัญญา //var walletContract = await contractService.FindContract("165dc1f670fb2c89046f47de718c4818d6c47fefa3ba152ed914fd82ae7b29f1"); //เตรียมรหัสสัญญา //var walletService = contractService.CreateWalletService(walletContract, privateKey); //การเตรียมการใช้งาน //var pb = privateKey.GetAddress(); // var skip = pageNo * pageSize; //mycontracts = contractService.FindLocalContract(); //foreach (var con in mycontracts) //{ // mywalletServices.Add(contractService.CreateWalletService(con, privateKey)); //} //contactService = new ContactService(); //var allLedgers = mywalletServices.SelectMany(ws => ws.GetMyLedgers(limit: 5)).ToList(); //var ledger2 = walletService.CreateLedger(OperationCode.Transfer, "D5AFMqnpcmFh9GyC8UcPCMupStiAN3jMwX", 500m); //await walletService.BroadcastLedger(ledger2, false); //Console.WriteLine(ledger2.TxId); //Console.WriteLine("Press enter to continue..."); //Console.ReadLine(); //await ownerWalletService.BroadcastLedger(ledger2, false); //allLedgers.ForEach(i => Console.Write("{0}\t", i)); //var ledgers = walletService.GetLedgers(pb.Hash.ToString(), skip, pageSize); //ledgers.ForEach(i => Console.Write("{0}\t", i)); //ledgers.ForEach(l => displayLedgers.Add(l.AsVieweable(contactService))); //Console.WriteLine(contactService.GetContact(allLedgers[0].TokenSenderHashHex)); //WalletContract mycontract = null; //var contract = Encoding.UTF8.GetBytes("PIGER"); // var token = Encoding.UTF8.GetBytes("PIG"); //mycontract = await contractService.CreateContract(creator, contract, token, 100000m, 2); // Console.WriteLine(mycontract.ID); //Console.WriteLine("Contract is issued: " + mycontract.ID); //{ // var contract = Encoding.UTF8.GetBytes("SCIENCE"); // var token = Encoding.UTF8.GetBytes("SCI"); // mycontract = await contractService.CreateContract(creator, contract, token, 1000000m, 2); // Console.WriteLine(mycontract.ID); // Console.ReadLine(); //} //{ // var contract = Encoding.UTF8.GetBytes("RMUTSB"); // var token = Encoding.UTF8.GetBytes("ITS"); // mycontract = await contractService.CreateContract(creator, contract, token, 1000m, 2); // Console.WriteLine(mycontract.ID); // Console.ReadLine(); //} //WriteData<WalletContract>(mycontract); ////Console.WriteLine("Press enter to continue..."); //Console.ReadLine(); //var firstUser = creator; //var ownerWalletService = contractService.CreateWalletService(mycontract, firstUser); //await ownerWalletService.Rescan(false); //var secondUser = user; //var userWalletService = contractService.CreateWalletService(mycontract, secondUser); //await userWalletService.Rescan(false); /// validate if future fee is transfered to client or not //var ledger1 = ownerWalletService.CreateLedger(OperationCode.Issue); //await ownerWalletService.BroadcastLedger(ledger1, false); //Console.WriteLine(ledger1.TxId); //Console.WriteLine("Press enter to continue..."); //Console.ReadLine(); //var ledger2 = ownerWalletService.CreateLedger(OperationCode.Transfer, secondUser.GetAddress(), 1000m); //await ownerWalletService.BroadcastLedger(ledger2, false); //Console.WriteLine(ledger2.TxId); //Console.WriteLine("Press enter to continue..."); //Console.ReadLine(); //var ledger3 = userWalletService.CreateLedger(OperationCode.Transfer, firstUser.GetAddress(), 500m); //await userWalletService.BroadcastLedger(ledger3, false); //Console.WriteLine(ledger3.TxId); //Console.WriteLine("Press enter to continue..."); //Console.ReadLine(); //await userWalletService.Rescan(false); //Console.WriteLine("User Wallet"); //var accountManager = userWalletService.GetAccountService(); //var firstAccount = accountManager.GetAccount(firstUser); //var secondAccount = accountManager.GetAccount(secondUser); //Console.WriteLine(firstAccount); //Console.WriteLine(secondAccount); //Console.WriteLine("Owner Wallet"); //await ownerWalletService.Rescan(false); //accountManager = ownerWalletService.GetAccountService(); //firstAccount = accountManager.GetAccount(firstUser); //secondAccount = accountManager.GetAccount(secondUser); //Console.WriteLine(firstAccount); //Console.WriteLine(secondAccount); //Console.ReadLine(); //testLedger = await walletService.WriteLedger(creator, creator.GetAddress(), testLedger); //var mycontract = contractService.CreateContract(creator, contract, token, 100000000m, 8); //var transferLedger = new Ledger() //{ // Operation = OperationCode.Transfer, // Amount = 1000m //}; //transferLedger = await walletService.WriteLedger(creator, user.GetAddress(), transferLedger); //var userWalletService = contractService.CreateWalletService(user); //await userWalletService.Rescan(true); //Console.WriteLine(mycontract); //var mycontract = contractService.FindContract("59b900e905aa60130eca5a4c6a49fc30d3767b90014acecebdb521e773e1b350"); }