From a8d86a1b050dfdecd6073742cdd740d6759d4727 Mon Sep 17 00:00:00 2001 From: akwizgran <akwizgran@users.sourceforge.net> Date: Fri, 12 Jul 2013 18:59:52 +0100 Subject: [PATCH] Don't use a byte[1] where a byte will do. --- .../sf/briar/crypto/CryptoComponentImpl.java | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java index f029759c3a..b765af8315 100644 --- a/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java +++ b/briar-core/src/net/sf/briar/crypto/CryptoComponentImpl.java @@ -374,22 +374,22 @@ class CryptoComponentImpl implements CryptoComponent { MessageDigest messageDigest = getMessageDigest(); if(messageDigest.getDigestLength() < CIPHER_KEY_BYTES) throw new RuntimeException(); + // The length of every field must fit in an unsigned 8-bit integer + if(rawSecret.length > 255) throw new IllegalArgumentException(); + if(label.length > 255) throw new IllegalArgumentException(); + if(initiatorInfo.length > 255) throw new IllegalArgumentException(); + if(responderInfo.length > 255) throw new IllegalArgumentException(); // All fields are length-prefixed - byte[] length = new byte[1]; - ByteUtils.writeUint8(rawSecret.length, length, 0); - messageDigest.update(length); + messageDigest.update((byte) rawSecret.length); messageDigest.update(rawSecret); - ByteUtils.writeUint8(label.length, length, 0); - messageDigest.update(length); + messageDigest.update((byte) label.length); messageDigest.update(label); - ByteUtils.writeUint8(initiatorInfo.length, length, 0); - messageDigest.update(length); + messageDigest.update((byte) initiatorInfo.length); messageDigest.update(initiatorInfo); - ByteUtils.writeUint8(responderInfo.length, length, 0); - messageDigest.update(length); + messageDigest.update((byte) responderInfo.length); messageDigest.update(responderInfo); byte[] hash = messageDigest.digest(); - // The secret is the first SECRET_KEY_BYTES bytes of the hash + // The secret is the first CIPHER_KEY_BYTES bytes of the hash byte[] output = new byte[CIPHER_KEY_BYTES]; System.arraycopy(hash, 0, output, 0, output.length); ByteUtils.erase(hash); -- GitLab