aboutsummaryrefslogtreecommitdiff
path: root/src/crypto.hh
diff options
context:
space:
mode:
authorfusion32 <marcopuzziello@gmail.com>2025-06-19 03:13:48 -0300
committerfusion32 <marcopuzziello@gmail.com>2025-06-19 03:13:48 -0300
commitbd3a6a04601749cbde007eaabf803fb602ee2783 (patch)
tree476b89932627aa73ad88de22d37e4617bbdb1795 /src/crypto.hh
parente5b8aadd493b8b5df4ed661f2491de33d634b001 (diff)
downloadgame-bd3a6a04601749cbde007eaabf803fb602ee2783.tar.gz
game-bd3a6a04601749cbde007eaabf803fb602ee2783.zip
beginning of `communication.cc`
Diffstat (limited to 'src/crypto.hh')
-rw-r--r--src/crypto.hh58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/crypto.hh b/src/crypto.hh
new file mode 100644
index 0000000..e90996c
--- /dev/null
+++ b/src/crypto.hh
@@ -0,0 +1,58 @@
+#ifndef TIBIA_CRYPTO_HH_
+#define TIBIA_CRYPTO_HH_ 1
+
+#include "common.hh"
+
+// TODO(fusion): We might want to scrap this implementation and use OpenSSL instead.
+
+struct vlong_flex_unit{
+ uint32 n;
+ uint32 *a;
+ uint32 z;
+};
+
+struct vlong_value: vlong_flex_unit {
+ uint32 share;
+};
+
+struct vlong{
+ vlong_value *value;
+ int negative;
+};
+
+struct vlong_montgomery{
+ vlong R;
+ vlong R1;
+ vlong m;
+ vlong n1;
+ vlong T;
+ vlong k;
+ uint32 N;
+};
+
+struct TRSAPrivateKey{
+ TRSAPrivateKey(void);
+ ~TRSAPrivateKey(void);
+ void decrypt(uint8 *Data); // single 128 bytes block
+
+ // DATA
+ // =================
+ vlong m_PrimeP;
+ vlong m_PrimeQ;
+ vlong m_U;
+ vlong m_DP;
+ vlong m_DQ;
+};
+
+struct TXTEASymmetricKey{
+ TXTEASymmetricKey(void);
+ ~TXTEASymmetricKey(void);
+ void encrypt(uint8 *Data); // single 8 bytes block
+ void decrypt(uint8 *Data); // single 8 bytes block
+
+ // DATA
+ // =================
+ uint32 m_SymmetricKey[4];
+};
+
+#endif //TIBIA_CRYPTO_HH_