diff options
Diffstat (limited to 'python/rvi_readsig.py')
-rwxr-xr-x | python/rvi_readsig.py | 56 |
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 |