diff --git a/src/osmo_gsm_tester/osmo_hlr.py b/src/osmo_gsm_tester/osmo_hlr.py
index f7dd80a..20eaf02 100644
--- a/src/osmo_gsm_tester/osmo_hlr.py
+++ b/src/osmo_gsm_tester/osmo_hlr.py
@@ -32,10 +32,6 @@
     process = None
     next_subscriber_id = 1
 
-    AUTH_ALGO_NONE = 0
-    AUTH_ALGO_XOR = 1
-    AUTH_ALGO_COMP128v1 = 2
-
     def __init__(self, suite_run, ip_address):
         super().__init__(log.C_RUN, 'osmo-hlr_%s' % ip_address.get('addr'))
         self.suite_run = suite_run
@@ -107,25 +103,23 @@
             log.ctx(proc)
             raise log.Error('Exited in error')
 
-    def subscriber_add(self, modem, msisdn=None, algo=None):
+    def subscriber_add(self, modem, msisdn=None, algo_str=None):
         if msisdn is None:
             msisdn = self.suite_run.resources_pool.next_msisdn(modem)
         modem.set_msisdn(msisdn)
         subscriber_id = self.next_subscriber_id
         self.next_subscriber_id += 1
 
-        if not algo:
-            alg_str = modem.auth_algo()
-            if alg_str is None or alg_str == 'none':
-                algo = self.AUTH_ALGO_NONE
-            elif alg_str == 'comp128v1':
-                algo = self.AUTH_ALGO_COMP128v1
-            elif alg_str == 'xor':
-                algo = self.AUTH_ALGO_XOR
-        if algo != self.AUTH_ALGO_NONE and not modem.ki():
-            raise log.Error("Auth algo %r selected and no KI specified" % algo)
+        if algo_str is None:
+            algo_str = modem.auth_algo() or util.OSMO_AUTH_ALGO_NONE
 
-        self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi(), subscriber_id=subscriber_id, algo=algo)
+        if algo_str != util.OSMO_AUTH_ALGO_NONE and not modem.ki():
+            raise log.Error("Auth algo %r selected but no KI specified" % algo_str)
+
+        algo = util.osmo_auth_algo_by_name(algo_str)
+
+        self.log('Add subscriber', msisdn=msisdn, imsi=modem.imsi(), subscriber_id=subscriber_id,
+                 algo_str=algo_str, algo=algo)
         conn = sqlite3.connect(self.db_file)
         try:
             c = conn.cursor()
diff --git a/src/osmo_gsm_tester/schema.py b/src/osmo_gsm_tester/schema.py
index f92d1db..6c0b2b7 100644
--- a/src/osmo_gsm_tester/schema.py
+++ b/src/osmo_gsm_tester/schema.py
@@ -20,7 +20,7 @@
 import re
 
 from . import log
-from .util import is_dict, is_list, str2bool
+from .util import is_dict, is_list, str2bool, ENUM_OSMO_AUTH_ALGO
 
 KEY_RE = re.compile('[a-zA-Z][a-zA-Z0-9_]*')
 IPV4_RE = re.compile('([0-9]{1,3}.){3}[0-9]{1,3}')
@@ -62,9 +62,8 @@
     match_re('MSISDN', MSISDN_RE, val)
 
 def auth_algo(val):
-    if val in ('none', 'xor', 'comp128v1'):
-        return
-    raise ValueError('Unknown Authentication Algorithm: %r' % val)
+    if val not in ENUM_OSMO_AUTH_ALGO:
+        raise ValueError('Unknown Authentication Algorithm: %r' % val)
 
 def uint(val):
     n = int(val)
diff --git a/src/osmo_gsm_tester/util.py b/src/osmo_gsm_tester/util.py
index ed1a258..edf7599 100644
--- a/src/osmo_gsm_tester/util.py
+++ b/src/osmo_gsm_tester/util.py
@@ -32,6 +32,15 @@
 import readline
 import subprocess
 
+# This mirrors enum osmo_auth_algo in libosmocore/include/osmocom/crypt/auth.h
+# so that the index within the tuple matches the enum value.
+OSMO_AUTH_ALGO_NONE = 'none'
+ENUM_OSMO_AUTH_ALGO = (OSMO_AUTH_ALGO_NONE, 'comp128v1', 'comp128v2', 'comp128v3', 'xor', 'milenage')
+
+def osmo_auth_algo_by_name(algo_str):
+    'Return enum osmo_auth_algo numeric value as from libosmocore, raise ValueError if not defined.'
+    return ENUM_OSMO_AUTH_ALGO.index(algo_str.lower())
+
 def prepend_library_path(path):
     lp = os.getenv('LD_LIBRARY_PATH')
     if not lp:
