summaryrefslogtreecommitdiff
path: root/python/rvi_readsig.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/rvi_readsig.py')
-rwxr-xr-xpython/rvi_readsig.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/python/rvi_readsig.py b/python/rvi_readsig.py
new file mode 100755
index 0000000..4737112
--- /dev/null
+++ b/python/rvi_readsig.py
@@ -0,0 +1,56 @@
+#!/usr/bin/python
+
+#
+# Copyright (C) 2014, Jaguar Land Rover
+#
+# This program is licensed under the terms and conditions of the
+# Mozilla Public License, version 2.0. The full text of the
+# Mozilla Public License is at https://www.mozilla.org/MPL/2.0/
+#
+#
+# Reads signed certificate, validates signature and prints payload
+# RVI signed certs use the JWT format, described in
+# https://tools.ietf.org/html/draft-ietf-jose-json-web-signature-41
+#
+# (see http://jwt.io for more libraries as well as an online debugger)
+#
+# Keys are generated using `openssl genrsa -out PemFile 2048`,
+# and the cert signature is calculated using {"alg": "RS256"}
+#
+
+import sys
+import json
+import jwt
+import time
+import getopt
+def usage():
+ print "Usage:", sys.argv[0], "signature_file public_key_file"
+ print
+ print "Example: ./rvi_readsig.py ~/certs/mycert.txt ~/keys/pubkey.pem"
+
+ sys.exit(255)
+
+
+#
+# Check that we have the correct arguments
+#
+opts, args= getopt.getopt(sys.argv[1:], "n:")
+
+for o, a in opts:
+ if o == "-n":
+ rvi_node = a
+ else:
+ usage()
+
+if len(args) != 2:
+ usage()
+
+sigfile = open(args[0], 'r')
+keyfile = open(args[1], 'r')
+
+sig = sigfile.read()
+key = keyfile.read()
+
+payload = jwt.decode(sig, key)
+
+print payload