aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2012-10-11 02:29:58 +0000
committerRob Austein <sra@hactrn.net>2012-10-11 02:29:58 +0000
commit31d7039969ebda419eb3dd9ae7e72038d2210d56 (patch)
treea5abf4a188054a45219312aa68314e7dc92174c5
parente834772d3604c92479630c8b56094980db9ad7a3 (diff)
Use POW instead of POW.pkix to decode certificate resources.
svn path=/branches/tk274/; revision=4767
-rw-r--r--rpkid/rpki/resource_set.py22
-rw-r--r--rpkid/rpki/x509.py5
2 files changed, 24 insertions, 3 deletions
diff --git a/rpkid/rpki/resource_set.py b/rpkid/rpki/resource_set.py
index ab18b226..3ae8ddfb 100644
--- a/rpkid/rpki/resource_set.py
+++ b/rpkid/rpki/resource_set.py
@@ -806,6 +806,28 @@ class resource_bag(object):
v6 = resource_set_ipv6(fam[1])
return cls(asn, v4, v6)
+ @classmethod
+ def from_POW_rfc3779(cls, resources):
+ """
+ Build a resource_bag from data returned by
+ rpki.POW.X509.getRFC3779().
+
+ The conversion to long for v4 and v6 is (intended to be)
+ temporary: in the long run, we should be using rpki.POW.IPAddress
+ rather than long here.
+ """
+ asn = [resource_range_as(long(r[0]), long(r[1]))
+ for r in resources[0] or ()]
+ v4 = [resource_range_ipv4(rpki.ipaddrs.v4addr(long(r[0])),
+ rpki.ipaddrs.v4addr(long(r[1])))
+ for r in resources[1] or ()]
+ v6 = [resource_range_ipv6(rpki.ipaddrs.v6addr(long(r[0])),
+ rpki.ipaddrs.v6addr(long(r[1])))
+ for r in resources[2] or ()]
+ return cls(resource_set_as(asn) if asn else None,
+ resource_set_ipv4(v4) if v4 else None,
+ resource_set_ipv6(v6) if v6 else None)
+
def empty(self):
"""
True iff all resource sets in this bag are empty.
diff --git a/rpkid/rpki/x509.py b/rpkid/rpki/x509.py
index d5229a38..3f367a68 100644
--- a/rpkid/rpki/x509.py
+++ b/rpkid/rpki/x509.py
@@ -481,10 +481,9 @@ class DER_object(object):
def get_3779resources(self):
"""
- Get RFC 3779 resources as rpki.resource_set objects. Only works
- for subclasses that support getExtensions().
+ Get RFC 3779 resources as rpki.resource_set objects.
"""
- resources = rpki.resource_set.resource_bag.from_rfc3779_tuples(self.get_POWpkix().getExtensions())
+ resources = rpki.resource_set.resource_bag.from_POW_rfc3779(self.get_POW().getRFC3779())
try:
resources.valid_until = self.getNotAfter()
except AttributeError: