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-20 08:12:18 +0400
committerPeter Dettman <peter.dettman@bouncycastle.org>2013-06-20 08:12:18 +0400
commitdfee9e568286fd2875f9ad2beb887a73682e8b2e (patch)
treeb72031f308bd819c2d37d675baa5baf414751a6e /core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java
parentf5afa59158cea442fedd96403cf1630f5df5b30f (diff)
Subclass ByteArrayOutputStream to avoid unnecessary copy
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java')
-rw-r--r--core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java b/core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java
index e8c76e65..c2dba4eb 100644
--- a/core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java
+++ b/core/src/main/java/org/bouncycastle/crypto/tls/DeferredHash.java
@@ -10,16 +10,15 @@ import org.bouncycastle.crypto.Digest;
class DeferredHash
implements TlsHandshakeHash
{
-
protected TlsContext context;
- private ByteArrayOutputStream buf = new ByteArrayOutputStream();
+ private DigestInputBuffer buf = new DigestInputBuffer();
private int prfAlgorithm = -1;
private Digest hash = null;
DeferredHash()
{
- this.buf = new ByteArrayOutputStream();
+ this.buf = new DigestInputBuffer();
this.hash = null;
}
@@ -36,13 +35,11 @@ class DeferredHash
public TlsHandshakeHash commit()
{
-
int prfAlgorithm = context.getSecurityParameters().getPrfAlgorithm();
Digest prfHash = TlsUtils.createPRFHash(prfAlgorithm);
- byte[] data = buf.toByteArray();
- prfHash.update(data, 0, data.length);
+ buf.updateDigest(prfHash);
if (prfHash instanceof TlsHandshakeHash)
{
@@ -125,4 +122,12 @@ class DeferredHash
throw new IllegalStateException("No hash algorithm has been set");
}
}
+
+ private static class DigestInputBuffer extends ByteArrayOutputStream
+ {
+ void updateDigest(Digest d)
+ {
+ d.update(buf, 0, count);
+ }
+ }
}