summaryrefslogtreecommitdiffstats
path: root/osmo-gsup-hlr/src/db_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'osmo-gsup-hlr/src/db_test.c')
-rw-r--r--osmo-gsup-hlr/src/db_test.c84
1 files changed, 84 insertions, 0 deletions
diff --git a/osmo-gsup-hlr/src/db_test.c b/osmo-gsup-hlr/src/db_test.c
new file mode 100644
index 0000000..75fcb62
--- /dev/null
+++ b/osmo-gsup-hlr/src/db_test.c
@@ -0,0 +1,84 @@
+#include <string.h>
+
+#include <osmocom/core/utils.h>
+#include <osmocom/core/application.h>
+
+#include "db.h"
+#include "rand.h"
+#include "logging.h"
+
+static struct db_context *g_dbc;
+
+static int test(const char *imsi)
+{
+ struct osmo_auth_vector vec[3];
+ int rc, i;
+
+ /* initialize all vectors with a known token pattern */
+ memset(vec, 0x55, sizeof(vec));
+ for (i = 0; i < ARRAY_SIZE(vec); i++)
+ vec[i].res_len = 0;
+
+ rc = db_get_auc(g_dbc, imsi, vec, ARRAY_SIZE(vec), NULL, NULL);
+ if (rc <= 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Cannot obtain auth tuples for '%s'\n", imsi);
+ return rc;
+ }
+ LOGP(DMAIN, LOGL_INFO, "Obtained %u tuples for subscriber IMSI %s\n",
+ rc, imsi);
+
+ for (i = 0; i < rc; i++) {
+ struct osmo_auth_vector *v = vec + i;
+ LOGP(DMAIN, LOGL_DEBUG, "Tuple %u, auth_types=0x%x\n", i, v->auth_types);
+ LOGP(DMAIN, LOGL_DEBUG, "RAND=%s\n", osmo_hexdump_nospc(v->rand, sizeof(v->rand)));
+ LOGP(DMAIN, LOGL_DEBUG, "AUTN=%s\n", osmo_hexdump_nospc(v->autn, sizeof(v->autn)));
+ LOGP(DMAIN, LOGL_DEBUG, "CK=%s\n", osmo_hexdump_nospc(v->ck, sizeof(v->ck)));
+ LOGP(DMAIN, LOGL_DEBUG, "IK=%s\n", osmo_hexdump_nospc(v->ik, sizeof(v->ik)));
+ LOGP(DMAIN, LOGL_DEBUG, "RES=%s\n", osmo_hexdump_nospc(v->res, v->res_len));
+ LOGP(DMAIN, LOGL_DEBUG, "Kc=%s\n", osmo_hexdump_nospc(v->kc, sizeof(v->kc)));
+ LOGP(DMAIN, LOGL_DEBUG, "SRES=%s\n", osmo_hexdump_nospc(v->sres, sizeof(v->sres)));
+ }
+
+ return rc;
+}
+
+int main(int argc, char **argv)
+{
+ int rc;
+
+ rc = osmo_init_logging(&hlr_log_info);
+ if (rc < 0) {
+ fprintf(stderr, "Error initializing logging\n");
+ exit(1);
+ }
+ LOGP(DMAIN, LOGL_NOTICE, "hlr starting\n");
+
+ rc = rand_init();
+ if (rc < 0) {
+ LOGP(DMAIN, LOGL_ERROR, "Error initializing random source\n");
+ exit(1);
+ }
+
+ g_dbc = db_open(NULL, "hlr.db");
+ if (!g_dbc) {
+ LOGP(DMAIN, LOGL_ERROR, "Error opening database\n");
+ exit(1);
+ }
+
+ /* non-existing subscriber */
+ rc = test("901990123456789");
+ /* 2G only AUC data (COMP128v1 / MILENAGE) */
+ rc = test("901990000000001");
+ /* 2G + 3G AUC data (COMP128v1 / MILENAGE) */
+ rc = test("901990000000002");
+ /* 3G AUC data (MILENAGE) */
+ rc = test("901990000000003");
+
+ LOGP(DMAIN, LOGL_NOTICE, "Exiting\n");
+
+ db_close(g_dbc);
+
+ log_fini();
+
+ exit(0);
+}