local ffi = require("ffi")
ffi.cdef[[
int CryptBinaryToStringA(
const char *pbBinary,
int cbBinary,
int dwFlags,
char * pszString,
int *pcchString
);
]]
local crypt = ffi.load(ffi.os == "Windows" and "crypt32")
local function toBase64(txt)
local buflen = ffi.new("int[1]")
crypt.CryptBinaryToStringA(txt, #txt, 1, nil, buflen)
local buf = ffi.new("char[?]", buflen[0])
crypt.CryptBinaryToStringA(txt, #txt, 1, buf, buflen)
return ffi.string(buf, buflen[0])
end
print(toBase64("hello world"))