aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/oids.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki/oids.py')
-rw-r--r--rpkid/rpki/oids.py42
1 files changed, 38 insertions, 4 deletions
diff --git a/rpkid/rpki/oids.py b/rpkid/rpki/oids.py
index 2b8302aa..dc596f0b 100644
--- a/rpkid/rpki/oids.py
+++ b/rpkid/rpki/oids.py
@@ -3,7 +3,7 @@ OID database.
$Id$
-Copyright (C) 2009--2011 Internet Systems Consortium ("ISC")
+Copyright (C) 2009--2012 Internet Systems Consortium ("ISC")
Permission to use, copy, modify, and distribute this software for any
purpose with or without fee is hereby granted, provided that the above
@@ -92,8 +92,7 @@ def safe_name2oid(name):
fields = name.split(".")
if all(field.isdigit() for field in fields):
return tuple(int(field) for field in fields)
- else:
- raise
+ raise
def safe_oid2name(oid):
"""
@@ -104,4 +103,39 @@ def safe_oid2name(oid):
try:
return oid2name[oid]
except KeyError:
- return ".".join(str(field) for field in oid)
+ return oid2dotted(oid)
+
+def oid2dotted(oid):
+ """
+ Convert OID to numeric (dotted decimal) format.
+ """
+
+ return ".".join(str(field) for field in oid)
+
+def dotted2oid(dotted):
+ """
+ Convert dotted decimal format to OID tuple.
+ """
+
+ fields = dotted.split(".")
+ if all(field.isdigit() for field in fields):
+ return tuple(int(field) for field in fields)
+ raise ValueError("%r is not a dotted decimal OID" % dotted)
+
+def safe_name2dotted(name):
+ """
+ Convert name to dotted decimal format.
+ """
+
+ return oid2dotted(safe_name2oid(name))
+
+def safe_dotted2name(dotted):
+ """
+ Convert dotted decimal to name if we know one,
+ otherwise just return dotted.
+ """
+
+ try:
+ return oid2name[dotted2oid(dotted)]
+ except KeyError:
+ return dotted