Search in sources :

Example 61 with DataFormatException

use of net.i2p.data.DataFormatException in project i2p.i2p by i2p.

the class ConfigKeyringHandler method processForm.

@Override
protected void processForm() {
    if (_action == null)
        return;
    boolean adding = _action.equals(_t("Add key"));
    if (adding || _action.equals(_t("Delete key"))) {
        if (_peer == null)
            addFormError(_t("You must enter a destination"));
        if (_key == null && adding)
            addFormError(_t("You must enter a key"));
        if (_peer == null || (_key == null && adding))
            return;
        Hash h = ConvertToHash.getHash(_peer);
        if (adding) {
            SessionKey sk = new SessionKey();
            try {
                sk.fromBase64(_key);
            } catch (DataFormatException dfe) {
            }
            if (h == null || h.getData() == null) {
                addFormError(_t("Invalid destination"));
            } else if (_context.clientManager().isLocal(h)) {
                // don't bother translating
                addFormError("Cannot add key for local destination. Enable encryption in the Hidden Services Manager.");
            } else if (sk.getData() == null) {
                addFormError(_t("Invalid key"));
            } else {
                _context.keyRing().put(h, sk);
                addFormNotice(_t("Key for {0} added to keyring", h.toBase32()));
            }
        } else {
            // Delete
            if (h != null && h.getData() != null) {
                if (_context.clientManager().isLocal(h)) {
                    // don't bother translating
                    addFormError("Cannot remove key for local destination. Disable encryption in the Hidden Services Manager.");
                } else if (_context.keyRing().remove(h) != null) {
                    addFormNotice(_t("Key for {0} removed from keyring", h.toBase32()));
                } else {
                    addFormNotice(_t("Key for {0} not found in keyring", h.toBase32()));
                }
            } else {
                addFormError(_t("Invalid destination"));
            }
        }
    } else {
    // addFormError(_t("Unsupported"));
    }
}
Also used : DataFormatException(net.i2p.data.DataFormatException) SessionKey(net.i2p.data.SessionKey) Hash(net.i2p.data.Hash) ConvertToHash(net.i2p.util.ConvertToHash)

Example 62 with DataFormatException

use of net.i2p.data.DataFormatException in project i2p.i2p by i2p.

the class StreamSinkClient method runClient.

/**
 * Actually connect and run the client - this call blocks until completion.
 */
public void runClient() {
    I2PSocketManager mgr = null;
    if (_i2cpHost != null)
        mgr = I2PSocketManagerFactory.createManager(_i2cpHost, _i2cpPort, new Properties());
    else
        mgr = I2PSocketManagerFactory.createManager();
    Destination peer = null;
    FileInputStream fis = null;
    try {
        fis = new FileInputStream(_peerDestFile);
        peer = new Destination();
        peer.readBytes(fis);
    } catch (IOException ioe) {
        _log.error("Error finding the peer destination to contact in " + _peerDestFile, ioe);
        return;
    } catch (DataFormatException dfe) {
        _log.error("Peer destination is not valid in " + _peerDestFile, dfe);
        return;
    } finally {
        if (fis != null)
            try {
                fis.close();
            } catch (IOException ioe) {
            }
    }
    if (_log.shouldLog(Log.DEBUG))
        _log.debug("Send " + _sendSize + "KB to " + peer.calculateHash().toBase64());
    while (true) {
        try {
            I2PSocket sock = mgr.connect(peer);
            byte[] buf = new byte[Math.min(32 * 1024, _sendSize * 1024)];
            Random rand = new Random();
            OutputStream out = sock.getOutputStream();
            long beforeSending = System.currentTimeMillis();
            for (int i = 0; (_sendSize < 0) || (i < _sendSize); i += buf.length / 1024) {
                rand.nextBytes(buf);
                out.write(buf);
                if (_log.shouldLog(Log.DEBUG))
                    _log.debug("Wrote " + ((1 + i * buf.length) / 1024) + "/" + _sendSize + "KB");
                if (_writeDelay > 0) {
                    try {
                        Thread.sleep(_writeDelay);
                    } catch (InterruptedException ie) {
                    }
                }
            }
            sock.close();
            long afterSending = System.currentTimeMillis();
            if (_log.shouldLog(Log.DEBUG))
                _log.debug("Sent " + _sendSize + "KB in " + (afterSending - beforeSending) + "ms");
        } catch (InterruptedIOException iie) {
            _log.error("Timeout connecting to the peer", iie);
        // return;
        } catch (NoRouteToHostException nrthe) {
            _log.error("Unable to connect to the peer", nrthe);
        // return;
        } catch (ConnectException ce) {
            _log.error("Connection already dropped", ce);
        // return;
        } catch (I2PException ie) {
            _log.error("Error connecting to the peer", ie);
            return;
        } catch (IOException ioe) {
            _log.error("IO error sending", ioe);
            return;
        }
    }
}
Also used : I2PException(net.i2p.I2PException) Destination(net.i2p.data.Destination) InterruptedIOException(java.io.InterruptedIOException) OutputStream(java.io.OutputStream) IOException(java.io.IOException) InterruptedIOException(java.io.InterruptedIOException) Properties(java.util.Properties) NoRouteToHostException(java.net.NoRouteToHostException) FileInputStream(java.io.FileInputStream) DataFormatException(net.i2p.data.DataFormatException) Random(java.util.Random) ConnectException(java.net.ConnectException)

Example 63 with DataFormatException

use of net.i2p.data.DataFormatException in project i2p.i2p by i2p.

the class TrustedUpdate method verify.

/**
 * Verifies the DSA signature of a signed update file.
 *
 * @param signedFile       The signed update file to check.
 * @param signingPublicKey An instance of
 *                         {@link net.i2p.data.SigningPublicKey} to use for
 *                         verification.
 *
 * @return <code>true</code> if the file has a valid signature, otherwise
 *         <code>false</code>.
 */
public boolean verify(File signedFile, SigningPublicKey signingPublicKey) {
    FileInputStream fileInputStream = null;
    try {
        fileInputStream = new FileInputStream(signedFile);
        Signature signature = new Signature();
        signature.readBytes(fileInputStream);
        return _context.dsa().verifySignature(signature, fileInputStream, signingPublicKey);
    } catch (IOException ioe) {
        if (_log.shouldLog(Log.WARN))
            _log.warn("Error reading " + signedFile + " to verify", ioe);
        return false;
    } catch (DataFormatException dfe) {
        if (_log.shouldLog(Log.ERROR))
            _log.error("Error reading the signature", dfe);
        return false;
    } finally {
        if (fileInputStream != null)
            try {
                fileInputStream.close();
            } catch (IOException ioe) {
            }
    }
}
Also used : DataFormatException(net.i2p.data.DataFormatException) Signature(net.i2p.data.Signature) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream)

Example 64 with DataFormatException

use of net.i2p.data.DataFormatException in project i2p.i2p by i2p.

the class TrustedUpdate method genKeysCLI.

/**
 * @return success
 */
private static final boolean genKeysCLI(String publicKeyFile, String privateKeyFile) {
    File pubFile = new File(publicKeyFile);
    File privFile = new File(privateKeyFile);
    if (pubFile.exists()) {
        System.out.println("Error: Not overwriting file " + publicKeyFile);
        return false;
    }
    if (privFile.exists()) {
        System.out.println("Error: Not overwriting file " + privateKeyFile);
        return false;
    }
    FileOutputStream fileOutputStream = null;
    I2PAppContext context = I2PAppContext.getGlobalContext();
    try {
        Object[] signingKeypair = context.keyGenerator().generateSigningKeypair();
        SigningPublicKey signingPublicKey = (SigningPublicKey) signingKeypair[0];
        SigningPrivateKey signingPrivateKey = (SigningPrivateKey) signingKeypair[1];
        fileOutputStream = new SecureFileOutputStream(pubFile);
        signingPublicKey.writeBytes(fileOutputStream);
        fileOutputStream.close();
        fileOutputStream = null;
        fileOutputStream = new SecureFileOutputStream(privFile);
        signingPrivateKey.writeBytes(fileOutputStream);
        System.out.println("\r\nPrivate key written to: " + privateKeyFile);
        System.out.println("Public key written to: " + publicKeyFile);
        System.out.println("\r\nPublic key: " + signingPublicKey.toBase64() + "\r\n");
    } catch (IOException e) {
        System.err.println("Error writing keys:");
        e.printStackTrace();
        return false;
    } catch (DataFormatException e) {
        System.err.println("Error writing keys:");
        e.printStackTrace();
        return false;
    } finally {
        if (fileOutputStream != null)
            try {
                fileOutputStream.close();
            } catch (IOException ioe) {
            }
    }
    return true;
}
Also used : SigningPrivateKey(net.i2p.data.SigningPrivateKey) SigningPublicKey(net.i2p.data.SigningPublicKey) DataFormatException(net.i2p.data.DataFormatException) I2PAppContext(net.i2p.I2PAppContext) FileOutputStream(java.io.FileOutputStream) SecureFileOutputStream(net.i2p.util.SecureFileOutputStream) SecureFileOutputStream(net.i2p.util.SecureFileOutputStream) IOException(java.io.IOException) File(java.io.File)

Example 65 with DataFormatException

use of net.i2p.data.DataFormatException in project i2p.i2p by i2p.

the class CreateLeaseSetMessage method doReadMessage.

@Override
protected void doReadMessage(InputStream in, int size) throws I2CPMessageException, IOException {
    try {
        _sessionId = new SessionId();
        _sessionId.readBytes(in);
        // Revocation is unimplemented.
        // As the SPK comes before the LeaseSet, we don't know the key type.
        // We could have some sort of callback or state setting so we get the
        // expected type from the session. But for now, we just assume it's 20 bytes.
        // Clients outside router context should throw in a dummy 20 bytes.
        _signingPrivateKey = new SigningPrivateKey();
        _signingPrivateKey.readBytes(in);
        _privateKey = new PrivateKey();
        _privateKey.readBytes(in);
        _leaseSet = new LeaseSet();
        _leaseSet.readBytes(in);
    } catch (DataFormatException dfe) {
        throw new I2CPMessageException("Error reading the CreateLeaseSetMessage", dfe);
    }
}
Also used : SigningPrivateKey(net.i2p.data.SigningPrivateKey) LeaseSet(net.i2p.data.LeaseSet) SigningPrivateKey(net.i2p.data.SigningPrivateKey) PrivateKey(net.i2p.data.PrivateKey) DataFormatException(net.i2p.data.DataFormatException)

Aggregations

DataFormatException (net.i2p.data.DataFormatException)112 IOException (java.io.IOException)53 Destination (net.i2p.data.Destination)32 Properties (java.util.Properties)19 ByteArrayOutputStream (java.io.ByteArrayOutputStream)17 FileInputStream (java.io.FileInputStream)16 Hash (net.i2p.data.Hash)14 File (java.io.File)13 SigType (net.i2p.crypto.SigType)13 I2PSessionException (net.i2p.client.I2PSessionException)12 InputStream (java.io.InputStream)11 PrivateKey (net.i2p.data.PrivateKey)11 SigningPrivateKey (net.i2p.data.SigningPrivateKey)11 SigningPublicKey (net.i2p.data.SigningPublicKey)11 RouterInfo (net.i2p.data.router.RouterInfo)11 Signature (net.i2p.data.Signature)10 FileOutputStream (java.io.FileOutputStream)8 InterruptedIOException (java.io.InterruptedIOException)8 HashMap (java.util.HashMap)8 PublicKey (net.i2p.data.PublicKey)8