diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2022-08-24 21:28:07 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2022-08-24 21:28:07 +0700 |
commit | 02bb35f614bf0f76ea5cc3728a23aa2bf898bd05 (patch) | |
tree | 308cc2100382d8335fd7b02acebddb7a557e0b67 | |
parent | TlsCrypto only needs IAeadCipher (diff) | |
download | BouncyCastle.NET-ed25519-02bb35f614bf0f76ea5cc3728a23aa2bf898bd05.tar.xz |
Fix GcmSivBlockCipher processing
-rw-r--r-- | crypto/src/crypto/modes/GcmSivBlockCipher.cs | 4 | ||||
-rw-r--r-- | crypto/test/src/crypto/test/GcmSivTest.cs | 9 |
2 files changed, 11 insertions, 2 deletions
diff --git a/crypto/src/crypto/modes/GcmSivBlockCipher.cs b/crypto/src/crypto/modes/GcmSivBlockCipher.cs index 2ea8eef1d..63808a53a 100644 --- a/crypto/src/crypto/modes/GcmSivBlockCipher.cs +++ b/crypto/src/crypto/modes/GcmSivBlockCipher.cs @@ -875,8 +875,8 @@ namespace Org.BouncyCastle.Crypto.Modes parent.gHASH(parent.theReverse); /* Adjust counters */ - numProcessed += mySpace; - myRemaining -= mySpace; + numProcessed += BUFLEN; + myRemaining -= BUFLEN; } /* If we have remaining data */ diff --git a/crypto/test/src/crypto/test/GcmSivTest.cs b/crypto/test/src/crypto/test/GcmSivTest.cs index 16e53abdf..47f824db6 100644 --- a/crypto/test/src/crypto/test/GcmSivTest.cs +++ b/crypto/test/src/crypto/test/GcmSivTest.cs @@ -74,6 +74,15 @@ namespace Org.BouncyCastle.Crypto.Tests pCipher.DoFinal(myOutput, 0); IsTrue("Encryption mismatch", Arrays.AreEqual(myExpected, myOutput)); + if (myData.Length >= 2) + { + /* Repeat processing checking processBytes with non-empty internal buffer */ + pCipher.ProcessByte(myData[0], null, 0); + pCipher.ProcessBytes(myData, 1, myData.Length - 1, null, 0); + pCipher.DoFinal(myOutput, 0); + IsTrue("Encryption mismatch", Arrays.AreEqual(myExpected, myOutput)); + } + /* Re-initialise the cipher */ pCipher.Init(false, myParams); pCipher.ProcessBytes(myOutput, 0, myOutput.Length, null, 0); |