diff options
author | Rob Austein <sra@hactrn.net> | 2012-10-11 02:29:58 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2012-10-11 02:29:58 +0000 |
commit | 31d7039969ebda419eb3dd9ae7e72038d2210d56 (patch) | |
tree | a5abf4a188054a45219312aa68314e7dc92174c5 | |
parent | e834772d3604c92479630c8b56094980db9ad7a3 (diff) |
Use POW instead of POW.pkix to decode certificate resources.
svn path=/branches/tk274/; revision=4767
-rw-r--r-- | rpkid/rpki/resource_set.py | 22 | ||||
-rw-r--r-- | rpkid/rpki/x509.py | 5 |
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: |