public byte[] Update(byte[] b, int off, int len)
{
if (aes) {
if (initiated)
return cipher.Update(b, off, len);
else {
int left = Math.Min(iv.Length - ivptr, len);
System.Array.Copy(b, off, iv, ivptr, left);
off += left;
len -= left;
ivptr += left;
if (ivptr == iv.Length) {
cipher = new AESCipher(false, key, iv);
initiated = true;
if (len > 0)
return cipher.Update(b, off, len);
}
return null;
}
}
else {
byte[] b2 = new byte[len];
arcfour.EncryptARCFOUR(b, off, len, b2, 0);
return b2;
}
}