コード例 #1
0
ファイル: ZucReference.cs プロジェクト: lgitt/Cryptography.GM
        public ZucKeyStreamGenerator Zuc15Vector(byte[] sk, byte[] iv, uint z1, uint z2)
        {
            var cipher = new ZucKeyStreamGenerator(sk, iv);

            Assert.Equal(z1, cipher.NextKey());
            Assert.Equal(z2, cipher.NextKey());
            return(cipher);
        }
コード例 #2
0
ファイル: ZucReference.cs プロジェクト: lgitt/Cryptography.GM
        public void CrossLoadStateThrows(ZucVersion v)
        {
            var st14   = new ZucKeyStreamGenerator(new byte[32], new byte[23], ZucVersion.Zuc14);
            var sttest = new ZucKeyStreamGenerator(new byte[32], new byte[23], v);

            Assert.Throws <InvalidOperationException>(() => sttest.LoadState(st14.DumpState()));
            Assert.Throws <InvalidOperationException>(() => st14.LoadState(sttest.DumpState()));
        }
コード例 #3
0
ファイル: ZucReference.cs プロジェクト: lgitt/Cryptography.GM
        public void BadVersionThrows()
        {
            var st = new ZucKeyStreamGenerator(new byte[32], new byte[23], ZucVersion.Zuc14).DumpState();

            for (var i = 0; i < st.Length; i++)
            {
                st[i] = 0;
            }
            Assert.Throws <InvalidOperationException>(() => new ZucKeyStreamGenerator(st));
            Assert.Throws <ArgumentException>(() => new ZucKeyStreamGenerator(new byte[32], new byte[23], 0));
        }
コード例 #4
0
ファイル: ZucReference.cs プロジェクト: lgitt/Cryptography.GM
        public void Zuc14WeakKeyIvCollision(byte[] sk, byte[] iv1, byte[] iv2, uint[] keystream)
        {
            var cipher1 = new ZucKeyStreamGenerator(sk, iv1, ZucVersion.Zuc14);
            var cipher2 = new ZucKeyStreamGenerator(sk, iv2, ZucVersion.Zuc14);

            foreach (var tv in keystream)
            {
                Assert.Equal(tv, cipher1.NextKey());
                Assert.Equal(tv, cipher2.NextKey());
            }

            for (int i = 0; i < 5000; i++)
            {
                Assert.Equal(cipher2.NextKey(), cipher1.NextKey());
            }
        }
コード例 #5
0
ファイル: ZucReference.cs プロジェクト: lgitt/Cryptography.GM
        public void Zuc256EVector(byte[] sk, byte[] iv, uint[] seq)
        {
            var cipher = new ZucKeyStreamGenerator(sk, iv, ZucVersion.Zuc256E);

            Assert.Equal(seq, cipher.EnumerateKeys().Take(seq.Length));
        }
コード例 #6
0
 public Eia3Mac(byte[] rgbKey, ZucVersion version = ZucVersion.Zuc15)
 {
     _version = version;
     _cipher  = null !;
     Key      = rgbKey;
 }
コード例 #7
0
 public override void Initialize()
 {
     _cipher = new ZucKeyStreamGenerator(_sk, _iv, _version);
     _p      = 64;
     _a      = 0;
 }