예제 #1
0
 public void TestFromRawHandle()
 {
     using (var handle = BigNumberHandle.Create())
     {
         BigNumberHandle.SetWord(handle, 3);
         var number = BigNumber.FromRawHandle(handle);
         Assert.That(BigNumberHandle.Compare(number.Handle, handle) == 0);
     }
 }
예제 #2
0
 /// <inheritdoc />
 public bool IsPotentialElement(BigNumber element)
 {
     // implementation-specific checks
     if (element.Equals(BigNumber.Zero) ||
         BigNumberHandle.Compare(element.Handle, _modulo.Handle) >= 0)
     {
         return(false);
     }
     return(true);
 }
예제 #3
0
        public void TestFromBigNumber()
        {
            var rawValue = 0x548f07;
            var number   = SecureBigNumber.FromBigNumber(new BigNumber(rawValue));

            using (var expectedHandle = BigNumberHandle.Create())
            {
                BigNumberHandle.SetWord(expectedHandle, (ulong)rawValue);
                Assert.That(BigNumberHandle.Compare(number.Handle, expectedHandle) == 0);
            }
        }
예제 #4
0
        /// <inheritdoc />
        public override bool Equals(object?obj)
        {
            var other = obj as BigNumber;

            if (other == null)
            {
                return(false);
            }

            return(BigNumberHandle.Compare(this.Handle, other.Handle) == 0);
        }
예제 #5
0
        public void TestIntegerConstructor()
        {
            var rawValue = 869235;
            var number   = new BigNumber(rawValue);

            using (var expectedHandle = BigNumberHandle.Create())
            {
                BigNumberHandle.SetWord(expectedHandle, (ulong)rawValue);
                Assert.That(BigNumberHandle.Compare(number.Handle, expectedHandle) == 0);
            }
        }
예제 #6
0
 public void TestFromRawHandle()
 {
     using (var handle = BigNumberHandle.Create())
     {
         BigNumberHandle.SetWord(handle, 3);
         var number = SecureBigNumber.FromRawHandle(handle);
         Assert.That(BigNumberHandle.Compare(number.Handle, handle) == 0);
         Assert.That(BigNumberHandle.GetFlags(
                         number.Handle, BigNumberFlags.Secure).HasFlag(BigNumberFlags.Secure)
                     );
         Assert.That(BigNumberHandle.GetFlags(
                         number.Handle, BigNumberFlags.ConstantTime).HasFlag(BigNumberFlags.ConstantTime)
                     );
     }
 }
예제 #7
0
        public void TestRandom()
        {
            var NumTests = 100;
            var range    = new BigNumber(0x869375a76);

            for (var k = 0; k < NumTests; k++)
            {
                using (var number = SecureBigNumber.Random(range))
                {
                    Assert.That(BigNumberHandle.GetFlags(
                                    number.Handle, BigNumberFlags.Secure).HasFlag(BigNumberFlags.Secure)
                                );
                    Assert.That(BigNumberHandle.GetFlags(
                                    number.Handle, BigNumberFlags.ConstantTime).HasFlag(BigNumberFlags.ConstantTime)
                                );
                    Assert.That(BigNumberHandle.Compare(number.Handle, range.Handle) < 0);
                }
            }
        }