From 3f17936f8a77550d6236a632121a3cb4b0ead458 Mon Sep 17 00:00:00 2001 From: Joel Petersen Date: Thu, 20 Sep 2018 11:25:54 -0700 Subject: [PATCH] Added support for AES-256. (#241) --- server/runtime_lua_nakama.go | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/server/runtime_lua_nakama.go b/server/runtime_lua_nakama.go index e697778ef..f5b23cbe7 100644 --- a/server/runtime_lua_nakama.go +++ b/server/runtime_lua_nakama.go @@ -132,6 +132,8 @@ func (n *RuntimeLuaNakamaModule) Loader(l *lua.LState) int { "base16_decode": n.base16Decode, "aes128_encrypt": n.aes128Encrypt, "aes128_decrypt": n.aes128Decrypt, + "aes256_encrypt": n.aes256Encrypt, + "aes256_decrypt": n.aes256Decrypt, "md5_hash": n.md5Hash, "sha256_hash": n.sha256Hash, "hmac_sha256_hash": n.hmacSHA256Hash, @@ -799,15 +801,15 @@ func (n *RuntimeLuaNakamaModule) base16Decode(l *lua.LState) int { return 1 } -func (n *RuntimeLuaNakamaModule) aes128Encrypt(l *lua.LState) int { +func aesEncrypt(l *lua.LState, keySize int) int { input := l.CheckString(1) if input == "" { l.ArgError(1, "expects string") return 0 } key := l.CheckString(2) - if len(key) != 16 { - l.ArgError(2, "expects key 16 bytes long") + if len(key) != keySize { + l.ArgError(2, fmt.Sprintf("expects key %v bytes long", keySize)) return 0 } @@ -836,15 +838,15 @@ func (n *RuntimeLuaNakamaModule) aes128Encrypt(l *lua.LState) int { return 1 } -func (n *RuntimeLuaNakamaModule) aes128Decrypt(l *lua.LState) int { +func aesDecrypt(l *lua.LState, keySize int) int { input := l.CheckString(1) if input == "" { l.ArgError(1, "expects string") return 0 } key := l.CheckString(2) - if len(key) != 16 { - l.ArgError(2, "expects key 16 bytes long") + if len(key) != keySize { + l.ArgError(2, fmt.Sprintf("expects key %v bytes long", keySize)) return 0 } @@ -870,6 +872,22 @@ func (n *RuntimeLuaNakamaModule) aes128Decrypt(l *lua.LState) int { return 1 } +func (n *RuntimeLuaNakamaModule) aes128Encrypt(l *lua.LState) int { + return aesEncrypt(l, 16) +} + +func (n *RuntimeLuaNakamaModule) aes128Decrypt(l *lua.LState) int { + return aesDecrypt(l, 16) +} + +func (n *RuntimeLuaNakamaModule) aes256Encrypt(l *lua.LState) int { + return aesEncrypt(l, 32) +} + +func (n *RuntimeLuaNakamaModule) aes256Decrypt(l *lua.LState) int { + return aesDecrypt(l, 32) +} + func (n *RuntimeLuaNakamaModule) md5Hash(l *lua.LState) int { input := l.CheckString(1) if input == "" { -- GitLab