1
0

EncryptedStream.c 976 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* EncryptedStream.c
  2. *
  3. */
  4. #include "base64.h"
  5. #include <bdlib/src/String.h>
  6. #include "EncryptedStream.h"
  7. #include <stdarg.h>
  8. #include "compat/compat.h"
  9. int EncryptedStream::gets (char *_data, size_t maxSize) {
  10. size_t size = bd::Stream::gets(_data, maxSize);
  11. if (key.length()) {
  12. bd::String tmp(_data, size);
  13. if (tmp[tmp.length() - 1] == '\n')
  14. --tmp;
  15. bd::String decrypted(decrypt_string(key, broken_base64Decode(tmp)));
  16. decrypted += '\n';
  17. strlcpy(_data, decrypted.c_str(), maxSize);
  18. return decrypted.length();
  19. }
  20. return size;
  21. }
  22. void EncryptedStream::puts (const bd::String& str_in)
  23. {
  24. if (loading) {
  25. bd::Stream::puts(str_in);
  26. return;
  27. }
  28. bd::String string(str_in);
  29. if (key.length()) {
  30. if (string[string.length() - 1] == '\n')
  31. --string;
  32. bd::String encrypted(broken_base64Encode(encrypt_string(key, string)));
  33. encrypted += '\n';
  34. bd::Stream::puts(encrypted);
  35. return;
  36. }
  37. bd::Stream::puts(string);
  38. }