aboutsummaryrefslogtreecommitdiff
path: root/src/common/Cryptography/ARC4.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/common/Cryptography/ARC4.h')
-rw-r--r--src/common/Cryptography/ARC4.h33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/common/Cryptography/ARC4.h b/src/common/Cryptography/ARC4.h
index e0b0d2d39b6..2adfba919ec 100644
--- a/src/common/Cryptography/ARC4.h
+++ b/src/common/Cryptography/ARC4.h
@@ -19,18 +19,31 @@
#define _AUTH_SARC4_H
#include "Define.h"
+#include <array>
#include <openssl/evp.h>
+#include "advstd.h" // data/size
-class TC_COMMON_API ARC4
+namespace Trinity
{
- public:
- ARC4(uint32 len);
- ARC4(uint8* seed, uint32 len);
- ~ARC4();
- void Init(uint8* seed);
- void UpdateData(int len, uint8* data);
- private:
- EVP_CIPHER_CTX* m_ctx;
-};
+namespace Crypto
+{
+ class TC_COMMON_API ARC4
+ {
+ public:
+ ARC4();
+ ~ARC4();
+
+ void Init(uint8 const* seed, size_t len);
+ template <typename Container>
+ void Init(Container const& c) { Init(advstd::data(c), advstd::size(c)); }
+
+ void UpdateData(uint8* data, size_t len);
+ template <typename Container>
+ void UpdateData(Container& c) { UpdateData(advstd::data(c), advstd::size(c)); }
+ private:
+ EVP_CIPHER_CTX* _ctx;
+ };
+}
+}
#endif