| 517 | } |
| 518 | |
| 519 | NTCP2Session::NTCP2Session (NTCP2Server& server, std::shared_ptr<const i2p::data::RouterInfo> in_RemoteRouter, |
| 520 | std::shared_ptr<const i2p::data::RouterInfo::Address> addr): |
| 521 | TransportSession (in_RemoteRouter, NTCP2_ESTABLISH_TIMEOUT), |
| 522 | m_Server (server), m_Socket (m_Server.GetService ()), |
| 523 | m_IsEstablished (false), m_IsTerminated (false), |
| 524 | m_Establisher (new NTCP2Establisher), |
| 525 | m_SendKey (nullptr), m_ReceiveKey (nullptr), |
| 526 | #if OPENSSL_SIPHASH |
| 527 | m_SendMDCtx(nullptr), m_ReceiveMDCtx (nullptr), |
| 528 | #else |
| 529 | m_SendSipKey (nullptr), m_ReceiveSipKey (nullptr), |
| 530 | #endif |
| 531 | m_NextReceivedLen (0), m_NextReceivedBuffer (nullptr), m_NextSendBuffer (nullptr), |
| 532 | m_NextReceivedBufferSize (0), m_ReceiveSequenceNumber (0), m_SendSequenceNumber (0), |
| 533 | m_IsSending (false), m_IsReceiving (false), m_NextRouterInfoResendTime (0), |
| 534 | m_NextPaddingSize (16) |
| 535 | { |
| 536 | if (in_RemoteRouter) // Alice |
| 537 | { |
| 538 | m_Establisher->m_RemoteIdentHash = GetRemoteIdentity ()->GetIdentHash (); |
| 539 | if (addr) |
| 540 | { |
| 541 | memcpy (m_Establisher->m_RemoteStaticKey, addr->s, 32); |
| 542 | memcpy (m_Establisher->m_IV, addr->i, 16); |
| 543 | m_RemoteEndpoint = boost::asio::ip::tcp::endpoint (addr->host, addr->port); |
| 544 | #if OPENSSL_PQ |
| 545 | if (m_Server.GetVersion () > 2) // we support post quantum in config |
| 546 | m_Establisher->SetVersion (addr->v); |
| 547 | #endif |
| 548 | if (addr->v > 2 && in_RemoteRouter->GetVersion () >= MAKE_VERSION_NUMBER(0, 9, 69)) // 0.9.69 |
| 549 | m_Establisher->m_IsLongPadding = true; |
| 550 | } |
| 551 | else |
| 552 | LogPrint (eLogWarning, "NTCP2: Missing NTCP2 address"); |
| 553 | } |
| 554 | } |
| 555 | |
| 556 | NTCP2Session::~NTCP2Session () |
| 557 | { |
nothing calls this directly
no test coverage detected