mirror of
				https://github.com/PurpleI2P/i2pd.git
				synced 2025-11-04 00:20:46 +00:00 
			
		
		
		
	remove trailing whitespaces
This commit is contained in:
		
							parent
							
								
									b91efaa973
								
							
						
					
					
						commit
						46f62e1af9
					
				
					 117 changed files with 3039 additions and 3040 deletions
				
			
		| 
						 | 
				
			
			@ -23,11 +23,11 @@ namespace tunnel
 | 
			
		|||
		uint8_t ivKey[32];
 | 
			
		||||
		uint8_t replyKey[32];
 | 
			
		||||
		uint8_t replyIV[16];
 | 
			
		||||
		bool isGateway, isEndpoint;	
 | 
			
		||||
		
 | 
			
		||||
		bool isGateway, isEndpoint;
 | 
			
		||||
 | 
			
		||||
		TunnelHopConfig * next, * prev;
 | 
			
		||||
		int recordIndex; // record # in tunnel build message
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		TunnelHopConfig (std::shared_ptr<const i2p::data::IdentityEx> r)
 | 
			
		||||
		{
 | 
			
		||||
			RAND_bytes (layerKey, 32);
 | 
			
		||||
| 
						 | 
				
			
			@ -37,20 +37,20 @@ namespace tunnel
 | 
			
		|||
			RAND_bytes ((uint8_t *)&tunnelID, 4);
 | 
			
		||||
			isGateway = true;
 | 
			
		||||
			isEndpoint = true;
 | 
			
		||||
			ident = r; 
 | 
			
		||||
			//nextRouter = nullptr; 
 | 
			
		||||
			ident = r;
 | 
			
		||||
			//nextRouter = nullptr;
 | 
			
		||||
			nextTunnelID = 0;
 | 
			
		||||
 | 
			
		||||
			next = nullptr;
 | 
			
		||||
			prev = nullptr;
 | 
			
		||||
		}	
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void SetNextIdent (const i2p::data::IdentHash& ident)
 | 
			
		||||
		{
 | 
			
		||||
			nextIdent = ident;
 | 
			
		||||
			isEndpoint = false;
 | 
			
		||||
			RAND_bytes ((uint8_t *)&nextTunnelID, 4);
 | 
			
		||||
		}	
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void SetReplyHop (uint32_t replyTunnelID, const i2p::data::IdentHash& replyIdent)
 | 
			
		||||
		{
 | 
			
		||||
| 
						 | 
				
			
			@ -58,35 +58,35 @@ namespace tunnel
 | 
			
		|||
			nextTunnelID = replyTunnelID;
 | 
			
		||||
			isEndpoint = true;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
 | 
			
		||||
		void SetNext (TunnelHopConfig * n)
 | 
			
		||||
		{
 | 
			
		||||
			next = n;
 | 
			
		||||
			if (next)
 | 
			
		||||
			{	
 | 
			
		||||
			{
 | 
			
		||||
				next->prev = this;
 | 
			
		||||
				next->isGateway = false;
 | 
			
		||||
				isEndpoint = false;
 | 
			
		||||
				nextIdent = next->ident->GetIdentHash ();
 | 
			
		||||
				nextTunnelID = next->tunnelID;
 | 
			
		||||
			}	
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void SetPrev (TunnelHopConfig * p)
 | 
			
		||||
		{
 | 
			
		||||
			prev = p;
 | 
			
		||||
			if (prev) 
 | 
			
		||||
			{	
 | 
			
		||||
			if (prev)
 | 
			
		||||
			{
 | 
			
		||||
				prev->next = this;
 | 
			
		||||
				prev->isEndpoint = false;
 | 
			
		||||
				isGateway = false;
 | 
			
		||||
			}	
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		void CreateBuildRequestRecord (uint8_t * record, uint32_t replyMsgID, BN_CTX * ctx) const
 | 
			
		||||
		{
 | 
			
		||||
			uint8_t clearText[BUILD_REQUEST_RECORD_CLEAR_TEXT_SIZE];
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_RECEIVE_TUNNEL_OFFSET, tunnelID); 
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_RECEIVE_TUNNEL_OFFSET, tunnelID);
 | 
			
		||||
			memcpy (clearText + BUILD_REQUEST_RECORD_OUR_IDENT_OFFSET, ident->GetIdentHash (), 32);
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_NEXT_TUNNEL_OFFSET, nextTunnelID);
 | 
			
		||||
			memcpy (clearText + BUILD_REQUEST_RECORD_NEXT_IDENT_OFFSET, nextIdent, 32);
 | 
			
		||||
| 
						 | 
				
			
			@ -98,44 +98,44 @@ namespace tunnel
 | 
			
		|||
			if (isGateway) flag |= 0x80;
 | 
			
		||||
			if (isEndpoint) flag |= 0x40;
 | 
			
		||||
			clearText[BUILD_REQUEST_RECORD_FLAG_OFFSET] = flag;
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_REQUEST_TIME_OFFSET, i2p::util::GetHoursSinceEpoch ()); 
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_SEND_MSG_ID_OFFSET, replyMsgID); 
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_REQUEST_TIME_OFFSET, i2p::util::GetHoursSinceEpoch ());
 | 
			
		||||
			htobe32buf (clearText + BUILD_REQUEST_RECORD_SEND_MSG_ID_OFFSET, replyMsgID);
 | 
			
		||||
			RAND_bytes (clearText + BUILD_REQUEST_RECORD_PADDING_OFFSET, BUILD_REQUEST_RECORD_CLEAR_TEXT_SIZE - BUILD_REQUEST_RECORD_PADDING_OFFSET);
 | 
			
		||||
			i2p::crypto::ElGamalEncrypt (ident->GetEncryptionPublicKey (), clearText, record + BUILD_REQUEST_RECORD_ENCRYPTED_OFFSET, ctx);
 | 
			
		||||
			memcpy (record + BUILD_REQUEST_RECORD_TO_PEER_OFFSET, (const uint8_t *)ident->GetIdentHash (), 16);
 | 
			
		||||
		}	
 | 
			
		||||
	};	
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	class TunnelConfig
 | 
			
		||||
	{
 | 
			
		||||
		public:			
 | 
			
		||||
			
 | 
			
		||||
		public:
 | 
			
		||||
 | 
			
		||||
			TunnelConfig (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > peers) // inbound
 | 
			
		||||
			{
 | 
			
		||||
				CreatePeers (peers);
 | 
			
		||||
				m_LastHop->SetNextIdent (i2p::context.GetIdentHash ());
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			TunnelConfig (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > peers, 
 | 
			
		||||
			TunnelConfig (std::vector<std::shared_ptr<const i2p::data::IdentityEx> > peers,
 | 
			
		||||
				uint32_t replyTunnelID, const i2p::data::IdentHash& replyIdent) // outbound
 | 
			
		||||
			{
 | 
			
		||||
				CreatePeers (peers);
 | 
			
		||||
				m_FirstHop->isGateway = false;
 | 
			
		||||
				m_LastHop->SetReplyHop (replyTunnelID, replyIdent);
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			~TunnelConfig ()
 | 
			
		||||
			{
 | 
			
		||||
				TunnelHopConfig * hop = m_FirstHop;
 | 
			
		||||
				
 | 
			
		||||
 | 
			
		||||
				while (hop)
 | 
			
		||||
				{
 | 
			
		||||
					auto tmp = hop;
 | 
			
		||||
					hop = hop->next;
 | 
			
		||||
					delete tmp;
 | 
			
		||||
				}	
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
			TunnelHopConfig * GetFirstHop () const
 | 
			
		||||
			{
 | 
			
		||||
				return m_FirstHop;
 | 
			
		||||
| 
						 | 
				
			
			@ -149,63 +149,63 @@ namespace tunnel
 | 
			
		|||
			int GetNumHops () const
 | 
			
		||||
			{
 | 
			
		||||
				int num = 0;
 | 
			
		||||
				TunnelHopConfig * hop = m_FirstHop;		
 | 
			
		||||
				TunnelHopConfig * hop = m_FirstHop;
 | 
			
		||||
				while (hop)
 | 
			
		||||
				{
 | 
			
		||||
					num++;
 | 
			
		||||
					hop = hop->next;
 | 
			
		||||
				}	
 | 
			
		||||
				}
 | 
			
		||||
				return num;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			bool IsEmpty () const
 | 
			
		||||
			{
 | 
			
		||||
				return !m_FirstHop;
 | 
			
		||||
			}			
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			virtual bool IsInbound () const { return m_FirstHop->isGateway; }
 | 
			
		||||
 | 
			
		||||
			virtual uint32_t GetTunnelID () const 
 | 
			
		||||
			{	
 | 
			
		||||
			virtual uint32_t GetTunnelID () const
 | 
			
		||||
			{
 | 
			
		||||
				if (!m_FirstHop) return 0;
 | 
			
		||||
				return IsInbound () ? m_LastHop->nextTunnelID : m_FirstHop->tunnelID; 
 | 
			
		||||
				return IsInbound () ? m_LastHop->nextTunnelID : m_FirstHop->tunnelID;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			virtual uint32_t GetNextTunnelID () const 
 | 
			
		||||
			{	
 | 
			
		||||
			virtual uint32_t GetNextTunnelID () const
 | 
			
		||||
			{
 | 
			
		||||
				if (!m_FirstHop) return 0;
 | 
			
		||||
				return m_FirstHop->tunnelID; 
 | 
			
		||||
				return m_FirstHop->tunnelID;
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			virtual const i2p::data::IdentHash& GetNextIdentHash () const 
 | 
			
		||||
			{ 
 | 
			
		||||
				return m_FirstHop->ident->GetIdentHash (); 
 | 
			
		||||
			}	
 | 
			
		||||
			virtual const i2p::data::IdentHash& GetNextIdentHash () const
 | 
			
		||||
			{
 | 
			
		||||
				return m_FirstHop->ident->GetIdentHash ();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			virtual const i2p::data::IdentHash& GetLastIdentHash () const
 | 
			
		||||
			{
 | 
			
		||||
				return m_LastHop->ident->GetIdentHash ();
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			virtual const i2p::data::IdentHash& GetLastIdentHash () const 
 | 
			
		||||
			{ 
 | 
			
		||||
				return m_LastHop->ident->GetIdentHash (); 
 | 
			
		||||
			}	
 | 
			
		||||
			
 | 
			
		||||
			std::vector<std::shared_ptr<const i2p::data::IdentityEx> > GetPeers () const
 | 
			
		||||
			{
 | 
			
		||||
				std::vector<std::shared_ptr<const i2p::data::IdentityEx> > peers;
 | 
			
		||||
				TunnelHopConfig * hop = m_FirstHop;		
 | 
			
		||||
				TunnelHopConfig * hop = m_FirstHop;
 | 
			
		||||
				while (hop)
 | 
			
		||||
				{
 | 
			
		||||
					peers.push_back (hop->ident);
 | 
			
		||||
					hop = hop->next;
 | 
			
		||||
				}	
 | 
			
		||||
				}
 | 
			
		||||
				return peers;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
		protected:
 | 
			
		||||
 | 
			
		||||
			// this constructor can't be called from outside
 | 
			
		||||
			TunnelConfig (): m_FirstHop (nullptr), m_LastHop (nullptr)
 | 
			
		||||
			{
 | 
			
		||||
			}
 | 
			
		||||
	
 | 
			
		||||
 | 
			
		||||
		private:
 | 
			
		||||
 | 
			
		||||
			template<class Peers>
 | 
			
		||||
| 
						 | 
				
			
			@ -217,13 +217,13 @@ namespace tunnel
 | 
			
		|||
					auto hop = new TunnelHopConfig (it);
 | 
			
		||||
					if (prev)
 | 
			
		||||
						prev->SetNext (hop);
 | 
			
		||||
					else	
 | 
			
		||||
					else
 | 
			
		||||
						m_FirstHop = hop;
 | 
			
		||||
					prev = hop;
 | 
			
		||||
				}	
 | 
			
		||||
				}
 | 
			
		||||
				m_LastHop = prev;
 | 
			
		||||
			}
 | 
			
		||||
			
 | 
			
		||||
 | 
			
		||||
		private:
 | 
			
		||||
 | 
			
		||||
			TunnelHopConfig * m_FirstHop, * m_LastHop;
 | 
			
		||||
| 
						 | 
				
			
			@ -235,7 +235,7 @@ namespace tunnel
 | 
			
		|||
 | 
			
		||||
			ZeroHopsTunnelConfig () { RAND_bytes ((uint8_t *)&m_TunnelID, 4);};
 | 
			
		||||
 | 
			
		||||
			bool IsInbound () const { return true; }; // TODO:		
 | 
			
		||||
			bool IsInbound () const { return true; }; // TODO:
 | 
			
		||||
			uint32_t GetTunnelID () const { return m_TunnelID; };
 | 
			
		||||
			uint32_t GetNextTunnelID () const { return m_TunnelID; };
 | 
			
		||||
			const i2p::data::IdentHash& GetNextIdentHash () const { return i2p::context.GetIdentHash (); };
 | 
			
		||||
| 
						 | 
				
			
			@ -243,10 +243,10 @@ namespace tunnel
 | 
			
		|||
 | 
			
		||||
 | 
			
		||||
		private:
 | 
			
		||||
		
 | 
			
		||||
			uint32_t m_TunnelID;	
 | 
			
		||||
	};	
 | 
			
		||||
}		
 | 
			
		||||
}	
 | 
			
		||||
 | 
			
		||||
			uint32_t m_TunnelID;
 | 
			
		||||
	};
 | 
			
		||||
}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue