@Override public boolean equals(Object object) { if (object == this) return true; if ((object == null) || !(object instanceof LeaseSet)) return false; LeaseSet ls = (LeaseSet) object; return DataHelper.eq(_signature, ls.getSignature()) && DataHelper.eq(_leases, ls._leases) && DataHelper.eq(getEncryptionKey(), ls.getEncryptionKey()) && DataHelper.eq(_signingKey, ls.getSigningKey()) && DataHelper.eq(_destination, ls.getDestination()); }
/** * May be run after SendSuccessJob, will have no effect. */ public void runJob() { Result old; // never fail after success synchronized(OutboundClientMessageOneShotJob.this) { old = _finished; if (old == Result.SUCCESS) { if (_log.shouldLog(Log.INFO)) _log.info(OutboundClientMessageOneShotJob.this.getJobId() + ": TIMEOUT-AFTER-SUCCESS"); return; } // in sync block so we don't fail after success if (_key != null && _tags != null && _leaseSet != null) { SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_from.calculateHash()); if (skm != null) skm.failTags(_leaseSet.getEncryptionKey(), _key, _tags); } } if (old == Result.NONE) dieFatal(MessageStatusMessage.STATUS_SEND_BEST_EFFORT_FAILURE); } }
return MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET; PublicKey pk = _leaseSet.getEncryptionKey(); if (pk == null) return MessageStatusMessage.STATUS_SEND_FAILURE_BAD_LEASESET;
boolean wantACK = _wantACK || shouldRequestReply || GarlicMessageBuilder.needsTags(getContext(), _leaseSet.getEncryptionKey(), _from.calculateHash(), tagsRequired); PublicKey key = _leaseSet.getEncryptionKey(); SessionKey sessKey = new SessionKey(); Set<SessionTag> tags = new HashSet<SessionTag>(); SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_from.calculateHash()); if (skm != null) tsh = skm.tagsDelivered(_leaseSet.getEncryptionKey(), sessKey, tags);
EncType etype = _leaseSet.getEncryptionKey().getType(); if (etype == null) throw new I2CPMessageException("Unsupported encryption type");
SessionKeyManager skm = getContext().clientManager().getClientSessionKeyManager(_from.calculateHash()); if (skm != null) skm.tagsAcked(_leaseSet.getEncryptionKey(), _key, _tags);
return; if (!pk.equals(ls.getEncryptionKey())) { if (_log.shouldLog(Log.ERROR)) _log.error("Private/public crypto key mismatch in LS");