LUA_CPATH="$(abs_builddir)/src/lua/.libs/?.so;;" \
PYTHONPATH=$(abs_srcdir)/src/python:$(abs_builddir)/src/python/.libs \
TEST_DATA_DIR="$(abs_top_srcdir)/data" \
- TEST_DATABASE="$(abs_top_srcdir)/data/database.db"
+ TEST_DATABASE="$(abs_top_srcdir)/data/database.db" \
+ TEST_SIGNING_KEY="$(abs_top_srcdir)/data/signing-key.pem"
TESTS = \
$(check_PROGRAMS) \
return r;
}
+static int Database_verify(lua_State* L) {
+ FILE* f = NULL;
+ int r;
+
+ Database* self = luaL_checkdatabase(L, 1);
+
+ // Fetch path to key
+ const char* key = luaL_checkstring(L, 2);
+
+ // Open the keyfile
+ f = fopen(key, "r");
+ if (!f)
+ return luaL_error(L, "Could not open key %s: %s\n", key, strerror(errno));
+
+ // Verify!
+ r = loc_database_verify(self->db, f);
+ fclose(f);
+
+ // Push result onto the stack
+ lua_pushboolean(L, (r == 0));
+
+ return 1;
+}
+
static const struct luaL_Reg database_functions[] = {
{ "get_as", Database_get_as },
{ "get_description", Database_get_description },
{ "get_vendor", Database_get_vendor },
{ "open", Database_open },
{ "lookup", Database_lookup },
+ { "verify", Database_verify },
{ "__gc", Database_gc },
{ NULL, NULL },
};
luaunit = require("luaunit")
-ENV_TEST_DATABASE = os.getenv("TEST_DATABASE")
+ENV_TEST_DATABASE = os.getenv("TEST_DATABASE")
+ENV_TEST_SIGNING_KEY = os.getenv("TEST_SIGNING_KEY")
function test_load()
-- Try loading the module
-- Open the database
db = location.Database.open(ENV_TEST_DATABASE)
+ -- Verify
+ luaunit.assertIsTrue(db:verify(ENV_TEST_SIGNING_KEY))
+
-- Description
luaunit.assertIsString(db:get_description())