summary refs log tree commit diff
diff options
context:
space:
mode:
authorPeter Dettman <peter.dettman@bouncycastle.org>2023-05-16 19:32:00 +0700
committerPeter Dettman <peter.dettman@bouncycastle.org>2023-05-16 19:32:00 +0700
commit8dac4e77544c556e1e28bbfdaf8a760cab9ff837 (patch)
treed952f1a06694cc335b3b5f18e80f55df075aada9
parentDTLS: Remove the need to reset AEAD ciphers (diff)
downloadBouncyCastle.NET-ed25519-8dac4e77544c556e1e28bbfdaf8a760cab9ff837.tar.xz
Perf. opts. in CipherStream
-rw-r--r--crypto/src/crypto/io/CipherStream.cs15
1 files changed, 5 insertions, 10 deletions
diff --git a/crypto/src/crypto/io/CipherStream.cs b/crypto/src/crypto/io/CipherStream.cs

index 3ae828664..a06f74190 100644 --- a/crypto/src/crypto/io/CipherStream.cs +++ b/crypto/src/crypto/io/CipherStream.cs
@@ -221,15 +221,13 @@ namespace Org.BouncyCastle.Crypto.IO int outputSize = m_writeCipher.GetUpdateOutputSize(buffer.Length); - byte[] output = null; - if (outputSize > 0) - { - output = new byte[outputSize]; - } + Span<byte> output = outputSize <= Streams.DefaultBufferSize + ? stackalloc byte[outputSize] + : new byte[outputSize]; try { - int length = m_writeCipher.ProcessBytes(buffer, Spans.FromNullable(output)); + int length = m_writeCipher.ProcessBytes(buffer, output); if (length > 0) { m_stream.Write(output[..length]); @@ -237,10 +235,7 @@ namespace Org.BouncyCastle.Crypto.IO } finally { - if (output != null) - { - Array.Clear(output, 0, output.Length); - } + output.Fill(0x00); } }