// functions/crypto.go package functions import ( "crypto/md5" "crypto/sha256" "encoding/base64" "encoding/hex" luajit "git.sharkk.net/Sky/LuaJIT-to-Go" ) // GetCryptoFunctions returns all cryptographic Go functions func GetCryptoFunctions() map[string]luajit.GoFunction { return map[string]luajit.GoFunction{ "base64_encode": func(s *luajit.State) int { if err := s.CheckMinArgs(1); err != nil { return s.PushError("base64_encode: %v", err) } str, err := s.SafeToString(1) if err != nil { return s.PushError("base64_encode: argument must be a string") } encoded := base64.StdEncoding.EncodeToString([]byte(str)) s.PushString(encoded) return 1 }, "base64_decode": func(s *luajit.State) int { if err := s.CheckMinArgs(1); err != nil { return s.PushError("base64_decode: %v", err) } str, err := s.SafeToString(1) if err != nil { return s.PushError("base64_decode: argument must be a string") } decoded, err := base64.StdEncoding.DecodeString(str) if err != nil { return s.PushError("base64_decode: %v", err) } s.PushString(string(decoded)) return 1 }, "md5_hash": func(s *luajit.State) int { if err := s.CheckMinArgs(1); err != nil { return s.PushError("md5_hash: %v", err) } str, err := s.SafeToString(1) if err != nil { return s.PushError("md5_hash: argument must be a string") } hash := md5.Sum([]byte(str)) s.PushString(hex.EncodeToString(hash[:])) return 1 }, "sha256_hash": func(s *luajit.State) int { if err := s.CheckMinArgs(1); err != nil { return s.PushError("sha256_hash: %v", err) } str, err := s.SafeToString(1) if err != nil { return s.PushError("sha256_hash: argument must be a string") } hash := sha256.Sum256([]byte(str)) s.PushString(hex.EncodeToString(hash[:])) return 1 }, } }