diff --git a/crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java b/crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java index f064a92e46..6ba7029630 100644 --- a/crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java +++ b/crypto/src/main/java/org/springframework/security/crypto/codec/Base64.java @@ -484,8 +484,8 @@ public final class Base64 { * @since 1.3 */ private static int decode4to3( - byte[] source, int srcOffset, - byte[] destination, int destOffset, int options ) { + final byte[] source, final int srcOffset, + final byte[] destination, final int destOffset, final int options ) { // Lots of error checking and exception throwing if( source == null ){ @@ -570,7 +570,7 @@ public final class Base64 { * @return decoded data * @throws IllegalArgumentException If bogus characters exist in source data */ - private static byte[] decode( byte[] source, int off, int len, int options ) { + private static byte[] decode(final byte[] source, final int off, final int len, final int options ) { // Lots of error checking and exception throwing if( source == null ){ diff --git a/crypto/src/test/java/org/springframework/security/crypto/codec/Base64Tests.java b/crypto/src/test/java/org/springframework/security/crypto/codec/Base64Tests.java new file mode 100644 index 0000000000..b50ade614f --- /dev/null +++ b/crypto/src/test/java/org/springframework/security/crypto/codec/Base64Tests.java @@ -0,0 +1,34 @@ +package org.springframework.security.crypto.codec; + +import static org.junit.Assert.*; + +import org.junit.*; + +/** + * @author Luke Taylor + */ +public class Base64Tests { + + @Test + public void isBase64ReturnsTrueForValidBase64() { + new Base64(); // unused + + assertTrue(Base64.isBase64(new byte[]{ (byte)'A',(byte)'B',(byte)'C',(byte)'D'})); + } + + @Test + public void isBase64ReturnsFalseForInvalidBase64() throws Exception { + // Include invalid '`' character + assertFalse(Base64.isBase64(new byte[]{ (byte)'A',(byte)'B',(byte)'C',(byte)'`'})); + } + + @Test(expected = NullPointerException.class) + public void isBase64RejectsNull() { + Base64.isBase64(null); + } + + @Test(expected = IllegalArgumentException.class) + public void isBase64RejectsInvalidLength() { + Base64.isBase64(new byte[]{ (byte)'A'}); + } +}