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); }
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())); }
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)); }
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()); } }
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)); }
public Eia3Mac(byte[] rgbKey, ZucVersion version = ZucVersion.Zuc15) { _version = version; _cipher = null !; Key = rgbKey; }
public override void Initialize() { _cipher = new ZucKeyStreamGenerator(_sk, _iv, _version); _p = 64; _a = 0; }