diff options
-rw-r--r-- | scripts/rpki/resource_set.py | 20 | ||||
-rw-r--r-- | scripts/test-pow.py | 42 |
2 files changed, 18 insertions, 44 deletions
diff --git a/scripts/rpki/resource_set.py b/scripts/rpki/resource_set.py index 2309bafe..1d2b9c9c 100644 --- a/scripts/rpki/resource_set.py +++ b/scripts/rpki/resource_set.py @@ -167,13 +167,21 @@ def parse_extensions(exts): POW.pkix.cert.getExtensions(). """ - res = resource_set() + as = None + v4 = None + v6 = None + for x in exts: if x[0] == (1, 3, 6, 1, 5, 5, 7, 1, 8): # sbgp-autonomousSysNum assert x[2][1] is None, "RDI not implemented: %s" % (str(x)) - res.extend(resource_set_as(x[2][0])) - elif x[0] == (1, 3, 6, 1, 5, 5, 7, 1, 7): # sbgp-ipAddrBlock + assert as is None + as = resource_set_as(x[2][0]) + if x[0] == (1, 3, 6, 1, 5, 5, 7, 1, 7): # sbgp-ipAddrBlock for fam in x[2]: - res.extend(({ "\x00\x01" : resource_set_ipv4, - "\x00\x02" : resource_set_ipv6 }[fam[0]])(fam[1])) - return res + if fam[0] == "\x00\x01": + assert v4 is None + v4 = resource_set_ipv4(fam[1]) + if fam[0] == "\x00\x02": + assert v6 is None + v6 = resource_set_ipv6(fam[1]) + return as, v4, v6 diff --git a/scripts/test-pow.py b/scripts/test-pow.py index d2b2d9fa..8de46029 100644 --- a/scripts/test-pow.py +++ b/scripts/test-pow.py @@ -78,41 +78,7 @@ for der in (alice, apnic): print " OID: ", oid, POW.pkix.oid2obj(oid) print " Val:", val print - if False: - val = [x[2] for x in cert.getExtensions() if x[0] == POW.pkix.obj2oid("sbgp-ipAddrBlock")] - if val: - for fam in val[0]: - afi = (ord(fam[0][0]) << 8) + ord(fam[0][1]) - addrlen = { 1 : 32, 2 : 128 }[afi] - addrtype = { 1 : rpki.ipaddrs.v4addr, 2 : rpki.ipaddrs.v6addr }[afi] - if len(fam[0]) > 2: - safi = ord(fam[0][2]) - else: - safi = None - if fam[1][0] == 'inherit': - vals = None - else: - vals = [] - for aor in fam[1][1]: - def b2l(x, y): return (x << 1) | y - if aor[0] == 'addressRange': - min = reduce(b2l, aor[1][0], 0L) - max = reduce(b2l, aor[1][1], 0L) - min <<= addrlen - len(aor[1][0]) - max <<= addrlen - len(aor[1][1]) - max |= (1 << (addrlen - len(aor[1][1]))) - 1 - min = addrtype(min) - max = addrtype(max) - txt = "%s-%s" % (min, max) - vals.append((txt, min, max)) - else: - prefix = reduce(b2l, aor[1], 0L) - prefix <<= addrlen - len(aor[1]) - prefixlen = len(aor[1]) - prefix = addrtype(prefix) - txt = "%s/%d" % (prefix, prefixlen) - vals.append((txt, prefix, prefixlen)) - print afi, safi, vals - else: - rs = rpki.resource_set.parse_extensions(cert.getExtensions()) - print rs + as, v4, v6 = rpki.resource_set.parse_extensions(cert.getExtensions()) + if as: print ",".join(map(lambda x: "AS:" + str(x), as)) + if v4: print ",".join(map(lambda x: "IPv4:" + str(x), v4)) + if v6: print ",".join(map(lambda x: "IPv6:" + str(x), v6)) |