aboutsummaryrefslogtreecommitdiff
path: root/scripts/Old/manifests.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/Old/manifests.py')
-rw-r--r--scripts/Old/manifests.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/scripts/Old/manifests.py b/scripts/Old/manifests.py
new file mode 100644
index 00000000..df8bc2d4
--- /dev/null
+++ b/scripts/Old/manifests.py
@@ -0,0 +1,90 @@
+# $Id$
+
+# Copyright (C) 2007--2008 American Registry for Internet Numbers ("ARIN")
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND ARIN DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL ARIN BE LIABLE FOR ANY SPECIAL, DIRECT,
+# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
+# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
+# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+# PERFORMANCE OF THIS SOFTWARE.
+
+import time, glob, os
+import rpki.x509, rpki.manifest, rpki.sundial
+
+show_content_1 = False
+show_signed_manifest_PEM = False
+show_signed_manifest_asn1dump = True
+show_content_2 = False
+show_content_3 = False
+dump_signed_manifest_DER = False
+dump_manifest_content_DER = False
+test_empty_manifest = False
+
+def dumpasn1(thing):
+ # Save to file rather than using popen4() because dumpasn1 uses
+ # seek() when decoding ASN.1 content nested in OCTET STRING values.
+ try:
+ fn = "dumpasn1.tmp"
+ f = open(fn, "w")
+ f.write(thing)
+ f.close()
+ f = os.popen("dumpasn1 2>&1 -a " + fn)
+ print "\n".join(x for x in f.read().splitlines() if x.startswith(" "))
+ f.close()
+ finally:
+ os.unlink(fn)
+
+if test_empty_manifest:
+ names_and_objs = []
+else:
+ names_and_objs = [(fn, rpki.x509.X509(Auto_file = fn)) for fn in glob.glob("resource-cert-samples/*.cer")]
+
+now = rpki.sundial.datetime.utcnow()
+
+m = rpki.x509.SignedManifest()
+m.build(
+ serial = 17,
+ thisUpdate = now,
+ nextUpdate = now + rpki.sundial.timedelta(days = 1),
+ names_and_objs = names_and_objs,
+ keypair = rpki.x509.RSA(Auto_file = "biz-certs/Alice-EE.key"),
+ certs = rpki.x509.X509_chain(Auto_files = ("biz-certs/Alice-EE.cer", "biz-certs/Alice-CA.cer")))
+
+if show_content_1:
+ dumpasn1(m.get_content().toString())
+
+if show_signed_manifest_PEM:
+ print m.get_PEM()
+
+if dump_manifest_content_DER:
+ f = open("manifest-content.der", "wb")
+ f.write(m.get_content().toString())
+ f.close()
+
+if dump_signed_manifest_DER:
+ f = open("signed-manifest.der", "wb")
+ f.write(m.get_DER())
+ f.close()
+
+if show_signed_manifest_asn1dump:
+ dumpasn1(m.get_DER())
+
+n = rpki.x509.SignedManifest(DER = m.get_DER())
+
+n.verify(ta = rpki.x509.X509(Auto_file = "biz-certs/Alice-Root.cer"))
+
+if show_content_2:
+ dumpasn1(n.get_content().toString())
+
+assert m.get_content().toString() == n.get_content().toString()
+assert m.get_content().get() == n.get_content().get()
+
+if show_content_3:
+ print
+ print n.get_content().get()