}
}
else {
- luaL_error (L, "bad input arguments");
+ return luaL_error (L, "bad input arguments");
}
return 1;
}
else {
- luaL_error (L, "bad input arguments");
+ return luaL_error (L, "bad input arguments");
}
return 1;
}
}
else {
- luaL_error (L, "bad input arguments");
+ return luaL_error (L, "bad input arguments");
}
return 1;
}
}
else {
- lua_pushboolean (L, FALSE);
+ return luaL_error (L, "invalid arguments");
}
return 1;
lua_cryptobox_signature_create (lua_State *L)
{
rspamd_fstring_t *sig, **psig;
+ struct rspamd_lua_text *t;
const gchar *data;
gsize dlen;
- data = luaL_checklstring (L, 1, &dlen);
+ if (lua_isuserdata (L, 1)) {
+ t = lua_check_text (L, 1);
+
+ if (!t) {
+ return luaL_error (L, "invalid arguments");
+ }
+
+ data = t->start;
+ dlen = t->len;
+ }
+ else {
+ data = luaL_checklstring (L, 1, &dlen);
+ }
if (data != NULL) {
if (dlen == rspamd_cryptobox_signature_bytes (RSPAMD_CRYPTOBOX_MODE_25519)) {
}
}
else {
- luaL_error (L, "bad input arguments");
+ return luaL_error (L, "bad input arguments");
}
return 1;
rspamd_lua_setclass (L, "rspamd{cryptobox_hash}", -1);
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
return 1;
{
rspamd_cryptobox_hash_state_t *h = lua_check_cryptobox_hash (L, 1);
const gchar *data;
+ struct rspamd_lua_text *t;
gsize len;
- data = luaL_checklstring (L, 2, &len);
+ if (lua_isuserdata (L, 2)) {
+ t = lua_check_text (L, 2);
+
+ if (!t) {
+ return luaL_error (L, "invalid arguments");
+ }
+
+ data = t->start;
+ len = t->len;
+ }
+ else {
+ data = luaL_checklstring (L, 2, &len);
+ }
if (h && data) {
rspamd_cryptobox_hash_update (h, data, len);
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
return 0;
lua_pushstring (L, out_hex);
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
return 1;
lua_pushlstring (L, out, sizeof (out));
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
return 1;
{
struct rspamd_cryptobox_pubkey *pk;
rspamd_fstring_t *signature;
+ struct rspamd_lua_text *t;
const gchar *data;
gsize len;
gint ret;
pk = lua_check_cryptobox_pubkey (L, 1);
signature = lua_check_cryptobox_sign (L, 2);
- data = luaL_checklstring (L, 3, &len);
+
+ if (lua_isuserdata (L, 3)) {
+ t = lua_check_text (L, 3);
+
+ if (!t) {
+ return luaL_error (L, "invalid arguments");
+ }
+
+ data = t->start;
+ len = t->len;
+ }
+ else {
+ data = luaL_checklstring (L, 3, &len);
+ }
if (pk != NULL && signature != NULL && data != NULL) {
ret = rspamd_cryptobox_verify (signature->str, data, len,
}
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
return 1;
}
}
else {
- luaL_error (L, "invalid arguments");
+ return luaL_error (L, "invalid arguments");
}
if (map != NULL) {
{
struct rspamd_cryptobox_keypair *kp;
const gchar *data;
+ struct rspamd_lua_text *t;
gsize len = 0;
rspamd_fstring_t *sig, **psig;
kp = lua_check_cryptobox_keypair (L, 1);
- data = luaL_checklstring (L, 2, &len);
- if (!kp || !data) {
- luaL_error (L, "invalid arguments");
+ if (lua_isuserdata (L, 2)) {
+ t = lua_check_text (L, 2);
- return 1;
+ if (!t) {
+ return luaL_error (L, "invalid arguments");
+ }
+
+ data = t->start;
+ len = t->len;
+ }
+ else {
+ data = luaL_checklstring (L, 2, &len);
+ }
+
+
+ if (!kp || !data) {
+ return luaL_error (L, "invalid arguments");
}
sig = rspamd_fstring_sized_new (rspamd_cryptobox_signature_bytes (
filename = luaL_checkstring (L, 2);
if (!kp || !filename) {
- luaL_error (L, "invalid arguments");
-
- return 1;
+ return luaL_error (L, "invalid arguments");
}
data = rspamd_file_xmap (filename, PROT_READ, &len);