tls-psk: allow passing more than one key
This commit is contained in:
@@ -171,15 +171,12 @@ public class KeyTransferInteractor {
|
|||||||
private void handleOpenConnection(Socket socket) throws IOException {
|
private void handleOpenConnection(Socket socket) throws IOException {
|
||||||
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||||
|
|
||||||
|
OutputStream outputStream = new BufferedOutputStream(socket.getOutputStream());
|
||||||
|
|
||||||
socket.setSoTimeout(500);
|
socket.setSoTimeout(500);
|
||||||
while (!isInterrupted() && socket.isConnected()) {
|
while (!isInterrupted() && socket.isConnected()) {
|
||||||
if (sendDataIfAvailable(socket)) {
|
sendDataIfAvailable(socket, outputStream);
|
||||||
return;
|
receiveDataIfAvailable(socket, bufferedReader);
|
||||||
}
|
|
||||||
|
|
||||||
if (receiveDataIfAvailable(socket, bufferedReader)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Log.d(Constants.TAG, "disconnected");
|
Log.d(Constants.TAG, "disconnected");
|
||||||
invokeListener(CONNECTION_LOST, null);
|
invokeListener(CONNECTION_LOST, null);
|
||||||
@@ -200,17 +197,23 @@ public class KeyTransferInteractor {
|
|||||||
|
|
||||||
socket.setSoTimeout(2000);
|
socket.setSoTimeout(2000);
|
||||||
String receivedData = receiveAfterFirstLineAndClose(bufferedReader, firstLine);
|
String receivedData = receiveAfterFirstLineAndClose(bufferedReader, firstLine);
|
||||||
|
socket.setSoTimeout(500);
|
||||||
|
|
||||||
invokeListener(CONNECTION_RECEIVE_OK, receivedData);
|
invokeListener(CONNECTION_RECEIVE_OK, receivedData);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean sendDataIfAvailable(Socket socket) throws IOException {
|
private boolean sendDataIfAvailable(Socket socket, OutputStream outputStream) throws IOException {
|
||||||
if (dataToSend != null) {
|
if (dataToSend != null) {
|
||||||
byte[] data = dataToSend;
|
byte[] data = dataToSend;
|
||||||
dataToSend = null;
|
dataToSend = null;
|
||||||
|
|
||||||
socket.setSoTimeout(2000);
|
socket.setSoTimeout(2000);
|
||||||
sendData(socket.getOutputStream(), data);
|
outputStream.write(data);
|
||||||
|
outputStream.write('\n');
|
||||||
|
outputStream.write('\n');
|
||||||
|
socket.setSoTimeout(500);
|
||||||
|
|
||||||
invokeListener(CONNECTION_SEND_OK, sendPassthrough);
|
invokeListener(CONNECTION_SEND_OK, sendPassthrough);
|
||||||
sendPassthrough = null;
|
sendPassthrough = null;
|
||||||
return true;
|
return true;
|
||||||
@@ -220,20 +223,22 @@ public class KeyTransferInteractor {
|
|||||||
|
|
||||||
private String receiveAfterFirstLineAndClose(BufferedReader bufferedReader, String line) throws IOException {
|
private String receiveAfterFirstLineAndClose(BufferedReader bufferedReader, String line) throws IOException {
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
boolean lastLineWasEmpty = "".equals(line);
|
||||||
do {
|
do {
|
||||||
builder.append(line);
|
boolean lineIsEmpty = "".equals(line);
|
||||||
|
if (lastLineWasEmpty && lineIsEmpty) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
builder.append(line).append('\n');
|
||||||
|
|
||||||
line = bufferedReader.readLine();
|
line = bufferedReader.readLine();
|
||||||
|
lastLineWasEmpty = lineIsEmpty;
|
||||||
} while (line != null);
|
} while (line != null);
|
||||||
|
|
||||||
return builder.toString();
|
return builder.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void sendData(OutputStream outputStream, byte[] data) throws IOException {
|
|
||||||
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
|
|
||||||
bufferedOutputStream.write(data);
|
|
||||||
bufferedOutputStream.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void invokeListener(final int method, final String arg) {
|
private void invokeListener(final int method, final String arg) {
|
||||||
if (handler == null) {
|
if (handler == null) {
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user