MODULE = Location PACKAGE = Location
struct loc_database *
-init(file, keyfile)
+init(file)
char* file;
- char* keyfile;
CODE:
struct loc_ctx* ctx = NULL;
croak("Could not read database: %s\n", file);
}
+ // Cleanup
+ loc_unref(ctx);
+
+ RETVAL = db;
+ OUTPUT:
+ RETVAL
+
+#
+# Database functions
+#
+bool
+verify(db, keyfile)
+ struct loc_database* db;
+ char* keyfile;
+
+ CODE:
// Try to open the keyfile
- f = fopen(keyfile, "r");
+ FILE* f = fopen(keyfile, "r");
if (!f) {
- loc_database_unref(db);
- loc_unref(ctx);
-
croak("Could not open keyfile %s: %s\n",
keyfile, strerror(errno));
}
// Verify the database
int status = loc_database_verify(db, f);
if (status) {
- loc_database_unref(db);
- loc_unref(ctx);
+ RETVAL = false;
fclose(f);
croak("Could not verify the database signature\n");
}
+ // Database was validated successfully
+ RETVAL = true;
+
// Close the keyfile
fclose(f);
-
- // Cleanup
- loc_unref(ctx);
-
- RETVAL = db;
OUTPUT:
RETVAL
-#
-# Database functions
-#
const char*
get_vendor(db)
struct loc_database* db;
my $testdb = $ENV{'database'};
my $keyfile = $ENV{'keyfile'};
-use Test::More tests => 6;
+use Test::More tests => 7;
BEGIN { use_ok('Location') };
#########################
my $address = "2a07:1c44:5800::1";
# Connect to the database.
-my $db = &Location::init("$testdb", "$keyfile");
+my $db = &Location::init("$testdb");
+
+# Verify
+my $status = &Location::verify($db, $keyfile);
+ok($status, "This database is valid");
my $vendor = &Location::get_vendor($db);
ok($vendor eq "IPFire Project", "Test 1 - Get Database Vendor");