aboutsummaryrefslogtreecommitdiff
path: root/potpourri/object-dates.py
diff options
context:
space:
mode:
authorRob Austein <sra@hactrn.net>2014-04-05 22:42:12 +0000
committerRob Austein <sra@hactrn.net>2014-04-05 22:42:12 +0000
commitfe0bf509f528dbdc50c7182f81057c6a4e15e4bd (patch)
tree07c9a923d4a0ccdfea11c49cd284f6d5757c5eda /potpourri/object-dates.py
parentaa28ef54c271fbe4d52860ff8cf13cab19e2207c (diff)
Source tree reorg, phase 1. Almost everything moved, no file contents changed.
svn path=/branches/tk685/; revision=5757
Diffstat (limited to 'potpourri/object-dates.py')
-rw-r--r--potpourri/object-dates.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/potpourri/object-dates.py b/potpourri/object-dates.py
new file mode 100644
index 00000000..b99441d6
--- /dev/null
+++ b/potpourri/object-dates.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python
+# $Id$
+
+# Extract notBefore, notAfter, thisUpdate and nextUpdate dates from
+# RPKI objects.
+
+# Copyright (C) 2013--2014 Dragon Research Labs ("DRL")
+#
+# Permission to use, copy, modify, and/or 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 DRL DISCLAIMS ALL WARRANTIES WITH
+# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
+# AND FITNESS. IN NO EVENT SHALL DRL 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 sys
+import os.path
+import rpki.POW
+
+extract_flags = (rpki.POW.CMS_NOCRL |
+ rpki.POW.CMS_NO_SIGNER_CERT_VERIFY |
+ rpki.POW.CMS_NO_ATTR_VERIFY |
+ rpki.POW.CMS_NO_CONTENT_VERIFY)
+
+def get_mft(fn):
+ cms = rpki.POW.Manifest.derReadFile(fn)
+ cms.verify(rpki.POW.X509Store(), None, extract_flags)
+ return cms, cms.certs()[0]
+
+def get_roa(fn):
+ return None, rpki.POW.CMS.derReadFile(fn).certs()[0]
+
+def get_gbr(fn):
+ return None, rpki.POW.CMS.derReadFile(fn).certs()[0]
+
+def get_crl(fn):
+ return rpki.POW.CRL.derReadFile(fn), None
+
+def get_cer(fn):
+ return None, rpki.POW.X509.derReadFile(fn)
+
+dispatch = dict(mft = get_mft,
+ roa = get_roa,
+ gbr = get_gbr,
+ crl = get_crl,
+ cer = get_cer)
+
+for fn in sys.argv[1:]:
+ obj, cer = dispatch[os.path.splitext(fn)[1][1:]](fn)
+ print fn
+ if cer is not None:
+ print "notBefore: ", cer.getNotBefore()
+ if obj is not None:
+ print "thisUpdate:", obj.getThisUpdate()
+ print "nextUpdate:", obj.getNextUpdate()
+ if cer is not None:
+ print "notAfter: ", cer.getNotAfter()
+ print