private void Process() { string id = PopUserID(); while (id != string.Empty) { if (Crypto != null) { PeerAddUserRequest request = new PeerAddUserRequest(); request.UserID = id; request.TokenSalt = DB.GetTokenSaltFromUID(id); request.PassHash = DB.GetPassHashFromID(id); request.Email = DB.GetEmailFromID(id); request.Name = Name; MemoryStream ms = new MemoryStream(); StreamWriter sw = new StreamWriter(new CryptoStream(ms, Encrypter, CryptoStreamMode.Write)); sw.Write(request.UserID); sw.Close(); ms.Close(); request.Key = Convert.ToBase64String(ms.GetBuffer()); Connection.SendMessage(request, null, null); } id = PopUserID(); } }
protected PeerResponce PeerAddUser(PeerAddUserRequest request) { PeerResponce responce = new PeerResponce(); responce.OK = false; if (request != null) { AuthConfig.APIPeer inPeer = Config.InboundUpdatePeers.Find(x => x.Name == request.Name); if (inPeer != null) { RijndaelManaged crypto = Encryption.BuildCrypto(inPeer.APIKey); MemoryStream ms = new MemoryStream(Convert.FromBase64String(request.Key)); StreamReader sr = new StreamReader(new CryptoStream(ms, crypto.CreateDecryptor(), CryptoStreamMode.Read)); string decodeKey = sr.ReadToEnd(); sr.Close(); ms.Close(); if (decodeKey == request.UserID) // they know the secret! { DB.UpdateUserInfo(request.UserID, request.Email, request.PassHash, request.TokenSalt); responce.OK = true; } } } return(responce); }