Changeset 00d4525 for router


Ignore:
Timestamp:
Mar 23, 2019 1:39:47 PM (16 months ago)
Author:
zzz <zzz@…>
Branches:
master
Children:
fea5bd4
Parents:
f17776e
Message:

Data: Initial work on b32 format for blinded leasesets (proposal 149, WIP)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • router/java/src/net/i2p/router/client/LookupDestJob.java

    rf17776e r00d4525  
    77import java.util.Locale;
    88
     9import net.i2p.crypto.Blinding;
    910import net.i2p.data.Base32;
     11import net.i2p.data.BlindData;
    1012import net.i2p.data.Destination;
    1113import net.i2p.data.Hash;
     
    1820import net.i2p.router.JobImpl;
    1921import net.i2p.router.RouterContext;
     22import net.i2p.util.Log;
    2023
    2124/**
     
    2427 */
    2528class LookupDestJob extends JobImpl {
     29    private final Log _log;
    2630    private final ClientConnectionRunner _runner;
    2731    private final long _reqID;
     
    5357                         Hash fromLocalDest) {
    5458        super(context);
     59        _log = context.logManager().getLog(LookupDestJob.class);
    5560        if ((h == null && name == null) ||
    5661            (h != null && name != null) ||
    5762            (reqID >= 0 && sessID == null) ||
    58             (reqID < 0 && name != null))
     63            (reqID < 0 && name != null)) {
     64            _log.warn("bad args");
    5965            throw new IllegalArgumentException();
     66        }
    6067        _runner = runner;
    6168        _reqID = reqID;
     
    6370        _sessID = sessID;
    6471        _fromLocalDest = fromLocalDest;
    65         if (name != null && name.length() == 60) {
     72        if (name != null && name.length() >= 60) {
    6673            // convert a b32 lookup to a hash lookup
    6774            String nlc = name.toLowerCase(Locale.US);
    6875            if (nlc.endsWith(".b32.i2p")) {
    69                 byte[] b = Base32.decode(nlc.substring(0, 52));
    70                 if (b != null && b.length == Hash.HASH_LENGTH) {
    71                     h = Hash.create(b);
    72                     name = null;
     76                byte[] b = Base32.decode(nlc.substring(0, nlc.length() - 8));
     77                if (b != null) {
     78                    if (b.length == Hash.HASH_LENGTH) {
     79                        h = Hash.create(b);
     80                        if (_log.shouldDebug())
     81                            _log.debug("Converting name lookup " + name + " to " + h);
     82                        name = null;
     83                    } else if (b.length >= 35) {
     84                        // encrypted LS2
     85                        try {
     86                            BlindData bd = Blinding.decode(context, b);
     87                            h = bd.getBlindedHash();
     88                            if (_log.shouldDebug())
     89                                _log.debug("Converting name lookup " + name + " to blinded " + h);
     90                            name = null;
     91                        } catch (RuntimeException re) {
     92                            if (_log.shouldWarn())
     93                                _log.debug("Failed blinding conversion of " + name, re);
     94                            // lookup as a name, which will probably fail
     95                        }
     96                    }
    7397                }
    7498            }
     
    87111            // inline, ignore timeout
    88112            Destination d = getContext().namingService().lookup(_name);
    89             if (d != null)
     113            if (d != null) {
     114                if (_log.shouldDebug())
     115                    _log.debug("Found name lookup " + _name + " to " + d);
    90116                returnDest(d);
    91             else
     117            } else {
     118                if (_log.shouldDebug())
     119                    _log.debug("Failed name lookup " + _name);
    92120                returnFail();
     121            }
    93122        } else {
    94123            DoneJob done = new DoneJob(getContext());
     
    104133        public void runJob() {
    105134            Destination dest = getContext().netDb().lookupDestinationLocally(_hash);
    106             if (dest != null)
     135            if (dest != null) {
     136                if (_log.shouldDebug())
     137                    _log.debug("Found hash lookup " + _hash + " to " + dest);
    107138                returnDest(dest);
    108             else
     139            } else {
     140                if (_log.shouldDebug())
     141                    _log.debug("Failed hash lookup " + _hash);
    109142                returnFail();
     143            }
    110144        }
    111145    }
Note: See TracChangeset for help on using the changeset viewer.