diff options
Diffstat (limited to 'src/lua/lua_rsa.c')
-rw-r--r-- | src/lua/lua_rsa.c | 151 |
1 files changed, 66 insertions, 85 deletions
diff --git a/src/lua/lua_rsa.c b/src/lua/lua_rsa.c index e68fc3da1..38820e4e2 100644 --- a/src/lua/lua_rsa.c +++ b/src/lua/lua_rsa.c @@ -32,26 +32,26 @@ #ifdef HAVE_OPENSSL #include <openssl/err.h> -#include <openssl/pem.h> -#include <openssl/rsa.h> #include <openssl/sha.h> +#include <openssl/rsa.h> +#include <openssl/pem.h> -LUA_FUNCTION_DEF (rsa_pubkey, load); -LUA_FUNCTION_DEF (rsa_pubkey, create); -LUA_FUNCTION_DEF (rsa_pubkey, gc); -LUA_FUNCTION_DEF (rsa_privkey, load); -LUA_FUNCTION_DEF (rsa_privkey, create); -LUA_FUNCTION_DEF (rsa_privkey, gc); +LUA_FUNCTION_DEF (rsa_pubkey, load); +LUA_FUNCTION_DEF (rsa_pubkey, create); +LUA_FUNCTION_DEF (rsa_pubkey, gc); +LUA_FUNCTION_DEF (rsa_privkey, load); +LUA_FUNCTION_DEF (rsa_privkey, create); +LUA_FUNCTION_DEF (rsa_privkey, gc); LUA_FUNCTION_DEF (rsa_signature, create); LUA_FUNCTION_DEF (rsa_signature, load); LUA_FUNCTION_DEF (rsa_signature, save); LUA_FUNCTION_DEF (rsa_signature, gc); -LUA_FUNCTION_DEF (rsa, verify_memory); -LUA_FUNCTION_DEF (rsa, verify_file); -LUA_FUNCTION_DEF (rsa, sign_file); -LUA_FUNCTION_DEF (rsa, sign_memory); +LUA_FUNCTION_DEF (rsa, verify_memory); +LUA_FUNCTION_DEF (rsa, verify_file); +LUA_FUNCTION_DEF (rsa, sign_file); +LUA_FUNCTION_DEF (rsa, sign_memory); -static const struct luaL_reg rsalib_f[] = { +static const struct luaL_reg rsalib_f[] = { LUA_INTERFACE_DEF (rsa, verify_memory), LUA_INTERFACE_DEF (rsa, verify_file), LUA_INTERFACE_DEF (rsa, sign_memory), @@ -60,46 +60,46 @@ static const struct luaL_reg rsalib_f[] = { }; static const struct luaL_reg rsapubkeylib_f[] = { - LUA_INTERFACE_DEF (rsa_pubkey, load), - LUA_INTERFACE_DEF (rsa_pubkey, create), - {NULL, NULL} + LUA_INTERFACE_DEF (rsa_pubkey, load), + LUA_INTERFACE_DEF (rsa_pubkey, create), + {NULL, NULL} }; static const struct luaL_reg rsapubkeylib_m[] = { - {"__tostring", lua_class_tostring}, - {"__gc", lua_rsa_pubkey_gc}, - {NULL, NULL} + {"__tostring", lua_class_tostring}, + {"__gc", lua_rsa_pubkey_gc}, + {NULL, NULL} }; static const struct luaL_reg rsaprivkeylib_f[] = { - LUA_INTERFACE_DEF (rsa_privkey, load), - LUA_INTERFACE_DEF (rsa_privkey, create), - {NULL, NULL} + LUA_INTERFACE_DEF (rsa_privkey, load), + LUA_INTERFACE_DEF (rsa_privkey, create), + {NULL, NULL} }; static const struct luaL_reg rsaprivkeylib_m[] = { - {"__tostring", lua_class_tostring}, - {"__gc", lua_rsa_privkey_gc}, - {NULL, NULL} + {"__tostring", lua_class_tostring}, + {"__gc", lua_rsa_privkey_gc}, + {NULL, NULL} }; static const struct luaL_reg rsasignlib_f[] = { - LUA_INTERFACE_DEF (rsa_signature, load), - LUA_INTERFACE_DEF (rsa_signature, create), - {NULL, NULL} + LUA_INTERFACE_DEF (rsa_signature, load), + LUA_INTERFACE_DEF (rsa_signature, create), + {NULL, NULL} }; static const struct luaL_reg rsasignlib_m[] = { - LUA_INTERFACE_DEF (rsa_signature, save), - {"__tostring", lua_class_tostring}, - {"__gc", lua_rsa_signature_gc}, - {NULL, NULL} + LUA_INTERFACE_DEF (rsa_signature, save), + {"__tostring", lua_class_tostring}, + {"__gc", lua_rsa_signature_gc}, + {NULL, NULL} }; static RSA * lua_check_rsa_pubkey (lua_State * L, int pos) { - void *ud = luaL_checkudata (L, pos, "rspamd{rsa_pubkey}"); + void *ud = luaL_checkudata (L, pos, "rspamd{rsa_pubkey}"); luaL_argcheck (L, ud != NULL, 1, "'rsa_pubkey' expected"); return ud ? *((RSA **)ud) : NULL; @@ -108,7 +108,7 @@ lua_check_rsa_pubkey (lua_State * L, int pos) static RSA * lua_check_rsa_privkey (lua_State * L, int pos) { - void *ud = luaL_checkudata (L, pos, "rspamd{rsa_privkey}"); + void *ud = luaL_checkudata (L, pos, "rspamd{rsa_privkey}"); luaL_argcheck (L, ud != NULL, 1, "'rsa_privkey' expected"); return ud ? *((RSA **)ud) : NULL; @@ -117,7 +117,7 @@ lua_check_rsa_privkey (lua_State * L, int pos) static f_str_t * lua_check_rsa_sign (lua_State * L, int pos) { - void *ud = luaL_checkudata (L, pos, "rspamd{rsa_signature}"); + void *ud = luaL_checkudata (L, pos, "rspamd{rsa_signature}"); luaL_argcheck (L, ud != NULL, 1, "'rsa_signature' expected"); return ud ? *((f_str_t **)ud) : NULL; @@ -126,7 +126,7 @@ lua_check_rsa_sign (lua_State * L, int pos) static gint lua_rsa_pubkey_load (lua_State *L) { - RSA *rsa = NULL, **prsa; + RSA *rsa = NULL, **prsa; const gchar *filename; FILE *f; @@ -134,15 +134,13 @@ lua_rsa_pubkey_load (lua_State *L) if (filename != NULL) { f = fopen (filename, "r"); if (f == NULL) { - msg_err ("cannot open pubkey from file: %s, %s", - filename, - strerror (errno)); + msg_err ("cannot open pubkey from file: %s, %s", filename, strerror (errno)); lua_pushnil (L); } else { - if (!PEM_read_RSA_PUBKEY (f, &rsa, NULL, NULL)) { + if (! PEM_read_RSA_PUBKEY (f, &rsa, NULL, NULL)) { msg_err ("cannot open pubkey from file: %s, %s", filename, - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); } else { @@ -162,7 +160,7 @@ lua_rsa_pubkey_load (lua_State *L) static gint lua_rsa_pubkey_create (lua_State *L) { - RSA *rsa = NULL, **prsa; + RSA *rsa = NULL, **prsa; const gchar *buf; BIO *bp; @@ -170,9 +168,9 @@ lua_rsa_pubkey_create (lua_State *L) if (buf != NULL) { bp = BIO_new_mem_buf ((void *)buf, -1); - if (!PEM_read_bio_RSA_PUBKEY (bp, &rsa, NULL, NULL)) { + if (! PEM_read_bio_RSA_PUBKEY (bp, &rsa, NULL, NULL)) { msg_err ("cannot parse pubkey: %s", - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); } else { @@ -203,7 +201,7 @@ lua_rsa_pubkey_gc (lua_State *L) static gint lua_rsa_privkey_load (lua_State *L) { - RSA *rsa = NULL, **prsa; + RSA *rsa = NULL, **prsa; const gchar *filename; FILE *f; @@ -211,15 +209,13 @@ lua_rsa_privkey_load (lua_State *L) if (filename != NULL) { f = fopen (filename, "r"); if (f == NULL) { - msg_err ("cannot open private key from file: %s, %s", - filename, - strerror (errno)); + msg_err ("cannot open private key from file: %s, %s", filename, strerror (errno)); lua_pushnil (L); } else { - if (!PEM_read_RSAPrivateKey (f, &rsa, NULL, NULL)) { + if (! PEM_read_RSAPrivateKey (f, &rsa, NULL, NULL)) { msg_err ("cannot open private key from file: %s, %s", filename, - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); } else { @@ -239,7 +235,7 @@ lua_rsa_privkey_load (lua_State *L) static gint lua_rsa_privkey_create (lua_State *L) { - RSA *rsa = NULL, **prsa; + RSA *rsa = NULL, **prsa; const gchar *buf; BIO *bp; @@ -247,9 +243,9 @@ lua_rsa_privkey_create (lua_State *L) if (buf != NULL) { bp = BIO_new_mem_buf ((void *)buf, -1); - if (!PEM_read_bio_RSAPrivateKey (bp, &rsa, NULL, NULL)) { + if (! PEM_read_bio_RSAPrivateKey (bp, &rsa, NULL, NULL)) { msg_err ("cannot parse private key: %s", - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); } else { @@ -290,16 +286,13 @@ lua_rsa_signature_load (lua_State *L) if (filename != NULL) { fd = open (filename, O_RDONLY); if (fd == -1) { - msg_err ("cannot open signature file: %s, %s", filename, - strerror (errno)); + msg_err ("cannot open signature file: %s, %s", filename, strerror (errno)); lua_pushnil (L); } else { sig = g_malloc (sizeof (f_str_t)); if (fstat (fd, &st) == -1 || - (data = - mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, - 0)) == MAP_FAILED) { + (data = mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { msg_err ("cannot mmap file %s: %s", filename, strerror (errno)); lua_pushnil (L); } @@ -346,9 +339,7 @@ lua_rsa_signature_save (lua_State *L) } fd = open (filename, flags, 00644); if (fd == -1) { - msg_err ("cannot create a signature file: %s, %s", - filename, - strerror (errno)); + msg_err ("cannot create a signature file: %s, %s", filename, strerror (errno)); lua_pushboolean (L, FALSE); } else { @@ -356,9 +347,7 @@ lua_rsa_signature_save (lua_State *L) if (errno == EINTR) { continue; } - msg_err ("cannot write to a signature file: %s, %s", - filename, - strerror (errno)); + msg_err ("cannot write to a signature file: %s, %s", filename, strerror (errno)); res = FALSE; break; } @@ -438,7 +427,7 @@ lua_rsa_verify_memory (lua_State *L) signature->begin, signature->len, rsa); if (ret == 0) { msg_info ("cannot check rsa signature for data: %s", - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushboolean (L, FALSE); } else { @@ -485,21 +474,17 @@ lua_rsa_verify_file (lua_State *L) } else { if (fstat (fd, &st) == -1 || - (data = - mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, - 0)) == MAP_FAILED) { + (data = mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { msg_err ("cannot mmap file %s: %s", filename, strerror (errno)); lua_pushnil (L); } else { - data_sig = g_compute_checksum_for_data (G_CHECKSUM_SHA256, - data, - st.st_size); + data_sig = g_compute_checksum_for_data (G_CHECKSUM_SHA256, data, st.st_size); ret = RSA_verify (NID_sha1, data_sig, strlen (data_sig), signature->begin, signature->len, rsa); if (ret == 0) { msg_info ("cannot check rsa signature for file: %s, %s", - filename, ERR_error_string (ERR_get_error (), NULL)); + filename, ERR_error_string (ERR_get_error (), NULL)); lua_pushboolean (L, FALSE); } else { @@ -550,7 +535,7 @@ lua_rsa_sign_memory (lua_State *L) signature->begin, (guint *)&signature->len, rsa); if (ret == 0) { msg_info ("cannot make a signature for data: %s", - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); g_free (signature->begin); g_free (signature); @@ -600,9 +585,7 @@ lua_rsa_sign_file (lua_State *L) } else { if (fstat (fd, &st) == -1 || - (data = - mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, - 0)) == MAP_FAILED) { + (data = mmap (NULL, st.st_size, PROT_READ, MAP_SHARED, fd, 0)) == MAP_FAILED) { msg_err ("cannot mmap file %s: %s", filename, strerror (errno)); lua_pushnil (L); } @@ -611,14 +594,12 @@ lua_rsa_sign_file (lua_State *L) signature->len = RSA_size (rsa); signature->size = signature->len; signature->begin = g_malloc (signature->len); - data_sig = g_compute_checksum_for_string (G_CHECKSUM_SHA256, - data, - st.st_size); + data_sig = g_compute_checksum_for_string (G_CHECKSUM_SHA256, data, st.st_size); ret = RSA_sign (NID_sha1, data_sig, strlen (data_sig), signature->begin, (guint *)&signature->len, rsa); if (ret == 0) { msg_info ("cannot make a signature for data: %s", - ERR_error_string (ERR_get_error (), NULL)); + ERR_error_string (ERR_get_error (), NULL)); lua_pushnil (L); g_free (signature->begin); g_free (signature); @@ -653,7 +634,7 @@ luaopen_rsa (lua_State * L) lua_pushstring (L, "rspamd{rsa_pubkey}"); lua_rawset (L, -3); - luaL_register (L, NULL, rsapubkeylib_m); + luaL_register (L, NULL, rsapubkeylib_m); luaL_register (L, "rsa_pubkey", rsapubkeylib_f); luaL_newmetatable (L, "rspamd{rsa_privkey}"); @@ -665,7 +646,7 @@ luaopen_rsa (lua_State * L) lua_pushstring (L, "rspamd{rsa_privkey}"); lua_rawset (L, -3); - luaL_register (L, NULL, rsaprivkeylib_m); + luaL_register (L, NULL, rsaprivkeylib_m); luaL_register (L, "rsa_privkey", rsaprivkeylib_f); luaL_newmetatable (L, "rspamd{rsa_signature}"); @@ -677,10 +658,10 @@ luaopen_rsa (lua_State * L) lua_pushstring (L, "rspamd{rsa_signature}"); lua_rawset (L, -3); - luaL_register (L, NULL, rsasignlib_m); + luaL_register (L, NULL, rsasignlib_m); luaL_register (L, "rsa_signature", rsasignlib_f); - luaL_register (L, "rsa", rsalib_f); + luaL_register (L, "rsa", rsalib_f); return 1; } @@ -690,7 +671,7 @@ gint luaopen_rsa (lua_State * L) { msg_info ("this rspamd version is not linked against openssl, therefore no " - "RSA support is available"); + "RSA support is available"); return 1; |