aboutsummaryrefslogtreecommitdiff
path: root/rpkid/rpki/resource_set.py
diff options
context:
space:
mode:
Diffstat (limited to 'rpkid/rpki/resource_set.py')
-rw-r--r--rpkid/rpki/resource_set.py22
1 files changed, 22 insertions, 0 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.