From 14b2114e9fe9b89000753898d03387a76b415115 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Tue, 4 Oct 2022 23:48:39 +0700 Subject: Span-based constructors in parameter classes --- crypto/src/crypto/parameters/KeyParameter.cs | 36 +++++++++++---------- crypto/src/crypto/parameters/ParametersWithID.cs | 27 +++++++++------- crypto/src/crypto/parameters/ParametersWithIV.cs | 31 +++++++++--------- .../src/crypto/parameters/ParametersWithRandom.cs | 37 ++++++++-------------- crypto/src/crypto/parameters/ParametersWithSalt.cs | 33 ++++++++++--------- 5 files changed, 81 insertions(+), 83 deletions(-) (limited to 'crypto') diff --git a/crypto/src/crypto/parameters/KeyParameter.cs b/crypto/src/crypto/parameters/KeyParameter.cs index 043adf276..bc6c28368 100644 --- a/crypto/src/crypto/parameters/KeyParameter.cs +++ b/crypto/src/crypto/parameters/KeyParameter.cs @@ -7,37 +7,39 @@ namespace Org.BouncyCastle.Crypto.Parameters public class KeyParameter : ICipherParameters { - private readonly byte[] key; + private readonly byte[] m_key; - public KeyParameter( - byte[] key) + public KeyParameter(byte[] key) { if (key == null) - throw new ArgumentNullException("key"); + throw new ArgumentNullException(nameof(key)); - this.key = (byte[]) key.Clone(); + m_key = (byte[])key.Clone(); } - public KeyParameter( - byte[] key, - int keyOff, - int keyLen) + public KeyParameter(byte[] key, int keyOff, int keyLen) { if (key == null) - throw new ArgumentNullException("key"); + throw new ArgumentNullException(nameof(key)); if (keyOff < 0 || keyOff > key.Length) - throw new ArgumentOutOfRangeException("keyOff"); + throw new ArgumentOutOfRangeException(nameof(keyOff)); if (keyLen < 0 || keyLen > (key.Length - keyOff)) - throw new ArgumentOutOfRangeException("keyLen"); + throw new ArgumentOutOfRangeException(nameof(keyLen)); - this.key = new byte[keyLen]; - Array.Copy(key, keyOff, this.key, 0, keyLen); + m_key = new byte[keyLen]; + Array.Copy(key, keyOff, m_key, 0, keyLen); } - public byte[] GetKey() +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + public KeyParameter(ReadOnlySpan key) { - return (byte[]) key.Clone(); + m_key = key.ToArray(); } - } +#endif + public byte[] GetKey() + { + return (byte[])m_key.Clone(); + } + } } diff --git a/crypto/src/crypto/parameters/ParametersWithID.cs b/crypto/src/crypto/parameters/ParametersWithID.cs index 37f68705b..2bc4ac86c 100644 --- a/crypto/src/crypto/parameters/ParametersWithID.cs +++ b/crypto/src/crypto/parameters/ParametersWithID.cs @@ -7,30 +7,33 @@ namespace Org.BouncyCastle.Crypto.Parameters public class ParametersWithID : ICipherParameters { - private readonly ICipherParameters parameters; - private readonly byte[] id; + private readonly ICipherParameters m_parameters; + private readonly byte[] m_id; - public ParametersWithID(ICipherParameters parameters, - byte[] id) + public ParametersWithID(ICipherParameters parameters, byte[] id) : this(parameters, id, 0, id.Length) { } - public ParametersWithID(ICipherParameters parameters, - byte[] id, int idOff, int idLen) + public ParametersWithID(ICipherParameters parameters, byte[] id, int idOff, int idLen) { - this.parameters = parameters; - this.id = Arrays.CopyOfRange(id, idOff, idOff + idLen); + m_parameters = parameters; + m_id = Arrays.CopyOfRange(id, idOff, idOff + idLen); } - public byte[] GetID() +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + public ParametersWithID(ICipherParameters parameters, ReadOnlySpan id) { - return id; + m_parameters = parameters; + m_id = id.ToArray(); } +#endif - public ICipherParameters Parameters + public byte[] GetID() { - get { return parameters; } + return m_id; } + + public ICipherParameters Parameters => m_parameters; } } diff --git a/crypto/src/crypto/parameters/ParametersWithIV.cs b/crypto/src/crypto/parameters/ParametersWithIV.cs index 4b2eb930f..ac55afc8d 100644 --- a/crypto/src/crypto/parameters/ParametersWithIV.cs +++ b/crypto/src/crypto/parameters/ParametersWithIV.cs @@ -7,34 +7,33 @@ namespace Org.BouncyCastle.Crypto.Parameters public class ParametersWithIV : ICipherParameters { - private readonly ICipherParameters parameters; - private readonly byte[] iv; + private readonly ICipherParameters m_parameters; + private readonly byte[] m_iv; - public ParametersWithIV(ICipherParameters parameters, - byte[] iv) + public ParametersWithIV(ICipherParameters parameters, byte[] iv) : this(parameters, iv, 0, iv.Length) { } - public ParametersWithIV(ICipherParameters parameters, - byte[] iv, int ivOff, int ivLen) + public ParametersWithIV(ICipherParameters parameters, byte[] iv, int ivOff, int ivLen) { - // NOTE: 'parameters' may be null to imply key re-use - if (iv == null) - throw new ArgumentNullException("iv"); - - this.parameters = parameters; - this.iv = Arrays.CopyOfRange(iv, ivOff, ivOff + ivLen); + m_parameters = parameters; + m_iv = Arrays.CopyOfRange(iv, ivOff, ivOff + ivLen); } - public byte[] GetIV() +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + public ParametersWithIV(ICipherParameters parameters, ReadOnlySpan iv) { - return (byte[])iv.Clone(); + m_parameters = parameters; + m_iv = iv.ToArray(); } +#endif - public ICipherParameters Parameters + public byte[] GetIV() { - get { return parameters; } + return (byte[])m_iv.Clone(); } + + public ICipherParameters Parameters => m_parameters; } } diff --git a/crypto/src/crypto/parameters/ParametersWithRandom.cs b/crypto/src/crypto/parameters/ParametersWithRandom.cs index e19c9125f..e20ddd7ce 100644 --- a/crypto/src/crypto/parameters/ParametersWithRandom.cs +++ b/crypto/src/crypto/parameters/ParametersWithRandom.cs @@ -7,36 +7,27 @@ namespace Org.BouncyCastle.Crypto.Parameters public class ParametersWithRandom : ICipherParameters { - private readonly ICipherParameters parameters; - private readonly SecureRandom random; + private readonly ICipherParameters m_parameters; + private readonly SecureRandom m_random; - public ParametersWithRandom( - ICipherParameters parameters, - SecureRandom random) + public ParametersWithRandom(ICipherParameters parameters) + : this(parameters, new SecureRandom()) + { + } + + public ParametersWithRandom(ICipherParameters parameters, SecureRandom random) { if (parameters == null) - throw new ArgumentNullException("parameters"); + throw new ArgumentNullException(nameof(parameters)); if (random == null) - throw new ArgumentNullException("random"); - - this.parameters = parameters; - this.random = random; - } + throw new ArgumentNullException(nameof(random)); - public ParametersWithRandom( - ICipherParameters parameters) - : this(parameters, new SecureRandom()) - { + m_parameters = parameters; + m_random = random; } - public SecureRandom Random - { - get { return random; } - } + public ICipherParameters Parameters => m_parameters; - public ICipherParameters Parameters - { - get { return parameters; } - } + public SecureRandom Random => m_random; } } diff --git a/crypto/src/crypto/parameters/ParametersWithSalt.cs b/crypto/src/crypto/parameters/ParametersWithSalt.cs index 7f4cd6cd1..277cd213c 100644 --- a/crypto/src/crypto/parameters/ParametersWithSalt.cs +++ b/crypto/src/crypto/parameters/ParametersWithSalt.cs @@ -1,39 +1,42 @@ using System; using Org.BouncyCastle.Crypto; +using Org.BouncyCastle.Utilities; namespace Org.BouncyCastle.Crypto.Parameters { /// Cipher parameters with a fixed salt value associated with them. - public class ParametersWithSalt : ICipherParameters + public class ParametersWithSalt + : ICipherParameters { - private byte[] salt; - private ICipherParameters parameters; + private readonly ICipherParameters m_parameters; + private readonly byte[] m_salt; - public ParametersWithSalt(ICipherParameters parameters, byte[] salt):this(parameters, salt, 0, salt.Length) + public ParametersWithSalt(ICipherParameters parameters, byte[] salt) + : this(parameters, salt, 0, salt.Length) { } public ParametersWithSalt(ICipherParameters parameters, byte[] salt, int saltOff, int saltLen) { - this.salt = new byte[saltLen]; - this.parameters = parameters; - - Array.Copy(salt, saltOff, this.salt, 0, saltLen); + m_parameters = parameters; + m_salt = Arrays.CopyOfRange(salt, saltOff, saltOff + saltLen); } - public byte[] GetSalt() +#if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER + public ParametersWithSalt(ICipherParameters parameters, ReadOnlySpan salt) { - return salt; + m_parameters = parameters; + m_salt = salt.ToArray(); } +#endif - public ICipherParameters Parameters + public byte[] GetSalt() { - get - { - return parameters; - } + return m_salt; } + + public ICipherParameters Parameters => m_parameters; } } -- cgit 1.4.1