Skip to content
Snippets Groups Projects
Commit a8d86a1b authored by akwizgran's avatar akwizgran
Browse files

Don't use a byte[1] where a byte will do.

parent a731b68e
No related branches found
No related tags found
No related merge requests found
...@@ -374,22 +374,22 @@ class CryptoComponentImpl implements CryptoComponent { ...@@ -374,22 +374,22 @@ class CryptoComponentImpl implements CryptoComponent {
MessageDigest messageDigest = getMessageDigest(); MessageDigest messageDigest = getMessageDigest();
if(messageDigest.getDigestLength() < CIPHER_KEY_BYTES) if(messageDigest.getDigestLength() < CIPHER_KEY_BYTES)
throw new RuntimeException(); 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 // All fields are length-prefixed
byte[] length = new byte[1]; messageDigest.update((byte) rawSecret.length);
ByteUtils.writeUint8(rawSecret.length, length, 0);
messageDigest.update(length);
messageDigest.update(rawSecret); messageDigest.update(rawSecret);
ByteUtils.writeUint8(label.length, length, 0); messageDigest.update((byte) label.length);
messageDigest.update(length);
messageDigest.update(label); messageDigest.update(label);
ByteUtils.writeUint8(initiatorInfo.length, length, 0); messageDigest.update((byte) initiatorInfo.length);
messageDigest.update(length);
messageDigest.update(initiatorInfo); messageDigest.update(initiatorInfo);
ByteUtils.writeUint8(responderInfo.length, length, 0); messageDigest.update((byte) responderInfo.length);
messageDigest.update(length);
messageDigest.update(responderInfo); messageDigest.update(responderInfo);
byte[] hash = messageDigest.digest(); 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]; byte[] output = new byte[CIPHER_KEY_BYTES];
System.arraycopy(hash, 0, output, 0, output.length); System.arraycopy(hash, 0, output, 0, output.length);
ByteUtils.erase(hash); ByteUtils.erase(hash);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment