Skip to content

Commit 6d763b8

Browse files
author
Roland Hedberg
committed
Missing argument to RSAKey.
Replaced jwsign.py/jwverify.pu with jwkutil.py
1 parent 6ab1c83 commit 6d763b8

File tree

5 files changed

+93
-109
lines changed

5 files changed

+93
-109
lines changed

script/jwkutil.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
#!/usr/bin/env python
2+
import json
3+
import sys
4+
5+
__author__ = 'rohe0002'
6+
7+
import argparse
8+
import requests
9+
from jwkest.jwk import RSAKey, keyrep, load_jwks
10+
from jwkest.jwk import import_rsa_key_from_file
11+
from jwkest.jwk import SYMKey
12+
from jwkest.jws import JWS
13+
14+
def assign(lst):
15+
keys = {}
16+
for typ, key in lst:
17+
try:
18+
keys[typ].append(key)
19+
except KeyError:
20+
keys[typ] = [key]
21+
return keys
22+
23+
24+
def lrequest(url, method="GET", **kwargs):
25+
return requests.request(method, url, **kwargs)
26+
27+
28+
def sign(msg, key, alg):
29+
_jws = JWS(msg, alg=alg)
30+
return _jws.sign_compact(key)
31+
32+
33+
def verify(msg, keys):
34+
_jws = JWS()
35+
return _jws.verify_compact(msg, keys)
36+
37+
38+
if __name__ == "__main__":
39+
parser = argparse.ArgumentParser()
40+
parser.add_argument('-s', dest="sign", action='store_true')
41+
parser.add_argument('-v', dest="verify", action='store_true')
42+
parser.add_argument('-f', dest="msg_file",
43+
help="File containing a message")
44+
parser.add_argument('-r', dest="rsa_file",
45+
help="File containing a RSA key")
46+
parser.add_argument('-k', dest="hmac_key",
47+
help="If using a HMAC algorithm this is the key")
48+
parser.add_argument('-a', dest="alg",
49+
help="The signing algorithm")
50+
parser.add_argument('-j', dest="jwk", help="JSON Web Key")
51+
parser.add_argument('-J', dest="jwks", help="JSON Web Keys")
52+
parser.add_argument("message", nargs="?", help="The message")
53+
54+
55+
args = parser.parse_args()
56+
57+
keys = []
58+
if args.rsa_file:
59+
keys = [RSAKey(key=import_rsa_key_from_file(args.rsa_file))]
60+
elif args.hmac_key:
61+
keys = [SYMKey(key=args.hmac_key)]
62+
63+
if args.jwk:
64+
kspec = json.loads(open(args.jwk).read())
65+
keys.append(keyrep(kspec))
66+
67+
if args.jwks:
68+
keys.extend(load_jwks(open(args.jwk).read()))
69+
70+
if not keys:
71+
exit(-1)
72+
73+
if args.msg_file:
74+
if args.msg_file == "A.2.1":
75+
message = open("A.2.1").read().replace("\n","\r\n")
76+
else:
77+
message = open(args.msg_file).read().strip("\n")
78+
elif args.message == "-":
79+
message = sys.stdin.read()
80+
else:
81+
message = args.message
82+
83+
if args.sign:
84+
print sign(message, keys, args.alg)
85+
elif args.verify:
86+
print verify(message, keys)
87+
88+
89+
# Given that idptest contains a RSA private key PEM encoded
90+
# ./jwkutil.py -s -r idptest -a RS256 -f ../setup.py > sig
91+
# ./jwkutil.py -v -r idptest -f sig

script/jwsign.py

Lines changed: 0 additions & 46 deletions
This file was deleted.

script/jwverify.py

Lines changed: 0 additions & 61 deletions
This file was deleted.

src/jwkest/jwk.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -305,14 +305,15 @@ class RSAKey(Key):
305305

306306
def __init__(self, kty="RSA", alg="", use="", kid="", key=None,
307307
x5c=None, x5t="", x5u="", n="", e="", d="", p="", q="",
308-
dp="", di="", qi=""):
308+
dp="", dq="", di="", qi=""):
309309
Key.__init__(self, kty, alg, use, kid, key, x5c, x5t, x5u)
310310
self.n = n
311311
self.e = e
312312
self.d = d
313313
self.p = p
314314
self.q = q
315315
self.dp = dp
316+
self.dq = dq
316317
self.di = di
317318
self.qi = qi
318319

tests/test_1_jws.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,6 @@ def test_signer_ps256_fail():
262262
assert False
263263

264264

265-
266265
def test_signer_ps384():
267266
payload = "Please take a moment to register today"
268267
keys = [RSAKey(key=import_rsa_key_from_file(KEY))]

0 commit comments

Comments
 (0)