diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2014-01-28 06:51:08 +0400 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2014-01-28 06:51:08 +0400 |
commit | 77dfcee4ffb410578f9cdafd37b1a0b304799a00 (patch) | |
tree | 82c749af17667bc10816d3e95082d401476a4022 /core/src/main/java/org/bouncycastle/crypto/tls | |
parent | b67358982e98475a03b00e06f69da1594fec48ff (diff) |
Refactoring
Diffstat (limited to 'core/src/main/java/org/bouncycastle/crypto/tls')
-rw-r--r-- | core/src/main/java/org/bouncycastle/crypto/tls/Chacha20Poly1305.java | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/core/src/main/java/org/bouncycastle/crypto/tls/Chacha20Poly1305.java b/core/src/main/java/org/bouncycastle/crypto/tls/Chacha20Poly1305.java index fb108569..acd451b7 100644 --- a/core/src/main/java/org/bouncycastle/crypto/tls/Chacha20Poly1305.java +++ b/core/src/main/java/org/bouncycastle/crypto/tls/Chacha20Poly1305.java @@ -2,6 +2,7 @@ package org.bouncycastle.crypto.tls; import java.io.IOException; +import org.bouncycastle.crypto.Mac; import org.bouncycastle.crypto.engines.ChaChaEngine; import org.bouncycastle.crypto.generators.Poly1305KeyGenerator; import org.bouncycastle.crypto.macs.Poly1305; @@ -119,22 +120,23 @@ public class Chacha20Poly1305 implements TlsCipher protected byte[] calculateRecordMAC(KeyParameter macKey, byte[] additionalData, byte[] buf, int off, int len) { - Poly1305 p = new Poly1305(); - p.init(macKey); + Mac mac = new Poly1305(); + mac.init(macKey); - p.update(additionalData, 0, additionalData.length); + updateRecordMAC(mac, additionalData, 0, additionalData.length); + updateRecordMAC(mac, buf, off, len); - byte[] adLen = Pack.longToLittleEndian(additionalData.length & 0xFFFFFFFFL); - p.update(adLen, 0, adLen.length); - - p.update(buf, off, len); + byte[] output = new byte[mac.getMacSize()]; + mac.doFinal(output, 0); + return output; + } - byte[] compLen = Pack.longToLittleEndian(len & 0xFFFFFFFFL); - p.update(compLen, 0, compLen.length); + protected void updateRecordMAC(Mac mac, byte[] buf, int off, int len) + { + mac.update(buf, off, len); - byte[] mac = new byte[p.getMacSize()]; - p.doFinal(mac, 0); - return mac; + byte[] longLen = Pack.longToLittleEndian(len & 0xFFFFFFFFL); + mac.update(longLen, 0, longLen.length); } protected byte[] getAdditionalData(long seqNo, short type, int len) throws IOException |