From 6922ef85e9f20e5b270db2f511d433e05a597576 Mon Sep 17 00:00:00 2001 From: Peter Dettman Date: Wed, 2 Nov 2022 20:08:31 +0700 Subject: A few package validation fixes --- crypto/src/crypto/engines/SerpentEngine.cs | 10 +++---- crypto/src/crypto/engines/SerpentEngineBase.cs | 12 ++++---- crypto/src/crypto/engines/SkipjackEngine.cs | 40 ++++++++++++-------------- crypto/src/crypto/engines/TnepresEngine.cs | 10 +++---- crypto/src/crypto/modes/CfbBlockCipher.cs | 8 +++--- 5 files changed, 39 insertions(+), 41 deletions(-) diff --git a/crypto/src/crypto/engines/SerpentEngine.cs b/crypto/src/crypto/engines/SerpentEngine.cs index bec459215..47f714a64 100644 --- a/crypto/src/crypto/engines/SerpentEngine.cs +++ b/crypto/src/crypto/engines/SerpentEngine.cs @@ -26,7 +26,7 @@ namespace Org.BouncyCastle.Crypto.Engines * @param key The user-key bytes (multiples of 4) to use. * @exception ArgumentException */ - protected override int[] MakeWorkingKey(byte[] key) + internal override int[] MakeWorkingKey(byte[] key) { // // pad key to 256 bits @@ -151,7 +151,7 @@ namespace Org.BouncyCastle.Crypto.Engines } #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - protected override void EncryptBlock(ReadOnlySpan input, Span output) + internal override void EncryptBlock(ReadOnlySpan input, Span output) { X0 = (int)Pack.LE_To_UInt32(input); X1 = (int)Pack.LE_To_UInt32(input[4..]); @@ -197,7 +197,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_LE((uint)(wKey[131] ^ X3), output[12..]); } - protected override void DecryptBlock(ReadOnlySpan input, Span output) + internal override void DecryptBlock(ReadOnlySpan input, Span output) { X0 = wKey[128] ^ (int)Pack.LE_To_UInt32(input); X1 = wKey[129] ^ (int)Pack.LE_To_UInt32(input[4..]); @@ -274,7 +274,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_LE((uint)(X3 ^ wKey[3]), output[12..]); } #else - protected override void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff) + internal override void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff) { X0 = (int)Pack.LE_To_UInt32(input, inOff); X1 = (int)Pack.LE_To_UInt32(input, inOff + 4); @@ -320,7 +320,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_LE((uint)(wKey[131] ^ X3), output, outOff + 12); } - protected override void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff) + internal override void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff) { X0 = wKey[128] ^ (int)Pack.LE_To_UInt32(input, inOff); X1 = wKey[129] ^ (int)Pack.LE_To_UInt32(input, inOff + 4); diff --git a/crypto/src/crypto/engines/SerpentEngineBase.cs b/crypto/src/crypto/engines/SerpentEngineBase.cs index 0ce3a0e4f..44020f06f 100644 --- a/crypto/src/crypto/engines/SerpentEngineBase.cs +++ b/crypto/src/crypto/engines/SerpentEngineBase.cs @@ -18,7 +18,7 @@ namespace Org.BouncyCastle.Crypto.Engines protected int X0, X1, X2, X3; // registers - protected SerpentEngineBase() + internal SerpentEngineBase() { } @@ -474,14 +474,14 @@ namespace Org.BouncyCastle.Crypto.Engines X0 = Integers.RotateRight(x0, 13); } - protected abstract int[] MakeWorkingKey(byte[] key); + internal abstract int[] MakeWorkingKey(byte[] key); #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - protected abstract void EncryptBlock(ReadOnlySpan input, Span output); - protected abstract void DecryptBlock(ReadOnlySpan input, Span output); + internal abstract void EncryptBlock(ReadOnlySpan input, Span output); + internal abstract void DecryptBlock(ReadOnlySpan input, Span output); #else - protected abstract void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff); - protected abstract void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff); + internal abstract void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff); + internal abstract void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff); #endif } } diff --git a/crypto/src/crypto/engines/SkipjackEngine.cs b/crypto/src/crypto/engines/SkipjackEngine.cs index 4a5355963..c6a3e458e 100644 --- a/crypto/src/crypto/engines/SkipjackEngine.cs +++ b/crypto/src/crypto/engines/SkipjackEngine.cs @@ -8,12 +8,12 @@ namespace Org.BouncyCastle.Crypto.Engines /** * a class that provides a basic SKIPJACK engine. */ - public class SkipjackEngine + public sealed class SkipjackEngine : IBlockCipher { - const int BLOCK_SIZE = 8; + private const int BLOCK_SIZE = 8; - static readonly short [] ftable = + private static readonly short[] ftable = { 0xa3, 0xd7, 0x09, 0x83, 0xf8, 0x48, 0xf6, 0xf4, 0xb3, 0x21, 0x15, 0x78, 0x99, 0xb1, 0xaf, 0xf9, 0xe7, 0x2d, 0x4d, 0x8a, 0xce, 0x4c, 0xca, 0x2e, 0x52, 0x95, 0xd9, 0x1e, 0x4e, 0x38, 0x44, 0x28, @@ -44,14 +44,12 @@ namespace Org.BouncyCastle.Crypto.Engines * @exception ArgumentException if the parameters argument is * inappropriate. */ - public virtual void Init( - bool forEncryption, - ICipherParameters parameters) + public void Init(bool forEncryption, ICipherParameters parameters) { - if (!(parameters is KeyParameter)) + if (!(parameters is KeyParameter keyParameter)) throw new ArgumentException("invalid parameter passed to SKIPJACK init - " + Platform.GetTypeName(parameters)); - byte[] keyBytes = ((KeyParameter)parameters).GetKey(); + byte[] keyBytes = keyParameter.GetKey(); this.encrypting = forEncryption; this.key0 = new int[32]; @@ -63,26 +61,26 @@ namespace Org.BouncyCastle.Crypto.Engines // expand the key to 128 bytes in 4 parts (saving us a modulo, multiply // and an addition). // - for (int i = 0; i < 32; i ++) + for (int i = 0; i < 32; i++) { - key0[i] = keyBytes[(i * 4) % 10] & 0xff; - key1[i] = keyBytes[(i * 4 + 1) % 10] & 0xff; - key2[i] = keyBytes[(i * 4 + 2) % 10] & 0xff; - key3[i] = keyBytes[(i * 4 + 3) % 10] & 0xff; + key0[i] = keyBytes[(i * 4 + 0) % 10]; + key1[i] = keyBytes[(i * 4 + 1) % 10]; + key2[i] = keyBytes[(i * 4 + 2) % 10]; + key3[i] = keyBytes[(i * 4 + 3) % 10]; } } - public virtual string AlgorithmName + public string AlgorithmName { get { return "SKIPJACK"; } } - public virtual int GetBlockSize() + public int GetBlockSize() { return BLOCK_SIZE; } - public virtual int ProcessBlock(byte[] input, int inOff, byte[] output, int outOff) + public int ProcessBlock(byte[] input, int inOff, byte[] output, int outOff) { if (key1 == null) throw new InvalidOperationException("SKIPJACK engine not initialised"); @@ -114,7 +112,7 @@ namespace Org.BouncyCastle.Crypto.Engines } #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - public virtual int ProcessBlock(ReadOnlySpan input, Span output) + public int ProcessBlock(ReadOnlySpan input, Span output) { if (key1 == null) throw new InvalidOperationException("SKIPJACK engine not initialised"); @@ -156,7 +154,7 @@ namespace Org.BouncyCastle.Crypto.Engines } #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - public virtual int EncryptBlock(ReadOnlySpan input, Span output) + private int EncryptBlock(ReadOnlySpan input, Span output) { int w1 = (input[0] << 8) + (input[1] & 0xff); int w2 = (input[2] << 8) + (input[3] & 0xff); @@ -200,7 +198,7 @@ namespace Org.BouncyCastle.Crypto.Engines return BLOCK_SIZE; } - public virtual int DecryptBlock(ReadOnlySpan input, Span output) + private int DecryptBlock(ReadOnlySpan input, Span output) { int w2 = (input[0] << 8) + (input[1] & 0xff); int w1 = (input[2] << 8) + (input[3] & 0xff); @@ -245,7 +243,7 @@ namespace Org.BouncyCastle.Crypto.Engines } #else - public virtual int EncryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) + private int EncryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) { int w1 = (input[inOff + 0] << 8) + (input[inOff + 1] & 0xff); int w2 = (input[inOff + 2] << 8) + (input[inOff + 3] & 0xff); @@ -289,7 +287,7 @@ namespace Org.BouncyCastle.Crypto.Engines return BLOCK_SIZE; } - public virtual int DecryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) + private int DecryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) { int w2 = (input[inOff + 0] << 8) + (input[inOff + 1] & 0xff); int w1 = (input[inOff + 2] << 8) + (input[inOff + 3] & 0xff); diff --git a/crypto/src/crypto/engines/TnepresEngine.cs b/crypto/src/crypto/engines/TnepresEngine.cs index 50f5a58c4..7751e20bc 100644 --- a/crypto/src/crypto/engines/TnepresEngine.cs +++ b/crypto/src/crypto/engines/TnepresEngine.cs @@ -33,7 +33,7 @@ namespace Org.BouncyCastle.Crypto.Engines * @param key The user-key bytes (multiples of 4) to use. * @exception ArgumentException */ - protected override int[] MakeWorkingKey(byte[] key) + internal override int[] MakeWorkingKey(byte[] key) { // // pad key to 256 bits @@ -158,7 +158,7 @@ namespace Org.BouncyCastle.Crypto.Engines } #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - protected override void EncryptBlock(ReadOnlySpan input, Span output) + internal override void EncryptBlock(ReadOnlySpan input, Span output) { X3 = (int)Pack.BE_To_UInt32(input); X2 = (int)Pack.BE_To_UInt32(input[4..]); @@ -204,7 +204,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_BE((uint)(wKey[128] ^ X0), output[12..]); } - protected override void DecryptBlock(ReadOnlySpan input, Span output) + internal override void DecryptBlock(ReadOnlySpan input, Span output) { X3 = wKey[131] ^ (int)Pack.BE_To_UInt32(input); X2 = wKey[130] ^ (int)Pack.BE_To_UInt32(input[4..]); @@ -281,7 +281,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_BE((uint)(X0 ^ wKey[0]), output[12..]); } #else - protected override void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff) + internal override void EncryptBlock(byte[] input, int inOff, byte[] output, int outOff) { X3 = (int)Pack.BE_To_UInt32(input, inOff); X2 = (int)Pack.BE_To_UInt32(input, inOff + 4); @@ -327,7 +327,7 @@ namespace Org.BouncyCastle.Crypto.Engines Pack.UInt32_To_BE((uint)(wKey[128] ^ X0), output, outOff + 12); } - protected override void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff) + internal override void DecryptBlock(byte[] input, int inOff, byte[] output, int outOff) { X3 = wKey[131] ^ (int)Pack.BE_To_UInt32(input, inOff); X2 = wKey[130] ^ (int)Pack.BE_To_UInt32(input, inOff + 4); diff --git a/crypto/src/crypto/modes/CfbBlockCipher.cs b/crypto/src/crypto/modes/CfbBlockCipher.cs index abcdca959..7bce9843f 100644 --- a/crypto/src/crypto/modes/CfbBlockCipher.cs +++ b/crypto/src/crypto/modes/CfbBlockCipher.cs @@ -129,7 +129,7 @@ namespace Org.BouncyCastle.Crypto.Modes #endif #if NETCOREAPP2_1_OR_GREATER || NETSTANDARD2_1_OR_GREATER - public int EncryptBlock(ReadOnlySpan input, Span output) + private int EncryptBlock(ReadOnlySpan input, Span output) { Check.DataLength(input, blockSize, "input buffer too short"); Check.OutputLength(output, blockSize, "output buffer too short"); @@ -150,7 +150,7 @@ namespace Org.BouncyCastle.Crypto.Modes return blockSize; } - public int DecryptBlock(ReadOnlySpan input, Span output) + private int DecryptBlock(ReadOnlySpan input, Span output) { Check.DataLength(input, blockSize, "input buffer too short"); Check.OutputLength(output, blockSize, "output buffer too short"); @@ -171,7 +171,7 @@ namespace Org.BouncyCastle.Crypto.Modes return blockSize; } #else - public int EncryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) + private int EncryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) { Check.DataLength(input, inOff, blockSize, "input buffer too short"); Check.OutputLength(outBytes, outOff, blockSize, "output buffer too short"); @@ -192,7 +192,7 @@ namespace Org.BouncyCastle.Crypto.Modes return blockSize; } - public int DecryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) + private int DecryptBlock(byte[] input, int inOff, byte[] outBytes, int outOff) { Check.DataLength(input, inOff, blockSize, "input buffer too short"); Check.OutputLength(outBytes, outOff, blockSize, "output buffer too short"); -- cgit 1.4.1