From b66ea9ab9467c45fe2ce692f22b3bfd86e66d4f4 Mon Sep 17 00:00:00 2001 From: Rob Winch Date: Sun, 22 Oct 2017 09:54:06 -0500 Subject: [PATCH] Allow Digester iterations to update Fixes gh-4676 --- .../security/crypto/password/Digester.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/crypto/src/main/java/org/springframework/security/crypto/password/Digester.java b/crypto/src/main/java/org/springframework/security/crypto/password/Digester.java index d42ec3a821..35e9b600de 100644 --- a/crypto/src/main/java/org/springframework/security/crypto/password/Digester.java +++ b/crypto/src/main/java/org/springframework/security/crypto/password/Digester.java @@ -31,7 +31,7 @@ final class Digester { private final String algorithm; - private final int iterations; + private int iterations; /** * Create a new Digester. @@ -42,7 +42,7 @@ final class Digester { // eagerly validate the algorithm createDigest(algorithm); this.algorithm = algorithm; - this.iterations = iterations; + setIterations(iterations); } public byte[] digest(byte[] value) { @@ -53,6 +53,13 @@ final class Digester { return value; } + final void setIterations(int iterations) { + if(iterations <= 0) { + throw new IllegalArgumentException("Iterations value must be greater than zero"); + } + this.iterations = iterations; + } + private static MessageDigest createDigest(String algorithm) { try { return MessageDigest.getInstance(algorithm);