diff options
Diffstat (limited to 'crypto/src/math/raw')
-rw-r--r-- | crypto/src/math/raw/Nat.cs | 22 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat128.cs | 30 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat160.cs | 15 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat192.cs | 30 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat224.cs | 15 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat256.cs | 30 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat320.cs | 15 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat448.cs | 15 | ||||
-rw-r--r-- | crypto/src/math/raw/Nat576.cs | 15 |
9 files changed, 16 insertions, 171 deletions
diff --git a/crypto/src/math/raw/Nat.cs b/crypto/src/math/raw/Nat.cs index 9f2412580..d67de0a5c 100644 --- a/crypto/src/math/raw/Nat.cs +++ b/crypto/src/math/raw/Nat.cs @@ -515,32 +515,42 @@ namespace Org.BouncyCastle.Math.Raw public static uint[] FromBigInteger(int bits, BigInteger x) { + if (bits < 1) + throw new ArgumentException(); if (x.SignValue < 0 || x.BitLength > bits) throw new ArgumentException(); int len = (bits + 31) >> 5; + Debug.Assert(len > 0); uint[] z = Create(len); - int i = 0; - while (x.SignValue != 0) + + // NOTE: Use a fixed number of loop iterations + z[0] = (uint)x.IntValue; + for (int i = 1; i < len; ++i) { - z[i++] = (uint)x.IntValue; x = x.ShiftRight(32); + z[i] = (uint)x.IntValue; } return z; } public static ulong[] FromBigInteger64(int bits, BigInteger x) { + if (bits < 1) + throw new ArgumentException(); if (x.SignValue < 0 || x.BitLength > bits) throw new ArgumentException(); int len = (bits + 63) >> 6; + Debug.Assert(len > 0); ulong[] z = Create64(len); - int i = 0; - while (x.SignValue != 0) + + // NOTE: Use a fixed number of loop iterations + z[0] = (ulong)x.LongValue; + for (int i = 1; i < len; ++i) { - z[i++] = (ulong)x.LongValue; x = x.ShiftRight(64); + z[i] = (ulong)x.LongValue; } return z; } diff --git a/crypto/src/math/raw/Nat128.cs b/crypto/src/math/raw/Nat128.cs index 7617a9ee9..d336b320a 100644 --- a/crypto/src/math/raw/Nat128.cs +++ b/crypto/src/math/raw/Nat128.cs @@ -185,36 +185,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static uint[] FromBigInteger(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 128) - throw new ArgumentException(); - - uint[] z = Create(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (uint)x.IntValue; - x = x.ShiftRight(32); - } - return z; - } - - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 128) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static uint GetBit(uint[] x, int bit) { if (bit == 0) diff --git a/crypto/src/math/raw/Nat160.cs b/crypto/src/math/raw/Nat160.cs index f5514d7b4..f862700b1 100644 --- a/crypto/src/math/raw/Nat160.cs +++ b/crypto/src/math/raw/Nat160.cs @@ -172,21 +172,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static uint[] FromBigInteger(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 160) - throw new ArgumentException(); - - uint[] z = Create(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (uint)x.IntValue; - x = x.ShiftRight(32); - } - return z; - } - public static uint GetBit(uint[] x, int bit) { if (bit == 0) diff --git a/crypto/src/math/raw/Nat192.cs b/crypto/src/math/raw/Nat192.cs index 1311dee04..752290747 100644 --- a/crypto/src/math/raw/Nat192.cs +++ b/crypto/src/math/raw/Nat192.cs @@ -225,36 +225,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static uint[] FromBigInteger(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 192) - throw new ArgumentException(); - - uint[] z = Create(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (uint)x.IntValue; - x = x.ShiftRight(32); - } - return z; - } - - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 192) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static uint GetBit(uint[] x, int bit) { if (bit == 0) diff --git a/crypto/src/math/raw/Nat224.cs b/crypto/src/math/raw/Nat224.cs index 565abcb9c..1aabd3f17 100644 --- a/crypto/src/math/raw/Nat224.cs +++ b/crypto/src/math/raw/Nat224.cs @@ -261,21 +261,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static uint[] FromBigInteger(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 224) - throw new ArgumentException(); - - uint[] z = Create(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (uint)x.IntValue; - x = x.ShiftRight(32); - } - return z; - } - public static uint GetBit(uint[] x, int bit) { if (bit == 0) diff --git a/crypto/src/math/raw/Nat256.cs b/crypto/src/math/raw/Nat256.cs index 5c473c405..710060bee 100644 --- a/crypto/src/math/raw/Nat256.cs +++ b/crypto/src/math/raw/Nat256.cs @@ -323,36 +323,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static uint[] FromBigInteger(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 256) - throw new ArgumentException(); - - uint[] z = Create(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (uint)x.IntValue; - x = x.ShiftRight(32); - } - return z; - } - - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 256) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static uint GetBit(uint[] x, int bit) { if (bit == 0) diff --git a/crypto/src/math/raw/Nat320.cs b/crypto/src/math/raw/Nat320.cs index 0ad677db4..0b250aa77 100644 --- a/crypto/src/math/raw/Nat320.cs +++ b/crypto/src/math/raw/Nat320.cs @@ -47,21 +47,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 320) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static bool IsOne64(ulong[] x) { if (x[0] != 1UL) diff --git a/crypto/src/math/raw/Nat448.cs b/crypto/src/math/raw/Nat448.cs index b0774b37a..8c7f3244d 100644 --- a/crypto/src/math/raw/Nat448.cs +++ b/crypto/src/math/raw/Nat448.cs @@ -51,21 +51,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 448) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static bool IsOne64(ulong[] x) { if (x[0] != 1UL) diff --git a/crypto/src/math/raw/Nat576.cs b/crypto/src/math/raw/Nat576.cs index 14279b61a..174d52bcf 100644 --- a/crypto/src/math/raw/Nat576.cs +++ b/crypto/src/math/raw/Nat576.cs @@ -55,21 +55,6 @@ namespace Org.BouncyCastle.Math.Raw return true; } - public static ulong[] FromBigInteger64(BigInteger x) - { - if (x.SignValue < 0 || x.BitLength > 576) - throw new ArgumentException(); - - ulong[] z = Create64(); - int i = 0; - while (x.SignValue != 0) - { - z[i++] = (ulong)x.LongValue; - x = x.ShiftRight(64); - } - return z; - } - public static bool IsOne64(ulong[] x) { if (x[0] != 1UL) |