1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-15 01:57:40 -05:00

Add utility function 'memxor'.

This commit is contained in:
Simon Tatham
2021-02-20 16:47:52 +00:00
parent 09fa3f0e80
commit 609502b04b
2 changed files with 35 additions and 0 deletions

26
utils.c
View File

@ -1073,3 +1073,29 @@ void write_c_string_literal(FILE *fp, ptrlen str)
fprintf(fp, "\\%03o", (unsigned char)c);
}
}
void memxor(uint8_t *out, const uint8_t *in1, const uint8_t *in2, size_t size)
{
switch (size & 15) {
case 0:
while (size >= 16) {
*out++ = *in1++ ^ *in2++;
case 15: *out++ = *in1++ ^ *in2++;
case 14: *out++ = *in1++ ^ *in2++;
case 13: *out++ = *in1++ ^ *in2++;
case 12: *out++ = *in1++ ^ *in2++;
case 11: *out++ = *in1++ ^ *in2++;
case 10: *out++ = *in1++ ^ *in2++;
case 9: *out++ = *in1++ ^ *in2++;
case 8: *out++ = *in1++ ^ *in2++;
case 7: *out++ = *in1++ ^ *in2++;
case 6: *out++ = *in1++ ^ *in2++;
case 5: *out++ = *in1++ ^ *in2++;
case 4: *out++ = *in1++ ^ *in2++;
case 3: *out++ = *in1++ ^ *in2++;
case 2: *out++ = *in1++ ^ *in2++;
case 1: *out++ = *in1++ ^ *in2++;
size -= 16;
}
}
}