diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-04-27 22:58:54 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2023-04-27 22:58:54 +0700 |
commit | df822be413672da4ddc204b7e8d9d6ab04a13186 (patch) | |
tree | 61a4efef735a26e4c416a37748077593fd0a47e4 | |
parent | Sparkle: Add buffering tests (diff) | |
download | BouncyCastle.NET-ed25519-df822be413672da4ddc204b7e8d9d6ab04a13186.tar.xz |
Sparkle: Fix GetUpdateOutputSize(0) behaviour
-rw-r--r-- | crypto/src/crypto/engines/SparkleEngine.cs | 2 | ||||
-rw-r--r-- | crypto/test/src/crypto/test/AsconTest.cs | 6 | ||||
-rw-r--r-- | crypto/test/src/crypto/test/SparkleTest.cs | 6 |
3 files changed, 13 insertions, 1 deletions
diff --git a/crypto/src/crypto/engines/SparkleEngine.cs b/crypto/src/crypto/engines/SparkleEngine.cs index 4c558b70f..053ca3bb5 100644 --- a/crypto/src/crypto/engines/SparkleEngine.cs +++ b/crypto/src/crypto/engines/SparkleEngine.cs @@ -623,7 +623,7 @@ namespace Org.BouncyCastle.Crypto.Engines public int GetUpdateOutputSize(int len) { // The -1 is to account for the lazy processing of a full buffer - int total = System.Math.Max(0, len - 1); + int total = System.Math.Max(0, len) - 1; switch (m_state) { diff --git a/crypto/test/src/crypto/test/AsconTest.cs b/crypto/test/src/crypto/test/AsconTest.cs index 400767df0..8edaf9182 100644 --- a/crypto/test/src/crypto/test/AsconTest.cs +++ b/crypto/test/src/crypto/test/AsconTest.cs @@ -373,6 +373,9 @@ namespace Org.BouncyCastle.Crypto.Tests random.NextBytes(output); int length = ascon.ProcessBytes(plaintext, 0, split, output, 0); + + Assert.AreEqual(0, ascon.GetUpdateOutputSize(0)); + length += ascon.ProcessBytes(plaintext, split, plaintextLength - split, output, length); length += ascon.DoFinal(output, length); @@ -389,6 +392,9 @@ namespace Org.BouncyCastle.Crypto.Tests random.NextBytes(output); int length = ascon.ProcessBytes(ciphertext, 0, split, output, 0); + + Assert.AreEqual(0, ascon.GetUpdateOutputSize(0)); + length += ascon.ProcessBytes(ciphertext, split, ciphertextLength - split, output, length); length += ascon.DoFinal(output, length); diff --git a/crypto/test/src/crypto/test/SparkleTest.cs b/crypto/test/src/crypto/test/SparkleTest.cs index ca6e7aa8b..712223a86 100644 --- a/crypto/test/src/crypto/test/SparkleTest.cs +++ b/crypto/test/src/crypto/test/SparkleTest.cs @@ -334,6 +334,9 @@ namespace Org.BouncyCastle.Crypto.Tests random.NextBytes(output); int length = sparkle.ProcessBytes(plaintext, 0, split, output, 0); + + Assert.AreEqual(0, sparkle.GetUpdateOutputSize(0)); + length += sparkle.ProcessBytes(plaintext, split, plaintextLength - split, output, length); length += sparkle.DoFinal(output, length); @@ -350,6 +353,9 @@ namespace Org.BouncyCastle.Crypto.Tests random.NextBytes(output); int length = sparkle.ProcessBytes(ciphertext, 0, split, output, 0); + + Assert.AreEqual(0, sparkle.GetUpdateOutputSize(0)); + length += sparkle.ProcessBytes(ciphertext, split, ciphertextLength - split, output, length); length += sparkle.DoFinal(output, length); |