garble.cc 882 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. /*
  2. * garble.c -- handles:
  3. * garble strings
  4. *
  5. */
  6. #include "common.h"
  7. #include "garble.h"
  8. #include "main.h"
  9. #define GARBLE_BUFFERS 40
  10. unsigned char *garble_buffer[GARBLE_BUFFERS] = {
  11. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
  12. 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
  13. };
  14. int garble_ptr = (-1);
  15. const char *degarble(int len, const char *g)
  16. {
  17. unsigned char x = 0;
  18. garble_ptr++;
  19. if (garble_ptr == GARBLE_BUFFERS)
  20. garble_ptr = 0;
  21. if (garble_buffer[garble_ptr])
  22. free(garble_buffer[garble_ptr]);
  23. garble_buffer[garble_ptr] = (unsigned char *) calloc(1, len + 1);
  24. x = 0xFF;
  25. for (int i = 0; i < len; i++) {
  26. garble_buffer[garble_ptr][i] = g[i] ^ x;
  27. x = garble_buffer[garble_ptr][i];
  28. }
  29. garble_buffer[garble_ptr][len] = 0;
  30. return (const char *) garble_buffer[garble_ptr];
  31. }
  32. /* vim: set sts=2 sw=2 ts=8 et: */