Пример #1
0
        public void TestEnumerableNotEqual_Different_Size_Collections2()
        {
            var collection1 = new[]
            {
                new TestClass
                {
                    IntValue = 1
                },
                new TestClass
                {
                    IntValue = 2
                },
                new TestClass
                {
                    IntValue = 3
                },
            };

            var collection2 = new[]
            {
                new TestClass
                {
                    IntValue = 1
                },
                new TestClass
                {
                    IntValue = 2
                },
            };

            Assert.IsFalse(Compare.AreEqual(collection2, collection1));
        }
Пример #2
0
        private void TestKey()
        {
            MPKCParameters     encParams = (MPKCParameters)MPKCParamSets.MPKCFM11T40S256.DeepCopy();
            MPKCKeyGenerator   keyGen    = new MPKCKeyGenerator(encParams);
            IAsymmetricKeyPair keyPair   = keyGen.GenerateKeyPair();

            byte[] enc, dec, data;

            // encrypt an array
            using (MPKCEncrypt cipher = new MPKCEncrypt(encParams))
            {
                cipher.Initialize(keyPair.PublicKey);
                data = new byte[66];
                new CSPRng().GetBytes(data);
                enc = cipher.Encrypt(data);
            }

            // decrypt the cipher text
            using (MPKCEncrypt cipher = new MPKCEncrypt(encParams))
            {
                cipher.Initialize(keyPair.PrivateKey);
                dec = cipher.Decrypt(enc);
            }

            if (!Compare.AreEqual(dec, data))
            {
                throw new Exception("TestKey test: decryption failure!");
            }
            OnProgress(new TestEventArgs("Passed sub-key test"));
        }
Пример #3
0
        private void CompareBlocks()
        {
            using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
            {
                byte[] key  = new byte[32];
                byte[] data = new byte[1600]; // 100 blocks

                rng.GetBytes(key);
                rng.GetBytes(data);

                byte[] enc1 = SerpentA(true, key, data);
                byte[] enc2 = SerpentB(key, data);

                if (Compare.AreEqual(enc1, enc2) == false)
                {
                    throw new Exception("Encrypted output is not equal!");
                }

                byte[] dec1 = SerpentA(false, key, enc1);

                if (Compare.AreEqual(data, dec1) == false)
                {
                    throw new Exception("Decrypted output is not equal to input data!");
                }
            }
        }
Пример #4
0
        private void CompareBlocks(int BlockSize)
        {
            using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
            {
                byte[] key  = new byte[32];
                byte[] iv   = new byte[BlockSize];
                byte[] data = new byte[1600];

                rng.GetBytes(key);
                rng.GetBytes(iv);
                rng.GetBytes(data);

                byte[] enc1 = EncryptRDX(key, iv, data);
                byte[] enc2 = EncryptManaged(key, iv, data);

                if (Compare.AreEqual(enc1, enc2) == false)
                {
                    throw new Exception("Encrypted output is not equal!");
                }

                byte[] dec1 = DecryptRDX(key, iv, data);
                byte[] dec2 = DecryptManaged(key, iv, data);

                if (Compare.AreEqual(dec2, dec1) == false)
                {
                    throw new Exception("Decrypted output is not equal to input data!");
                }
            }
        }
Пример #5
0
        public void TestMethod3()
        {
            var instance1 = new TestClass
            {
                IntValue    = 1,
                StringValue = "123",
                Klass2      = new TestClass2
                {
                    IntValue2    = 2,
                    StringValue2 = "2"
                }
            };

            var instance2 = new TestClass
            {
                IntValue    = 1,
                StringValue = "123",
                Klass2      = new TestClass2
                {
                    IntValue2    = 2,
                    StringValue2 = "3"
                }
            };

            var x = Compare.AreEqual(instance1, instance2);

            Assert.IsFalse(x);
        }
Пример #6
0
        /// <summary>
        /// Test the hashed value of a stream against the decrypted code
        /// </summary>
        ///
        /// <param name="Input">The stream containing the data to test</param>
        /// <param name="Offset">The starting offset within the Input array</param>
        /// <param name="Length">The number of bytes to process</param>
        /// <param name="Code">The encrypted hash code</param>
        ///
        /// <returns>Returns <c>true</c> if the codes match</returns>
        ///
        /// <exception cref="MPKCException">Thrown if the signer is not initialized, or the key is invalid</exception>
        public bool Verify(byte[] Input, int Offset, int Length, byte[] Code)
        {
            if (Input.Length - Offset < Length)
            {
                throw new MPKCException("MPKCSign:Verify", "The input array is too short!", new ArgumentOutOfRangeException());
            }
            if (!_isInitialized)
            {
                throw new MPKCException("MPKCSign:Verify", "The signer has not been initialized!", new InvalidOperationException());
            }
            if (_keyPair.PrivateKey == null)
            {
                throw new MPKCException("MPKCSign:Verify", "The private key is invalid!", new InvalidDataException());
            }
            if (!(_keyPair.PrivateKey is MPKCPrivateKey))
            {
                throw new MPKCException("MPKCSign:Verify", "The private key is invalid!", new InvalidDataException());
            }

            _asyCipher.Initialize(false, _keyPair);
            byte[] chksum = _asyCipher.Decrypt(Code);
            byte[] hash   = Compute(Input, Offset, Length);

            return(Compare.AreEqual(hash, chksum));
        }
Пример #7
0
        /// <summary>
        /// Compare this polynomial to another for equality
        /// </summary>
        ///
        /// <param name="Obj">Object to compare</param>
        ///
        /// <returns>True if equal, otherwise false</returns>
        public override bool Equals(Object Obj)
        {
            if (this == Obj)
            {
                return(true);
            }
            if (Obj == null)
            {
                return(false);
            }

            SparseTernaryPolynomial other = (SparseTernaryPolynomial)Obj;

            if (_N != other._N)
            {
                return(false);
            }
            if (!Compare.AreEqual(_negOnes, other._negOnes))
            {
                return(false);
            }
            if (!Compare.AreEqual(_ones, other._ones))
            {
                return(false);
            }

            return(true);
        }
Пример #8
0
        // encrypts and decrypts text using an encoded key pair (fastFp=false, simple ternary polynomials)
        private void EncodedKeysSlow()
        {
            byte[] plainText = ByteUtils.GetBytes("secret encrypted text");

            // dense polynomials
            NTRUParameters param = (NTRUParameters)NTRUParamSets.APR2011743.DeepCopy();
            NTRUEncrypt    ntru  = new NTRUEncrypt(param);
            NTRUPrivateKey priv  = new NTRUPrivateKey(ByteUtils.ToBytes(new sbyte[] { 2, -25, 8, 0, 0, 2, -94, 95, 65, -107, 27, 98, 62, -15, -62, 21, -4, 119, -117, 7, 68, 100, 113, -36, -82, 87, -87, -82, 24, -45, -75, -74, -108, 105, 24, 123, 117, 124, 74, -27, 42, -106, -78, 114, 27, 18, 77, -41, 105, -113, 39, 49, 46, 109, -69, 61, 77, 49, 117, 14, -29, 42, 3, 120, -121, -120, -37, 95, 84, 60, -9, -31, -64, 31, 72, 115, -15, 21, -6, 27, -60, -73, -29, -33, -81, -43, 106, 65, 114, 102, -14, -115, -96, 9, 54, 23, -18, -24, -76, 84, -41, -79, 35, 88, 11, 41, 67, 44, -63, -28, 76, 84, -41, -103, 106, -22, 35, -2, -40, -48, -121, -128, 76, 63, 123, -11, 103, -35, -32, 21, -51, -99, -40, -103, -12, 64, -80, 57, -56, 1, -51, 103, 83, 50, 111, -87, -98, 7, -109, 25, -51, 23, -92 }));
            NTRUPublicKey  pub   = new NTRUPublicKey(ByteUtils.ToBytes(new sbyte[] { 2, -25, 8, 0, 91, -66, -25, -81, -66, -33, 25, -31, 48, 23, -38, 20, -30, -120, -17, 1, 21, 51, -11, 102, -50, 62, 71, 79, 32, -49, -57, 105, 21, -34, -45, -67, 113, -46, -103, 57, 28, -54, -21, 94, -112, -63, 105, -100, -95, 21, -52, 50, 11, -22, -63, -35, -42, 50, 93, -40, 23, 0, 121, 23, -93, 111, -98, -14, 92, -24, -117, -8, -109, -118, -4, -107, -60, 100, -128, -47, -92, -117, -108, 39, -113, 43, 48, 68, 95, 123, -112, 41, -27, -99, 59, 33, -57, -120, -44, 72, -98, -105, -91, -52, -89, 107, 119, 87, -36, -102, -83, 67, -8, 30, -54, 74, 93, 119, -3, 126, 69, -104, -44, -24, 124, 108, -125, 73, 98, 121, -49, -37, -24, 87, -71, 91, 8, -31, -50, 95, 112, 27, 97, -93, 3, -73, -54, -16, -92, -108, -74, 88, -5, 23, 70, 69, -49, -46, -50, 65, 69, -54, -41, 109, 8, -80, -23, -84, 120, -77, 26, 99, -104, -33, 82, 91, 22, -17, 113, -29, 66, -7, -114, -101, -111, -47, -1, -3, -57, 62, 79, -70, -58, 45, 76, 28, -117, 59, -117, 113, 84, -55, 48, 119, 58, -105, -20, 80, 102, 14, -69, -69, 5, 11, -87, 107, 15, 105, -69, -27, -24, 47, -18, -54, -45, -67, 27, -52, -20, -94, 64, -26, -58, 98, 33, -61, 71, -101, 120, 28, 113, 72, 127, 50, 123, 36, -97, 78, 32, -74, 105, 62, 92, 84, -17, 21, -75, 24, -90, -78, -4, -121, 47, -82, 119, 27, -61, 17, -66, 43, 96, -49, -6, 66, -13, -75, -95, 64, -12, -39, 111, 46, -3, -123, 82, 12, -26, -30, -29, 71, -108, -79, -112, 13, 16, -70, 7, 100, 84, 89, -100, 114, 47, 56, 71, 83, 63, -61, -39, -53, -100, 23, -31, -52, -46, 36, -13, 62, 107, 28, -28, 92, 116, -59, 28, -111, -23, -44, 21, -2, 127, -112, 54, -126, 13, -104, 47, -43, -109, -19, 107, -94, -126, 50, 92, -69, 1, 115, -121, -52, -100, 25, 126, -7, 86, 77, 72, -2, -104, -42, 98, -16, 54, -67, 117, 14, -73, 4, 58, 121, 35, 1, 99, -127, -9, -60, 32, -37, -106, 6, -108, -13, -62, 23, -20, -9, 21, 15, 4, 126, -112, 123, 34, -67, -51, 43, -30, -75, 119, -112, -58, -55, -90, 2, -5, -46, -12, 119, 87, 24, -52, 2, -29, 113, 61, -82, -101, 57, -11, -107, -11, 67, -42, -43, -13, 112, -49, 82, 60, 13, -50, 108, 64, -64, 53, -107, -9, 102, -33, 75, -100, -115, 102, -113, -48, 19, -119, -72, -65, 22, -65, -93, 34, -71, 75, 101, 54, 126, 75, 34, -21, -53, -36, 127, -21, 70, 24, 89, -88, 63, -43, -4, 68, 97, -45, -101, -125, -38, 98, -118, -34, -63, 23, 78, 15, 17, 101, -107, 119, -41, 107, 117, 17, 108, 43, -93, -6, -23, -30, 49, -61, 27, 61, -125, -68, 51, 40, -106, -61, 51, 127, 2, 123, 7, -50, -115, -32, -95, -96, 67, 4, 5, 59, -45, 61, 95, 14, 2, -76, -121, 8, 125, 16, -126, 58, 118, -32, 19, -113, -113, 120, -101, 86, 76, -90, 50, -92, 51, -92, 1, 121, -74, -101, -33, 53, -53, -83, 46, 20, -87, -112, -61, -87, 106, -126, 64, 99, -60, 70, 120, 47, -53, 36, 20, -90, 110, 61, -93, 55, -10, 85, 45, 52, 79, 87, 100, -81, -85, 34, 55, -91, 27, 116, -18, -71, -11, 87, -11, 76, 48, 97, -78, 64, -100, -59, -12, 19, -90, 121, 48, -19, 64, 113, -70, -14, -70, 92, 124, 42, 95, 7, -115, 36, 127, 73, 33, 30, 121, 88, 16, -90, 99, 120, -68, 64, -125, -78, 76, 112, 68, 8, 105, 10, -47, -124, 39, -107, -101, 46, -61, 118, -74, 102, -62, -6, -128, 17, -45, 61, 76, 63, -10, -41, 50, -113, 75, -83, -59, -51, -23, -61, 47, 7, -80, 126, -2, 79, -53, 110, -93, -38, -91, -22, 20, -84, -113, -124, -73, 124, 0, 33, -58, 63, -26, 52, 7, 74, 65, 38, -33, 21, -9, -1, 120, -16, 47, -96, 59, -64, 74, 6, 48, -67, -32, -26, 35, 68, 47, 82, 36, 52, 41, 112, -28, -22, -51, -6, -49, 105, 16, -34, 99, -41, 75, 7, 79, -22, -125, -30, -126, 35, 119, -43, -30, 32, 8, 44, -42, -98, 78, -92, -95, -10, -94, -1, -91, -122, 77, 0, 40, -23, 36, 85, 123, -57, -74, -69, -90, 89, 111, -120, 22, 5, -48, 114, 59, 31, 31, -25, -3, 24, 110, -110, 73, -40, 92, -26, -12, 52, 83, -98, -119, -6, -117, -89, 95, 83, -25, 122, -26, 114, 81, 25, 110, 79, -49, -39, 10, -78, -65, 57, -90, -46, -126, 15, -124, -104, -89, -66, -87, 24, -45, 39, -34, -40, -13, 106, 12, -25, -116, -47, 79, -81, 64, -17, -31, -70, 87, 36, 46, 102, 107, 48, 88, 34, 46, 24, 63, -100, 106, 27, 58, -71, 38, 60, -66, 45, -89, 39, -60, -116, -14, -119, 118, 0, -24, -9, 38, -71, -79, 124, -119, -64, -9, 71, -56, -82, -73, -69, 127, -1, -20, 123, 32, -43, 49, 5, 49, 105, -5, -2, 5, -105, -111, 89, -30, -41, -49, 61, 80, 69, 44, -33, -116, -45, -96, 63, 28, -17, -106, -94, 90, -40, -88, 122, 116, 116, 113, -65, 104, 119, -3, 96, -45, 18, -120, -111, 83, 43, -5, 101, 71, 48, 104, -112, -95, -46, 53, -96, -93, -126, 96, 56, 104, -111, 114, -1, -44, -120, -112, -19, 100, 41, -122, 23, -78, 33, -35, 11, 57, -18, 106, -40, 74, 61, 66, 54, -77, 96, 70, 108, -128, 91, -97, -36, -23, -86, -91, 44, 58, 117, 2, 26, 44, 95, 79, -101, -81, -92, 110, -81, -12, -88, -21, -83, 60, 93, -121, -114, -48, -34, -119, -1, 127, -121, 54, -128, -106, -39, -108, 81, 17, -3, -13, -57, 74, 41, -122, -65, -107, -118, -65, -61, 103, -69, 19 }));
            NTRUKeyPair    kp    = new NTRUKeyPair(pub, priv);

            ntru.Initialize(kp.PublicKey);
            byte[] encrypted = ntru.Encrypt(plainText);
            ntru.Initialize(kp);
            byte[] decrypted = ntru.Decrypt(encrypted);
            if (!Compare.AreEqual(plainText, decrypted))
            {
                throw new Exception("NtruEncryptTest: slow dense polynomial encoded key test failed!");
            }

            // sparse polynomials
            param = NTRUParamSets.EES1499EP1;
            ntru  = new NTRUEncrypt(param);
            priv  = new NTRUPrivateKey(ByteUtils.ToBytes(new sbyte[] { 5, -37, 8, 0, 1, 116, 7, 118, 121, 6, 77, -36, 60, 65, 108, 10, -106, 12, 9, -22, -113, 122, -31, -31, 18, 120, 81, -33, 5, 122, -76, 109, -30, -101, -45, 21, 13, -11, -49, -111, 46, 91, 4, -28, -109, 121, -119, -121, -58, -113, -9, -10, -25, -53, 40, -86, -22, -50, 42, 52, 107, 119, 17, 33, 125, -26, 33, 55, 25, -77, -65, -106, 116, -67, 91, 105, -7, 42, -107, -54, 101, 12, -12, 57, -116, 45, -107, -17, 110, 35, -64, 19, -38, -122, 115, -93, 53, 69, 66, -106, 17, 20, -71, 121, 23, -21, -45, 108, 97, 23, -98, -12, -41, -31, -53, 30, -42, 15, 85, -21, -89, 118, 42, -117, -39, 69, 0, -63, 83, 48, -80, -14, -123, -4, -116, -90, -107, -89, 119, 29, -30, 69, 22, -84, 47, 117, -123, 102, -116, 35, 93, -13, 84, -9, -122, 58, 101, 93, -106, -119, -35, -75, 76, 27, -125, -22, 68, 101, 49, 103, -13, -98, 93, -56, -110, -19, -12, 74, 104, 7, 6, -11, 47, 57, 90, 75, -30, 47, 66, -58, 14, 14, 70, 11, -119, -36, -118, -55, -53, 101, -73, -77, 33, -29, 96, -86, 38, 47, 103, 19, -37, -17, -50, -82, -87, -119, 37, -54, 77, -69, -16, -48, -52, 110, -26, 111, 35, 26, -53, -10, 9, -108, -34, 102, 7, -18, -72, -26, 24, -50, -43, 92, 56, -94, 23, -36, 60, 28, -121, 27, 127, -93, -79, -45, -60, 105, -6, -88, 72, -41, 47, -51, 3, 91, 116, 75, 122, -94, -113, 28, -96, -62, -29, -74, -85, -93, 51, 58, 72, 44, 9, 18, -48, -24, 73, 122, 60, -23, 83, -110, -7, -111, -69, 106, 51, 118, -83, -18, 109, -32, 40, 22 }));
            pub   = new NTRUPublicKey(ByteUtils.ToBytes(new sbyte[] { 5, -37, 8, 0, -62, 56, 59, -46, 30, -19, 22, -115, -20, 117, -14, 3, 2, -57, 85, -24, 27, 57, 49, -93, -52, 87, 49, 96, 15, 95, -95, -86, -61, 50, -18, 3, 109, -55, -110, -57, 82, 124, -5, -57, 68, -18, 126, 114, 6, -22, 8, 121, 125, 29, -16, 112, -81, 27, -7, 109, -44, -123, -15, -14, 74, -126, 95, -94, -91, 119, 80, -48, 41, 49, 6, 104, 93, -97, -108, -82, 93, 70, -127, -113, -22, -103, 35, -115, 20, -115, 63, 57, -84, -18, -107, 81, 44, -16, 83, 71, -27, -2, -125, 87, 26, 100, -116, 110, 94, -46, -56, -82, 119, -110, -127, -99, -8, -118, 90, 64, -29, 102, 99, 92, 86, -117, 26, -89, 32, 17, 55, -65, -10, -5, -74, 19, 13, 113, -15, -103, 17, 10, -127, -95, -79, 19, 11, -24, 59, 28, -70, -55, -69, -105, -20, -117, 66, 4, 77, 116, -124, -62, 19, 109, 49, -120, 10, -15, 108, 84, 126, 122, -46, -37, 114, -78, -72, 34, -12, 25, -104, -3, 114, -94, 16, 31, 31, -124, -109, -64, 57, -47, -113, -26, 97, -58, 112, -40, 49, 80, -54, -115, -98, -60, -123, 91, 14, 75, -86, 77, -93, 68, 112, 82, 79, 28, -25, 49, -27, -112, 103, 60, -128, 95, -63, 2, -51, 2, -107, 80, 113, 18, 123, 24, 70, 77, -56, -48, 33, 89, 88, 29, 112, -102, -15, 52, -96, 17, -9, 6, -11, -119, 29, -107, -84, -19, 84, 124, 19, 90, -60, -41, 123, -81, 96, -119, 17, -61, 62, 55, 95, -73, -13, -60, 56, 77, 24, -39, -107, -78, 47, -91, 88, 90, 34, 112, -80, 83, -58, 127, 76, -97, -40, 78, -20, -1, -62, 19, 6, -43, -46, -36, -53, -22, -28, -119, 8, 19, 79, -9, -54, -126, -3, -20, -110, -82, 51, 3, 1, -123, -41, -40, -11, 91, -52, 48, 104, -11, -2, 49, 45, 52, -33, 109, -44, -30, -44, -83, -108, -10, 77, 106, 82, 3, 14, -48, -18, -79, -64, -34, -63, -18, 122, 33, 25, 44, 82, -112, 111, 68, 97, -58, -38, 25, 62, 78, 97, -36, 57, -19, 122, -18, -74, 67, -127, -24, 32, -45, 67, -106, 90, 0, 1, 91, 30, -80, 95, 9, 78, -4, -14, 16, 111, -56, -102, -90, 52, -1, 116, 19, -127, -23, -87, 103, -94, -111, 118, 53, -69, 77, 17, -3, 31, -53, -21, -78, 124, -88, 52, 117, 34, -52, -77, -107, -38, -102, 23, 73, -76, -88, 95, 64, -85, 12, 36, -86, 86, -17, 77, 121, 90, 24, -49, -107, 33, -116, 65, 13, 91, 118, -107, -21, 65, -59, 18, 125, 61, -65, -68, -19, 23, 88, 60, -6, 78, -8, 69, -62, -118, -93, 97, -64, -67, 28, 28, -87, -97, 72, -125, -119, 4, -43, 7, 22, -15, 52, 52, -82, -5, -51, 99, 20, -59, -2, -54, -67, 40, -128, -20, -37, 50, 123, 32, 8, -39, -105, 93, 73, 77, 84, 43, 89, 88, -6, 7, -108, 81, 27, 1, 50, 16, -101, 67, 95, 119, 105, 70, 99, -127, 22, 127, -33, -19, -113, -55, -100, 122, -86, 98, 53, 27, -95, 4, -121, -96, 87, 67, -98, -37, -10, 92, 29, -3, -115, -23, 37, 8, -30, 99, -117, 62, 101, 83, 49, 60, -83, -47, -33, 41, -118, 76, -7, 111, -15, 123, -59, 53, 2, -20, -57, 24, 57, 62, 84, -26, -11, 93, -118, 54, -13, 56, 77, -66, 18, -62, -76, 80, 98, 26, 120, -93, 55, 103, -1, 78, -92, 120, -23, -60, -75, 11, 53, -62, -94, -80, 120, 113, 33, -24, -64, -5, 23, 120, -14, 61, 26, -1, 56, 79, 34, 116, -16, -95, -71, 40, -89, -50, 71, -117, -109, 2, -2, -34, 94, -78, -88, -27, 70, 94, -86, 123, -49, 107, -65, -67, 84, 90, 123, -61, -2, 43, -119, -93, 75, -4, -81, 98, -36, 125, -23, -37, 81, 104, 90, -63, -52, 88, -96, -44, 25, 3, -37, -123, -48, 113, -76, -94, -109, -115, 37, -39, 104, -124, 82, -73, 100, 48, -54, -40, -65, 81, 16, -85, -41, 60, 42, 117, 65, 77, 14, -8, -56, 52, -118, -109, 125, 13, 64, -20, 125, -37, -74, -28, 118, 112, -126, 18, -101, 11, 75, 30, -4, -121, -13, -65, -13, -122, -53, -52, 20, -2, 67, 18, -106, 67, 83, -111, 15, 106, 10, 113, 53, -112, -3, 118, 8, -56, 40, 53, 23, -123, 96, 87, -118, -97, -116, -47, 85, -73, -85, -82, 124, -55, 55, 61, 46, 12, -6, 34, 22, -22, 3, 115, -49, 102, 23, 46, 39, 0, 118, 3, -45, 48, -73, -38, 29, -36, 11, -127, -86, 30, 29, -2, -108, -114, 64, 110, 86, -46, -91, -64, 95, -40, -65, 49, -79, -126, -37, -103, -71, 53, -85, 45, -51, 33, -28, -126, 36, -77, -120, 55, -54, 72, -21, 58, -87, -73, 18, -12, 20, -100, 30, 118, -83, -22, -90, 71, -64, 108, 101, -46, 36, 105, -46, -91, 60, -113, 72, 100, 82, -90, 106, -127, 65, -94, 17, 77, -10, -112, 46, 118, 72, -84, 57, -86, -114, 88, 91, 79, 30, 107, -35, 61, 81, 71, 40, -29, -6, -107, 61, -62, -6, 65, -68, 118, 61, 110, -115, -119, -73, 104, 59, -66, -89, -127, -8, -67, 122, -38, 79, -13, 93, 1, -32, -47, -3, 62, 88, -112, 105, 73, 96, 73, -104, -126, -69, 21, -22, 16, -85, 116, 9, 82, 54, -15, -55, -67, 68, -23, 16, -89, 48, -17, -107, 60, -43, -34, 66, -114, 63, -3, -26, 68, 68, -86, 120, -111, 99, 61, 101, 27, 93, 31, 90, -33, -94, 29, -89, 41, -80, 26, -23, -80, 27, 107, 69, -45, -123, 62, 63, 80, 1, -28, 52, -8, 35, -86, -127, 76, 102, 83, -104, -79, -98, 77, -28, 118, 18, -15, -98, -39, 2, -58, 95, 64, 105, -82, -7, 96, 110, 104, 127, 126, -124, 26, 36, 33, -42, 59, 82, 127, 42, -24, -61, -50, -18, -87, 22, -32, -125, -70, 103, -121, -112, -94, 58, -95, -97, 53, 95, -61, -83, 42, 37, 80, 51, -118, 125, 15, 67, 41, -97, 41, -121, 29, -88, 100, -113, 39, 101, 47, 91, -36, 48, -56, -13, 12, 37, 0, 81, 3, -40, 8, 36, -65, -11, -32, 108, 62, 79, 70, 91, -83, 2, -47, 0, 91, 10, 87, -19, -40, 96, 106, 41, 120, -53, 40, -114, 90, 64, 59, -115, 39, 2, 53, -49, -72, -114, 94, 5, 49, 74, 13, 50, -14, 76, -123, -11, -81, 100, 120, 16, -41, -72, -118, 28, 41, 98, 122, 27, 18, -108, -43, 51, -71, 93, -13, -42, -64, -118, -106, 45, 108, 72, -128, 58, -123, -29, -114, 15, 52, -72, 108, -62, 75, -15, 105, -89, 25, 37, 13, -21, -109, 68, 5, -89, 69, 10, -46, 18, -57, 77, -103, -74, 57, -43, -110, 1, -80, 82, 5, -9, -49, -53, 83, 4, 44, 64, -117, -67, -11, 1, -65, -81, 34, -23, -71, 14, 105, -93, 2, -120, 90, 92, -6, -128, -16, -51, 27, 123, 71, -117, -72, -81, 26, 28, 5, -117, -30, 22, -72, -76, -32, -14, 82, 90, 69, 74, -94, -72, -30, -17, 12, -37, -3, -80, 72, 2, -40, 41, 0, -53, 48, -37, -117, -128, -120, -80, 28, 49, -52, 114, -119, 92, -42, -105, 125, -95, 78, 76, 123, -56, 32, -66, 69, -58, 57, -77, -100, -70, 125, 53, -115, 8, 116, 88, -34, 86, -75, 55, 64, 79, -113, -124, -91, 50, -82, -119, 50, 11, 87, -14, -25, 15, -1, -49, -127, -5, -50, 72, -29, -78, 101, -119, -21, -15, 97, -63, 57, -123, -94, -24, -8, 104, 86, 79, 49, 102, -8, -76, 8, 69, 99, -64, -108, 70, 36, 71, -127, 56, 39, 78, 109, 42, -42, -2, 126, 17, -88, -65, -23, -64, 78, 87, 7, 6, -82, -98, 41, -46, -10, -25, 90, -73, 24, 127, -27, 118, -9, 81, -3, 115, -4, 47, 86, -30, -9, -50, 32, 86, 114, 58, -5, 78, 74, 36, 29, -126, 116, 117, -114, -92, -121, -36, -86, -18, 55, 49, 112, 43, 111, -99, -116, 70, 60, -63, 87, -4, -35, 15, 28, -27, -65, 66, 115, -33, 112, 94, 74, -22, 104, -56, -27, 39, -8, -53, -120, 8, -109, 73, -68, 67, 40, -59, 59, 121, -76, -41, -80, -54, -88, -120, -121, -118, -58, 74, -120, 82, -88, -113, 30, -8, 54, -126, -106, 37, -43, -74, -56, 40, -76, 93, 91, 28, -59, -30, -2, 107, 6, -89, -69, -121, -125, -109, 5, -94, -7, -2, -5, -67, 54, -90, 39, 5, -80, 93, -99, 82, -100, -128, -8, -39, -109, 66, -11, 99, -41, 18, -32, -122, 69, 6, -95, -21, 9, 19, -117, -34, -42, 11, 20, 84, 89, 91, -61, -13, -7, 55, 90, -15, 62, 59, -4, 125, -127, -24, -124, -99, -63, -23, 52, 111, -52, -60, -113, -65, -26, 127, 57, 21, 102, 101, -77, 66, -116, 117, 80, 7, 1, -96, -29, -99, 75, -73, 44, -99, 61, -73, 15, -18, 89, 95, 104, -12, 94, 33, 13, -49, 118, -84, -122, -2, -121, 62, -32, -80, 11, -10, 102, -67, 20, -3, 25, -6, 51, -17, -123, -76, 103, 3, 127, -107, -5, 122, 65, 22, 113, 120, 6, -19, -110, 86, 55, -88, -124, 0, -54, 17, 112, 15, 105, -28, 111, -93, 85, -59, -88, 28, 123, 55, 117, 10, 76, 54, -98, 116, 40, -65, -53, -80, 46, 66, -8, -114, 102, 66, 67, -117, 46, 21, -116, -38, 58, -105, 101, 37, -16, 5, 55, -33, -87, 72, 122, -114, -91, 41, -114, 77, 50, 109, 35, -61, 9, -55, -118, 126, -35, -108, 5, 62, 125, -109, -115, -55, 32, -71, 69, 110, 87, -82, 119, 26, 103, -77, -38, -13, 113, 74, 69, 116, 94, -21, 5, 35, 73, -80, -87, 80, 13, 108, 1, 82, -56, -35, -21, -78, -98, 121, 112, -117, 72, 47, 76, -97, -84, -110, -35, -19, -120, -13, 127, 5, 56, 72, -22, 110, -8, -71, 0, -57, -125, -101, 60, -64, -32, 1, 126, -109, 9, 84, 117, 62, -68, -106, 28, -118, -52, -81, 112, 11, 55, 68, -86, -65, 123, 83, 55, -72, 110, 63, -90, 31, 11, 90, -60, 20, 14, -36, 5, -92, 11, -100, 64, -57, -72, -105, 7, 103, 125, 99, -88, 32, -5, 41, -115, -11, 89, 81, 77, -33, -7, -123, -17, 109, 59, 40, -12, -61, 98, -91, 19, -36, 108, 118, -124, -82, -40, -124, -66, 19, 127, -73, -39, 99, 43, -16, -44, -83, -77, -34, 68, -118, -71, -116, 114, 120, -34, -105, -32, -46, 102, 73, -79, 7, 42, 35, -66, 125, 34, 113, 66, 78, 71, 6, 44, -17, 4, -80, 38, -59, 12, -8, -78, 103, 8, 80, 18, -74, 20, 3, 56, -20, 106, -1, -12, 83, 4, 68, -119, 84, -87, 97, -53, 102, 119, 34, -85, 22, -26, 55, -107, 96, -70, 77, -68, -96, -15, -22, -77, -55, 5, 103, -42, -87, 122, -80, -103, -37, -120, -56, -16, -51, -7, -19, -104, 120, 9, 54, -85, 48, -76, -38, 58, -68, 116, -20, -44, 22, -32, 75, -46, -41, 13, -100, 16, -59, -93, -115, 54, 22, -110, -46, -119, 44, -98, -48, 4, -58, -115, -57, 103, -56, 36, -63, 104, -114, -125, 92, 65, 117, -21, -59, -31, 56, -98, -126, 56, 47, -116, 100, 122, -98, 4, 26, -29, -127, -113, 73, 48, 106, 125, -69, -127, 62, 56, -79, 76, 84, -46, -31, -17, 94, -98, 62, 63, 118, -24, 63, 123, -93, -46, 103, 117, -120, -35, 19, 25, 15, -110, -125, 12, -75, -50, 103, 49, 47, 98, 92, 10, -88, 54, -53, 19, 25, -90, 93, -49, 64, 126, -106, -30, -52, 58, 37, 68, -18, -60, 15, -27, 93, -124, 88, 110, -80, -106, 88, 55, 108, -58, -43, -70, 76, 85, 98, 27, -66, 18, 75, 69, 114, 90, -26, -10, -12, -126, 84, -109, 108, 15, -115, 90, 11, -127, 63, -7, 47, 92, -72, 38, -58, -35, 18, 25, 12, -103, 0 }));
            kp    = new NTRUKeyPair(pub, priv);
            ntru.Initialize(kp.PublicKey);
            encrypted = ntru.Encrypt(plainText);
            ntru.Initialize(kp);
            decrypted = ntru.Decrypt(encrypted);
            if (!Compare.AreEqual(plainText, decrypted))
            {
                throw new Exception("NtruEncryptTest: slow sparse polynomial encoded key test failed!");
            }
        }
Пример #9
0
        private void TestAddShifted()
        {
            int[] a = new int[] { 1522485231, 1933026569 };
            int[] b = new int[] { 233616584 };
            SchonhageStrassen.AddShifted(a, b, 1);
            if (!Compare.AreEqual(a, new int[] { 1522485231, -2128324143 }))
            {
                throw new Exception("SchönhageStrassen:AddShifted test has failed!");
            }

            a = new int[] { 796591014, -1050856894, 1260609160 };
            b = new int[] { 2093350350, -1822145887 };
            SchonhageStrassen.AddShifted(a, b, 1);
            if (!Compare.AreEqual(a, new int[] { 796591014, 1042493456, -561536726 }))
            {
                throw new Exception("SchönhageStrassen:AddShifted test has failed!");
            }

            a = new int[] { -1135845471, 1374513806, 391471507 };
            b = new int[] { 980775637, 1136222341 };
            SchonhageStrassen.AddShifted(a, b, 1);
            if (!Compare.AreEqual(a, new int[] { -1135845471, -1939677853, 1527693848 }))
            {
                throw new Exception("SchönhageStrassen:AddShifted test has failed!");
            }
        }
Пример #10
0
 private void TestMultModFn()
 {
     if (!Compare.AreEqual(new int[] { 1713569892, -280255914 }, SchonhageStrassen.MultModFn(new int[] { -142491638, 0 }, new int[] { -142491638, 0 })))
     {
         throw new Exception("SchönhageStrassen:MultModFn test has failed!");
     }
 }
Пример #11
0
        public void AreEqual_ValuesAreNullTest()
        {
            bool?testValue = null;
            var  result    = Compare.AreEqual(testValue, testValue);

            Assert.IsTrue(result);
        }
Пример #12
0
        private bool EncAreEqual(byte[] Key, byte[] Data)
        {
            byte[] tmp1 = EncryptAesFast(Key, Data);
            byte[] tmp2 = EncryptRX(Key, Data);

            return(Compare.AreEqual(tmp1, tmp2));
        }
Пример #13
0
        /// <summary>
        /// Decides whether the given object <c>other</c> is the same as this field
        /// </summary>
        ///
        /// <param name="Obj">The object for comparison</param>
        ///
        /// <returns>Returns <c>(this == other)</c></returns>
        public override bool Equals(Object Obj)
        {
            if (Obj == null || !(Obj is RNBWPublicKey))
            {
                return(false);
            }

            RNBWPublicKey other = (RNBWPublicKey)Obj;

            if (!_docLength.Equals(other.DocLength))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_coeffQuadratic), ArrayUtils.ToBytes(other.CoeffQuadratic)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_coeffSingular), ArrayUtils.ToBytes(other.CoeffSingular)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_coeffScalar), ArrayUtils.ToBytes(other.CoeffScalar)))
            {
                return(false);
            }

            return(true);
        }
Пример #14
0
        public void TestEnumerableEqual()
        {
            var collection1 = new[]
            {
                new TestClass
                {
                    IntValue = 1
                },
                new TestClass
                {
                    IntValue = 2
                },
            };

            var collection2 = new[]
            {
                new TestClass
                {
                    IntValue = 1
                },
                new TestClass
                {
                    IntValue = 2
                },
            };

            Assert.IsTrue(Compare.AreEqual(collection1, collection2));
        }
Пример #15
0
        /// <summary>
        /// Decides whether the given object <c>other</c> is the same as this field
        /// </summary>
        ///
        /// <param name="Obj">The object for comparison</param>
        ///
        /// <returns>Returns <c>(this == other)</c></returns>
        public override bool Equals(Object Obj)
        {
            if (Obj == null || !(Obj is RNBWPrivateKey))
            {
                return(false);
            }

            RNBWPrivateKey other = (RNBWPrivateKey)Obj;

            if (!Compare.AreEqual(ArrayUtils.ToBytes(_a1Inv), ArrayUtils.ToBytes(other.InvA1)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_B1), ArrayUtils.ToBytes(other.B1)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_a2Inv), ArrayUtils.ToBytes(other.InvA2)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_B2), ArrayUtils.ToBytes(other.B2)))
            {
                return(false);
            }
            if (!Compare.AreEqual(ArrayUtils.ToBytes(_VI), ArrayUtils.ToBytes(other.VI)))
            {
                return(false);
            }

            return(true);
        }
Пример #16
0
        private void CompareMode(byte[] key, byte[] iv, byte[] data, PaddingModes Padding)
        {
            PaddingMode mngPad = PaddingMode.Zeros;

            if (Padding == PaddingModes.PKCS7)
            {
                mngPad = PaddingMode.PKCS7;
            }
            else if (Padding == PaddingModes.X923)
            {
                mngPad = PaddingMode.ANSIX923;
            }

            byte[] enc1 = EncryptRDX(key, iv, data, Padding);
            byte[] enc2 = EncryptManaged(key, iv, data, mngPad);

            // bizarre .Net bug: (sometimes) it will add a *full block* of padding for no reason!
            // even if input ends on a block boundary, will add a full block in PKCS7!!
            if (enc1.Length == enc2.Length)
            {
                if (Compare.AreEqual(enc1, enc2) == false)
                {
                    throw new Exception("Encrypted output is not equal!");
                }

                byte[] dec1 = DecryptRDX(key, iv, data, Padding);
                byte[] dec2 = DecryptManaged(key, iv, data, mngPad);

                if (Compare.AreEqual(dec1, dec2) == false)
                {
                    throw new Exception("Decrypted output is not equal to input data!");
                }
            }
        }
Пример #17
0
        private void CompareBlocks()
        {
            using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
            {
                byte[] key  = new byte[32];
                byte[] iv   = new byte[8];
                byte[] data = new byte[640];

                rng.GetBytes(key);
                rng.GetBytes(iv);
                rng.GetBytes(data);

                byte[] enc1 = SalsaA(key, iv, data);
                byte[] enc2 = SalsaB(key, iv, data);

                if (Compare.AreEqual(enc1, enc2) == false)
                {
                    throw new Exception("Encrypted output is not equal!");
                }

                byte[] dec1 = SalsaA(key, iv, enc1);

                if (Compare.AreEqual(data, dec1) == false)
                {
                    throw new Exception("Decrypted output is not equal to input data!");
                }
            }
        }
Пример #18
0
        public void AreEqualTest()
        {
            IComparer <int> comparer = Comparer <int> .Default;

            Assert.IsTrue(Compare.AreEqual(3, 3, comparer));
            Assert.IsFalse(Compare.AreEqual(2, 3, comparer));
        }
Пример #19
0
        private void TestKey()
        {
            RLWEParameters     encParams = RLWEParamSets.RLWEN256Q7681;
            RLWEKeyGenerator   keyGen    = new RLWEKeyGenerator(encParams);
            IAsymmetricKeyPair keyPair   = keyGen.GenerateKeyPair();

            byte[] enc, dec, data;

            // encrypt an array
            using (RLWEEncrypt cipher = new RLWEEncrypt(encParams))
            {
                cipher.Initialize(keyPair.PublicKey);
                data = new byte[cipher.MaxPlainText];
                new CSPRng().GetBytes(data);
                enc = cipher.Encrypt(data);
            }

            // decrypt the cipher text
            using (RLWEEncrypt cipher = new RLWEEncrypt(encParams))
            {
                cipher.Initialize(keyPair.PrivateKey);
                dec = cipher.Decrypt(enc);
            }

            if (!Compare.AreEqual(dec, data))
            {
                throw new Exception("TestKey test: decryption failure!");
            }
            OnProgress(new TestEventArgs("Passed sub-key test"));
        }
Пример #20
0
        private void TestEncrypt(RLWEParameters Param)
        {
            RLWEKeyGenerator   mkgen = new RLWEKeyGenerator(Param);
            IAsymmetricKeyPair akp   = mkgen.GenerateKeyPair();

            byte[] enc;

            using (RLWEEncrypt mpe = new RLWEEncrypt(Param))
            {
                mpe.Initialize(akp.PublicKey);

                int    sz   = mpe.MaxPlainText;
                byte[] data = new byte[sz];
                new CSPRng().GetBytes(data);

                enc = mpe.Encrypt(data);

                mpe.Initialize(akp.PrivateKey);
                byte[] dec = mpe.Decrypt(enc);

                if (!Compare.AreEqual(dec, data))
                {
                    throw new Exception("Encryption test: decryption failure!");
                }
                OnProgress(new TestEventArgs(string.Format("Passed N:{0} Q:{1} encryption test", Param.N, Param.Q)));
            }
        }
Пример #21
0
        private void MultTest()
        {
            IntegerPolynomial i1 = new IntegerPolynomial(new int[] { 1368, 2047, 672, 871, 1662, 1352, 1099, 1608 });
            IntegerPolynomial i2 = new IntegerPolynomial(new int[] { 1729, 1924, 806, 179, 1530, 1381, 1695, 60 });
            LongPolynomial2   a  = new LongPolynomial2(i1);
            LongPolynomial2   b  = new LongPolynomial2(i2);
            IntegerPolynomial c1 = i1.Multiply(i2, 2048);
            IntegerPolynomial c2 = a.Multiply(b).ToIntegerPolynomial();

            if (!Compare.AreEqual(c1.Coeffs, c2.Coeffs))
            {
                throw new Exception("LongPolynomial2 multiply test failed!");
            }

            // test 10 random polynomials
            Random rng = new Random();

            for (int i = 0; i < 10; i++)
            {
                int N = 2 + rng.Next(2000);
                i1 = (IntegerPolynomial)PolynomialGeneratorForTesting.GenerateRandom(N, 2048);
                i2 = (IntegerPolynomial)PolynomialGeneratorForTesting.GenerateRandom(N, 2048);
                a  = new LongPolynomial2(i1);
                b  = new LongPolynomial2(i2);
                c1 = i1.Multiply(i2);
                c1.ModPositive(2048);
                c2 = a.Multiply(b).ToIntegerPolynomial();

                if (!Compare.AreEqual(c1.Coeffs, c2.Coeffs))
                {
                    throw new Exception("LongPolynomial2 multiply test failed!");
                }
            }
        }
Пример #22
0
        /// <summary>
        /// Probability search for an item in an <see cref="IList{T}"/>.
        /// </summary>
        /// <remarks>
        /// <para>
        /// This method is an O(n) operation.
        /// </para>
        /// <para>
        /// If the item is found in the <see cref="IList{T}"/> then it's priority is increased by swapping it with it's predecessor in the <see cref="IList{T}"/>.
        /// </para>
        /// </remarks>
        /// <typeparam name="T">Type of the collection to search.</typeparam>
        /// <param name="list"><see cref="IList{T}"/> to search.</param>
        /// <param name="item">The item to search the <see cref="IList{T}"/> for.</param>
        /// <returns>True if the item was found; otherwise false.</returns>
        /// <exception cref="ArgumentNullException"><strong>list</strong> is <strong>null</strong>.</exception>
        public static bool ProbabilitySearch <T>(this IList <T> list, T item)
        {
            Guard.ArgumentNull(list, "list");

            int          i        = 0;
            Comparer <T> comparer = Comparer <T> .Default;

            while (i < list.Count && !Compare.AreEqual(list[i], item, comparer))
            {
                i++;
            }

            if (i >= list.Count || !Compare.AreEqual(list[i], item, comparer))
            {
                return(false);
            }

            // we can increase the items' priority as the item is not the first element in the array
            if (i > 0)
            {
                T temp = list[i - 1];
                list[i - 1] = list[i];
                list[i]     = temp;
            }

            return(true);
        }
Пример #23
0
        public void AreEqual_SameObjectTest()
        {
            var testValue = true;

            var result = Compare.AreEqual(testValue, testValue);

            Assert.IsTrue(result);
        }
Пример #24
0
        public void AreEqual_ValuesAreDefaultTest()
        {
            var testValue = default(bool?);

            var result = Compare.AreEqual(testValue, testValue);

            Assert.IsTrue(result);
        }
Пример #25
0
        public void AreUnequal_ExpectedValueIsNullTest()
        {
            var actual = new StringFieldType("unequal");

            var result = Compare.AreEqual(actual, null);

            Assert.IsFalse(result);
        }
Пример #26
0
        public void AreEqual_SameObjectTest()
        {
            var actual = new StringFieldType("test");

            var result = Compare.AreEqual(actual, actual);

            Assert.IsTrue(result);
        }
Пример #27
0
        public void AreUnequal_ActualValueIsNullTest()
        {
            var expected = new StringFieldType("unequal");

            var result = Compare.AreEqual(null, expected);

            Assert.IsFalse(result);
        }
Пример #28
0
        public void AreUnequal_ActualValueIsNullTest()
        {
            var expected = new NestedObjectType(expectedField, expectedInt);

            var result = Compare.AreEqual(null, expected);

            Assert.IsFalse(result);
        }
Пример #29
0
        public void AreEqual_SameObjectTest()
        {
            var test = new PrimitiveFieldsOnlyType(true, 55);

            var result = Compare.AreEqual(test, test);

            Assert.IsTrue(result);
        }
Пример #30
0
        public void AreUnequal_ExpectedValueIsNullTest()
        {
            var actual = new NestedObjectType(actualField, actualInt);

            var result = Compare.AreEqual(actual, null);

            Assert.IsFalse(result);
        }