I2CP: Fixes for CreateLeaseset2 message with multiple keys

This commit is contained in:
zzz
2019-01-30 20:23:09 +00:00
parent c555bb6c93
commit 4eb9368830
3 changed files with 18 additions and 9 deletions

View File

@@ -9,6 +9,7 @@ package net.i2p.client.impl;
*
*/
import java.util.List;
import java.util.Properties;
import java.util.Set;
import java.util.concurrent.TimeUnit;
@@ -363,15 +364,20 @@ class I2CPMessageProducer {
*
*/
public void createLeaseSet(I2PSessionImpl session, LeaseSet leaseSet, SigningPrivateKey signingPriv,
PrivateKey priv) throws I2PSessionException {
List<PrivateKey> privs) throws I2PSessionException {
CreateLeaseSetMessage msg;
int type = leaseSet.getType();
if (type == DatabaseEntry.KEY_TYPE_LEASESET)
if (type == DatabaseEntry.KEY_TYPE_LEASESET) {
msg = new CreateLeaseSetMessage();
else
msg = new CreateLeaseSet2Message();
msg.setPrivateKey(privs.get(0));
} else {
CreateLeaseSet2Message msg2 = new CreateLeaseSet2Message();
for (PrivateKey priv : privs) {
msg2.addPrivateKey(priv);
}
msg = msg2;
}
msg.setLeaseSet(leaseSet);
msg.setPrivateKey(priv);
msg.setSigningPrivateKey(signingPriv);
SessionId sid = session.getSessionId();
if (sid == null) {

View File

@@ -315,7 +315,7 @@ class RequestLeaseSetMessageHandler extends HandlerImpl {
_context.random().nextBytes(dummy);
spk = new SigningPrivateKey(dummy);
}
session.getProducer().createLeaseSet(session, leaseSet, spk, li.getPrivateKey());
session.getProducer().createLeaseSet(session, leaseSet, spk, li.getPrivateKeys());
session.setLeaseSet(leaseSet);
if (_log.shouldDebug())
_log.debug("Created and signed LeaseSet: " + leaseSet);