Skip to content

Commit 5a121bc

Browse files
committed
Merge bitcoin/bitcoin#29200: net: create I2P sessions using both ECIES-X25519 and ElGamal encryption
9d72891 net: create I2P sessions with both ECIES-X25519 and ElGamal encryption (Jon Atack) Pull request description: A Bitcoin Core node may only connect to a peer destination via I2P if both sides have sessions with the same encryption type. Encryption type is a property of the session, not the destination. Sessions may support multiple encryption types. As Bitcoin Core is not currently setting the encryption type when creating I2P sessions, it uses the older default, ElGamal (type 0). This pull updates our I2P session creation to use both ECIES-X25519 and ElGamal (types 4 and 0, respectively). This allows to connect to I2P peers of either type, and the newer, faster ECIES-X25519 will be preferred. See also: - discussion around qbittorrent/qBittorrent#19625 (comment) - recently updated "Signature and Encryption Types" in https://geti2p.net/en/docs/api/samv3 Thank you and credit to zzzi2p for reporting and to vort for the patch. Closes bitcoin/bitcoin#29197. ACKs for top commit: zzzi2p: ACK 9d72891 recursive-rat4: ACK 9d72891 kristapsk: cr utACK 9d72891 brunoerg: crACK 9d72891 shaavan: crACK 9d72891 Tree-SHA512: 0912fc01af9706914a7854f7479b9d82fc86c9530466cad8674e30f7eb4894d90d514efbc1aee8b7ea690faa6ff4a23b62cf5de8737cffdbc463300082c9b917
2 parents b3b19be + 9d72891 commit 5a121bc

File tree

1 file changed

+2
-2
lines changed

1 file changed

+2
-2
lines changed

src/i2p.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ void Session::CreateIfNotCreatedAlready()
427427
const Reply& reply = SendRequestAndGetReply(
428428
*sock,
429429
strprintf("SESSION CREATE STYLE=STREAM ID=%s DESTINATION=TRANSIENT SIGNATURE_TYPE=7 "
430-
"inbound.quantity=1 outbound.quantity=1",
430+
"i2cp.leaseSetEncType=4,0 inbound.quantity=1 outbound.quantity=1",
431431
session_id));
432432

433433
m_private_key = DecodeI2PBase64(reply.Get("DESTINATION"));
@@ -445,7 +445,7 @@ void Session::CreateIfNotCreatedAlready()
445445

446446
SendRequestAndGetReply(*sock,
447447
strprintf("SESSION CREATE STYLE=STREAM ID=%s DESTINATION=%s "
448-
"inbound.quantity=3 outbound.quantity=3",
448+
"i2cp.leaseSetEncType=4,0 inbound.quantity=3 outbound.quantity=3",
449449
session_id,
450450
private_key_b64));
451451
}

0 commit comments

Comments
 (0)