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:
26
utils.c
26
utils.c
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user