{
state = working_e;
+ int iv_len = sizeof (out->iv);
+ for (int i = 0, r = 0; i < iv_len; i++) {
+ if (i % 4) {
+ r = rand ();
+ }
+ out->data[i] = r & 0xff;
+ r >>= 8;
+ }
+
+ memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t));
+ out->bypass_len = in->bypass_len;
+
+ for (int i = 0; i < in->data_len; i++) {
+ out->data[i] = (in->data[i] ^ out->iv[i % iv_len]) & 0xff;
+ }
+ out->data_len = in->data_len;
+
state = ready_e;
return 0;
{
state = working_e;
+ memcpy (out->bypass, in->bypass, in->bypass_len * sizeof (uint8_t));
+ out->bypass_len = in->bypass_len;
+
+ int iv_len = sizeof (in->iv);
+ for (int i = 0; i < in->data_len; i++) {
+ out->data[i] = (in->data[i] ^ in->iv[i % iv_len]) & 0xff;
+ }
+ out->data_len = in->data_len;
+
state = ready_e;
return 0;