From d5cf9239aca3f6f43fea68508b9b9d7585afb8c5 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Thu, 29 Sep 2022 20:34:11 +0700 Subject: Preserve mac after DoFinal --- crypto/src/crypto/engines/Grain128AEADEngine.cs | 32 ++++++++++++------------- 1 file changed, 15 insertions(+), 17 deletions(-) (limited to 'crypto/src') diff --git a/crypto/src/crypto/engines/Grain128AEADEngine.cs b/crypto/src/crypto/engines/Grain128AEADEngine.cs index 8dca6a6d8..a571cb124 100644 --- a/crypto/src/crypto/engines/Grain128AEADEngine.cs +++ b/crypto/src/crypto/engines/Grain128AEADEngine.cs @@ -297,9 +297,17 @@ namespace Org.BouncyCastle.Crypto.Engines #endif public void Reset() + { + Reset(true); + } + + private void Reset(bool clearMac) { this.isEven = true; - this.mac = null; + if (clearMac) + { + this.mac = null; + } this.aadData.SetLength(0); this.aadFinished = false; @@ -547,14 +555,9 @@ namespace Org.BouncyCastle.Crypto.Engines Array.Copy(mac, 0, output, outOff, mac.Length); - try - { - return mac.Length; - } - finally - { - Reset(); - } + Reset(false); + + return mac.Length; #endif } @@ -585,14 +588,9 @@ namespace Org.BouncyCastle.Crypto.Engines mac.CopyTo(output); - try - { - return mac.Length; - } - finally - { - Reset(); - } + Reset(false); + + return mac.Length; } #endif -- cgit 1.4.1