29.07.2013 Views

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Tells wether this connection is established or not<br />

public boolean closed,useEncryption;<br />

private Socket socket;<br />

private InetAddress remoteAddress;<br />

private SecretKey secretKey;<br />

private ObjectOutputStream outputStream;<br />

private ObjectInputStream inputStream;<br />

private long expirationTime;<br />

public session(Socket socket, boolean server, Key RSAkey, boolean useEncryption)<br />

throws Exception<br />

{<br />

try<br />

{<br />

this.useEncryption = useEncryption;<br />

this.socket = socket;<br />

remoteAddress = socket.getInetAddress();<br />

if(server)<br />

{<br />

inputStream = new ObjectInputStream(socket.getInputStream());<br />

outputStream = new ObjectOutputStream(socket.getOutputStream());<br />

}<br />

else<br />

{<br />

outputStream = new ObjectOutputStream(socket.getOutputStream());<br />

inputStream = new ObjectInputStream(socket.getInputStream());<br />

}<br />

closed = false;<br />

expirationTime = Config.expirationPeriod + System.currentTimeMillis();<br />

socket.setSoTimeout((int)Config.expirationPeriod);<br />

if(useEncryption)<br />

{<br />

Debugger.debug(getClass(), 3, "Establishing session with " +<br />

remoteAddress + " using encryption.");<br />

if(server)<br />

{<br />

CryptoPacket cp = (CryptoPacket) inputStream.readObject();<br />

secretKey = Cryptotools.decryptRSA(cp, (RSAPrivateKey) RSAkey);<br />

send(new StatusPacket(true, ""));<br />

}<br />

else<br />

{<br />

secretKey = Cryptotools.generateAESKey();<br />

outputStream.writeObject(Cryptotools.encryptRSA(secretKey,<br />

(RSAPublicKey) RSAkey));<br />

StatusPacket ack = (StatusPacket) receive();<br />

if(!ack.ok)<br />

throw new Exception("Error initializing connection");<br />

}<br />

}<br />

Debugger.debug(getClass(),3,"Session is established with: " + remoteAddress);<br />

}<br />

catch(IOException e)<br />

{<br />

//First packet was not an encrypted session-key, so we close connection and<br />

return<br />

try<br />

{<br />

closed = true;<br />

socket.close();<br />

}<br />

catch(IOException ex)<br />

{<br />

Debugger.debug(getClass(),3,"Could not close connection to<br />

"+remoteAddress);<br />

416

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!