diff options
author | Rob Austein <sra@hactrn.net> | 2012-09-03 00:56:33 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2012-09-03 00:56:33 +0000 |
commit | 7a5037f8eb0ebc7077995887966c1798434f0ce1 (patch) | |
tree | cd4e9200a8eb1703a83adab9240312bdc933630d /rpkid/rpki/oids.py | |
parent | 553f46eac0803df600455e758f6f73a98283facd (diff) |
Switch X501DN to use (new) POW format internally.
svn path=/branches/tk274/; revision=4690
Diffstat (limited to 'rpkid/rpki/oids.py')
-rw-r--r-- | rpkid/rpki/oids.py | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/rpkid/rpki/oids.py b/rpkid/rpki/oids.py index 2b8302aa..35b4453a 100644 --- a/rpkid/rpki/oids.py +++ b/rpkid/rpki/oids.py @@ -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 |