When an application tries to connect to some destinations via SAM (on Java router), it can't do that, because it errors out with CANT_REACH_PEER and "Unsupported encryption options". However, that destination can be contacted with other means (HTTP proxy, I2PSnark works too).
The follwing destination does not appear to be contactable over SAM: tracker2.postman.i2p
However, SAM still works for other destinations, for example: i2p-projekt.i2p
As a consequence of this uncontactability, some software may be unable to work in i2p. More concretely, i am talking about qBittorrent, which recently gained I2P support via SAM, but it can't contact tracker2.postman.i2p to announce itself. However, this problem does not appear to be specific to qBittorrent, because it still can be reproduced when testing with netcat (manually typing SAM protocol commands).
How is it possible to fix this problem?
P.S. i2pd seems to have a similar problem, but instead of erroring out, it just waits for a long time and then times out. I have posted that problem on the i2pd subforum earlier.
Edit: I have noticed (in router console leaseset lookup) that tracker2.postman.i2p has only ECIES_X25519 encryption key, while i2p-projekt.i2p has both ECIES_X25519 and ELGAMAL_2048 encryption keys listed. Is that related to the problem? Could it be that I2P SAM cannot connect to ECIES-only destinations?
Edit2: After some more digging, i have discovered that the error probably comes from
Code: Select all
router/java/src/net/i2p/router/message/OutboundClientMessageOneShotJob.java
Code: Select all
if (_to.getEncType() != EncType.ELGAMAL_2048) {
// Enc type in key cert, proposal 145, unsupported
dieFatal(MessageStatusMessage.STATUS_SEND_FAILURE_UNSUPPORTED_ENCRYPTION);
return;
}