From fc12632ff1afd26d3c82cd090c24d6c66f06466a Mon Sep 17 00:00:00 2001 From: Paul Korzhyk Date: Mon, 4 Nov 2013 16:09:09 +1100 Subject: [PATCH] Fix KeyError when signing http_redirect_message Without this change I get the following traceback: >>> pack.http_redirect_message(req.to_string(), destination, sigalg=pack.RSA_SHA1, key=rsa) Traceback (most recent call last): File "", line 1, in File "\pysaml2-1.0.3-py2.7.egg\saml2\pack.py", line 138, in http_redirect_message string = "&".join([urllib.urlencode({k: args[k]}) for k in _order]) KeyError: 'RelayState' --- src/saml2/pack.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/saml2/pack.py b/src/saml2/pack.py index 7ce2d5d..8f28d34 100644 --- a/src/saml2/pack.py +++ b/src/saml2/pack.py @@ -135,7 +135,7 @@ def http_redirect_message(message, location, relay_state="", typ="SAMLRequest", if sigalg == RSA_SHA1: signer = RSASigner(sha1_digest, "sha1") - string = "&".join([urllib.urlencode({k: args[k]}) for k in _order]) + string = "&".join([urllib.urlencode({k: args[k]}) for k in _order if k in args]) args["Signature"] = base64.b64encode(signer.sign(string, key)) string = urllib.urlencode(args) else: @@ -265,4 +265,4 @@ def packager(identifier): def factory(binding, message, location, relay_state="", typ="SAMLRequest"): - return PACKING[binding](message, location, relay_state, typ) \ No newline at end of file + return PACKING[binding](message, location, relay_state, typ)