Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2013-06-22 09:49:18 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-06-22 09:49:18 +0400
commit2a064b5e4a2d6679facc82f225cce47639123e7a (patch)
treee37302fac9849f1052eb9818baffef8478287d01 /core/src/main/jdk1.1
parent83fa427fedbc6d0fcfef5e28cc0b9a2036b41806 (diff)
Backport of recent changes
Diffstat (limited to 'core/src/main/jdk1.1')
-rw-r--r--core/src/main/jdk1.1/org/bouncycastle/crypto/tls/DTLSReliableHandshake.java40
-rw-r--r--core/src/main/jdk1.1/org/bouncycastle/crypto/tls/UDPTransport.java13
2 files changed, 29 insertions, 24 deletions
diff --git a/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/DTLSReliableHandshake.java b/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/DTLSReliableHandshake.java
index adb91584..d50c325f 100644
--- a/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/DTLSReliableHandshake.java
+++ b/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/DTLSReliableHandshake.java
@@ -10,7 +10,6 @@ import org.bouncycastle.util.Integers;
class DTLSReliableHandshake
{
-
private final static int MAX_RECEIVE_AHEAD = 10;
private DTLSRecordLayer recordLayer;
@@ -46,7 +45,6 @@ class DTLSReliableHandshake
void sendMessage(short msg_type, byte[] body)
throws IOException
{
-
if (!sending)
{
checkInboundFlight();
@@ -65,7 +63,6 @@ class DTLSReliableHandshake
Message receiveMessage()
throws IOException
{
-
if (sending)
{
sending = false;
@@ -93,7 +90,6 @@ class DTLSReliableHandshake
for (; ; )
{
-
int receiveLimit = recordLayer.getReceiveLimit();
if (buf == null || buf.length < receiveLimit)
{
@@ -337,7 +333,6 @@ class DTLSReliableHandshake
private void writeMessage(Message message)
throws IOException
{
-
int sendLimit = recordLayer.getSendLimit();
int fragmentLimit = sendLimit - 12;
@@ -364,18 +359,15 @@ class DTLSReliableHandshake
private void writeHandshakeFragment(Message message, int fragment_offset, int fragment_length)
throws IOException
{
-
- ByteArrayOutputStream buf = new ByteArrayOutputStream();
- TlsUtils.writeUint8(message.getType(), buf);
- TlsUtils.writeUint24(message.getBody().length, buf);
- TlsUtils.writeUint16(message.getSeq(), buf);
- TlsUtils.writeUint24(fragment_offset, buf);
- TlsUtils.writeUint24(fragment_length, buf);
- buf.write(message.getBody(), fragment_offset, fragment_length);
-
- byte[] fragment = buf.toByteArray();
-
- recordLayer.send(fragment, 0, fragment.length);
+ RecordLayerBuffer fragment = new RecordLayerBuffer(12 + fragment_length);
+ TlsUtils.writeUint8(message.getType(), fragment);
+ TlsUtils.writeUint24(message.getBody().length, fragment);
+ TlsUtils.writeUint16(message.getSeq(), fragment);
+ TlsUtils.writeUint24(fragment_offset, fragment);
+ TlsUtils.writeUint24(fragment_length, fragment);
+ fragment.write(message.getBody(), fragment_offset, fragment_length);
+
+ fragment.sendToRecordLayer(recordLayer);
}
private static boolean checkAll(Hashtable inboundFlight)
@@ -429,4 +421,18 @@ class DTLSReliableHandshake
return body;
}
}
+
+ private static class RecordLayerBuffer extends ByteArrayOutputStream
+ {
+ RecordLayerBuffer(int size)
+ {
+ super(size);
+ }
+
+ void sendToRecordLayer(DTLSRecordLayer recordLayer) throws IOException
+ {
+ recordLayer.send(buf, 0, count);
+ buf = null;
+ }
+ }
}
diff --git a/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/UDPTransport.java b/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/UDPTransport.java
index f65468e5..f6c96b92 100644
--- a/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/UDPTransport.java
+++ b/core/src/main/jdk1.1/org/bouncycastle/crypto/tls/UDPTransport.java
@@ -7,13 +7,12 @@ import java.net.DatagramSocket;
public class UDPTransport
implements DatagramTransport
{
+ protected final static int MIN_IP_OVERHEAD = 20;
+ protected final static int MAX_IP_OVERHEAD = MIN_IP_OVERHEAD + 64;
+ protected final static int UDP_OVERHEAD = 8;
- private final static int MIN_IP_OVERHEAD = 20;
- private final static int MAX_IP_OVERHEAD = MIN_IP_OVERHEAD + 64;
- private final static int UDP_OVERHEAD = 8;
-
- private final DatagramSocket socket;
- private final int receiveLimit, sendLimit;
+ protected final DatagramSocket socket;
+ protected final int receiveLimit, sendLimit;
public UDPTransport(DatagramSocket socket, int mtu)
throws IOException
@@ -80,7 +79,7 @@ public class UDPTransport
* the DTLS implementation SHOULD generate an error, thus avoiding sending a packet
* which will be fragmented."
*/
- // TODO Exception
+ throw new TlsFatalAlert(AlertDescription.internal_error);
}
if (off == 0)