diff --git a/tests/Makefile.am b/tests/Makefile.am
index b138717..dbe349f 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -15,7 +15,7 @@
 		 write_queue/wqueue_test socket/socket_test		\
 		 coding/coding_test conv/conv_gsm0503_test		\
 		 abis/abis_test endian/endian_test sercomm/sercomm_test	\
-		 stats/stats_test prbs/prbs_test
+		 stats/stats_test prbs/prbs_test gsm23003/gsm23003_test
 
 if ENABLE_MSGFILE
 check_PROGRAMS += msgfile/msgfile_test
@@ -186,6 +186,9 @@
 prbs_prbs_test_SOURCES = prbs/prbs_test.c
 prbs_prbs_test_LDADD = $(top_builddir)/src/libosmocore.la
 
+gsm23003_gsm23003_test_SOURCES = gsm23003/gsm23003_test.c
+gsm23003_gsm23003_test_LDADD = $(top_builddir)/src/gsm/libosmogsm.la $(top_builddir)/src/libosmocore.la
+
 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
 	:;{ \
@@ -241,7 +244,8 @@
 	     osmo-auc-gen/osmo-auc-gen_test.ok				\
 	     osmo-auc-gen/osmo-auc-gen_test.err				\
 	     conv/conv_gsm0503_test.ok endian/endian_test.ok 		\
-	     sercomm/sercomm_test.ok prbs/prbs_test.ok
+	     sercomm/sercomm_test.ok prbs/prbs_test.ok			\
+	     gsm23003/gsm23003_test.ok
 
 DISTCLEANFILES = atconfig atlocal conv/gsm0503_test_vectors.c
 BUILT_SOURCES = conv/gsm0503_test_vectors.c
diff --git a/tests/gsm23003/gsm23003_test.c b/tests/gsm23003/gsm23003_test.c
new file mode 100644
index 0000000..682f162
--- /dev/null
+++ b/tests/gsm23003/gsm23003_test.c
@@ -0,0 +1,124 @@
+/*
+ * (C) 2017 by sysmocom s.f.m.c. GmbH <info@sysmocom.de>
+ * All Rights Reserved
+ *
+ * Author: Neels Hofmeyr <nhofmeyr@sysmocom.de>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ */
+
+#include <stdio.h>
+
+#include <osmocom/gsm/gsm23003.h>
+#include <osmocom/core/utils.h>
+
+#define BOOL_STR(b) ((b)? "true" : "false")
+
+static struct {
+	const char *imsi;
+	bool expect_ok;
+} test_imsis[] = {
+	{ "", false },
+	{ " ", false },
+	{ "1", false },
+	{ "123", false },
+	{ "12345", false },
+	{ "123456", true },
+	{ "1234567", true },
+	{ "1234567890123", true },
+	{ "123456789012345", true },
+	{ "000000000000000", true },
+	{ "999999999999999", true },
+	{ "1234567890123456", false },
+	{ "a23456789012345", false },
+	{ "1234567b9012345", false },
+	{ "12345678901234c", false },
+	{ "123456789 01234", false },
+	{ "1234567\n123456", false },
+	{ "123456\t123456", false },
+	{ "123456\r123456", false },
+};
+
+bool test_valid_imsi()
+{
+	int i;
+	bool pass = true;
+	bool ok = true;
+	printf("----- %s\n", __func__);
+
+	for (i = 0; i < ARRAY_SIZE(test_imsis); i++) {
+		ok = osmo_imsi_str_valid(test_imsis[i].imsi);
+		pass = pass && (ok == test_imsis[i].expect_ok);
+		printf("%2d: expect=%s result=%s imsi='%s'\n",
+		       i, BOOL_STR(test_imsis[i].expect_ok), BOOL_STR(ok),
+		       test_imsis[i].imsi);
+	}
+	return pass;
+}
+
+static struct {
+	const char *msisdn;
+	bool expect_ok;
+} test_msisdns[] = {
+	{ "", false },
+	{ " ", false },
+	{ "1", true },
+	{ "123", true },
+	{ "12345", true },
+	{ "123456", true },
+	{ "1234567", true },
+	{ "1234567890123", true },
+	{ "123456789012345", true },
+	{ "000000000000000", true },
+	{ "999999999999999", true },
+	{ "1234567890123456", false },
+	{ "a23456789012345", false },
+	{ "1234567b9012345", false },
+	{ "12345678901234c", false },
+	{ "123456789 01234", false },
+	{ "1234567\n123456", false },
+	{ "123456\t123456", false },
+	{ "123456\r123456", false },
+};
+
+bool test_valid_msisdn()
+{
+	int i;
+	bool pass = true;
+	bool ok = true;
+	printf("----- %s\n", __func__);
+
+	for (i = 0; i < ARRAY_SIZE(test_msisdns); i++) {
+		ok = osmo_msisdn_str_valid(test_msisdns[i].msisdn);
+		pass = pass && (ok == test_msisdns[i].expect_ok);
+		printf("%2d: expect=%s result=%s msisdn='%s'\n",
+		       i, BOOL_STR(test_msisdns[i].expect_ok), BOOL_STR(ok),
+		       test_msisdns[i].msisdn);
+	}
+	return pass;
+}
+
+int main(int argc, char **argv)
+{
+	bool pass = true;
+
+	pass = pass && test_valid_imsi();
+	pass = pass && test_valid_msisdn();
+
+	OSMO_ASSERT(pass);
+
+	return EXIT_SUCCESS;
+}
diff --git a/tests/gsm23003/gsm23003_test.ok b/tests/gsm23003/gsm23003_test.ok
new file mode 100644
index 0000000..777451a
--- /dev/null
+++ b/tests/gsm23003/gsm23003_test.ok
Binary files differ
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 1954e66..483860f 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -287,3 +287,9 @@
 cat $abs_srcdir/prbs/prbs_test.ok > expout
 AT_CHECK([$abs_top_builddir/tests/prbs/prbs_test], [0], [expout], [ignore])
 AT_CLEANUP
+
+AT_SETUP([gsm23003])
+AT_KEYWORDS([gsm23003])
+cat $abs_srcdir/gsm23003/gsm23003_test.ok > expout
+AT_CHECK([$abs_top_builddir/tests/gsm23003/gsm23003_test], [0], [expout], [ignore])
+AT_CLEANUP
